[llvm] [DirectX] Specify NegZero as signed (PR #174840)

via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 7 11:11:19 PST 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-directx

Author: Finn Plummer (inbelic)

<details>
<summary>Changes</summary>

#<!-- -->171456 set `ImplicitTrunc` to false by default. So `NegZero` value was no longer correctly being set as a signed integer.

This change fixes a the test case from failing in the DirectX backend by manually specifying it as a signed integer.

---
Full diff: https://github.com/llvm/llvm-project/pull/174840.diff


1 Files Affected:

- (modified) llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp (+2-1) 


``````````diff
diff --git a/llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp b/llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp
index 02b1aedd4f5c4..b1723f77b0e69 100644
--- a/llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp
+++ b/llvm/lib/Target/DirectX/DXILIntrinsicExpansion.cpp
@@ -486,7 +486,8 @@ static Value *expandIsFPClass(CallInst *Orig) {
   switch (TCI->getZExtValue()) {
   case FPClassTest::fcNegZero: {
     Value *NegZero =
-        ConstantInt::get(Builder.getIntNTy(BitWidth), 1 << (BitWidth - 1));
+        ConstantInt::get(Builder.getIntNTy(BitWidth), 1 << (BitWidth - 1),
+                         /*IsSigned=*/true);
     Value *RetVal;
     if (FNumElem) {
       Value *NegZeroSplat = Builder.CreateVectorSplat(FNumElem, NegZero);

``````````

</details>


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


More information about the llvm-commits mailing list