summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp3
-rw-r--r--llvm/test/MC/X86/x86-64-avx512pf.s20
2 files changed, 13 insertions, 10 deletions
diff --git a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
index 31d26d08a63..ac36bf3a12f 100644
--- a/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
+++ b/llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
@@ -862,6 +862,9 @@ void X86MCCodeEmitter::EmitVEXOpcodePrefix(uint64_t TSFlags, unsigned &CurByte,
VEX_B = ~(BaseRegEnc >> 3) & 1;
unsigned IndexRegEnc = getX86RegEncoding(MI, MemOperand+X86::AddrIndexReg);
VEX_X = ~(IndexRegEnc >> 3) & 1;
+ if (!HasVEX_4V) // Only needed with VSIB which don't use VVVV.
+ EVEX_V2 = ~(IndexRegEnc >> 4) & 1;
+
break;
}
case X86II::MRMSrcReg: {
diff --git a/llvm/test/MC/X86/x86-64-avx512pf.s b/llvm/test/MC/X86/x86-64-avx512pf.s
index 6cbf255eee8..bae7fb0f235 100644
--- a/llvm/test/MC/X86/x86-64-avx512pf.s
+++ b/llvm/test/MC/X86/x86-64-avx512pf.s
@@ -1,23 +1,23 @@
// RUN: llvm-mc -triple x86_64-unknown-unknown --show-encoding %s | FileCheck %s
// CHECK: vgatherpf0dps (%r8,%zmm20) {%k1}
-// CHECK: encoding: [0x62,0xd2,0x7d,0x49,0xc6,0x0c,0x20]
+// CHECK: encoding: [0x62,0xd2,0x7d,0x41,0xc6,0x0c,0x20]
vgatherpf0dps (%r8,%zmm20){%k1}
// CHECK: vgatherpf1dps (%r9,%zmm19) {%k2}
-// CHECK: encoding: [0x62,0xd2,0x7d,0x4a,0xc6,0x14,0x19]
+// CHECK: encoding: [0x62,0xd2,0x7d,0x42,0xc6,0x14,0x19]
vgatherpf1dps (%r9,%zmm19){%k2}
// CHECK: vgatherpf0dpd (%r10,%ymm18) {%k3}
-// CHECK: encoding: [0x62,0xd2,0xfd,0x4b,0xc6,0x0c,0x12]
+// CHECK: encoding: [0x62,0xd2,0xfd,0x43,0xc6,0x0c,0x12]
vgatherpf0dpd (%r10,%ymm18){%k3}
// CHECK: vgatherpf1dpd (%r11,%ymm17) {%k4}
-// CHECK: encoding: [0x62,0xd2,0xfd,0x4c,0xc6,0x14,0x0b]
+// CHECK: encoding: [0x62,0xd2,0xfd,0x44,0xc6,0x14,0x0b]
vgatherpf1dpd (%r11,%ymm17){%k4}
// CHECK: vgatherpf0qps (%r12,%zmm16) {%k5}
-// CHECK: encoding: [0x62,0xd2,0x7d,0x4d,0xc7,0x0c,0x04]
+// CHECK: encoding: [0x62,0xd2,0x7d,0x45,0xc7,0x0c,0x04]
vgatherpf0qps (%r12,%zmm16){%k5}
// CHECK: vgatherpf1qps (%r13,%zmm15) {%k6}
@@ -33,23 +33,23 @@ vgatherpf0qpd (%r14,%zmm14){%k7}
vgatherpf1qpd (%r15,%zmm13){%k1}
// CHECK: vscatterpf0dps (%r8,%zmm20) {%k1}
-// CHECK: encoding: [0x62,0xd2,0x7d,0x49,0xc6,0x2c,0x20]
+// CHECK: encoding: [0x62,0xd2,0x7d,0x41,0xc6,0x2c,0x20]
vscatterpf0dps (%r8,%zmm20){%k1}
// CHECK: vscatterpf1dps (%r9,%zmm19) {%k2}
-// CHECK: encoding: [0x62,0xd2,0x7d,0x4a,0xc6,0x34,0x19]
+// CHECK: encoding: [0x62,0xd2,0x7d,0x42,0xc6,0x34,0x19]
vscatterpf1dps (%r9,%zmm19){%k2}
// CHECK: vscatterpf0dpd (%r10,%ymm18) {%k3}
-// CHECK: encoding: [0x62,0xd2,0xfd,0x4b,0xc6,0x2c,0x12]
+// CHECK: encoding: [0x62,0xd2,0xfd,0x43,0xc6,0x2c,0x12]
vscatterpf0dpd (%r10,%ymm18){%k3}
// CHECK: vscatterpf1dpd (%r11,%ymm17) {%k4}
-// CHECK: encoding: [0x62,0xd2,0xfd,0x4c,0xc6,0x34,0x0b]
+// CHECK: encoding: [0x62,0xd2,0xfd,0x44,0xc6,0x34,0x0b]
vscatterpf1dpd (%r11,%ymm17){%k4}
// CHECK: vscatterpf0qps (%r12,%zmm16) {%k5}
-// CHECK: encoding: [0x62,0xd2,0x7d,0x4d,0xc7,0x2c,0x04]
+// CHECK: encoding: [0x62,0xd2,0x7d,0x45,0xc7,0x2c,0x04]
vscatterpf0qps (%r12,%zmm16){%k5}
// CHECK: vscatterpf1qps (%r13,%zmm15) {%k6}
OpenPOWER on IntegriCloud