[llvm] [AMDGPU] Use new CSR cost calculation (PR #219220)
Lukas Sommer via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 2 02:08:54 PDT 2026
================
@@ -9,89 +9,100 @@ define hidden void @widget() #0 {
; GCN-NEXT: s_mov_b32 s16, s33
; GCN-NEXT: s_mov_b32 s33, s32
; GCN-NEXT: s_or_saveexec_b64 s[18:19], -1
-; GCN-NEXT: buffer_store_dword v41, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill
+; GCN-NEXT: buffer_store_dword v40, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill
+; GCN-NEXT: buffer_store_dword v41, off, s[0:3], s33 offset:8 ; 4-byte Folded Spill
; GCN-NEXT: s_mov_b64 exec, s[18:19]
-; GCN-NEXT: v_writelane_b32 v41, s16, 16
+; GCN-NEXT: v_writelane_b32 v40, s16, 4
; GCN-NEXT: s_addk_i32 s32, 0x400
-; GCN-NEXT: buffer_store_dword v40, off, s[0:3], s33 ; 4-byte Folded Spill
-; GCN-NEXT: v_writelane_b32 v41, s34, 0
-; GCN-NEXT: v_writelane_b32 v41, s35, 1
-; GCN-NEXT: v_writelane_b32 v41, s36, 2
-; GCN-NEXT: v_writelane_b32 v41, s37, 3
-; GCN-NEXT: v_writelane_b32 v41, s38, 4
-; GCN-NEXT: v_writelane_b32 v41, s39, 5
-; GCN-NEXT: v_writelane_b32 v41, s48, 6
-; GCN-NEXT: v_writelane_b32 v41, s49, 7
-; GCN-NEXT: v_writelane_b32 v41, s50, 8
-; GCN-NEXT: v_writelane_b32 v41, s51, 9
-; GCN-NEXT: v_writelane_b32 v41, s52, 10
-; GCN-NEXT: v_writelane_b32 v41, s53, 11
-; GCN-NEXT: v_writelane_b32 v41, s54, 12
-; GCN-NEXT: v_writelane_b32 v41, s55, 13
-; GCN-NEXT: v_writelane_b32 v41, s30, 14
-; GCN-NEXT: v_writelane_b32 v41, s31, 15
+; GCN-NEXT: v_writelane_b32 v40, s34, 0
+; GCN-NEXT: v_writelane_b32 v40, s35, 1
+; GCN-NEXT: v_writelane_b32 v40, s30, 2
+; GCN-NEXT: v_writelane_b32 v40, s31, 3
; GCN-NEXT: v_mov_b32_e32 v0, 0
; GCN-NEXT: v_mov_b32_e32 v1, 0
; GCN-NEXT: flat_load_dword v0, v[0:1]
-; GCN-NEXT: s_mov_b64 s[20:21], -1
+; GCN-NEXT: s_mov_b64 s[22:23], -1
; GCN-NEXT: s_mov_b64 s[16:17], 0
-; GCN-NEXT: s_mov_b64 s[54:55], 0
; GCN-NEXT: s_mov_b64 s[18:19], 0
+; GCN-NEXT: s_mov_b64 s[20:21], 0
; GCN-NEXT: s_waitcnt vmcnt(0)
; GCN-NEXT: v_cmp_gt_i32_e32 vcc, 21, v0
-; GCN-NEXT: v_readfirstlane_b32 s22, v0
+; GCN-NEXT: v_readfirstlane_b32 s24, v0
; GCN-NEXT: s_cbranch_vccnz .LBB0_2
; GCN-NEXT: ; %bb.1: ; %bb2
-; GCN-NEXT: s_cmp_eq_u32 s22, 21
-; GCN-NEXT: s_cselect_b64 s[54:55], -1, 0
-; GCN-NEXT: s_cmp_lg_u32 s22, 21
+; GCN-NEXT: s_cmp_eq_u32 s24, 21
; GCN-NEXT: s_cselect_b64 s[18:19], -1, 0
-; GCN-NEXT: s_mov_b64 s[20:21], 0
+; GCN-NEXT: s_cmp_lg_u32 s24, 21
+; GCN-NEXT: s_cselect_b64 s[20:21], -1, 0
+; GCN-NEXT: s_mov_b64 s[22:23], 0
; GCN-NEXT: .LBB0_2: ; %Flow
-; GCN-NEXT: s_and_b64 s[20:21], s[20:21], exec
-; GCN-NEXT: s_cselect_b32 s20, 1, 0
-; GCN-NEXT: s_cmp_lg_u32 s20, 1
+; GCN-NEXT: s_and_b64 s[22:23], s[22:23], exec
+; GCN-NEXT: s_cselect_b32 s22, 1, 0
+; GCN-NEXT: s_cmp_lg_u32 s22, 1
; GCN-NEXT: s_cbranch_scc1 .LBB0_4
; GCN-NEXT: ; %bb.3: ; %bb4
-; GCN-NEXT: s_cmp_lg_u32 s22, 9
+; GCN-NEXT: s_cmp_lg_u32 s24, 9
; GCN-NEXT: s_mov_b64 s[16:17], -1
-; GCN-NEXT: s_cselect_b64 s[18:19], -1, 0
+; GCN-NEXT: s_cselect_b64 s[20:21], -1, 0
; GCN-NEXT: .LBB0_4: ; %Flow1
-; GCN-NEXT: s_and_b64 s[18:19], s[18:19], exec
-; GCN-NEXT: s_cselect_b32 s18, 1, 0
-; GCN-NEXT: s_cmp_lg_u32 s18, 1
+; GCN-NEXT: s_and_b64 s[20:21], s[20:21], exec
+; GCN-NEXT: s_cselect_b32 s20, 1, 0
+; GCN-NEXT: s_cmp_lg_u32 s20, 1
; GCN-NEXT: s_cbranch_scc1 .LBB0_6
; GCN-NEXT: ; %bb.5: ; %bb9
+; GCN-NEXT: buffer_store_dword v31, off, s[0:3], s33 ; 4-byte Folded Spill
+; GCN-NEXT: buffer_load_dword v31, off, s[0:3], s33 ; 4-byte Folded Reload
+; GCN-NEXT: ; implicit-def: $vgpr41 : SGPR spill to VGPR lane
; GCN-NEXT: s_getpc_b64 s[16:17]
; GCN-NEXT: s_add_u32 s16, s16, wibble at rel32@lo+4
; GCN-NEXT: s_addc_u32 s17, s17, wibble at rel32@hi+12
-; GCN-NEXT: s_mov_b64 s[34:35], s[4:5]
-; GCN-NEXT: s_mov_b64 s[36:37], s[6:7]
-; GCN-NEXT: s_mov_b64 s[38:39], s[8:9]
-; GCN-NEXT: s_mov_b64 s[48:49], s[10:11]
-; GCN-NEXT: s_mov_b32 s50, s12
-; GCN-NEXT: s_mov_b32 s51, s13
-; GCN-NEXT: s_mov_b32 s52, s14
-; GCN-NEXT: s_mov_b32 s53, s15
-; GCN-NEXT: v_mov_b32_e32 v40, v31
+; GCN-NEXT: v_writelane_b32 v41, s4, 0
+; GCN-NEXT: v_writelane_b32 v41, s5, 1
+; GCN-NEXT: v_readlane_b32 s4, v41, 0
+; GCN-NEXT: v_readlane_b32 s5, v41, 1
+; GCN-NEXT: v_writelane_b32 v41, s6, 2
+; GCN-NEXT: v_writelane_b32 v41, s7, 3
+; GCN-NEXT: v_readlane_b32 s6, v41, 2
+; GCN-NEXT: v_readlane_b32 s7, v41, 3
+; GCN-NEXT: v_writelane_b32 v41, s8, 4
+; GCN-NEXT: v_writelane_b32 v41, s9, 5
+; GCN-NEXT: v_readlane_b32 s8, v41, 4
+; GCN-NEXT: v_readlane_b32 s9, v41, 5
+; GCN-NEXT: v_writelane_b32 v41, s10, 6
+; GCN-NEXT: v_writelane_b32 v41, s11, 7
+; GCN-NEXT: v_readlane_b32 s10, v41, 6
+; GCN-NEXT: v_readlane_b32 s11, v41, 7
+; GCN-NEXT: v_writelane_b32 v41, s12, 8
+; GCN-NEXT: v_readlane_b32 s12, v41, 8
+; GCN-NEXT: v_writelane_b32 v41, s13, 9
+; GCN-NEXT: v_readlane_b32 s13, v41, 9
+; GCN-NEXT: v_writelane_b32 v41, s14, 10
+; GCN-NEXT: v_readlane_b32 s14, v41, 10
+; GCN-NEXT: v_writelane_b32 v41, s15, 11
+; GCN-NEXT: v_readlane_b32 s15, v41, 11
----------------
sommerlukas wrote:
I've filed https://github.com/llvm/llvm-project/issues/220524 to remove the redundant instructions.
https://github.com/llvm/llvm-project/pull/219220
More information about the llvm-commits
mailing list