[llvm] [X86] Ignore REX prefixes not immediately before opcode (PR #117299)
Phoebe Wang via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 22 00:00:55 PST 2024
================
@@ -770,3 +770,8 @@
# CHECK: prefetchit1 (%rip)
0x0f,0x18,0x35,0x00,0x00,0x00,0x00
+
+# Check that we correctly ignore a REX prefix that is not immediately before
+# the opcode.
+# CHECK: orw $25659, %ax
----------------
phoebewang wrote:
Doesn't 0x4c immediately precede the opcode 0x64 in this case? Here is XED output:
```
xed -64 -de 664c640d3b64
664C640D3B64
ICLASS: OR
CATEGORY: LOGICAL
EXTENSION: BASE
IFORM: OR_OrAX_IMMz
ISA_SET: I86
ATTRIBUTES: SCALABLE
SHORT: or ax, 0x643b
Encodable! 66640D3B64
Discrepenacy after re-encoding. dec_len= 6 [664C640D3B64] enc_olen= 5 [66640D3B64] for instruction: OR OR_OrAX_IMMz EASZ:3, EOSZ:1, ILD_SEG:100, IMM0:0x643b, IMM0SIGNED, IMM_WIDTH:16, LZCNT, MAX_BYTES:6, MODE:2, NOMINAL_OPCODE:13, NPREFIXES:3, NREXES:1, NSEG_PREFIXES:1, OSZ, OUTREG:AX, P4, POS_IMM:4, POS_NOMINAL_OPCODE:3, PREFIX66, REG0:AX, REG1:RFLAGS, SEG_OVD:4, SMODE:2, SRM:5, TZCNT
0 REG0/RW/V/IMPLICIT/NT_LOOKUP_FN/ORAX
1 IMM0/R/Z/EXPLICIT/IMM_CONST/1
2 REG1/W/INVALID/SUPPRESSED/NT_LOOKUP_FN/RFLAGS
YDIS: or ax, 0x643b
vs Encode request: OR EASZ:3, EOSZ:1, ILD_SEG:100, IMM0:0x643b, IMM0SIGNED, IMM_WIDTH:16, LZCNT, MAX_BYTES:6, MODE:2, NOMINAL_OPCODE:13, NPREFIXES:3, NREXES:1, NSEG_PREFIXES:1, OSZ, OUTREG:AX, P4, POS_IMM:4, POS_NOMINAL_OPCODE:3, PREFIX66, REG0:AX, REG1:RFLAGS, SEG_OVD:4, SMODE:2, SRM:5, TZCNT
OPERAND ORDER: REG0 IMM0
```
https://github.com/llvm/llvm-project/pull/117299
More information about the llvm-commits
mailing list