|
| 1 | +// RUN: llvm-tblgen -gen-sd-node-info -I %p/../../../include %s | FileCheck %s |
| 2 | + |
| 3 | +include "llvm/Target/Target.td" |
| 4 | + |
| 5 | +def MyTarget : Target; |
| 6 | + |
| 7 | +def M1 : HwMode<"", []>; |
| 8 | +def M2 : HwMode<"", []>; |
| 9 | +def M3 : HwMode<"", []>; |
| 10 | + |
| 11 | +def VT1 : ValueTypeByHwMode<[M1], [i1]>; |
| 12 | +def VT2 : ValueTypeByHwMode<[M2], [i2]>; |
| 13 | +def VT3 : ValueTypeByHwMode<[M1, M2, M3, DefaultMode], [i1, i2, i4, i8]>; |
| 14 | + |
| 15 | +def my_node_1 : SDNode< |
| 16 | + "MyTargetISD::NODE_1", |
| 17 | + SDTypeProfile<0, 5, [ |
| 18 | + SDTCVecEltisVT<0, VT3>, |
| 19 | + SDTCisVT<1, i1>, |
| 20 | + SDTCVecEltisVT<2, i2>, |
| 21 | + SDTCisVT<3, VT1>, |
| 22 | + SDTCVecEltisVT<4, VT2>, |
| 23 | + ]> |
| 24 | +>; |
| 25 | + |
| 26 | +def my_node_2 : SDNode< |
| 27 | + "MyTargetISD::NODE_2", |
| 28 | + SDTypeProfile<1, 2, [ |
| 29 | + SDTCVecEltisVT<0, VT3>, |
| 30 | + SDTCisVT<1, i1>, |
| 31 | + SDTCVecEltisVT<2, i2>, |
| 32 | + ]> |
| 33 | +>; |
| 34 | + |
| 35 | +def my_node_3 : SDNode< |
| 36 | + "MyTargetISD::NODE_3", |
| 37 | + SDTypeProfile<1, 0, [ |
| 38 | + SDTCisVT<0, VT3>, |
| 39 | + ]> |
| 40 | +>; |
| 41 | + |
| 42 | +// CHECK: static const VTByHwModePair MyTargetVTByHwModeTable[] = { |
| 43 | +// CHECK-NEXT: /* 0 */ {0, MVT::i8}, {1, MVT::i1}, {2, MVT::i2}, {3, MVT::i4}, |
| 44 | +// CHECK-NEXT: /* 4 */ {1, MVT::i1}, |
| 45 | +// CHECK-NEXT: /* 5 */ {2, MVT::i2}, |
| 46 | +// CHECK-NEXT: }; |
| 47 | +// CHECK-EMPTY: |
| 48 | +// CHECK-NEXT: static const SDTypeConstraint MyTargetSDTypeConstraints[] = { |
| 49 | +// CHECK-NEXT: /* 0 */ {SDTCisVT, 0, 0, 4, 0}, |
| 50 | +// CHECK-NEXT: /* 1 */ {SDTCVecEltisVT, 4, 0, 1, 5}, |
| 51 | +// CHECK-SAME: {SDTCisVT, 3, 0, 1, 4}, |
| 52 | +// CHECK-SAME: {SDTCVecEltisVT, 2, 0, 0, MVT::i2}, |
| 53 | +// CHECK-SAME: {SDTCisVT, 1, 0, 0, MVT::i1}, |
| 54 | +// CHECK-SAME: {SDTCVecEltisVT, 0, 0, 4, 0}, |
| 55 | +// CHECK-NEXT: }; |
| 56 | +// CHECK-EMPTY: |
| 57 | +// CHECK-NEXT: static const SDNodeDesc MyTargetSDNodeDescs[] = { |
| 58 | +// CHECK-NEXT: {0, 5, 0, 0, 0, 1, 1, 5}, // NODE_1 |
| 59 | +// CHECK-NEXT: {1, 2, 0, 0, 0, 21, 3, 3}, // NODE_2 |
| 60 | +// CHECK-NEXT: {1, 0, 0, 0, 0, 41, 0, 1}, // NODE_3 |
| 61 | +// CHECK-NEXT: }; |
0 commit comments