Skip to content

Commit cf1d2e4

Browse files
authored
[X86] Fix an assembler bug of CMPCCXADD. (#66748)
1 parent 632d13c commit cf1d2e4

File tree

4 files changed

+12
-2
lines changed

4 files changed

+12
-2
lines changed

llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -947,11 +947,11 @@ X86MCCodeEmitter::emitVEXOpcodePrefix(int MemOperand, const MCInst &MI,
947947
default:
948948
llvm_unreachable("Unexpected form in emitVEXOpcodePrefix!");
949949
case X86II::MRMDestMem4VOp3CC: {
950-
// MemAddr, src1(ModR/M), src2(VEX_4V)
950+
// src1(ModR/M), MemAddr, src2(VEX_4V)
951+
Prefix.setR(MI, CurOp++);
951952
Prefix.setB(MI, MemOperand + X86::AddrBaseReg);
952953
Prefix.setX(MI, MemOperand + X86::AddrIndexReg);
953954
CurOp += X86::AddrNumOperands;
954-
Prefix.setR(MI, ++CurOp);
955955
Prefix.set4V(MI, CurOp++);
956956
break;
957957
}

llvm/test/MC/Disassembler/X86/cmpccxadd-64.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -769,3 +769,7 @@
769769
# INTEL: cmpzxadd qword ptr [rdx - 1024], r9, r10
770770
0xc4,0x62,0xa9,0xe4,0x8a,0x00,0xfc,0xff,0xff
771771

772+
# ATT: cmpbexadd %ecx, %r8d, (%rip)
773+
# INTEL: cmpbexadd dword ptr [rip], r8d, ecx
774+
0xc4,0x62,0x71,0xe6,0x05,0x00,0x00,0x00,0x00
775+

llvm/test/MC/X86/cmpccxadd-att-64.s

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -768,3 +768,6 @@
768768
// CHECK: encoding: [0xc4,0x62,0xa9,0xe4,0x8a,0x00,0xfc,0xff,0xff]
769769
cmpzxadd %r10, %r9, -1024(%rdx)
770770

771+
// CHECK: cmpbexadd %ecx, %r8d, (%rip)
772+
// CHECK: encoding: [0xc4,0x62,0x71,0xe6,0x05,0x00,0x00,0x00,0x00]
773+
cmpbexadd %ecx, %r8d, (%rip)

llvm/test/MC/X86/cmpccxadd-intel-64.s

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -768,3 +768,6 @@
768768
// CHECK: encoding: [0xc4,0x62,0xa9,0xe4,0x8a,0x00,0xfc,0xff,0xff]
769769
cmpzxadd qword ptr [rdx - 1024], r9, r10
770770

771+
// CHECK: cmpbexadd dword ptr [rip], r8d, ecx
772+
// CHECK: encoding: [0xc4,0x62,0x71,0xe6,0x05,0x00,0x00,0x00,0x00]
773+
cmpbexadd dword ptr [rip], r8d, ecx

0 commit comments

Comments
 (0)