[llvm] AMDGPU/GlobalISel: Regbanklegalize rules for G_UNMERGE_VALUES (PR #171653)

Petar Avramovic via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 12 04:04:24 PST 2025


================
@@ -137,34 +137,20 @@ define amdgpu_ps void @fpext_f16_to_f64_div(half %a, ptr addrspace(1) %ptr) {
 }
 
 define amdgpu_ps <2 x float> @fpext_v2f16_to_v2f32_uniform(<2 x half> inreg %a) {
-; GFX11-FAKE16-LABEL: fpext_v2f16_to_v2f32_uniform:
-; GFX11-FAKE16:       ; %bb.0:
-; GFX11-FAKE16-NEXT:    s_lshr_b32 s1, s0, 16
-; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e32 v0, s0
-; GFX11-FAKE16-NEXT:    v_cvt_f32_f16_e32 v1, s1
-; GFX11-FAKE16-NEXT:    ; return to shader part epilog
-;
-; GFX11-TRUE16-LABEL: fpext_v2f16_to_v2f32_uniform:
-; GFX11-TRUE16:       ; %bb.0:
-; GFX11-TRUE16-NEXT:    v_cvt_f32_f16_e32 v0, s0
----------------
petar-avramovic wrote:

This was a bug.
There were _lo and _hi subreg copies, but they got lost at some point since input was a copy from physical sgpr. After that subreg copies looked like 32 bit sgpr copy.
Maybe true 16 is missing assert somewhere?

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


More information about the llvm-commits mailing list