[llvm] 7fbf008 - AMDGPU/GlobalISel: RegBankLegalize rules for cvt_off_f32_i4 (#196190)

via llvm-commits llvm-commits at lists.llvm.org
Thu May 7 09:51:14 PDT 2026


Author: vangthao95
Date: 2026-05-07T09:51:09-07:00
New Revision: 7fbf0081633631a1b659b7fb52600134124ae7fa

URL: https://github.com/llvm/llvm-project/commit/7fbf0081633631a1b659b7fb52600134124ae7fa
DIFF: https://github.com/llvm/llvm-project/commit/7fbf0081633631a1b659b7fb52600134124ae7fa.diff

LOG: AMDGPU/GlobalISel: RegBankLegalize rules for cvt_off_f32_i4 (#196190)

Added: 
    

Modified: 
    llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
    llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.off.f32.i4.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp b/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
index 39fc684a94680..2ce2545f57893 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
@@ -1754,7 +1754,8 @@ RegBankLegalizeRules::RegBankLegalizeRules(const GCNSubtarget &_ST,
       .Uni(S32, {{UniInVgprS32}, {IntrId, Vgpr32, Vgpr32, Vgpr32}})
       .Div(S32, {{Vgpr32}, {IntrId, Vgpr32, Vgpr32, Vgpr32}});
 
-  addRulesForIOpcs({amdgcn_cvt_f32_bf8, amdgcn_cvt_f32_fp8}, Standard)
+  addRulesForIOpcs(
+      {amdgcn_cvt_off_f32_i4, amdgcn_cvt_f32_bf8, amdgcn_cvt_f32_fp8}, Standard)
       .Uni(S32, {{UniInVgprS32}, {IntrId, Vgpr32}})
       .Div(S32, {{Vgpr32}, {IntrId, Vgpr32}});
 

diff  --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.off.f32.i4.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.off.f32.i4.ll
index e504eb7a5a124..083324e8b68c8 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.off.f32.i4.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.off.f32.i4.ll
@@ -1,10 +1,10 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
 ; RUN: llc --global-isel=0 -mtriple=amdgcn -mcpu=tahiti %s -o - | FileCheck %s
-; RUN: llc --global-isel=1 -mtriple=amdgcn -mcpu=tahiti %s -o - | FileCheck %s
+; RUN: llc --global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=tahiti %s -o - | FileCheck %s
 ; RUN: llc --global-isel=0 -mtriple=amdgcn -mcpu=tonga %s -o - | FileCheck %s
-; RUN: llc --global-isel=1 -mtriple=amdgcn -mcpu=tonga %s -o - | FileCheck %s
+; RUN: llc --global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=tonga %s -o - | FileCheck %s
 ; RUN: llc --global-isel=0 -mtriple=amdgcn -mcpu=gfx90a %s -o - | FileCheck %s
-; RUN: llc --global-isel=1 -mtriple=amdgcn -mcpu=gfx90a %s -o - | FileCheck %s
+; RUN: llc --global-isel=1 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx90a %s -o - | FileCheck %s
 
 declare float @llvm.amdgcn.cvt.off.f32.i4(i32)
 
@@ -17,6 +17,15 @@ define amdgpu_cs float @cvt_var(i32 %a) {
   ret float %ret
 }
 
+define amdgpu_ps float @cvt_var_s(i32 inreg %a) {
+; CHECK-LABEL: cvt_var_s:
+; CHECK:       ; %bb.0:
+; CHECK-NEXT:    v_cvt_off_f32_i4_e32 v0, s0
+; CHECK-NEXT:    ; return to shader part epilog
+  %ret = call float @llvm.amdgcn.cvt.off.f32.i4(i32 %a)
+  ret float %ret
+}
+
 define amdgpu_cs float @cvt_imm() {
 ; CHECK-LABEL: cvt_imm:
 ; CHECK:       ; %bb.0:


        


More information about the llvm-commits mailing list