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