[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