56 lines · plain
1// RUN: llvm-tblgen -I %p/../../../../include -gen-global-isel-combiner \2// RUN: -gicombiner-stop-after-parse -combiners=MyCombiner %s | \3// RUN: FileCheck %s4 5include "llvm/Target/Target.td"6include "llvm/Target/GlobalISel/Combine.td"7 8def MyTargetISA : InstrInfo;9def MyTarget : Target { let InstructionSet = MyTargetISA; }10 11// CHECK: (CombineRule name:BuiltinTest0 id:0 root:a12// CHECK-NEXT: (MatchPats13// CHECK-NEXT: <match_root>__BuiltinTest0_match_0:(CodeGenInstructionPattern G_TRUNC operands:[<def>$a, $b])14// CHECK-NEXT: )15// CHECK-NEXT: (ApplyPats16// CHECK-NEXT: <apply_root>__BuiltinTest0_apply_0:(BuiltinPattern GIReplaceReg operands:[<def>$a, $b])17// CHECK-NEXT: )18// CHECK-NEXT: (OperandTable MatchPats19// CHECK-NEXT: a -> __BuiltinTest0_match_020// CHECK-NEXT: b -> <live-in>21// CHECK-NEXT: )22// CHECK-NEXT: (OperandTable ApplyPats23// CHECK-NEXT: a -> __BuiltinTest0_apply_024// CHECK-NEXT: b -> <live-in>25// CHECK-NEXT: )26// CHECK-NEXT: )27def BuiltinTest0 : GICombineRule<28 (defs root:$a),29 (match (G_TRUNC $a, $b)),30 (apply (GIReplaceReg $a, $b))31>;32 33// CHECK: (CombineRule name:BuiltinTest1 id:1 root:mi34// CHECK-NEXT: (MatchPats35// CHECK-NEXT: <match_root>mi:(CodeGenInstructionPattern G_STORE operands:[$a, $b])36// CHECK-NEXT: )37// CHECK-NEXT: (ApplyPats38// CHECK-NEXT: __BuiltinTest1_apply_0:(BuiltinPattern GIEraseRoot operands:[])39// CHECK-NEXT: )40// CHECK-NEXT: (OperandTable MatchPats41// CHECK-NEXT: a -> <live-in>42// CHECK-NEXT: b -> <live-in>43// CHECK-NEXT: )44// CHECK-NEXT: (OperandTable ApplyPats <empty>)45// CHECK-NEXT: )46def BuiltinTest1 : GICombineRule<47 (defs root:$mi),48 (match (G_STORE $a, $b):$mi),49 (apply (GIEraseRoot))50>;51 52def MyCombiner: GICombiner<"GenMyCombiner", [53 BuiltinTest0,54 BuiltinTest155]>;56