xref: /llvm-project/llvm/test/TableGen/SDNodeInfoEmitter/namespace.td (revision f4de28a63c81c909df28b6b065fad19e2189c54e)
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