@@ -105,7 +105,8 @@ def Inst3 : Instruction16Bit<3> {
105105// When we specialize per bitwidth, we emit 2 decodeToMCInst functions and
106106// DecodeIdx is assigned per bit width.
107107
108- // CHECK-SPECIALIZE-NO-TABLE-LABEL: DecoderTable8[25]
108+ // CHECK-SPECIALIZE-NO-TABLE-LABEL: DecoderTable8[26]
109+ // CHECK-SPECIALIZE-NO-TABLE: /* 0 */ 8, // Bitwidth 8
109110// CHECK-SPECIALIZE-NO-TABLE: DecodeIdx: 0
110111// CHECK-SPECIALIZE-NO-TABLE: DecodeIdx: 1
111112// CHECK-SPECIALIZE-NO-TABLE: };
@@ -116,7 +117,8 @@ def Inst3 : Instruction16Bit<3> {
116117// CHECK-SPECIALIZE-NO-TABLE: case 0
117118// CHECK-SPECIALIZE-NO-TABLE: case 1
118119
119- // CHECK-SPECIALIZE-NO-TABLE-LABEL: DecoderTable16[25]
120+ // CHECK-SPECIALIZE-NO-TABLE-LABEL: DecoderTable16[26]
121+ // CHECK-SPECIALIZE-NO-TABLE: /* 0 */ 16, // Bitwidth 16
120122// CHECK-SPECIALIZE-NO-TABLE: DecodeIdx: 0
121123// CHECK-SPECIALIZE-NO-TABLE: DecodeIdx: 1
122124// CHECK-SPECIALIZE-NO-TABLE: };
@@ -127,11 +129,17 @@ def Inst3 : Instruction16Bit<3> {
127129// CHECK-SPECIALIZE-NO-TABLE: case 0
128130// CHECK-SPECIALIZE-NO-TABLE: case 1
129131
132+ // CHECK-SPECIALIZE-NO-TABLE-LABEL: template <typename InsnType>
133+ // CHECK-SPECIALIZE-NO-TABLE-NEXT: decodeInstruction
134+ // CHECK-SPECIALIZE-NO-TABLE: uint32_t BitWidth = decodeULEB128AndIncUnsafe(Ptr);
135+ // CHECK-SPECIALIZE-NO-TABLE-NEXT: assert(InsnBitWidth<InsnType> == BitWidth &&
136+
130137// -----------------------------------------------------------------------------
131138// Per bitwidth specialization with function table.
132139
133140// 8 bit deccoder table, functions, and function table.
134- // CHECK-SPECIALIZE-TABLE-LABEL: DecoderTable8[25]
141+ // CHECK-SPECIALIZE-TABLE-LABEL: DecoderTable8[26]
142+ // CHECK-SPECIALIZE-TABLE: /* 0 */ 8, // Bitwidth 8
135143// CHECK-SPECIALIZE-TABLE: DecodeIdx: 0
136144// CHECK-SPECIALIZE-TABLE: DecodeIdx: 1
137145// CHECK-SPECIALIZE-TABLE: };
@@ -153,7 +161,8 @@ def Inst3 : Instruction16Bit<3> {
153161// CHECK-SPECIALIZE-TABLE-NEXT: };
154162
155163// 16 bit deccoder table, functions, and function table.
156- // CHECK-SPECIALIZE-TABLE-LABEL: DecoderTable16[25]
164+ // CHECK-SPECIALIZE-TABLE-LABEL: DecoderTable16[26]
165+ // CHECK-SPECIALIZE-TABLE: /* 0 */ 16, // Bitwidth 16
157166// CHECK-SPECIALIZE-TABLE: DecodeIdx: 0
158167// CHECK-SPECIALIZE-TABLE: DecodeIdx: 1
159168// CHECK-SPECIALIZE-TABLE: };
@@ -173,3 +182,8 @@ def Inst3 : Instruction16Bit<3> {
173182// CHECK-SPECIALIZE-TABLE-NEXT: decodeFn_16bit_0,
174183// CHECK-SPECIALIZE-TABLE-NEXT: decodeFn_16bit_1,
175184// CHECK-SPECIALIZE-TABLE-NEXT: };
185+
186+ // CHECK-SPECIALIZE-TABLE-LABEL: template <typename InsnType>
187+ // CHECK-SPECIALIZE-TABLE-NEXT: decodeInstruction
188+ // CHECK-SPECIALIZE-TABLE: uint32_t BitWidth = decodeULEB128AndIncUnsafe(Ptr);
189+ // CHECK-SPECIALIZE-TABLE-NEXT: assert(InsnBitWidth<InsnType> == BitWidth &&
0 commit comments