Go to the documentation of this file.
28 return CF->isZero() && CF->isNegative();
30 return CF->isZero() && !CF->isNegative();
46 return C->isMinusOne();
48 return C->isMaxValue(
true);
50 return C->isMinValue(
true);
52 return C->isMaxValue(
false);
54 return C->isMinValue(
false);
82 return C->isAllOnesValue();
86 return C->isMinValue(
true);
88 return C->isMaxValue(
true);
90 return C->isMinValue(
false);
92 return C->isMaxValue(
false);
107 if (isSaturating(RMWI) &&
116 "AtomicRMWs don't make sense with Unordered or NotAtomic");
132 if (!isIdempotentRMW(RMWI))
This is an optimization pass for GlobalISel generic memory operations.
void setOperation(BinOp Operation)
BinOp getOperation() const
static Constant * getNegativeZero(Type *Ty)
bool isFloatingPointTy() const
Return true if this is one of the six floating-point types.
Instruction * visitAtomicRMWInst(AtomicRMWInst &SI)
Value * getPointerOperand()
Instruction * eraseInstFromFunction(Instruction &I) override
Combiner aware instruction erasure.
(vector float) vec_cmpeq(*A, *B) C
Align getABITypeAlign(Type *Ty) const
Returns the minimum ABI-required alignment for the specified type.
static Constant * get(Type *Ty, uint64_t V, bool IsSigned=false)
If Ty is a vector type, return a Constant with a splat of the given value.
bool isIntegerTy() const
True if this is an instance of IntegerType.
AtomicOrdering
Atomic ordering for LLVM's memory model.
@ UMin
*p = old <unsigned v ? old : v
An instruction for storing to memory.
AtomicOrdering getOrdering() const
Returns the ordering constraint of this rmw instruction.
@ Min
*p = old <signed v ? old : v
SyncScope::ID getSyncScopeID() const
Returns the synchronization scope ID of this rmw instruction.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
StandardInstrumentations SI(Debug, VerifyEach)
Type * getType() const
All values are typed, get the type of this value.
An instruction for reading from memory.
an instruction that atomically reads a memory location, combines it with another value,...
bool isVolatile() const
Return true if this is a RMW on a volatile memory location.
Instruction * replaceOperand(Instruction &I, unsigned OpNum, Value *V)
Replace operand of instruction and add old operand to the worklist.
@ UMax
*p = old >unsigned v ? old : v
@ Max
*p = old >signed v ? old : v