Skip to content

Commit 6ae0d95

Browse files
authored
[TableGen][DecoderEmitter] Print the size of the decoder tables (#155139)
So we can see the changes in table sizes after making changes to DecoderEmitter by simply running `grep DecoderTable`. Also, remove an unnecessary terminating 0 from the end of the tables.
1 parent 970516d commit 6ae0d95

File tree

5 files changed

+33
-35
lines changed

5 files changed

+33
-35
lines changed

llvm/test/TableGen/FixedLenDecoderEmitter/big-filter.td

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class I : Instruction {
1111

1212
// Check that a 64-bit filter with all bits set does not confuse DecoderEmitter.
1313
//
14-
// CHECK-LABEL: static const uint8_t DecoderTable128[] = {
14+
// CHECK-LABEL: static const uint8_t DecoderTable128[35] = {
1515
// CHECK-NEXT: MCD::OPC_ExtractField, 0, 64,
1616
// CHECK-NEXT: MCD::OPC_FilterValue, 1, 8, 0,
1717
// CHECK-NEXT: MCD::OPC_CheckFieldOrFail, 127, 1, 1,
@@ -20,7 +20,6 @@ class I : Instruction {
2020
// CHECK-NEXT: MCD::OPC_CheckFieldOrFail, 127, 1, 0,
2121
// CHECK-NEXT: MCD::OPC_Decode, 186, 2, 0,
2222
// CHECK-NEXT: MCD::OPC_Fail,
23-
// CHECK-NEXT: 0
2423
// CHECK-NEXT: };
2524

2625
def I1 : I {

llvm/test/TableGen/HwModeEncodeDecode.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,10 @@ def baz : Instruction {
7070
}
7171
}
7272

73-
// DECODER-LABEL: DecoderTable_ModeA32[] =
73+
// DECODER-LABEL: DecoderTable_ModeA32[22] =
7474
// DECODER-DAG: Opcode: fooTypeEncA:foo
7575
// DECODER-DAG: Opcode: bar
76-
// DECODER-LABEL: DecoderTable_ModeB32[] =
76+
// DECODER-LABEL: DecoderTable_ModeB32[30] =
7777
// DECODER-DAG: Opcode: fooTypeEncB:foo
7878
// DECODER-DAG: Opcode: fooTypeEncA:baz
7979
// DECODER-DAG: Opcode: bar

llvm/test/TableGen/HwModeEncodeDecode2.td

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -93,26 +93,26 @@ let OutOperandList = (outs) in {
9393
}
9494
}
9595

96-
// DECODER-LABEL: DecoderTable_ModeA32[] =
96+
// DECODER-LABEL: DecoderTable_ModeA32[22] =
9797
// DECODER-DAG: Opcode: fooTypeEncA:foo
9898
// DECODER-DAG: Opcode: bar
99-
// DECODER-LABEL: DecoderTable_ModeB32[] =
99+
// DECODER-LABEL: DecoderTable_ModeB32[30] =
100100
// DECODER-DAG: Opcode: fooTypeEncB:foo
101101
// DECODER-DAG: Opcode: fooTypeEncA:baz
102102
// DECODER-DAG: Opcode: bar
103-
// DECODER-LABEL: DecoderTableAlt_ModeA32[] =
103+
// DECODER-LABEL: DecoderTableAlt_ModeA32[9] =
104104
// DECODER-DAG: Opcode: unrelated
105-
// DECODER-LABEL: DecoderTableAlt_ModeB32[] =
105+
// DECODER-LABEL: DecoderTableAlt_ModeB32[9] =
106106
// DECODER-DAG: Opcode: unrelated
107107

108-
// DECODER-SUPPRESS-LABEL: DecoderTable32[] =
108+
// DECODER-SUPPRESS-LABEL: DecoderTable32[9] =
109109
// DECODER-SUPPRESS-DAG: Opcode: bar
110-
// DECODER-SUPPRESS-LABEL: DecoderTable_ModeA32[] =
110+
// DECODER-SUPPRESS-LABEL: DecoderTable_ModeA32[9] =
111111
// DECODER-SUPPRESS-DAG: Opcode: fooTypeEncA:foo
112112
// DECODER-SUPPRESS-NOT: Opcode: bar
113-
// DECODER-SUPPRESS-LABEL: DecoderTable_ModeB32[] =
113+
// DECODER-SUPPRESS-LABEL: DecoderTable_ModeB32[22] =
114114
// DECODER-SUPPRESS-DAG: Opcode: fooTypeEncB:foo
115115
// DECODER-SUPPRESS-DAG: Opcode: fooTypeEncA:baz
116116
// DECODER-SUPPRESS-NOT: Opcode: bar
117-
// DECODER-SUPPRESS-LABEL: DecoderTableAlt32[] =
117+
// DECODER-SUPPRESS-LABEL: DecoderTableAlt32[9] =
118118
// DECODER-SUPPRESS-DAG: Opcode: unrelated

llvm/test/TableGen/HwModeEncodeDecode3.td

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -116,46 +116,46 @@ def unrelated: Instruction {
116116
// significant duplication of DecoderTables. The four tables ‘DecoderTableAlt32’,
117117
// ‘DecoderTableAlt_ModeA32’, ‘DecoderTableAlt_ModeB32’ and 'DecoderTable_ModeC32' are
118118
// exact duplicates and could effectively be merged into one.
119-
// DECODER-LABEL: DecoderTable32[] =
119+
// DECODER-LABEL: DecoderTable32[9] =
120120
// DECODER-DAG: Opcode: bar
121-
// DECODER-LABEL: DecoderTable64[] =
121+
// DECODER-LABEL: DecoderTable64[9] =
122122
// DECODER-DAG: Opcode: fooTypeEncDefault:foo
123-
// DECODER-LABEL: DecoderTable_ModeA32[] =
123+
// DECODER-LABEL: DecoderTable_ModeA32[22] =
124124
// DECODER-DAG: Opcode: fooTypeEncA:foo
125125
// DECODER-DAG: Opcode: bar
126-
// DECODER-LABEL: DecoderTable_ModeB32[] =
126+
// DECODER-LABEL: DecoderTable_ModeB32[30] =
127127
// DECODER-DAG: Opcode: fooTypeEncB:foo
128128
// DECODER-DAG: Opcode: fooTypeEncA:baz
129129
// DECODER-DAG: Opcode: bar
130-
// DECODER-LABEL: DecoderTable_ModeC32[] =
130+
// DECODER-LABEL: DecoderTable_ModeC32[22] =
131131
// DECODER-DAG: Opcode: fooTypeEncC:foo
132132
// DECODER-DAG: Opcode: bar
133-
// DECODER-LABEL: DecoderTableAlt32[] =
133+
// DECODER-LABEL: DecoderTableAlt32[9] =
134134
// DECODER-DAG: Opcode: unrelated
135-
// DECODER-LABEL: DecoderTableAlt_ModeA32[] =
135+
// DECODER-LABEL: DecoderTableAlt_ModeA32[9] =
136136
// DECODER-DAG: Opcode: unrelated
137-
// DECODER-LABEL: DecoderTableAlt_ModeB32[] =
137+
// DECODER-LABEL: DecoderTableAlt_ModeB32[9] =
138138
// DECODER-DAG: Opcode: unrelated
139-
// DECODER-LABEL: DecoderTableAlt_ModeC32[] =
139+
// DECODER-LABEL: DecoderTableAlt_ModeC32[9] =
140140
// DECODER-DAG: Opcode: unrelated
141141

142142
// Under the 'O1' optimization level, unnecessary duplicate tables will be eliminated,
143143
// reducing the four ‘Alt’ tables down to just one.
144-
// DECODER-SUPPRESS-O1-LABEL: DecoderTable32[] =
144+
// DECODER-SUPPRESS-O1-LABEL: DecoderTable32[9] =
145145
// DECODER-SUPPRESS-O1-DAG: Opcode: bar
146-
// DECODER-SUPPRESS-O1-LABEL: DecoderTable64[] =
146+
// DECODER-SUPPRESS-O1-LABEL: DecoderTable64[9] =
147147
// DECODER-SUPPRESS-O1-DAG: Opcode: fooTypeEncDefault:foo
148-
// DECODER-SUPPRESS-O1-LABEL: DecoderTable_ModeA32[] =
148+
// DECODER-SUPPRESS-O1-LABEL: DecoderTable_ModeA32[22] =
149149
// DECODER-SUPPRESS-O1-DAG: Opcode: fooTypeEncA:foo
150150
// DECODER-SUPPRESS-O1-DAG: Opcode: bar
151-
// DECODER-SUPPRESS-O1-LABEL: DecoderTable_ModeB32[] =
151+
// DECODER-SUPPRESS-O1-LABEL: DecoderTable_ModeB32[30] =
152152
// DECODER-SUPPRESS-O1-DAG: Opcode: fooTypeEncB:foo
153153
// DECODER-SUPPRESS-O1-DAG: Opcode: fooTypeEncA:baz
154154
// DECODER-SUPPRESS-O1-DAG: Opcode: bar
155-
// DECODER-SUPPRESS-O1-LABEL: DecoderTable_ModeC32[] =
155+
// DECODER-SUPPRESS-O1-LABEL: DecoderTable_ModeC32[22] =
156156
// DECODER-SUPPRESS-O1-DAG: Opcode: fooTypeEncC:foo
157157
// DECODER-SUPPRESS-O1-DAG: Opcode: bar
158-
// DECODER-SUPPRESS-O1-LABEL: DecoderTableAlt32[] =
158+
// DECODER-SUPPRESS-O1-LABEL: DecoderTableAlt32[9] =
159159
// DECODER-SUPPRESS-O1-DAG: Opcode: unrelated
160160

161161
// Under the 'O2' optimization condition, instructions possessing the 'EncodingByHwMode'
@@ -164,22 +164,22 @@ def unrelated: Instruction {
164164
// attribute but are within the same DecoderNamespace will be stored in the 'Default' table. This
165165
// approach will significantly reduce instruction redundancy, but it necessitates users to thoroughly
166166
// consider the interplay between HwMode and DecoderNamespace for their instructions.
167-
// DECODER-SUPPRESS-O2-LABEL: DecoderTable32[] =
167+
// DECODER-SUPPRESS-O2-LABEL: DecoderTable32[9] =
168168
// DECODER-SUPPRESS-O2-DAG: Opcode: bar
169-
// DECODER-SUPPRESS-O2-LABEL: DecoderTable64[] =
169+
// DECODER-SUPPRESS-O2-LABEL: DecoderTable64[9] =
170170
// DECODER-SUPPRESS-O2-NOT: Opcode: bar
171171
// DECODER-SUPPRESS-O2-DAG: Opcode: fooTypeEncDefault:foo
172-
// DECODER-SUPPRESS-O2-LABEL: DecoderTable_ModeA32[] =
172+
// DECODER-SUPPRESS-O2-LABEL: DecoderTable_ModeA32[9] =
173173
// DECODER-SUPPRESS-O2-DAG: Opcode: fooTypeEncA:foo
174174
// DECODER-SUPPRESS-O2-NOT: Opcode: bar
175-
// DECODER-SUPPRESS-O2-LABEL: DecoderTable_ModeB32[] =
175+
// DECODER-SUPPRESS-O2-LABEL: DecoderTable_ModeB32[22] =
176176
// DECODER-SUPPRESS-O2-DAG: Opcode: fooTypeEncB:foo
177177
// DECODER-SUPPRESS-O2-DAG: Opcode: fooTypeEncA:baz
178178
// DECODER-SUPPRESS-O2-NOT: Opcode: bar
179-
// DECODER-SUPPRESS-O2-LABEL: DecoderTable_ModeC32[] =
179+
// DECODER-SUPPRESS-O2-LABEL: DecoderTable_ModeC32[13] =
180180
// DECODER-SUPPRESS-O2-DAG: Opcode: fooTypeEncC:foo
181181
// DECODER-SUPPRESS-O2-NOT: Opcode: bar
182-
// DECODER-SUPPRESS-O2-LABEL: DecoderTableAlt32[] =
182+
// DECODER-SUPPRESS-O2-LABEL: DecoderTableAlt32[9] =
183183
// DECODER-SUPPRESS-O2-DAG: Opcode: unrelated
184184

185185
// For 'bar' and 'unrelated', we didn't assign any HwModes for them,

llvm/utils/TableGen/DecoderEmitter.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -795,7 +795,7 @@ unsigned DecoderEmitter::emitTable(formatted_raw_ostream &OS,
795795
OS << "static const uint8_t DecoderTable" << Namespace;
796796
if (HwModeID != DefaultMode)
797797
OS << '_' << Target.getHwModes().getModeName(HwModeID);
798-
OS << BitWidth << "[] = {\n";
798+
OS << BitWidth << "[" << Table.size() << "] = {\n";
799799

800800
// Emit ULEB128 encoded value to OS, returning the number of bytes emitted.
801801
auto emitULEB128 = [](DecoderTable::const_iterator &I,
@@ -978,7 +978,6 @@ unsigned DecoderEmitter::emitTable(formatted_raw_ostream &OS,
978978
break;
979979
}
980980
}
981-
OS << " 0\n";
982981
OS << "};\n\n";
983982

984983
return OpcodeMask;

0 commit comments

Comments
 (0)