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

            Bug ID: 24626
           Summary: gas/objdump does not check for reserved vex.vvvv bits.
           Product: binutils
           Version: 2.32
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: gas
          Assignee: unassigned at sourceware dot org
          Reporter: hgreving at google dot com
  Target Milestone: ---

gas and objdump don't seem to check the vex.vvvv and evex.vvvv bits if their
encoding is reserved:

main.s:
.byte 0xc4
.byte 0xe2
.byte 0x1
.byte 0x1c
.byte 0x41
.byte 0x37

as-new --64 main.s
objdump -d a.out
[..]
c4 e2 01 1c 41 37       vpabsb 0x37(%rcx),%xmm0

Intel's manual states that "VEX.vvvv and EVEX.vvvv are reserved and must be
1111b otherwise instructions will #UD." I suppose this means the inverted
version of the vvvv bits.

llvm-mc for example is correct:

echo '0xc4 0xe2 0x1 0x1c 0x41 0x37' | llvm-mc-7 --disassemble -triple=x86_64
        .text
<stdin>:1:1: warning: invalid instruction encoding
0xc4 0xe2 0x1 0x1c 0x41 0x37
^

echo '0xc4 0xe2 0x79 0x1c 0x41 0x37' | llvm-mc-7 --disassemble -triple=x86_64
        .text
        vpabsb  55(%rcx), %xmm0

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to