@@ -8956,8 +8956,7 @@ OpenMPIRBuilder::createAtomicWrite(const LocationDescription &Loc,
8956
8956
OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::createAtomicUpdate (
8957
8957
const LocationDescription &Loc, InsertPointTy AllocaIP, AtomicOpValue &X,
8958
8958
Value *Expr, AtomicOrdering AO, AtomicRMWInst::BinOp RMWOp,
8959
- AtomicUpdateCallbackTy &UpdateOp, bool IsXBinopExpr,
8960
- bool IsIgnoreDenormalMode, bool IsFineGrainedMemory, bool IsRemoteMemory) {
8959
+ AtomicUpdateCallbackTy &UpdateOp, bool IsXBinopExpr) {
8961
8960
assert (!isConflictIP (Loc.IP , AllocaIP) && " IPs must not be ambiguous" );
8962
8961
if (!updateToLocation (Loc))
8963
8962
return Loc.IP ;
@@ -8975,9 +8974,9 @@ OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::createAtomicUpdate(
8975
8974
" OpenMP atomic does not support LT or GT operations" );
8976
8975
});
8977
8976
8978
- Expected<std::pair<Value *, Value *>> AtomicResult = emitAtomicUpdate (
8979
- AllocaIP, X.Var , X.ElemTy , Expr, AO, RMWOp, UpdateOp, X. IsVolatile ,
8980
- IsXBinopExpr, IsIgnoreDenormalMode, IsFineGrainedMemory, IsRemoteMemory );
8977
+ Expected<std::pair<Value *, Value *>> AtomicResult =
8978
+ emitAtomicUpdate ( AllocaIP, X.Var , X.ElemTy , Expr, AO, RMWOp, UpdateOp,
8979
+ X. IsVolatile , IsXBinopExpr );
8981
8980
if (!AtomicResult)
8982
8981
return AtomicResult.takeError ();
8983
8982
checkAndEmitFlushAfterAtomic (Loc, AO, AtomicKind::Update);
@@ -9024,8 +9023,7 @@ Value *OpenMPIRBuilder::emitRMWOpAsInstruction(Value *Src1, Value *Src2,
9024
9023
Expected<std::pair<Value *, Value *>> OpenMPIRBuilder::emitAtomicUpdate (
9025
9024
InsertPointTy AllocaIP, Value *X, Type *XElemTy, Value *Expr,
9026
9025
AtomicOrdering AO, AtomicRMWInst::BinOp RMWOp,
9027
- AtomicUpdateCallbackTy &UpdateOp, bool VolatileX, bool IsXBinopExpr,
9028
- bool IsIgnoreDenormalMode, bool IsFineGrainedMemory, bool IsRemoteMemory) {
9026
+ AtomicUpdateCallbackTy &UpdateOp, bool VolatileX, bool IsXBinopExpr) {
9029
9027
// TODO: handle the case where XElemTy is not byte-sized or not a power of 2
9030
9028
// or a complex datatype.
9031
9029
bool emitRMWOp = false ;
@@ -9048,20 +9046,7 @@ Expected<std::pair<Value *, Value *>> OpenMPIRBuilder::emitAtomicUpdate(
9048
9046
9049
9047
std::pair<Value *, Value *> Res;
9050
9048
if (emitRMWOp) {
9051
- AtomicRMWInst *RMWInst =
9052
- Builder.CreateAtomicRMW (RMWOp, X, Expr, llvm::MaybeAlign (), AO);
9053
- if (T.isAMDGPU ()) {
9054
- if (IsIgnoreDenormalMode)
9055
- RMWInst->setMetadata (" amdgpu.ignore.denormal.mode" ,
9056
- llvm::MDNode::get (Builder.getContext (), {}));
9057
- if (!IsFineGrainedMemory)
9058
- RMWInst->setMetadata (" amdgpu.no.fine.grained.memory" ,
9059
- llvm::MDNode::get (Builder.getContext (), {}));
9060
- if (!IsRemoteMemory)
9061
- RMWInst->setMetadata (" amdgpu.no.remote.memory" ,
9062
- llvm::MDNode::get (Builder.getContext (), {}));
9063
- }
9064
- Res.first = RMWInst;
9049
+ Res.first = Builder.CreateAtomicRMW (RMWOp, X, Expr, llvm::MaybeAlign (), AO);
9065
9050
// not needed except in case of postfix captures. Generate anyway for
9066
9051
// consistency with the else part. Will be removed with any DCE pass.
9067
9052
// AtomicRMWInst::Xchg does not have a coressponding instruction.
@@ -9193,8 +9178,7 @@ OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::createAtomicCapture(
9193
9178
const LocationDescription &Loc, InsertPointTy AllocaIP, AtomicOpValue &X,
9194
9179
AtomicOpValue &V, Value *Expr, AtomicOrdering AO,
9195
9180
AtomicRMWInst::BinOp RMWOp, AtomicUpdateCallbackTy &UpdateOp,
9196
- bool UpdateExpr, bool IsPostfixUpdate, bool IsXBinopExpr,
9197
- bool IsIgnoreDenormalMode, bool IsFineGrainedMemory, bool IsRemoteMemory) {
9181
+ bool UpdateExpr, bool IsPostfixUpdate, bool IsXBinopExpr) {
9198
9182
if (!updateToLocation (Loc))
9199
9183
return Loc.IP ;
9200
9184
@@ -9213,9 +9197,9 @@ OpenMPIRBuilder::InsertPointOrErrorTy OpenMPIRBuilder::createAtomicCapture(
9213
9197
// If UpdateExpr is 'x' updated with some `expr` not based on 'x',
9214
9198
// 'x' is simply atomically rewritten with 'expr'.
9215
9199
AtomicRMWInst::BinOp AtomicOp = (UpdateExpr ? RMWOp : AtomicRMWInst::Xchg);
9216
- Expected<std::pair<Value *, Value *>> AtomicResult = emitAtomicUpdate (
9217
- AllocaIP, X.Var , X.ElemTy , Expr, AO, AtomicOp, UpdateOp, X. IsVolatile ,
9218
- IsXBinopExpr, IsIgnoreDenormalMode, IsFineGrainedMemory, IsRemoteMemory );
9200
+ Expected<std::pair<Value *, Value *>> AtomicResult =
9201
+ emitAtomicUpdate ( AllocaIP, X.Var , X.ElemTy , Expr, AO, AtomicOp, UpdateOp,
9202
+ X. IsVolatile , IsXBinopExpr );
9219
9203
if (!AtomicResult)
9220
9204
return AtomicResult.takeError ();
9221
9205
Value *CapturedVal =
0 commit comments