54c52ab3b6494a93ca1a25681c4f86744c9c689d
[oota-llvm.git] / test / TableGen / NegativeAddedComplexity.ll
1 // RUN: llvm-tblgen -I../../include -gen-dag-isel %s | FileCheck %s
2 // XFAIL: vg_leak
3
4 include "llvm/Target/Target.td"
5
6 // Make sure the higher complexity pattern comes first
7 // CHECK: TARGET_VAL(::ADD0)
8 // CHECK: Complexity = {{[^-]}}
9 // Make sure the ADD1 pattern has a negative complexity
10 // CHECK: TARGET_VAL(::ADD1)
11 // CHECK: Complexity = -{{[0-9]+}}
12
13 def TestRC : RegisterClass<"TEST", [i32], 32, (add)>;
14
15 def TestInstrInfo : InstrInfo;
16
17 def Test : Target {
18   let InstructionSet = TestInstrInfo;
19 }
20
21 def ADD0 : Instruction {
22   let OutOperandList = (outs TestRC:$dst);
23   let InOperandList = (ins TestRC:$src0, TestRC:$src1);
24 }
25
26 def ADD1 : Instruction {
27   let OutOperandList = (outs TestRC:$dst);
28   let InOperandList = (ins TestRC:$src0, TestRC:$src1);
29 }
30
31 def : Pat <
32   (add i32:$src0, i32:$src1),
33   (ADD1 $src0, $src1)
34 > {
35   let AddedComplexity = -1000;
36 }
37
38 def : Pat <
39    (add i32:$src0, i32:$src1),
40    (ADD0 $src0, $src1)
41 >;