[llvm] [InstCombine] Scalarize `(vec_ops (insert ?, X, Idx))` when only one element is demanded (PR #84645)

via llvm-commits llvm-commits at lists.llvm.org
Sat Mar 9 09:52:44 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 f5811494b0cde306e98caa339e4dc1c06cb5e8e9 b56bb3a4729c65867ef76f8b460cacb69e839880 -- llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
``````````

</details>

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

``````````diff
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp b/llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
index bf46359acc..63cf0e11c0 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp
@@ -2605,8 +2605,8 @@ getScalarizationOfInsertElement(Value *V, int ReqIndexC,
     if (auto *VType = dyn_cast<FixedVectorType>(V->getType())) {
       // Chase whichever vector (Base/X) we are splatting from.
       if (static_cast<unsigned>(SplatIndex) >= VType->getNumElements())
-          return getScalarizationOfInsertElement(
-              X, SplatIndex - VType->getNumElements(), Builder);
+        return getScalarizationOfInsertElement(
+            X, SplatIndex - VType->getNumElements(), Builder);
       // New index we need to find is the index we are splatting from.
       return getScalarizationOfInsertElement(Base, SplatIndex, Builder);
     }
@@ -2640,14 +2640,14 @@ getScalarizationOfInsertElement(Value *V, int ReqIndexC,
     if (isSafeToSpeculativelyExecute(BO)) {
       if (auto *Scalar =
               getScalarizationOfInsertElement(X, ReqIndexC, Builder)) {
-          auto *ScalarC =
-              ConstantExpr::getExtractElement(C, Builder.getInt64(ReqIndexC));
-
-          BinaryOperator::BinaryOps Opc = BO->getOpcode();
-          if (match(V, m_c_BinOp(m_Value(X), m_ImmConstant(C))))
-            R = Builder.CreateBinOp(Opc, Scalar, ScalarC);
-          else
-            R = Builder.CreateBinOp(Opc, ScalarC, Scalar);
+        auto *ScalarC =
+            ConstantExpr::getExtractElement(C, Builder.getInt64(ReqIndexC));
+
+        BinaryOperator::BinaryOps Opc = BO->getOpcode();
+        if (match(V, m_c_BinOp(m_Value(X), m_ImmConstant(C))))
+          R = Builder.CreateBinOp(Opc, Scalar, ScalarC);
+        else
+          R = Builder.CreateBinOp(Opc, ScalarC, Scalar);
       }
     }
   }
@@ -2707,7 +2707,6 @@ static Instruction *foldShuffleWithInsert(ShuffleVectorInst &Shuf,
   if (NumElts != InpNumElts)
     return nullptr;
 
-
   // (shuffle (vec_ops... (insert ?, Scalar, IndexC)), V1, Mask)
   //    --> insert V1, (scalar_ops... Scalar), IndexC'
   auto GetScalarizationOfInsertEle =

``````````

</details>


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


More information about the llvm-commits mailing list