xref: /llvm-project/llvm/test/TableGen/AsmVariant.td (revision 3d0463ff821ba42a46f5d7d186c7a6f8cccfeafa)
1// RUN: llvm-tblgen -gen-asm-matcher -I %p/../../include %s | FileCheck %s
2
3// Check that specifying AsmVariant works correctly
4
5include "llvm/Target/Target.td"
6
7def ArchInstrInfo : InstrInfo { }
8
9def FooAsmParserVariant : AsmParserVariant {
10  let Variant = 0;
11  let Name = "Foo";
12}
13
14def BarAsmParserVariant : AsmParserVariant {
15  let Variant = 1;
16  let Name = "Bar";
17}
18
19def Arch : Target {
20  let InstructionSet = ArchInstrInfo;
21  let AssemblyParserVariants = [FooAsmParserVariant, BarAsmParserVariant];
22}
23
24def Reg : Register<"reg">;
25
26def RegClass : RegisterClass<"foo", [i32], 0, (add Reg)>;
27
28def foo : Instruction {
29  let Size = 2;
30  let OutOperandList = (outs);
31  let InOperandList = (ins);
32  let AsmString = "foo";
33  let AsmVariantName = "Foo";
34  let Namespace = "Arch";
35}
36
37def BarAlias : InstAlias<"bar", (foo)> {
38  string AsmVariantName = "Bar";
39}
40
41// CHECK: static const MatchEntry MatchTable0[] = {
42// CHECK-NEXT: /* foo */, Arch::foo
43// CHECK-NEXT: };
44
45// CHECK: static const MatchEntry MatchTable1[] = {
46// CHECK-NEXT: /* bar */, Arch::foo
47// CHECK-NEXT: };
48