diff options
Diffstat (limited to 'llvm/test/TableGen/generic-tables-instruction.td')
-rw-r--r-- | llvm/test/TableGen/generic-tables-instruction.td | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/llvm/test/TableGen/generic-tables-instruction.td b/llvm/test/TableGen/generic-tables-instruction.td new file mode 100644 index 00000000000..1b79da6f734 --- /dev/null +++ b/llvm/test/TableGen/generic-tables-instruction.td @@ -0,0 +1,36 @@ +// RUN: llvm-tblgen -gen-searchable-tables -I %p/../../include %s | FileCheck %s +// XFAIL: vg_leak + +include "llvm/TableGen/SearchableTable.td" + +// CHECK-LABEL: GET_InstrTable_IMPL +// CHECK: const MyInstr InstrTable[] = { +// CHECK: { B, 0xA }, +// CHECK: { C, 0x0 }, +// CHECK: { A, 0x5 }, +// CHECK: { D, 0x8 }, +// CHECK: }; + +class Instruction { + bit isPseudo = 0; +} + +class MyInstr<int op> : Instruction { + Instruction Opcode = !cast<Instruction>(NAME); + bits<16> CustomEncoding = op; +} + +def A : MyInstr<5>; +def D : MyInstr<8>; +let isPseudo = 1 in { + def C : MyInstr<0>; + def B : MyInstr<10>; +} + +def InstrTable : GenericTable { + let FilterClass = "MyInstr"; + let Fields = ["Opcode", "CustomEncoding"]; + + let PrimaryKey = ["Opcode"]; + let PrimaryKeyName = "getCustomEncodingHelper"; +} |