| // 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: }; |