62 lines · plain
1// RUN: llvm-tblgen -gen-sd-node-info -I %p/../../../include %s | FileCheck %s2 3include "llvm/Target/Target.td"4 5def MyTarget : Target;6 7def M1 : HwMode<[]>;8def M2 : HwMode<[]>;9def M3 : HwMode<[]>;10 11def VT1 : ValueTypeByHwMode<[M1], [i1]>;12def VT2 : ValueTypeByHwMode<[M2], [i2]>;13def VT3 : ValueTypeByHwMode<[M1, M2, M3, DefaultMode], [i1, i2, i4, i8]>;14 15def 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 26def 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 35def 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_159// CHECK-NEXT: {1, 2, 0, 0, 0, 21, 3, 3}, // NODE_260// CHECK-NEXT: {1, 0, 0, 0, 0, 41, 0, 1}, // NODE_361// CHECK-NEXT: };62