[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