test(disasm): drop the closed byte-width divergences from the parity map
The operand-width reconciliation closes the byte-register fixture lines byte for byte: XADDL, XCHGL, CMPXCHGL and CRC32 with byte registers, the ALU and TEST immediates against AL and DL, and the unlisted accumulator short forms. MOVL $0x7, DL stays mapped for the legal-encoding choice alone: the toolchain's own table says "c6c207 or b207", go tool asm emits b207, and the fixed-point invariant holds with it. Assisted-by: GLM 5.3
This commit is contained in:
1 parent
8bded3ea39
commit
d98aadbbbf
1 file changed
+14
-23
+14
-23
@@ -200,26 +200,22 @@ var toolchainRenderNames = map[string]bool{
|
|||||||
// encoder, reported and not fixed here; the disassembler text itself is the
|
// encoder, reported and not fixed here; the disassembler text itself is the
|
||||||
// toolchain's. amd64: CMOVLE encodes the CMOVE condition code; MOVQ to a
|
// toolchain's. amd64: CMOVLE encodes the CMOVE condition code; MOVQ to a
|
||||||
// memory operand drops the FS segment prefix; MOVQ2DQ takes the F2 prefix
|
// memory operand drops the FS segment prefix; MOVQ2DQ takes the F2 prefix
|
||||||
// and lands in MOVDQ2Q; CRC32 with a 16-bit register widens to 32 bits.
|
// and lands in MOVDQ2Q; MOVD re-encodes through the 64-bit MOVQ alias; the
|
||||||
// arm64: the CRC32 forms take the wrong Rm; the register-indexed load and
|
// byte-register lines that render with the L suffix encode the byte form
|
||||||
// store forms lose the index operand; BFXIL encodes as BFI with shifted
|
// since the operand-width reconciliation, MOVL $0x7, DL keeping only the
|
||||||
// immediates. loong64: the SC displacement encodes unscaled.
|
// legal-encoding difference (the toolchain's own table says "c6c207 or
|
||||||
// riscv64: FSGNJXS encodes as FMIN.S; FCLASSS and FCLASSD encode as MOVF;
|
// b207", and go tool asm emits b207, so the fixed-point invariant holds
|
||||||
// the AUIPC immediate loses its high bits. Keyed by the fixture text.
|
// where the pinned bytes took the alternative). arm64: the CRC32 forms
|
||||||
|
// take the wrong Rm; the register-indexed load and store forms lose the
|
||||||
|
// index operand; BFXIL encodes as BFI with shifted immediates. loong64:
|
||||||
|
// the SC displacement encodes unscaled. riscv64: FSGNJXS encodes as
|
||||||
|
// FMIN.S; FCLASSS and FCLASSD encode as MOVF; the AUIPC immediate loses
|
||||||
|
// its high bits. Keyed by the fixture text.
|
||||||
var encoderDivergences = map[string]bool{
|
var encoderDivergences = map[string]bool{
|
||||||
"CMOVLE 0(BX), DX": true,
|
"CMOVLE 0(BX), DX": true,
|
||||||
"MOVQ FS:0, DX": true,
|
"MOVQ FS:0, DX": true,
|
||||||
"MOVQ2DQ M2, X11": true,
|
"MOVQ2DQ M2, X11": true,
|
||||||
"CRC32 DL, R11": true,
|
"MOVL $0x7, DL": true,
|
||||||
"XADDL DL, DL": true,
|
|
||||||
"XCHGL DL, DL": true,
|
|
||||||
"CMPL AL, $0x7": true,
|
|
||||||
"CMPXCHGL DL, DL": true,
|
|
||||||
"ANDL $0x7, AL": true,
|
|
||||||
"SBBL $0x7, DL": true,
|
|
||||||
"SBBL DL, R11": true,
|
|
||||||
"SUBL $0x7, AL": true,
|
|
||||||
"TESTL R11, DL": true,
|
|
||||||
"BFXIL $26, R8, $16, R20": true,
|
"BFXIL $26, R8, $16, R20": true,
|
||||||
"CRC32B R17, R8, R16": true,
|
"CRC32B R17, R8, R16": true,
|
||||||
"CRC32CB R19, R27, R22": true,
|
"CRC32CB R19, R27, R22": true,
|
||||||
@@ -233,14 +229,9 @@ var encoderDivergences = map[string]bool{
|
|||||||
"FCLASSS F0, X5": true,
|
"FCLASSS F0, X5": true,
|
||||||
"FCLASSD F0, X5": true,
|
"FCLASSD F0, X5": true,
|
||||||
"AUIPC $524287, X10": true,
|
"AUIPC $524287, X10": true,
|
||||||
// From the unlisted amd64 fixture: the 8-bit accumulator and register
|
// From the unlisted amd64 fixture: MOVD re-encodes through the 64-bit
|
||||||
// immediate short forms render with a 32-bit suffix ("ADDL $0x7, AL"),
|
// MOVQ alias; POPW drops the operand-size prefix. Findings for asm,
|
||||||
// which re-assembles as the 32-bit form; MOVD re-encodes as the 64-bit
|
|
||||||
// MOVQ form; POPW drops the operand-size prefix. Findings for asm,
|
|
||||||
// reported and not fixed here.
|
// reported and not fixed here.
|
||||||
"ADDL $0x7, AL": true,
|
|
||||||
"MOVL $0x7, DL": true,
|
|
||||||
"SBBL $0x7, AL": true,
|
|
||||||
"POPW FS": true,
|
"POPW FS": true,
|
||||||
"POPW GS": true,
|
"POPW GS": true,
|
||||||
"MOVD DX, M2": true,
|
"MOVD DX, M2": true,
|
||||||
|
|||||||
Reference in new issue
Block a user