bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gas/18638] New: Wrong code generated for VMOVQ and VGATHER... on x8


From: m at rolle dot name
Subject: [Bug gas/18638] New: Wrong code generated for VMOVQ and VGATHER... on x86 CPU
Date: Wed, 08 Jul 2015 02:32:03 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=18638

            Bug ID: 18638
           Summary: Wrong code generated for VMOVQ and VGATHER... on x86
                    CPU
           Product: binutils
           Version: unspecified
            Status: NEW
          Severity: critical
          Priority: P2
         Component: gas
          Assignee: unassigned at sourceware dot org
          Reporter: m at rolle dot name
  Target Milestone: ---

Two issues here, both with the binary code generated by gas.  These are seen in
the testsuite files.

(1) vmovq rcx, xmm4

Generates C4 E1 FD 7E E1.
The VEX.L bit (the 8's bit of the third byte) is 1.  However, AMD spec says you
must have VEX.L = 0, and in fact, VEX.L = 1 causes a #UD exception.
Intel document says the same thing.

(2) vgather...

Generates a ModR/M byte with the r/m field = 000b.  However, Intel spec says
a #UD will "cause a #UD if the memory operand is encoded without the SIB byte".
 I interpret this to mean that the r/m field must be 100b.  AMD spec says
specifically that there is a #UD if "MODRM.rm != 100b".

I've also filed an issue suggesting that the assembled code from the testsuite
be actually executed on the appropriate CPU.

-- 
You are receiving this mail because:
You are on the CC list for the bug.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]