[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