[llvm] [AMDGPU] GCNRewritePartialRegUses - missing superreg (PR #208718)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 14 13:01:10 PDT 2026


================
@@ -0,0 +1,35 @@
+; RUN: llc -mtriple=amdgpu -mcpu=gfx1201 -debug-only=rewrite-partial-reg-uses -filetype=null %s 2>&1 | FileCheck %s
+
+; CHECK: Try to rewrite partial reg {{%.*}}:SGPR_1024
+; CHECK-NEXT:  Shift 32, reg align 32
+; CHECK-NEXT:  sub4_sub5_sub6:SGPR_96 -> sub3_sub4_sub5  No improvement achieved
+
+define amdgpu_cs void @_amdgpu_cs_main(i32 %LocalInvocationId) #0 {
+entry:
+  %aval1 = alloca [24 x i32], align 4, addrspace(5)
+  %i = call <2 x i32> @llvm.amdgcn.s.buffer.load.v2i32(<4 x i32> zeroinitializer, i32 208, i32 0)
+  %i1 = extractelement <2 x i32> %i, i64 0
+  %i2 = insertelement <3 x i32> zeroinitializer, i32 %i1, i64 0
+  %i3 = call i32 @llvm.amdgcn.s.buffer.load.i32(<4 x i32> zeroinitializer, i32 216, i32 0)
+  %i4 = insertelement <3 x i32> %i2, i32 %i3, i64 1
+  %i5 = getelementptr i8, ptr addrspace(5) %aval1, i32 16
+  store <3 x i32> %i4, ptr addrspace(5) %i5, align 4
+  br label %loop0.breakc0
+
+loop0.breakc0:                                    ; preds = %loop0.breakc0, %entry
+  %aval2 = phi float [ 0.000000e+00, %entry ], [ %aval3, %loop0.breakc0 ]
+  store <3 x i32> zeroinitializer, ptr addrspace(5) %aval1, align 4
+  %idx1 = shl i32 %LocalInvocationId, 4
+  %i6 = getelementptr i8, ptr addrspace(5) %aval1, i32 %idx1
+  %i7 = load <3 x float>, ptr addrspace(5) %i6, align 4
+  %i8 = extractelement <3 x float> %i7, i64 0
+  %i9 = fcmp ogt float %i8, 0.000000e+00
+  %i10 = fadd float %aval2, 0.000000e+00
+  %aval3 = select i1 %i9, float %i10, float %aval2
+  br label %loop0.breakc0
+}
+
+declare <2 x i32> @llvm.amdgcn.s.buffer.load.v2i32(<4 x i32>, i32, i32 immarg)
+declare i32 @llvm.amdgcn.s.buffer.load.i32(<4 x i32>, i32, i32 immarg)
+
+attributes #0 = { denormal_fpenv(float: preservesign) }
----------------
arsenm wrote:

Probably don't need this

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


More information about the llvm-commits mailing list