diff options
author | Shraiysh Vaishay <Shraiysh.Vaishay@amd.com> | 2022-03-10 18:28:08 +0530 |
---|---|---|
committer | Shraiysh Vaishay <Shraiysh.Vaishay@amd.com> | 2022-03-10 18:28:51 +0530 |
commit | 6dd54da5a51db6ec674d69366ab883b3057c73a6 (patch) | |
tree | 96ce7845b5ccd955f731199d4c93cbacb69d36a9 /llvm | |
parent | 697f55e36823dbd91ca94a666d99f3c4ba11cacb (diff) | |
download | llvm-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.cpp | 2 |
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) || |