https://sourceware.org/bugzilla/show_bug.cgi?id=32813
Bug ID: 32813 Summary: Missing REX prefix for LSL Product: binutils Version: 2.45 (HEAD) Status: UNCONFIRMED Severity: normal Priority: P2 Component: gas Assignee: unassigned at sourceware dot org Reporter: abel at cs dot uni-saarland.de Target Milestone: --- Example: ``` .intel_syntax noprefix LSL ECX, EDX LSL RCX, RDX REX.W LSL ECX, EDX ``` objdump output: ``` 0: 0f 03 ca lsl ecx,edx 3: 0f 03 ca lsl ecx,edx 6: 48 0f 03 ca lsl rcx,rdx ``` The second instruction should be encoded with a REX.W prefix (and thus have the same encoding as the third instruction). In earlier versions (e.g., 2.34) this was the case. A related issue: According to Intel's documentation (https://www.felixcloutier.com/x86/lsl), the source operand is a 32-bit register. However, the current version of gas does not accept the syntax `LSL RCX, EDX` ("register type mismatch"). Earlier versions accepted this syntax. This may have been caused by this change: https://github.com/bminor/binutils-gdb/commit/859aa2c86dc9721424d96584879385a18ccf76ed The intention of the change was to also support a 16-bit register as the source register, but I don't think the intention was to remove support for 32-bit registers. -- You are receiving this mail because: You are on the CC list for the bug.