Skip to content

[X86][MC] Support Enc/Dec for EGPR for promoted CMPCCXADD instruction #76125

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Dec 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1060,7 +1060,7 @@ X86MCCodeEmitter::emitVEXOpcodePrefix(int MemOperand, const MCInst &MI,
Prefix.setBB2(MI, MemOperand + X86::AddrBaseReg);
Prefix.setXX2(MI, MemOperand + X86::AddrIndexReg);
CurOp += X86::AddrNumOperands;
Prefix.set4V(MI, CurOp++);
Prefix.set4VV2(MI, CurOp++);
break;
}
case X86II::MRM_C0:
Expand Down
5 changes: 5 additions & 0 deletions llvm/lib/Target/X86/X86InstrAsmAlias.td
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,11 @@ multiclass CMPCCXADD_Aliases<string Cond, int CC> {
(CMPCCXADDmr32 GR32:$dst, i32mem:$dstsrc2, GR32:$src3, CC), 0>;
def : InstAlias<"cmp"#Cond#"xadd"#"\t{$src3, $dst, $dstsrc2|$dstsrc2, $dst, $src3}",
(CMPCCXADDmr64 GR64:$dst, i64mem:$dstsrc2, GR64:$src3, CC), 0>;

def : InstAlias<"cmp"#Cond#"xadd"#"\t{$src3, $dst, $dstsrc2|$dstsrc2, $dst, $src3}",
(CMPCCXADDmr32_EVEX GR32:$dst, i32mem:$dstsrc2, GR32:$src3, CC), 0>;
def : InstAlias<"cmp"#Cond#"xadd"#"\t{$src3, $dst, $dstsrc2|$dstsrc2, $dst, $src3}",
(CMPCCXADDmr64_EVEX GR64:$dst, i64mem:$dstsrc2, GR64:$src3, CC), 0>;
}

//===----------------------------------------------------------------------===//
Expand Down
21 changes: 19 additions & 2 deletions llvm/lib/Target/X86/X86InstrMisc.td
Original file line number Diff line number Diff line change
Expand Up @@ -1663,8 +1663,8 @@ let Predicates = [HasPREFETCHI, In64BitMode], SchedRW = [WriteLoad] in {
// CMPCCXADD Instructions
//
let isCodeGenOnly = 1, ForceDisassemble = 1, mayLoad = 1, mayStore = 1,
Predicates = [HasCMPCCXADD, In64BitMode], Defs = [EFLAGS],
Constraints = "$dstsrc1 = $dst" in {
Defs = [EFLAGS], Constraints = "$dstsrc1 = $dst" in {
let Predicates = [HasCMPCCXADD, NoEGPR, In64BitMode] in {
def CMPCCXADDmr32 : I<0xe0, MRMDestMem4VOp3CC, (outs GR32:$dst),
(ins GR32:$dstsrc1, i32mem:$dstsrc2, GR32:$src3, ccode:$cond),
"cmp${cond}xadd\t{$src3, $dst, $dstsrc2|$dstsrc2, $dst, $src3}",
Expand All @@ -1680,6 +1680,23 @@ def CMPCCXADDmr64 : I<0xe0, MRMDestMem4VOp3CC, (outs GR64:$dst),
VEX, VVVV, REX_W, T8PD, Sched<[WriteXCHG]>;
}

let Predicates = [HasCMPCCXADD, HasEGPR, In64BitMode] in {
def CMPCCXADDmr32_EVEX : I<0xe0, MRMDestMem4VOp3CC, (outs GR32:$dst),
(ins GR32:$dstsrc1, i32mem:$dstsrc2, GR32:$src3, ccode:$cond),
"cmp${cond}xadd\t{$src3, $dst, $dstsrc2|$dstsrc2, $dst, $src3}",
[(set GR32:$dst, (X86cmpccxadd addr:$dstsrc2,
GR32:$dstsrc1, GR32:$src3, timm:$cond))]>,
EVEX, VVVV, NoCD8, T8PD, Sched<[WriteXCHG]>;

def CMPCCXADDmr64_EVEX : I<0xe0, MRMDestMem4VOp3CC, (outs GR64:$dst),
(ins GR64:$dstsrc1, i64mem:$dstsrc2, GR64:$src3, ccode:$cond),
"cmp${cond}xadd\t{$src3, $dst, $dstsrc2|$dstsrc2, $dst, $src3}",
[(set GR64:$dst, (X86cmpccxadd addr:$dstsrc2,
GR64:$dstsrc1, GR64:$src3, timm:$cond))]>,
EVEX, VVVV, NoCD8, REX_W, T8PD, Sched<[WriteXCHG]>;
}
}

//===----------------------------------------------------------------------===//
// Memory Instructions
//
Expand Down
122 changes: 122 additions & 0 deletions llvm/test/MC/Disassembler/X86/apx/cmpccxadd.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
# RUN: llvm-mc --disassemble %s -triple=x86_64 | FileCheck %s --check-prefixes=ATT
# RUN: llvm-mc --disassemble %s -triple=x86_64 -x86-asm-syntax=intel --output-asm-variant=1 | FileCheck %s --check-prefixes=INTEL

# ATT: cmpbexadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmpbexadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xe6,0xb4,0xac,0x23,0x01,0x00,0x00

# ATT: cmpbexadd %r19, %r23, 291(%r28,%r29,4)
# INTEL: cmpbexadd qword ptr [r28 + 4*r29 + 291], r23, r19
0x62,0x8a,0xe1,0x00,0xe6,0xbc,0xac,0x23,0x01,0x00,0x00

# ATT: cmpbxadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmpbxadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xe2,0xb4,0xac,0x23,0x01,0x00,0x00

# ATT: cmpbxadd %r19, %r23, 291(%r28,%r29,4)
# INTEL: cmpbxadd qword ptr [r28 + 4*r29 + 291], r23, r19
0x62,0x8a,0xe1,0x00,0xe2,0xbc,0xac,0x23,0x01,0x00,0x00

# ATT: cmplexadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmplexadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xee,0xb4,0xac,0x23,0x01,0x00,0x00

# ATT: cmplexadd %r19, %r23, 291(%r28,%r29,4)
# INTEL: cmplexadd qword ptr [r28 + 4*r29 + 291], r23, r19
0x62,0x8a,0xe1,0x00,0xee,0xbc,0xac,0x23,0x01,0x00,0x00

# ATT: cmplxadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmplxadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xec,0xb4,0xac,0x23,0x01,0x00,0x00

# ATT: cmplxadd %r19, %r23, 291(%r28,%r29,4)
# INTEL: cmplxadd qword ptr [r28 + 4*r29 + 291], r23, r19
0x62,0x8a,0xe1,0x00,0xec,0xbc,0xac,0x23,0x01,0x00,0x00

# ATT: cmpaxadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmpaxadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xe7,0xb4,0xac,0x23,0x01,0x00,0x00

# ATT: cmpaxadd %r19, %r23, 291(%r28,%r29,4)
# INTEL: cmpaxadd qword ptr [r28 + 4*r29 + 291], r23, r19
0x62,0x8a,0xe1,0x00,0xe7,0xbc,0xac,0x23,0x01,0x00,0x00

# ATT: cmpgxadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmpgxadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xef,0xb4,0xac,0x23,0x01,0x00,0x00

# ATT: cmpgxadd %r19, %r23, 291(%r28,%r29,4)
# INTEL: cmpgxadd qword ptr [r28 + 4*r29 + 291], r23, r19
0x62,0x8a,0xe1,0x00,0xef,0xbc,0xac,0x23,0x01,0x00,0x00

# ATT: cmpgexadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmpgexadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xed,0xb4,0xac,0x23,0x01,0x00,0x00

# ATT: cmpgexadd %r19, %r23, 291(%r28,%r29,4)
# INTEL: cmpgexadd qword ptr [r28 + 4*r29 + 291], r23, r19
0x62,0x8a,0xe1,0x00,0xed,0xbc,0xac,0x23,0x01,0x00,0x00

# ATT: cmpnoxadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmpnoxadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xe1,0xb4,0xac,0x23,0x01,0x00,0x00

# ATT: cmpnoxadd %r19, %r23, 291(%r28,%r29,4)
# INTEL: cmpnoxadd qword ptr [r28 + 4*r29 + 291], r23, r19
0x62,0x8a,0xe1,0x00,0xe1,0xbc,0xac,0x23,0x01,0x00,0x00

# ATT: cmpnpxadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmpnpxadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xeb,0xb4,0xac,0x23,0x01,0x00,0x00

# ATT: cmpnpxadd %r19, %r23, 291(%r28,%r29,4)
# INTEL: cmpnpxadd qword ptr [r28 + 4*r29 + 291], r23, r19
0x62,0x8a,0xe1,0x00,0xeb,0xbc,0xac,0x23,0x01,0x00,0x00

# ATT: cmpnsxadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmpnsxadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xe9,0xb4,0xac,0x23,0x01,0x00,0x00

# ATT: cmpnsxadd %r19, %r23, 291(%r28,%r29,4)
# INTEL: cmpnsxadd qword ptr [r28 + 4*r29 + 291], r23, r19
0x62,0x8a,0xe1,0x00,0xe9,0xbc,0xac,0x23,0x01,0x00,0x00

# ATT: cmpnexadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmpnexadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xe5,0xb4,0xac,0x23,0x01,0x00,0x00

# ATT: cmpnexadd %r19, %r23, 291(%r28,%r29,4)
# INTEL: cmpnexadd qword ptr [r28 + 4*r29 + 291], r23, r19
0x62,0x8a,0xe1,0x00,0xe5,0xbc,0xac,0x23,0x01,0x00,0x00

# ATT: cmpoxadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmpoxadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xe0,0xb4,0xac,0x23,0x01,0x00,0x00

# ATT: cmpoxadd %r19, %r23, 291(%r28,%r29,4)
# INTEL: cmpoxadd qword ptr [r28 + 4*r29 + 291], r23, r19
0x62,0x8a,0xe1,0x00,0xe0,0xbc,0xac,0x23,0x01,0x00,0x00

# ATT: cmppxadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmppxadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xea,0xb4,0xac,0x23,0x01,0x00,0x00

# ATT: cmppxadd %r19, %r23, 291(%r28,%r29,4)
# INTEL: cmppxadd qword ptr [r28 + 4*r29 + 291], r23, r19
0x62,0x8a,0xe1,0x00,0xea,0xbc,0xac,0x23,0x01,0x00,0x00

# ATT: cmpsxadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmpsxadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xe8,0xb4,0xac,0x23,0x01,0x00,0x00

# ATT: cmpsxadd %r19, %r23, 291(%r28,%r29,4)
# INTEL: cmpsxadd qword ptr [r28 + 4*r29 + 291], r23, r19
0x62,0x8a,0xe1,0x00,0xe8,0xbc,0xac,0x23,0x01,0x00,0x00

# ATT: cmpexadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmpexadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xe4,0xb4,0xac,0x23,0x01,0x00,0x00

# ATT: cmpexadd %r19, %r23, 291(%r28,%r29,4)
# INTEL: cmpexadd qword ptr [r28 + 4*r29 + 291], r23, r19
0x62,0x8a,0xe1,0x00,0xe4,0xbc,0xac,0x23,0x01,0x00,0x00
6 changes: 6 additions & 0 deletions llvm/test/MC/Disassembler/X86/apx/evex-format.txt
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,12 @@
# INTEL: vpslldq zmm0, zmmword ptr [r16 + r17], 0
0x62,0xf9,0x79,0x48,0x73,0x3c,0x08,0x00

## MRMDestMem4VOp3CC

# ATT: cmpbexadd %r18d, %r22d, 291(%r28,%r29,4)
# INTEL: cmpbexadd dword ptr [r28 + 4*r29 + 291], r22d, r18d
0x62,0x8a,0x69,0x00,0xe6,0xb4,0xac,0x23,0x01,0x00,0x00

## MRMSrcMem4VOp3

# ATT: bzhiq %r19, 291(%r28,%r29,4), %r23
Expand Down
124 changes: 124 additions & 0 deletions llvm/test/MC/X86/apx/cmpccxadd-att.s
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
# RUN: llvm-mc -triple x86_64 --show-encoding %s | FileCheck %s
# RUN: not llvm-mc -triple i386 -show-encoding %s 2>&1 | FileCheck %s --check-prefix=ERROR

# ERROR-COUNT-30: error:
# ERROR-NOT: error:
# CHECK: cmpbexadd %r18d, %r22d, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xe6,0xb4,0xac,0x23,0x01,0x00,0x00]
cmpbexadd %r18d, %r22d, 291(%r28,%r29,4)

# CHECK: cmpbexadd %r19, %r23, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xe6,0xbc,0xac,0x23,0x01,0x00,0x00]
cmpbexadd %r19, %r23, 291(%r28,%r29,4)

# CHECK: cmpbxadd %r18d, %r22d, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xe2,0xb4,0xac,0x23,0x01,0x00,0x00]
cmpbxadd %r18d, %r22d, 291(%r28,%r29,4)

# CHECK: cmpbxadd %r19, %r23, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xe2,0xbc,0xac,0x23,0x01,0x00,0x00]
cmpbxadd %r19, %r23, 291(%r28,%r29,4)

# CHECK: cmplexadd %r18d, %r22d, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xee,0xb4,0xac,0x23,0x01,0x00,0x00]
cmplexadd %r18d, %r22d, 291(%r28,%r29,4)

# CHECK: cmplexadd %r19, %r23, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xee,0xbc,0xac,0x23,0x01,0x00,0x00]
cmplexadd %r19, %r23, 291(%r28,%r29,4)

# CHECK: cmplxadd %r18d, %r22d, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xec,0xb4,0xac,0x23,0x01,0x00,0x00]
cmplxadd %r18d, %r22d, 291(%r28,%r29,4)

# CHECK: cmplxadd %r19, %r23, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xec,0xbc,0xac,0x23,0x01,0x00,0x00]
cmplxadd %r19, %r23, 291(%r28,%r29,4)

# CHECK: cmpaxadd %r18d, %r22d, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xe7,0xb4,0xac,0x23,0x01,0x00,0x00]
cmpaxadd %r18d, %r22d, 291(%r28,%r29,4)

# CHECK: cmpaxadd %r19, %r23, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xe7,0xbc,0xac,0x23,0x01,0x00,0x00]
cmpaxadd %r19, %r23, 291(%r28,%r29,4)

# CHECK: cmpgxadd %r18d, %r22d, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xef,0xb4,0xac,0x23,0x01,0x00,0x00]
cmpgxadd %r18d, %r22d, 291(%r28,%r29,4)

# CHECK: cmpgxadd %r19, %r23, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xef,0xbc,0xac,0x23,0x01,0x00,0x00]
cmpgxadd %r19, %r23, 291(%r28,%r29,4)

# CHECK: cmpgexadd %r18d, %r22d, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xed,0xb4,0xac,0x23,0x01,0x00,0x00]
cmpgexadd %r18d, %r22d, 291(%r28,%r29,4)

# CHECK: cmpgexadd %r19, %r23, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xed,0xbc,0xac,0x23,0x01,0x00,0x00]
cmpgexadd %r19, %r23, 291(%r28,%r29,4)

# CHECK: cmpnoxadd %r18d, %r22d, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xe1,0xb4,0xac,0x23,0x01,0x00,0x00]
cmpnoxadd %r18d, %r22d, 291(%r28,%r29,4)

# CHECK: cmpnoxadd %r19, %r23, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xe1,0xbc,0xac,0x23,0x01,0x00,0x00]
cmpnoxadd %r19, %r23, 291(%r28,%r29,4)

# CHECK: cmpnpxadd %r18d, %r22d, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xeb,0xb4,0xac,0x23,0x01,0x00,0x00]
cmpnpxadd %r18d, %r22d, 291(%r28,%r29,4)

# CHECK: cmpnpxadd %r19, %r23, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xeb,0xbc,0xac,0x23,0x01,0x00,0x00]
cmpnpxadd %r19, %r23, 291(%r28,%r29,4)

# CHECK: cmpnsxadd %r18d, %r22d, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xe9,0xb4,0xac,0x23,0x01,0x00,0x00]
cmpnsxadd %r18d, %r22d, 291(%r28,%r29,4)

# CHECK: cmpnsxadd %r19, %r23, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xe9,0xbc,0xac,0x23,0x01,0x00,0x00]
cmpnsxadd %r19, %r23, 291(%r28,%r29,4)

# CHECK: cmpnexadd %r18d, %r22d, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xe5,0xb4,0xac,0x23,0x01,0x00,0x00]
cmpnexadd %r18d, %r22d, 291(%r28,%r29,4)

# CHECK: cmpnexadd %r19, %r23, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xe5,0xbc,0xac,0x23,0x01,0x00,0x00]
cmpnexadd %r19, %r23, 291(%r28,%r29,4)

# CHECK: cmpoxadd %r18d, %r22d, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xe0,0xb4,0xac,0x23,0x01,0x00,0x00]
cmpoxadd %r18d, %r22d, 291(%r28,%r29,4)

# CHECK: cmpoxadd %r19, %r23, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xe0,0xbc,0xac,0x23,0x01,0x00,0x00]
cmpoxadd %r19, %r23, 291(%r28,%r29,4)

# CHECK: cmppxadd %r18d, %r22d, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xea,0xb4,0xac,0x23,0x01,0x00,0x00]
cmppxadd %r18d, %r22d, 291(%r28,%r29,4)

# CHECK: cmppxadd %r19, %r23, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xea,0xbc,0xac,0x23,0x01,0x00,0x00]
cmppxadd %r19, %r23, 291(%r28,%r29,4)

# CHECK: cmpsxadd %r18d, %r22d, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xe8,0xb4,0xac,0x23,0x01,0x00,0x00]
cmpsxadd %r18d, %r22d, 291(%r28,%r29,4)

# CHECK: cmpsxadd %r19, %r23, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xe8,0xbc,0xac,0x23,0x01,0x00,0x00]
cmpsxadd %r19, %r23, 291(%r28,%r29,4)

# CHECK: cmpexadd %r18d, %r22d, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0x69,0x00,0xe4,0xb4,0xac,0x23,0x01,0x00,0x00]
cmpexadd %r18d, %r22d, 291(%r28,%r29,4)

# CHECK: cmpexadd %r19, %r23, 291(%r28,%r29,4)
# CHECK: encoding: [0x62,0x8a,0xe1,0x00,0xe4,0xbc,0xac,0x23,0x01,0x00,0x00]
cmpexadd %r19, %r23, 291(%r28,%r29,4)
Loading