48 lines
1.0 KiB
TableGen
48 lines
1.0 KiB
TableGen
|
// 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: };
|