[llvm-branch-commits] [llvm] [AMDGPU] Limit allocation of lo128 registers for occupancy (PR #173100)

Matt Arsenault via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Sun Dec 21 01:09:42 PST 2025


================
@@ -639,8 +639,20 @@ def VGPR_32_Lo128 : SIRegisterClass<"AMDGPU", !listconcat(Reg32Types.types, Reg1
   let AltOrders = [(add (sequence "VGPR%u", 0, 127),
                         (sequence "VGPR%u", 256, 383),
                         (sequence "VGPR%u", 512, 639),
-                        (sequence "VGPR%u", 768, 895))];
-  let AltOrderSelect = [{ return 1; }];
+                        (sequence "VGPR%u", 768, 895)),
+                   (add (sequence "VGPR%u", 0, 127),
+                        (sequence "VGPR%u", 256, 383),
+                        (sequence "VGPR%u", 512, 639)),
+                   (add (sequence "VGPR%u", 0, 127),
+                        (sequence "VGPR%u", 256, 383)),
+                   (add (sequence "VGPR%u", 0, 127))];
+  let AltOrderSelect = [{
+                          const GCNSubtarget &ST = MF.getSubtarget<GCNSubtarget>();
+                          unsigned N = ST.getMaxNumVGPRs(MF);
----------------
arsenm wrote:

This register count will be slightly inaccurate; this is being computed directly from the ABI properties of the IR function. Ideally this would be refined based on the current live set of registers, which has subtracted cases for WWM values. Can you compute this from RegisterClassInfo's count for VGPR_32?

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


More information about the llvm-branch-commits mailing list