[llvm] [AMDGPU] Only extend division result where needed (PR #204422)

via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 17 14:54:25 PDT 2026


https://github.com/LU-JOHN updated https://github.com/llvm/llvm-project/pull/204422

>From 17a6a6c6e5ac0bac68e86ed78f3fcb1e438fbbbe Mon Sep 17 00:00:00 2001
From: John Lu <John.Lu at amd.com>
Date: Wed, 17 Jun 2026 14:26:34 -0500
Subject: [PATCH] Only extend where needed

Signed-off-by: John Lu <John.Lu at amd.com>
---
 llvm/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/llvm/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp b/llvm/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
index ef96aaa2296b7..38f254de8ecc0 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUCodeGenPrepare.cpp
@@ -1361,16 +1361,14 @@ Value *AMDGPUCodeGenPrepareImpl::shrinkDivRem64(IRBuilder<> &Builder,
   if (NumDivBits <= (IsSigned ? 23 : 22)) {
     Narrowed = expandDivRemToFloatImpl(Builder, I, Num, Den, NumDivBits, IsDiv,
                                        IsSigned);
+    if (Narrowed)
+      Narrowed = IsSigned ? Builder.CreateSExt(Narrowed, Num->getType())
+                          : Builder.CreateZExt(Narrowed, Num->getType());
   } else if (NumDivBits <= 32) {
     Narrowed = expandDivRem32(Builder, I, Num, Den);
   }
 
-  if (Narrowed) {
-    return IsSigned ? Builder.CreateSExt(Narrowed, Num->getType()) :
-                      Builder.CreateZExt(Narrowed, Num->getType());
-  }
-
-  return nullptr;
+  return Narrowed;
 }
 
 void AMDGPUCodeGenPrepareImpl::expandDivRem64(BinaryOperator &I) const {



More information about the llvm-commits mailing list