[llvm-branch-commits] [clang] [llvm] Reimplement constrained 'trunc' using operand bundles (PR #118253)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Sun Dec 1 21:47:43 PST 2024


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff 868660b970ac1a6af74e418e75097e05759350e2 3da7fd198007d6c3698c025bfb96ea5fb0ccca34 --extensions cpp,c,h -- clang/lib/CodeGen/CGBuiltin.cpp clang/test/CodeGen/AArch64/neon-intrinsics-constrained.c clang/test/CodeGen/AArch64/v8.2a-fp16-intrinsics-constrained.c clang/test/CodeGen/PowerPC/builtins-ppc-fpconstrained.c clang/test/CodeGen/SystemZ/builtins-systemz-vector-constrained.c clang/test/CodeGen/SystemZ/builtins-systemz-vector2-constrained.c clang/test/CodeGen/SystemZ/builtins-systemz-zvector-constrained.c clang/test/CodeGen/SystemZ/builtins-systemz-zvector2-constrained.c clang/test/CodeGen/arm64-vrnd-constrained.c clang/test/CodeGen/constrained-math-builtins.c llvm/include/llvm/CodeGen/SelectionDAGNodes.h llvm/include/llvm/CodeGen/TargetLowering.h llvm/include/llvm/IR/Function.h llvm/include/llvm/IR/InstrTypes.h llvm/include/llvm/IR/IntrinsicInst.h llvm/include/llvm/IR/Intrinsics.h llvm/lib/Analysis/ConstantFolding.cpp llvm/lib/AsmParser/LLParser.cpp llvm/lib/CodeGen/ExpandVectorPredication.cpp llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h llvm/lib/CodeGen/TargetLoweringBase.cpp llvm/lib/IR/AutoUpgrade.cpp llvm/lib/IR/Function.cpp llvm/lib/IR/Instructions.cpp llvm/lib/IR/IntrinsicInst.cpp llvm/lib/IR/Intrinsics.cpp llvm/lib/Transforms/Utils/Local.cpp
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp
index 52b2d3320c..13c9533a8b 100644
--- a/clang/lib/CodeGen/CGBuiltin.cpp
+++ b/clang/lib/CodeGen/CGBuiltin.cpp
@@ -20537,7 +20537,9 @@ Value *CodeGenFunction::EmitSystemZBuiltinExpr(unsigned BuiltinID,
               CI = Intrinsic::experimental_constrained_nearbyint; break;
       case 1: ID = Intrinsic::round;
               CI = Intrinsic::experimental_constrained_round; break;
-      case 5: ID = Intrinsic::trunc; break;
+      case 5:
+        ID = Intrinsic::trunc;
+        break;
       case 6: ID = Intrinsic::ceil;
               CI = Intrinsic::experimental_constrained_ceil; break;
       case 7: ID = Intrinsic::floor;
diff --git a/llvm/lib/IR/AutoUpgrade.cpp b/llvm/lib/IR/AutoUpgrade.cpp
index 6185e4c5a8..912cf4ce45 100644
--- a/llvm/lib/IR/AutoUpgrade.cpp
+++ b/llvm/lib/IR/AutoUpgrade.cpp
@@ -1215,7 +1215,7 @@ static bool upgradeIntrinsicFunction1(Function *F, Function *&NewFn,
         assert(Success && "cannot get intrinsic signature");
 
         NewFn = Intrinsic::getOrInsertDeclaration(F->getParent(), NewID,
-                                              OverloadTys);
+                                                  OverloadTys);
       }
       return true;
     }
@@ -4956,44 +4956,43 @@ void llvm::UpgradeIntrinsicCall(CallBase *CI, Function *NewFn) {
       MTI->setSourceAlignment(Align->getMaybeAlignValue());
     break;
   }
-#define LEGACY_FUNCTION(NAME, A, R, I, D)                                      \
-  case Intrinsic::NAME:
+#define LEGACY_FUNCTION(NAME, A, R, I, D) case Intrinsic::NAME:
 #include "llvm/IR/ConstrainedOps.def"
-  {
-    SmallVector<OperandBundleDef, 2> Bundles;
-    unsigned NumMetadataArgs = 0;
+    {
+      SmallVector<OperandBundleDef, 2> Bundles;
+      unsigned NumMetadataArgs = 0;
+
+      if (auto RM = getRoundingModeArg(*CI)) {
+        auto CurrentRM = CI->getRoundingMode();
+        assert(!CurrentRM && "unexpected rounding bundle");
+        Builder.createFPRoundingBundle(Bundles, RM);
+        ++NumMetadataArgs;
+      }
 
-    if (auto RM = getRoundingModeArg(*CI)) {
-      auto CurrentRM = CI->getRoundingMode();
-      assert(!CurrentRM && "unexpected rounding bundle");
-      Builder.createFPRoundingBundle(Bundles, RM);
-      ++NumMetadataArgs;
-    }
+      if (auto EB = getExceptionBehaviorArg(*CI)) {
+        auto CurrentEB = CI->getExceptionBehavior();
+        assert(!CurrentEB && "unexpected exception bundle");
+        Builder.createFPExceptionBundle(Bundles, EB);
+        ++NumMetadataArgs;
+      }
 
-    if (auto EB = getExceptionBehaviorArg(*CI)) {
-      auto CurrentEB = CI->getExceptionBehavior();
-      assert(!CurrentEB && "unexpected exception bundle");
-      Builder.createFPExceptionBundle(Bundles, EB);
-      ++NumMetadataArgs;
-    }
+      SmallVector<Value *, 4> Args(CI->args());
+      Args.pop_back_n(NumMetadataArgs);
+      NewCall = Builder.CreateCall(NewFn, Args, Bundles, CI->getName());
+      NewCall->copyMetadata(*CI);
+      AttributeList Attrs = CI->getAttributes();
+      NewCall->setAttributes(Attrs);
+      if (isa<FPMathOperator>(CI)) {
+        FastMathFlags FMF = CI->getFastMathFlags();
+        NewCall->setFastMathFlags(FMF);
+      }
 
-    SmallVector<Value *, 4> Args(CI->args());
-    Args.pop_back_n(NumMetadataArgs);
-    NewCall = Builder.CreateCall(NewFn, Args, Bundles, CI->getName());
-    NewCall->copyMetadata(*CI);
-    AttributeList Attrs = CI->getAttributes();
-    NewCall->setAttributes(Attrs);
-    if (isa<FPMathOperator>(CI)) {
-      FastMathFlags FMF = CI->getFastMathFlags();
-      NewCall->setFastMathFlags(FMF);
+      MemoryEffects ME = MemoryEffects::inaccessibleMemOnly();
+      auto A = Attribute::getWithMemoryEffects(CI->getContext(), ME);
+      NewCall->addFnAttr(A);
+      NewCall->addFnAttr(Attribute::StrictFP);
+      break;
     }
-
-    MemoryEffects ME = MemoryEffects::inaccessibleMemOnly();
-    auto A = Attribute::getWithMemoryEffects(CI->getContext(), ME);
-    NewCall->addFnAttr(A);
-    NewCall->addFnAttr(Attribute::StrictFP);
-    break;
-  }
   }
   assert(NewCall && "Should have either set this variable or returned through "
                     "the default case");

``````````

</details>


https://github.com/llvm/llvm-project/pull/118253


More information about the llvm-branch-commits mailing list