Skip to content

Commit 9905b7e

Browse files
committed
Print CheckAny as a sequence of try-else, fix SoftFail output
This reduces the vertical size of the output and should make it clearer. Drop "check" when printing SoftFail because this opcode cannot fail.
1 parent 3036d96 commit 9905b7e

File tree

6 files changed

+21
-28
lines changed

6 files changed

+21
-28
lines changed

llvm/test/TableGen/DecoderEmitter/additional-encoding.td

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,38 +33,34 @@ class I<dag out_ops, dag in_ops> : Instruction {
3333
// CHECK-LABEL: static const uint8_t DecoderTable16[67] = {
3434
// CHECK-NEXT: OPC_SwitchField, 12, 4, // 0: switch Inst[15:12] {
3535
// CHECK-NEXT: 0, 14, // 3: case 0x0: {
36-
// CHECK-NEXT: OPC_Scope, 8, // 5: {
36+
// CHECK-NEXT: OPC_Scope, 8, // 5: try {
3737
// CHECK-NEXT: OPC_CheckField, 6, 6, 0, // 7: check Inst[11:6] == 0x0
3838
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 0, // 11: decode to NOP using decoder 0
39-
// CHECK-NEXT: // 11: }
40-
// CHECK-NEXT: // 11: {
39+
// CHECK-NEXT: // 11: } else try {
4140
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 1, // 15: decode to SHIFT0 using decoder 1
4241
// CHECK-NEXT: // 15: }
4342
// CHECK-NEXT: // 15: }
4443
// CHECK-NEXT: 1, 14, // 19: case 0x1: {
45-
// CHECK-NEXT: OPC_Scope, 8, // 21: {
44+
// CHECK-NEXT: OPC_Scope, 8, // 21: try {
4645
// CHECK-NEXT: OPC_CheckField, 6, 6, 0, // 23: check Inst[11:6] == 0x0
4746
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 0, // 27: decode to {{.*}}:NOP using decoder 0
48-
// CHECK-NEXT: // 27: }
49-
// CHECK-NEXT: // 27: {
47+
// CHECK-NEXT: // 27: } else try {
5048
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 1, // 31: decode to SHIFT1 using decoder 1
5149
// CHECK-NEXT: // 31: }
5250
// CHECK-NEXT: // 31: }
5351
// CHECK-NEXT: 2, 14, // 35: case 0x2: {
54-
// CHECK-NEXT: OPC_Scope, 8, // 37: {
52+
// CHECK-NEXT: OPC_Scope, 8, // 37: try {
5553
// CHECK-NEXT: OPC_CheckField, 6, 6, 0, // 39: check Inst[11:6] == 0x0
5654
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 0, // 43: decode to {{.*}}:NOP using decoder 0
57-
// CHECK-NEXT: // 43: }
58-
// CHECK-NEXT: // 43: {
55+
// CHECK-NEXT: // 43: } else try {
5956
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 1, // 47: decode to SHIFT2 using decoder 1
6057
// CHECK-NEXT: // 47: }
6158
// CHECK-NEXT: // 47: }
6259
// CHECK-NEXT: 3, 0, // 51: case 0x3: {
63-
// CHECK-NEXT: OPC_Scope, 8, // 53: {
60+
// CHECK-NEXT: OPC_Scope, 8, // 53: try {
6461
// CHECK-NEXT: OPC_CheckField, 6, 6, 0, // 55: check Inst[11:6] == 0x0
6562
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 0, // 59: decode to {{.*}}:NOP using decoder 0
66-
// CHECK-NEXT: // 59: }
67-
// CHECK-NEXT: // 59: {
63+
// CHECK-NEXT: // 59: } else try {
6864
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 1, // 63: decode to SHIFT3 using decoder 1
6965
// CHECK-NEXT: // 63: }
7066
// CHECK-NEXT: // 63: }

llvm/test/TableGen/DecoderEmitter/trydecode-emission.td

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,10 @@ def InstB : TestInstruction {
3535

3636
// CHECK-LABEL: static const uint8_t DecoderTable8[18] = {
3737
// CHECK-NEXT: OPC_CheckField, 4, 4, 0, // 0: check Inst[7:4] == 0x0
38-
// CHECK-NEXT: OPC_Scope, 8, // 4: {
38+
// CHECK-NEXT: OPC_Scope, 8, // 4: try {
3939
// CHECK-NEXT: OPC_CheckField, 2, 2, 0, // 6: check Inst[3:2] == 0x0
4040
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 0, // 10: decode to InstB using decoder 0
41-
// CHECK-NEXT: // 10: }
42-
// CHECK-NEXT: // 10: {
41+
// CHECK-NEXT: // 10: } else try {
4342
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 1, // 14: decode to InstA using decoder 1
4443
// CHECK-NEXT: // 14: }
4544
// CHECK-NEXT: };

llvm/test/TableGen/DecoderEmitter/trydecode-emission2.td

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,10 @@ def InstB : TestInstruction {
3333
// CHECK-LABEL: static const uint8_t DecoderTable8[26] = {
3434
// CHECK-NEXT: OPC_CheckField, 2, 1, 0, // 0: check Inst[2:2] == 0x0
3535
// CHECK-NEXT: OPC_CheckField, 5, 3, 0, // 4: check Inst[7:5] == 0x0
36-
// CHECK-NEXT: OPC_Scope, 8, // 8: {
36+
// CHECK-NEXT: OPC_Scope, 8, // 8: try {
3737
// CHECK-NEXT: OPC_CheckField, 0, 2, 3, // 10: check Inst[1:0] == 0x3
3838
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 0, // 14: decode to InstB using decoder 0
39-
// CHECK-NEXT: // 14: }
40-
// CHECK-NEXT: // 14: {
39+
// CHECK-NEXT: // 14: } else try {
4140
// CHECK-NEXT: OPC_CheckField, 3, 2, 0, // 18: check Inst[4:3] == 0x0
4241
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 1, // 22: decode to InstA using decoder 1
4342
// CHECK-NEXT: // 22: }

llvm/test/TableGen/DecoderEmitter/trydecode-emission3.td

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,10 @@ def InstB : TestInstruction {
3636

3737
// CHECK-LABEL: static const uint8_t DecoderTable8[18] = {
3838
// CHECK-NEXT: OPC_CheckField, 4, 4, 0, // 0: check Inst[7:4] == 0x0
39-
// CHECK-NEXT: OPC_Scope, 8, // 4: {
39+
// CHECK-NEXT: OPC_Scope, 8, // 4: try {
4040
// CHECK-NEXT: OPC_CheckField, 2, 2, 0, // 6: check Inst[3:2] == 0x0
4141
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 0, // 10: decode to InstB using decoder 0
42-
// CHECK-NEXT: // 10: }
43-
// CHECK-NEXT: // 10: {
42+
// CHECK-NEXT: // 10: } else try {
4443
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 1, // 14: decode to InstA using decoder 1
4544
// CHECK-NEXT: // 14: }
4645
// CHECK-NEXT: };

llvm/test/TableGen/DecoderEmitter/trydecode-emission4.td

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,10 @@ def InstB : TestInstruction {
3434

3535
// CHECK-LABEL: static const uint8_t DecoderTable512[20] = {
3636
// CHECK-NEXT: OPC_CheckField, 250, 3, 4, 0, // 0: check Inst[509:506] == 0x0
37-
// CHECK-NEXT: OPC_Scope, 9, // 5: {
37+
// CHECK-NEXT: OPC_Scope, 9, // 5: try {
3838
// CHECK-NEXT: OPC_CheckField, 248, 3, 2, 0, // 7: check Inst[505:504] == 0x0
3939
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 0, // 12: decode to InstB using decoder 0
40-
// CHECK-NEXT: // 12: }
41-
// CHECK-NEXT: // 12: {
40+
// CHECK-NEXT: // 12: } else try {
4241
// CHECK-NEXT: OPC_Decode, {{[0-9, ]+}}, 1, // 16: decode to InstA using decoder 1
4342
// CHECK-NEXT: // 16: }
4443
// CHECK-NEXT: };

llvm/utils/TableGen/DecoderTableEmitter.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,17 +178,18 @@ void DecoderTableEmitter::emitCheckAnyNode(const CheckAnyNode *N,
178178
return;
179179
}
180180

181+
ListSeparator LS("} else ");
181182
for (const DecoderTreeNode *Child : drop_end(N->children())) {
182183
emitOpcode("OPC_Scope");
183184
emitULEB128(computeNodeSize(Child));
184185

185-
emitComment(Indent) << "{\n";
186+
emitComment(Indent) << LS << "try {\n";
186187
emitNode(Child, Indent + 1);
187-
emitComment(Indent) << "}\n";
188188
}
189189

190190
const DecoderTreeNode *Child = *std::prev(N->child_end());
191-
emitComment(Indent) << "{\n";
191+
192+
emitComment(Indent) << LS << "try {\n";
192193
emitNode(Child, Indent + 1);
193194
emitComment(Indent) << "}\n";
194195
}
@@ -272,7 +273,7 @@ void DecoderTableEmitter::emitSoftFailNode(const SoftFailNode *N,
272273
emitULEB128(NegativeMask);
273274
TableInfo.HasSoftFail = true;
274275

275-
emitComment(Indent) << "check softfail";
276+
emitComment(Indent) << "softfail";
276277
OS << " pos=" << format_hex(PositiveMask, 10);
277278
OS << " neg=" << format_hex(NegativeMask, 10) << '\n';
278279
}

0 commit comments

Comments
 (0)