diff options
| author | Ed Schouten <ed@FreeBSD.org> | 2009-06-14 09:23:33 +0000 |
|---|---|---|
| committer | Ed Schouten <ed@FreeBSD.org> | 2009-06-14 09:23:33 +0000 |
| commit | 600c6fa13de5c407dc36dbb0ab73807868741ae0 (patch) | |
| tree | 49817b316c4fdaa56d9d16ebf2555303d1a990e0 /test/TableGen | |
| parent | 93338c197185f946619794ce011ec27b5b6250e2 (diff) | |
Notes
Diffstat (limited to 'test/TableGen')
| -rw-r--r-- | test/TableGen/Slice.td | 87 | ||||
| -rw-r--r-- | test/TableGen/if.td | 4 |
2 files changed, 89 insertions, 2 deletions
diff --git a/test/TableGen/Slice.td b/test/TableGen/Slice.td new file mode 100644 index 000000000000..cd9c6da15398 --- /dev/null +++ b/test/TableGen/Slice.td @@ -0,0 +1,87 @@ +// RUN: tblgen %s | grep {\\\[(set} | count 2 +// RUN: tblgen %s | grep {\\\[\\\]} | count 2 + +class ValueType<int size, int value> { + int Size = size; + int Value = value; +} + +def f32 : ValueType<32, 1>; // 2 x i64 vector value + +class Intrinsic<string name> { + string Name = name; +} + +class Inst<bits<8> opcode, dag oopnds, dag iopnds, string asmstr, + list<dag> pattern> { + bits<8> Opcode = opcode; + dag OutOperands = oopnds; + dag InOperands = iopnds; + string AssemblyString = asmstr; + list<dag> Pattern = pattern; +} + +def ops; +def outs; +def ins; + +def set; + +// Define registers +class Register<string n> { + string Name = n; +} + +class RegisterClass<list<ValueType> regTypes, list<Register> regList> { + list<ValueType> RegTypes = regTypes; + list<Register> MemberList = regList; +} + +def XMM0: Register<"xmm0">; +def XMM1: Register<"xmm1">; +def XMM2: Register<"xmm2">; +def XMM3: Register<"xmm3">; +def XMM4: Register<"xmm4">; +def XMM5: Register<"xmm5">; +def XMM6: Register<"xmm6">; +def XMM7: Register<"xmm7">; +def XMM8: Register<"xmm8">; +def XMM9: Register<"xmm9">; +def XMM10: Register<"xmm10">; +def XMM11: Register<"xmm11">; +def XMM12: Register<"xmm12">; +def XMM13: Register<"xmm13">; +def XMM14: Register<"xmm14">; +def XMM15: Register<"xmm15">; + +def FR32 : RegisterClass<[f32], + [XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7, + XMM8, XMM9, XMM10, XMM11, + XMM12, XMM13, XMM14, XMM15]>; + +class SDNode {} +def not : SDNode; + +multiclass scalar<bits<8> opcode, string asmstr = "", list<list<dag>> patterns = []> { + def SSrr : Inst<opcode, (outs FR32:$dst), (ins FR32:$src), + !strconcat(asmstr, "\t$dst, $src"), + !if(!null(patterns),[]<dag>,patterns[0])>; + def SSrm : Inst<opcode, (outs FR32:$dst), (ins FR32:$src), + !strconcat(asmstr, "\t$dst, $src"), + !if(!null(patterns),[]<dag>,!if(!null(!cdr(patterns)),patterns[0],patterns[1]))>; +} + +multiclass vscalar<bits<8> opcode, string asmstr = "", list<list<dag>> patterns = []> { + def V#NAME#SSrr : Inst<opcode, (outs FR32:$dst), (ins FR32:$src), + !strconcat(asmstr, "\t$dst, $src"), + !if(!null(patterns),[]<dag>,patterns[0])>; + def V#NAME#SSrm : Inst<opcode, (outs FR32:$dst), (ins FR32:$src), + !strconcat(asmstr, "\t$dst, $src"), + !if(!null(patterns),[]<dag>,!if(!null(!cdr(patterns)),patterns[0],patterns[1]))>; +} + +multiclass myscalar<bits<8> opcode, string asmstr = "", list<list<dag>> patterns = []> : + scalar<opcode, asmstr, patterns>, + vscalar<opcode, asmstr, patterns>; + +defm NOT : myscalar<0x10, "not", [[], [(set FR32:$dst, (f32 (not FR32:$src)))]]>; diff --git a/test/TableGen/if.td b/test/TableGen/if.td index 3c45d95eb20a..9b2438245db1 100644 --- a/test/TableGen/if.td +++ b/test/TableGen/if.td @@ -1,5 +1,5 @@ -// RUN: tblgen %s | grep {1, 2, 3} | count 4 -// RUN: tblgen %s | grep {4, 5, 6} | count 2 +// RUN: tblgen %s | grep {\\\[1, 2, 3\\\]} | count 4 +// RUN: tblgen %s | grep {\\\[4, 5, 6\\\]} | count 2 class A<list<list<int>> vals> { list<int> first = vals[0]; |
