llvm::MachineIRBuilder::buildAtomicRMWXchg

Build and insert OldValRes<def> = G_ATOMICRMW_XCHG Addr, Val, MMO.

Synopsis

Declared in <llvm/CodeGen/GlobalISel/MachineIRBuilder.h>

MachineInstrBuilder
buildAtomicRMWXchg(
    Register OldValRes,
    Register Addr,
    Register Val,
    MachineMemOperand& MMO);

Description

Atomically replace the value at Addr with Val. Puts the original value from Addr in OldValRes.

Return Value

a MachineInstrBuilder for the newly created instruction.

Parameters

NameDescription
OldValResDestination receiving the previous memory value.
AddrAddress operand.
ValValue operand.
MMOMemory operand describing the access.

Preconditions

  • setBasicBlock or setMI must have been called.
  • OldValRes must be a generic virtual register.
  • Addr must be a generic virtual register with pointer type.
  • OldValRes, and Val must be generic virtual registers of the same type.