Skip to content

[x86 disassembler] vpblendvb operands incorrect #11289

@llvmbot

Description

@llvmbot
Bugzilla Link 10917
Resolution FIXED
Resolved on Nov 07, 2018 00:17
Version trunk
OS All
Reporter LLVM Bugzilla Contributor
CC @topperc

Extended Description

According to the "Intel® 64 and IA-32 Architectures Software Developer’s Manual
Volume 2 (2A & 2B): Instruction Set Reference, A-Z", p. 4-69:
VEX.NDS.128.66.0F3A.W0 4C /r /is4
VPBLENDVB xmm1, xmm2, xmm3/m128, xmm4

Select byte values from xmm2 and xmm3/m128 using mask bits in the
specified mask register, xmm4, and store the values into xmm1.

Clang on OSX assembles this:
vpblendvb %xmm0, %xmm1, %xmm2, %xmm3

as:
C4 E3 69 4C D9 00

But llvm-mc built from r139522 shows:
$ echo '0xc4 0xe3 0x69 0x4c 0xd9 0x00'| ./llvm-mc -disassemble -triple="x86_64" -x86-asm-syntax=intel
vpblendvb XMM3, XMM2, XMM1, 0

$ echo '0xc4 0xe3 0x69 0x4c 0xd9 0x00'| ./llvm-mc -disassemble -triple="x86_64"
vpblendvb $0, %xmm1, %xmm2, %xmm3

The mask register appears to be printed as an immediate operand.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions