[llvm] [AMDGPU] Remove s_delay_alu for VALU->SGPR->SALU (PR #127212)
Jay Foad via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 20 05:12:13 PST 2025
================
@@ -559,3 +560,79 @@ body: |
$vgpr0 = V_WRITELANE_B32 $sgpr0, 3, $vgpr0
$vgpr0 = V_ADD_U32_e32 $vgpr0, $vgpr0, implicit $exec
...
+
+# Check if s_delay_alu is added
+---
+name: redundant_delay_alu_1
+body: |
+ bb.0:
+ ; CHECK-LABEL: redundant_delay_alu_1:
+ ; CHECK: ; %bb.0:
+ ; CHECK-NEXT: v_cmp_eq_u32_e64 s[0:1], s0, s1
+ ; CHECK-NEXT: v_mul_f32_e64 v0, v0, v0
+ ; CHECK-NEXT: s_or_b32 s0, s0, s1
+ ; CHECK-NEXT: v_mul_f32_e64 v0, v0, v0
+ $sgpr0_sgpr1 = V_CMP_EQ_U32_e64 $sgpr0, $sgpr1, implicit $exec
+ $vgpr0 = V_MUL_F32_e64 0, $vgpr0, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
+ $sgpr0= S_OR_B32 $sgpr0, $sgpr1, implicit-def $scc
+ $vgpr0 = V_MUL_F32_e64 0, $vgpr0, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
+...
+
+# Check if s_delay_alu is added
+---
+name: delay_alu
+body: |
+ bb.0:
+ ; CHECK-LABEL: delay_alu:
+ ; CHECK: ; %bb.0:
+ ; CHECK-NEXT: v_cmp_eq_u32_e64 s[0:1], s4, s5
+ ; CHECK-NEXT: v_mul_f32_e64 v0, v0, v0
+ ; CHECK-NEXT: s_or_b32 s0, s0, s1
+ ; CHECK-NEXT: v_mul_f32_e64 v0, v0, v0
+ $sgpr0_sgpr1 = V_CMP_EQ_U32_e64 $sgpr4, $sgpr5, implicit $exec
+ $vgpr0 = V_MUL_F32_e64 0, $vgpr0, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
+ $sgpr0 = S_OR_B32 $sgpr0, $sgpr1, implicit-def $scc
+ $vgpr0 = V_MUL_F32_e64 0, $vgpr0, 0, $vgpr0, 0, 0, implicit $mode, implicit $exec
+...
+
+# Check if reduntant delay_alu is removed
----------------
jayfoad wrote:
Typo "redundant"
https://github.com/llvm/llvm-project/pull/127212
More information about the llvm-commits
mailing list