@@ -48,34 +48,70 @@ def InstD : InstBase {
48
48
let UseNamedOperandTable = 0;
49
49
}
50
50
51
- // CHECK: #ifdef GET_INSTRINFO_OPERAND_ENUM
52
- // CHECK: #undef GET_INSTRINFO_OPERAND_ENUM
53
- // CHECK: namespace llvm::MyNamespace {
54
- // CHECK: enum class OpName {
55
- // CHECK: a = 0,
56
- // CHECK: b = 1,
57
- // CHECK: c = 2,
58
- // CHECK: d = 3,
59
- // CHECK: x = 4,
60
- // CHECK: NUM_OPERAND_NAMES = 5,
61
- // CHECK: }; // enum class OpName
62
- // CHECK: } // end namespace llvm::MyNamespace
63
- // CHECK: #endif //GET_INSTRINFO_OPERAND_ENUM
51
+ // CHECK-LABEL: #ifdef GET_INSTRINFO_OPERAND_ENUM
52
+ // CHECK-NEXT: #undef GET_INSTRINFO_OPERAND_ENUM
53
+ // CHECK-NEXT: namespace llvm::MyNamespace {
54
+ // CHECK-NEXT: enum class OpName : uint8_t {
55
+ // CHECK-NEXT: a = 0,
56
+ // CHECK-NEXT: b = 1,
57
+ // CHECK-NEXT: c = 2,
58
+ // CHECK-NEXT: d = 3,
59
+ // CHECK-NEXT: x = 4,
60
+ // CHECK-NEXT: NUM_OPERAND_NAMES = 5,
61
+ // CHECK-NEXT: }; // enum class OpName
62
+ // CHECK-EMPTY:
63
+ // CHECK-NEXT: LLVM_READONLY int16_t getNamedOperandIdx(uint16_t Opcode, OpName Name);
64
+ // CHECK-NEXT: LLVM_READONLY OpName getOperandIdxName(uint16_t Opcode, int16_t Idx);
65
+ // CHECK-NEXT: } // end namespace llvm::MyNamespace
66
+ // CHECK-NEXT: #endif //GET_INSTRINFO_OPERAND_ENUM
64
67
65
- // CHECK: #ifdef GET_INSTRINFO_NAMED_OPS
66
- // CHECK: #undef GET_INSTRINFO_NAMED_OPS
67
- // CHECK: namespace llvm::MyNamespace {
68
- // CHECK: LLVM_READONLY
69
- // CHECK: int16_t getNamedOperandIdx(uint16_t Opcode, OpName Name) {
70
- // CHECK: assert(Name != OpName::NUM_OPERAND_NAMES);
71
- // CHECK: static constexpr int8_t OperandMap[][5] = {
72
- // CHECK: {0, 1, 2, -1, -1, },
73
- // CHECK: {-1, -1, -1, 0, 1, },
74
- // CHECK: };
75
- // CHECK: static constexpr uint8_t InstructionIndex[] = {
76
- // CHECK: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77
- // CHECK: };
78
- // CHECK: return OperandMap[InstructionIndex[Opcode]][(unsigned)Name];
79
- // CHECK: }
80
- // CHECK: } // end namespace llvm::MyNamespace
81
- // CHECK: #endif //GET_INSTRINFO_NAMED_OPS
68
+ // CHECK-LABEL: #ifdef GET_INSTRINFO_NAMED_OPS
69
+ // CHECK-NEXT: #undef GET_INSTRINFO_NAMED_OPS
70
+ // CHECK-NEXT: namespace llvm::MyNamespace {
71
+ // CHECK-NEXT: LLVM_READONLY static uint8_t getInstructionIndexForOpLookup(uint16_t Opcode) {
72
+ // CHECK-NEXT: static constexpr uint8_t InstructionIndex[] = {
73
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
74
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
77
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
78
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
79
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
80
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
81
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
82
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
83
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
84
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
85
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
86
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
87
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
88
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
89
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
90
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
91
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
92
+ // CHECK-NEXT: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 0,
93
+ // CHECK-NEXT: };
94
+ // CHECK-NEXT: return InstructionIndex[Opcode];
95
+ // CHECK-NEXT: }
96
+ // CHECK-NEXT: LLVM_READONLY int16_t getNamedOperandIdx(uint16_t Opcode, OpName Name) {
97
+ // CHECK-NEXT: assert(Name != OpName::NUM_OPERAND_NAMES);
98
+ // CHECK-NEXT: static constexpr int8_t OperandMap[][5] = {
99
+ // CHECK-NEXT: {-1, -1, -1, -1, -1, },
100
+ // CHECK-NEXT: {0, 1, 2, -1, -1, },
101
+ // CHECK-NEXT: {-1, -1, -1, 0, 1, },
102
+ // CHECK-NEXT: };
103
+ // CHECK-NEXT: unsigned InstrIdx = getInstructionIndexForOpLookup(Opcode);
104
+ // CHECK-NEXT: return OperandMap[InstrIdx][(unsigned)Name];
105
+ // CHECK-NEXT: }
106
+ // CHECK-NEXT: LLVM_READONLY OpName getOperandIdxName(uint16_t Opcode, int16_t Idx) {
107
+ // CHECK-NEXT: assert(Idx >= 0 && Idx < 3);
108
+ // CHECK-NEXT: static constexpr OpName OperandMap[][3] = {
109
+ // CHECK-NEXT: {OpName::NUM_OPERAND_NAMES, OpName::NUM_OPERAND_NAMES, OpName::NUM_OPERAND_NAMES, },
110
+ // CHECK-NEXT: {OpName::a, OpName::b, OpName::c, },
111
+ // CHECK-NEXT: {OpName::d, OpName::x, OpName::NUM_OPERAND_NAMES, },
112
+ // CHECK-NEXT: };
113
+ // CHECK-NEXT: unsigned InstrIdx = getInstructionIndexForOpLookup(Opcode);
114
+ // CHECK-NEXT: return OperandMap[InstrIdx][(unsigned)Idx];
115
+ // CHECK-NEXT: }
116
+ // CHECK-NEXT: } // end namespace llvm::MyNamespace
117
+ // CHECK-NEXT: #endif //GET_INSTRINFO_NAMED_OPS
0 commit comments