[llvm] [AMDGPU] Lower S_ABSDIFF_I32 to VALU instructions (PR #167691)

Jay Foad via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 12 06:45:50 PST 2025


================
@@ -1,6 +1,44 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc -mtriple=amdgcn-amd-amdpal -mcpu=gfx900 < %s | FileCheck %s
 
+
+define amdgpu_gs float @absdiff_valu_input_regression() {
+; CHECK-LABEL: absdiff_valu_input_regression:
+; CHECK:       ; %bb.0: ; %bb
+; CHECK-NEXT:    s_mov_b32 s0, 0
+; CHECK-NEXT:  .LBB0_1: ; %bb1
+; CHECK-NEXT:    ; =>This Inner Loop Header: Depth=1
+; CHECK-NEXT:    s_mov_b32 s1, s0
+; CHECK-NEXT:    s_or_b32 s0, s0, 1
+; CHECK-NEXT:    s_cmp_gt_i32 s1, 0
+; CHECK-NEXT:    s_cbranch_scc1 .LBB0_1
+; CHECK-NEXT:  ; %bb.2: ; %bb11
+; CHECK-NEXT:    v_med3_i32 v0, s1, 0, 1
+; CHECK-NEXT:    v_sub_u32_e32 v0, 0, v0
+; CHECK-NEXT:    v_sub_u32_e32 v1, 0, v0
+; CHECK-NEXT:    v_max_i32_e32 v0, v0, v1
----------------
jayfoad wrote:

This is a confusing example because I think it is calculating absdiff(0, x) which should really have been simplified to abs(x) already. But I think the code is correct.

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


More information about the llvm-commits mailing list