[llvm] [AMDGPU] Allow combining uniform OR/AND to V_PERM (PR #220048)
Jeffrey Byrnes via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 11 16:48:40 PDT 2026
================
@@ -747,32 +745,30 @@ define amdgpu_kernel void @s_test_imin_sle_v4i8(ptr addrspace(1) %out, [8 x i32]
; GFX9-NEXT: s_load_dword s2, s[8:9], 0x28
; GFX9-NEXT: s_load_dword s3, s[8:9], 0x4c
; GFX9-NEXT: s_load_dwordx2 s[0:1], s[8:9], 0x0
-; GFX9-NEXT: v_mov_b32_e32 v0, 0
+; GFX9-NEXT: v_mov_b32_e32 v2, 0xc0c0400
+; GFX9-NEXT: v_mov_b32_e32 v3, 0x6050400
; GFX9-NEXT: s_waitcnt lgkmcnt(0)
; GFX9-NEXT: s_sext_i32_i16 s5, s2
; GFX9-NEXT: s_sext_i32_i16 s7, s3
; GFX9-NEXT: s_ashr_i32 s7, s7, 8
; GFX9-NEXT: s_ashr_i32 s5, s5, 8
-; GFX9-NEXT: s_ashr_i32 s4, s2, 24
-; GFX9-NEXT: s_ashr_i32 s6, s3, 24
; GFX9-NEXT: s_min_i32 s5, s5, s7
; GFX9-NEXT: s_sext_i32_i8 s7, s3
; GFX9-NEXT: s_sext_i32_i8 s8, s2
+; GFX9-NEXT: s_ashr_i32 s4, s2, 24
+; GFX9-NEXT: s_ashr_i32 s6, s3, 24
+; GFX9-NEXT: s_min_i32 s7, s8, s7
; GFX9-NEXT: s_bfe_i32 s3, s3, 0x80010
; GFX9-NEXT: s_bfe_i32 s2, s2, 0x80010
-; GFX9-NEXT: s_min_i32 s7, s8, s7
-; GFX9-NEXT: s_min_i32 s4, s4, s6
+; GFX9-NEXT: v_mov_b32_e32 v1, s7
; GFX9-NEXT: s_min_i32 s2, s2, s3
-; GFX9-NEXT: s_lshl_b32 s5, s5, 8
-; GFX9-NEXT: s_and_b32 s7, s7, 0xff
-; GFX9-NEXT: s_lshl_b32 s4, s4, 8
-; GFX9-NEXT: s_and_b32 s2, s2, 0xff
-; GFX9-NEXT: s_or_b32 s5, s7, s5
-; GFX9-NEXT: s_or_b32 s2, s2, s4
-; GFX9-NEXT: s_and_b32 s5, s5, 0xffff
-; GFX9-NEXT: s_lshl_b32 s2, s2, 16
-; GFX9-NEXT: s_or_b32 s2, s5, s2
-; GFX9-NEXT: v_mov_b32_e32 v1, s2
+; GFX9-NEXT: v_perm_b32 v1, s5, v1, v2
+; GFX9-NEXT: s_min_i32 s4, s4, s6
+; GFX9-NEXT: v_mov_b32_e32 v2, s2
+; GFX9-NEXT: v_perm_b32 v2, s4, v2, v3
----------------
jrbyrnes wrote:
Looks like a regression -- previously uniform code is converted to VALU , with increased demands on VGPR file
https://github.com/llvm/llvm-project/pull/220048
More information about the llvm-commits
mailing list