[llvm] [DirectX] Add support for vector_reduce_add (PR #117646)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 2 12:24:49 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 76f0ff8210d56a050d2679926a2fdddd3a8c16d6 12f24f60c4dad11658b251bfb0f73ef76f4fc1a8 --extensions cpp -- llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp b/llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp
index 5dbe244124..1242ee2a3a 100644
--- a/llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp
+++ b/llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp
@@ -74,39 +74,39 @@ static bool isIntrinsicExpansion(Function &F) {
return false;
}
static Value *expandVecReduceAdd(CallInst *Orig, Intrinsic::ID IntrinsicId) {
- assert(IntrinsicId == Intrinsic::vector_reduce_add ||
- IntrinsicId == Intrinsic::vector_reduce_fadd);
-
- IRBuilder<> Builder(Orig);
- bool IsFAdd = (IntrinsicId == Intrinsic::vector_reduce_fadd);
-
- // Define the addition operation based on the intrinsic ID.
- auto AddOp = [&Builder, IsFAdd](Value *Sum, Value *Elt) {
- return IsFAdd ? Builder.CreateFAdd(Sum, Elt) : Builder.CreateAdd(Sum, Elt);
- };
-
- Value *X = Orig->getOperand(IsFAdd ? 1 : 0);
- Type *Ty = X->getType();
- auto *XVec = dyn_cast<FixedVectorType>(Ty);
- unsigned XVecSize = XVec->getNumElements();
- Value *Sum = Builder.CreateExtractElement(X, static_cast<uint64_t>(0));
-
- // Handle the initial start value for floating-point addition.
- if (IsFAdd) {
- llvm::Constant *StartValue = llvm::dyn_cast<llvm::Constant>(Orig->getOperand(0));
- if (StartValue && !StartValue->isZeroValue())
- Sum = Builder.CreateFAdd(Sum, StartValue);
- }
+ assert(IntrinsicId == Intrinsic::vector_reduce_add ||
+ IntrinsicId == Intrinsic::vector_reduce_fadd);
- // Accumulate the remaining vector elements.
- for (unsigned I = 1; I < XVecSize; I++) {
- Value *Elt = Builder.CreateExtractElement(X, I);
- Sum = AddOp(Sum, Elt);
- }
+ IRBuilder<> Builder(Orig);
+ bool IsFAdd = (IntrinsicId == Intrinsic::vector_reduce_fadd);
- return Sum;
-}
+ // Define the addition operation based on the intrinsic ID.
+ auto AddOp = [&Builder, IsFAdd](Value *Sum, Value *Elt) {
+ return IsFAdd ? Builder.CreateFAdd(Sum, Elt) : Builder.CreateAdd(Sum, Elt);
+ };
+ Value *X = Orig->getOperand(IsFAdd ? 1 : 0);
+ Type *Ty = X->getType();
+ auto *XVec = dyn_cast<FixedVectorType>(Ty);
+ unsigned XVecSize = XVec->getNumElements();
+ Value *Sum = Builder.CreateExtractElement(X, static_cast<uint64_t>(0));
+
+ // Handle the initial start value for floating-point addition.
+ if (IsFAdd) {
+ llvm::Constant *StartValue =
+ llvm::dyn_cast<llvm::Constant>(Orig->getOperand(0));
+ if (StartValue && !StartValue->isZeroValue())
+ Sum = Builder.CreateFAdd(Sum, StartValue);
+ }
+
+ // Accumulate the remaining vector elements.
+ for (unsigned I = 1; I < XVecSize; I++) {
+ Value *Elt = Builder.CreateExtractElement(X, I);
+ Sum = AddOp(Sum, Elt);
+ }
+
+ return Sum;
+}
static Value *expandAbs(CallInst *Orig) {
Value *X = Orig->getOperand(0);
``````````
</details>
https://github.com/llvm/llvm-project/pull/117646
More information about the llvm-commits
mailing list