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.

Reply via email to