[PATCH] D119378: [OMPIRBuilder] Remove the support for floating point values for atomic compare operation

Shilei Tian via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 9 18:15:22 PST 2022


This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG0148b5871497: [OMPIRBuilder] Remove the support for floating point values for atomic compareā€¦ (authored by tianshilei1992).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D119378/new/

https://reviews.llvm.org/D119378

Files:
  llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp


Index: llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
===================================================================
--- llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+++ llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
@@ -3481,26 +3481,16 @@
 
   assert(X.Var->getType()->isPointerTy() &&
          "OMP atomic expects a pointer to target memory");
-  assert((X.ElemTy->isFloatingPointTy() || X.ElemTy->isIntegerTy() ||
-          X.ElemTy->isPointerTy()) &&
-         "OMP atomic compare expected a scalar type");
+  assert((X.ElemTy->isIntegerTy() || X.ElemTy->isPointerTy()) &&
+         "OMP atomic compare expected a integer scalar type");
 
   if (Op == OMPAtomicCompareOp::EQ) {
-    unsigned Addrspace = cast<PointerType>(X.Var->getType())->getAddressSpace();
-    IntegerType *IntCastTy =
-        IntegerType::get(M.getContext(), X.ElemTy->getScalarSizeInBits());
-    Value *XAddr =
-        X.ElemTy->isIntegerTy()
-            ? X.Var
-            : Builder.CreateBitCast(X.Var, IntCastTy->getPointerTo(Addrspace));
     AtomicOrdering Failure = AtomicCmpXchgInst::getStrongestFailureOrdering(AO);
     // We don't need the result for now.
-    (void)Builder.CreateAtomicCmpXchg(XAddr, E, D, MaybeAlign(), AO, Failure);
+    (void)Builder.CreateAtomicCmpXchg(X.Var, E, D, MaybeAlign(), AO, Failure);
   } else {
     assert((Op == OMPAtomicCompareOp::MAX || Op == OMPAtomicCompareOp::MIN) &&
            "Op should be either max or min at this point");
-    assert(X.ElemTy->isIntegerTy() &&
-           "max and min operators only support integer type");
 
     // Reverse the ordop as the OpenMP forms are different from LLVM forms.
     // Let's take max as example.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D119378.407360.patch
Type: text/x-patch
Size: 1674 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220210/4b0278c8/attachment.bin>


More information about the llvm-commits mailing list