[llvm] [NVPTX] Cleanup and document nvvm.fabs intrinsics, adding f16 support (PR #135644)

via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 14 09:45:42 PDT 2025


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 HEAD~1 HEAD --extensions cpp -- llvm/lib/IR/AutoUpgrade.cpp llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp
``````````

</details>

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

``````````diff
diff --git a/llvm/lib/IR/AutoUpgrade.cpp b/llvm/lib/IR/AutoUpgrade.cpp
index 79709ae1b..c9b946615 100644
--- a/llvm/lib/IR/AutoUpgrade.cpp
+++ b/llvm/lib/IR/AutoUpgrade.cpp
@@ -1285,7 +1285,8 @@ static bool upgradeIntrinsicFunction1(Function *F, Function *&NewFn,
       bool Expand = false;
       if (Name.consume_front("abs."))
         // nvvm.abs.{i,ii}
-        Expand = Name == "i" || Name == "ll" || Name == "bf16" || Name == "bf16x2";
+        Expand =
+            Name == "i" || Name == "ll" || Name == "bf16" || Name == "bf16x2";
       else if (Name == "clz.ll" || Name == "popc.ll" || Name == "h2f" ||
                Name == "swap.lo.hi.b64")
         Expand = true;
@@ -2306,7 +2307,9 @@ static Value *upgradeNVVMIntrinsicCall(StringRef Name, CallBase *CI,
         Arg, llvm::Constant::getNullValue(Arg->getType()), "abs.cond");
     Rep = Builder.CreateSelect(Cmp, Arg, Neg, "abs");
   } else if (Name == "abs.bf16" || Name == "abs.bf16x2") {
-    Type *Ty = (Name == "abs.bf16") ? Builder.getBFloatTy() : FixedVectorType::get(Builder.getBFloatTy(), 2);
+    Type *Ty = (Name == "abs.bf16")
+                   ? Builder.getBFloatTy()
+                   : FixedVectorType::get(Builder.getBFloatTy(), 2);
     Value *Arg = Builder.CreateBitCast(CI->getArgOperand(0), Ty);
     Value *Abs = Builder.CreateUnaryIntrinsic(Intrinsic::nvvm_fabs, Arg);
     Rep = Builder.CreateBitCast(Abs, CI->getType());
diff --git a/llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp b/llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp
index 15695c287..5834214f1 100644
--- a/llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.cpp
@@ -414,8 +414,9 @@ static Instruction *convertNvvmIntrinsicToLlvm(InstCombiner &IC,
   }
   case SPC_Fabs: {
     if (II->getType() == IC.Builder.getDoubleTy())
-      return IC.Builder.CreateUnaryIntrinsic(Intrinsic::fabs, II->getArgOperand(0));
-  return nullptr;
+      return IC.Builder.CreateUnaryIntrinsic(Intrinsic::fabs,
+                                             II->getArgOperand(0));
+    return nullptr;
   }
   }
   llvm_unreachable("All SpecialCase enumerators should be handled in switch.");

``````````

</details>


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


More information about the llvm-commits mailing list