[llvm] [AMDGPU][GISel] Add register bank legalization rules for amdgcn_cvt_sr_f16_f32. (PR #203253)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 12 06:25:07 PDT 2026
https://github.com/anjenner updated https://github.com/llvm/llvm-project/pull/203253
>From f1e9f707fade5564c7f1a4ee41403f4e7d31533c Mon Sep 17 00:00:00 2001
From: Andrew Jenner <Andrew.Jenner at amd.com>
Date: Thu, 11 Jun 2026 08:32:00 -0400
Subject: [PATCH 1/2] Add register bank legalization rules for
amdgcn_cvt_sr_f16_f32.
---
llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp | 3 +++
llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.sr.ll | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp b/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
index 60eb33b64fc0d..e492033bd870c 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
@@ -2276,6 +2276,9 @@ RegBankLegalizeRules::RegBankLegalizeRules(const GCNSubtarget &_ST,
addRulesForIOpcs({amdgcn_set_inactive_chain_arg}, Standard)
.Div(S32, {{Vgpr32}, {IntrId, Vgpr32, Vgpr32}});
+ addRulesForIOpcs({amdgcn_cvt_sr_f16_f32}, Standard)
+ .Div(V2S16, {{VgprV2S16}, {IntrId, VgprV2S16, Vgpr32, Vgpr32}});
+
addRulesForIOpcs({amdgcn_ballot}, Standard)
.Uni(S64, {{Sgpr64}, {IntrId, Vcc}})
.Uni(S32, {{Sgpr32}, {IntrId, Vcc}});
diff --git a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.sr.ll b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.sr.ll
index 64a15bc102759..13cf8f9917ee6 100644
--- a/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.sr.ll
+++ b/llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.sr.ll
@@ -1,6 +1,6 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx950 -o - %s | FileCheck -check-prefix=GFX950 %s
-; RUN: llc -global-isel=1 -global-isel-abort=2 -mtriple=amdgcn -mcpu=gfx950 -o - %s | FileCheck -check-prefix=GFX950 %s
+; RUN: llc -global-isel=1 -global-isel-abort=2 -new-reg-bank-select -mtriple=amdgcn -mcpu=gfx950 -o - %s | FileCheck -check-prefix=GFX950 %s
declare <2 x half> @llvm.amdgcn.cvt.sr.f16.f32(<2 x half>, float, i32, i1)
declare <2 x bfloat> @llvm.amdgcn.cvt.sr.bf16.f32(<2 x bfloat>, float, i32, i1)
>From 204434e85e85a12b7a3421bcaa879e48aa9d0c04 Mon Sep 17 00:00:00 2001
From: Andrew Jenner <Andrew.Jenner at amd.com>
Date: Fri, 12 Jun 2026 09:31:46 -0400
Subject: [PATCH 2/2] Add amdgcn_cvt_sr_bf16_f32 and the dst_lo_hi_sel operand.
---
llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp b/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
index e492033bd870c..96a9ba4f60466 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPURegBankLegalizeRules.cpp
@@ -2276,8 +2276,8 @@ RegBankLegalizeRules::RegBankLegalizeRules(const GCNSubtarget &_ST,
addRulesForIOpcs({amdgcn_set_inactive_chain_arg}, Standard)
.Div(S32, {{Vgpr32}, {IntrId, Vgpr32, Vgpr32}});
- addRulesForIOpcs({amdgcn_cvt_sr_f16_f32}, Standard)
- .Div(V2S16, {{VgprV2S16}, {IntrId, VgprV2S16, Vgpr32, Vgpr32}});
+ addRulesForIOpcs({amdgcn_cvt_sr_bf16_f32, amdgcn_cvt_sr_f16_f32}, Standard)
+ .Div(V2S16, {{VgprV2S16}, {IntrId, VgprV2S16, Vgpr32, Vgpr32, Imm}});
addRulesForIOpcs({amdgcn_ballot}, Standard)
.Uni(S64, {{Sgpr64}, {IntrId, Vcc}})
More information about the llvm-commits
mailing list