aboutsummaryrefslogtreecommitdiff
path: root/llvm
diff options
context:
space:
mode:
authorShraiysh Vaishay <Shraiysh.Vaishay@amd.com>2022-03-10 18:28:08 +0530
committerShraiysh Vaishay <Shraiysh.Vaishay@amd.com>2022-03-10 18:28:51 +0530
commit6dd54da5a51db6ec674d69366ab883b3057c73a6 (patch)
tree96ce7845b5ccd955f731199d4c93cbacb69d36a9 /llvm
parent697f55e36823dbd91ca94a666d99f3c4ba11cacb (diff)
downloadllvm-6dd54da5a51db6ec674d69366ab883b3057c73a6.zip
llvm-6dd54da5a51db6ec674d69366ab883b3057c73a6.tar.gz
llvm-6dd54da5a51db6ec674d69366ab883b3057c73a6.tar.bz2
[OpenMP][mlir] Lowering for omp.atomic.update
This patch adds lowering from omp.atomic.update to LLVM IR. Whenever a special LLVM IR instruction is available for the operation, `atomicrmw` instruction is emitted, otherwise a compare-exchange loop based update is emitted. Depends on D119522 Reviewed By: ftynse, peixin Differential Revision: https://reviews.llvm.org/D119657
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
index 2dc369e..5787b31 100644
--- a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+++ b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
@@ -3586,6 +3586,8 @@ std::pair<Value *, Value *> OpenMPIRBuilder::emitAtomicUpdate(
InsertPointTy AllocaIP, Value *X, Type *XElemTy, Value *Expr,
AtomicOrdering AO, AtomicRMWInst::BinOp RMWOp,
AtomicUpdateCallbackTy &UpdateOp, bool VolatileX, bool IsXBinopExpr) {
+ // TODO: handle the case where XElemTy is not byte-sized or not a power of 2
+ // or a complex datatype.
bool DoCmpExch = (RMWOp == AtomicRMWInst::BAD_BINOP) ||
(RMWOp == AtomicRMWInst::FAdd) ||
(RMWOp == AtomicRMWInst::FSub) ||