forked from OSchip/llvm-project
[X86] Make sure the check for VEX.vvvv being all ones on instructions that don't use it doesn't ignore a bit in 32-bit mode.
llvm-svn: 333717
This commit is contained in:
parent
1eb074d76e
commit
dc5ba1e495
|
@ -1695,7 +1695,7 @@ static int readVVVV(struct InternalInstruction* insn) {
|
|||
return -1;
|
||||
|
||||
if (insn->mode != MODE_64BIT)
|
||||
vvvv &= 0x7;
|
||||
vvvv &= 0xf; // Can only clear bit 4. Bit 3 must be cleared later.
|
||||
|
||||
insn->vvvv = static_cast<Reg>(vvvv);
|
||||
return 0;
|
||||
|
@ -1860,6 +1860,8 @@ static int readOperands(struct InternalInstruction* insn) {
|
|||
needVVVV = 0; /* Mark that we have found a VVVV operand. */
|
||||
if (!hasVVVV)
|
||||
return -1;
|
||||
if (insn->mode != MODE_64BIT)
|
||||
insn->vvvv = static_cast<Reg>(insn->vvvv & 0x7);
|
||||
if (fixupReg(insn, &Op))
|
||||
return -1;
|
||||
break;
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
# RUN: llvm-mc --disassemble %s -triple=i686-apple-darwin9 2>&1 | grep "invalid instruction encoding"
|
||||
|
||||
# Make sure the VEX.vvvv being all 1s check doesn't ignore bit 3 in 32-bit mode.
|
||||
0xc4 0xe1 0xb9 0x7e 0xc0
|
Loading…
Reference in New Issue