[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