1// RUN: llvm-tblgen -gen-sd-node-info -I %p/../../../include %s -sdnode-namespace=EmptyISD \ 2// RUN: | FileCheck %s -check-prefix=EMPTY 3 4// RUN: llvm-tblgen -gen-sd-node-info -I %p/../../../include %s \ 5// RUN: | FileCheck %s --check-prefixes=COMMON,TARGET -DNS=MyTargetISD 6// RUN: llvm-tblgen -gen-sd-node-info -I %p/../../../include %s -sdnode-namespace=MyCustomISD \ 7// RUN: | FileCheck %s -check-prefixes=COMMON,CUSTOM -DNS=MyCustomISD 8 9include "llvm/Target/Target.td" 10 11def MyTarget : Target; 12 13def node_1 : SDNode<"MyTargetISD::NODE", SDTypeProfile<1, 0, [SDTCisVT<0, i1>]>>; 14def node_2 : SDNode<"MyCustomISD::NODE", SDTypeProfile<0, 1, [SDTCisVT<0, i2>]>>; 15 16// EMPTY: namespace llvm::EmptyISD { 17// EMPTY-EMPTY: 18// EMPTY-NEXT: static constexpr unsigned GENERATED_OPCODE_END = ISD::BUILTIN_OP_END; 19// EMPTY-EMPTY: 20// EMPTY-NEXT: } // namespace llvm::EmptyISD 21 22// EMPTY: static constexpr char MyTargetSDNodeNamesStorage[] = 23// EMPTY-NEXT: "\0" 24// EMPTY-NEXT: ; 25 26// EMPTY: static const SDTypeConstraint MyTargetSDTypeConstraints[] = { 27// EMPTY-NEXT: /* dummy */ {SDTCisVT, 0, 0, MVT::INVALID_SIMPLE_VALUE_TYPE} 28// EMPTY-NEXT: }; 29// EMPTY-EMPTY: 30// EMPTY-NEXT: static const SDNodeDesc MyTargetSDNodeDescs[] = { 31// EMPTY-NEXT: }; 32// EMPTY-EMPTY: 33// EMPTY-NEXT: static const SDNodeInfo MyTargetGenSDNodeInfo( 34// EMPTY-NEXT: /*NumOpcodes=*/0, MyTargetSDNodeDescs, 35// EMPTY-NEXT: MyTargetSDNodeNames, MyTargetSDTypeConstraints); 36 37// COMMON: namespace llvm::[[NS]] { 38// COMMON-EMPTY: 39// COMMON-NEXT: enum GenNodeType : unsigned { 40// COMMON-NEXT: NODE = ISD::BUILTIN_OP_END, 41// COMMON-NEXT: }; 42// COMMON-EMPTY: 43// COMMON-NEXT: static constexpr unsigned GENERATED_OPCODE_END = NODE + 1; 44// COMMON-EMPTY: 45// COMMON-NEXT: } // namespace llvm::[[NS]] 46 47// COMMON: static constexpr char MyTargetSDNodeNamesStorage[] = 48// COMMON-NEXT: "\0" 49// COMMON-NEXT: "[[NS]]::NODE\0" 50// COMMON-NEXT: ; 51 52// COMMON: static const SDTypeConstraint MyTargetSDTypeConstraints[] = { 53// TARGET-NEXT: /* 0 */ {SDTCisVT, 0, 0, MVT::i1}, 54// CUSTOM-NEXT: /* 0 */ {SDTCisVT, 0, 0, MVT::i2}, 55// COMMON-NEXT: }; 56// COMMON-EMPTY: 57// COMMON-NEXT: static const SDNodeDesc MyTargetSDNodeDescs[] = { 58// TARGET-NEXT: {1, 0, 0, 0, 0, 1, 0, 1}, // NODE 59// CUSTOM-NEXT: {0, 1, 0, 0, 0, 1, 0, 1}, // NODE 60// COMMON-NEXT: }; 61// COMMON-EMPTY: 62// COMMON-NEXT: static const SDNodeInfo MyTargetGenSDNodeInfo( 63// COMMON-NEXT: /*NumOpcodes=*/1, MyTargetSDNodeDescs, 64// COMMON-NEXT: MyTargetSDNodeNames, MyTargetSDTypeConstraints); 65