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.