@jurahul FYI I have this WIP that has nothing to do with conflict resolution, but hopefully makes analysis/debugging easier by emitting more human readable tables.
The output looks like this:
static const uint8_t DecoderTableFallback32[58] = {
OPC_SwitchField, 21, 11, // 0: switch Inst[31:21] {
168, 13, 24, // 3: case 0x6a8: {
OPC_Scope, 17, // 6: {
OPC_CheckField, 0, 5, 31, // 8: check Inst[4:0] == 0x1f
OPC_CheckField, 19, 2, 0, // 12: check Inst[20:19] == 0x0
OPC_CheckField, 12, 4, 4, // 16: check Inst[15:12] == 0x4
OPC_TryDecode, 44, 21, 129, 6, // 20: try decode to MSRpstateImm1 using decoder 769
// 20: }
OPC_Decode, 42, 21, 130, 6, // 25: decode to MSR using decoder 770
// 25: }
169, 13, 5, // 30: case 0x6a9: {
OPC_Decode, 37, 21, 131, 6, // 33: decode to MRS using decoder 771
// 33: }
197, 15, 0, // 38: case 0x7c5: {
OPC_CheckField, 14, 1, 1, // 41: check Inst[14:14] == 0x1
OPC_CheckField, 10, 2, 2, // 45: check Inst[11:10] == 0x2
OPC_CheckField, 3, 2, 3, // 49: check Inst[4:3] == 0x3
OPC_Decode, 153, 22, 132, 6, // 53: decode to RPRFM using decoder 772
// 53: }
// 53: } // switch Inst[31:21]
};
It’s not ready for review yet, but I’d appreciate early feedback.