[llvm] e31a758 - AMDGPU: Pre-commit test to show diff
Ruiling Song via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 4 19:20:22 PST 2023
Author: Ruiling Song
Date: 2023-12-05T11:19:50+08:00
New Revision: e31a7581a556da9ab789afac4ac95f1ff592530f
URL: https://github.com/llvm/llvm-project/commit/e31a7581a556da9ab789afac4ac95f1ff592530f
DIFF: https://github.com/llvm/llvm-project/commit/e31a7581a556da9ab789afac4ac95f1ff592530f.diff
LOG: AMDGPU: Pre-commit test to show diff
Added:
llvm/test/CodeGen/AMDGPU/scratch-pointer-sink.ll
Modified:
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/AMDGPU/scratch-pointer-sink.ll b/llvm/test/CodeGen/AMDGPU/scratch-pointer-sink.ll
new file mode 100644
index 0000000000000..d0078bfb34b3f
--- /dev/null
+++ b/llvm/test/CodeGen/AMDGPU/scratch-pointer-sink.ll
@@ -0,0 +1,47 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
+; RUN: llc -march=amdgcn -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck %s -check-prefixes=GCN
+; RUN: llc -global-isel -march=amdgcn -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck %s -check-prefixes=GISEL
+
+define amdgpu_gfx i32 @sink_scratch_pointer(ptr addrspace(5) %stack, i32 inreg %flag) {
+; GCN-LABEL: sink_scratch_pointer:
+; GCN: ; %bb.0:
+; GCN-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GCN-NEXT: v_add_nc_u32_e32 v0, -4, v0
+; GCN-NEXT: s_cmp_lg_u32 s4, 0
+; GCN-NEXT: s_cbranch_scc0 .LBB0_2
+; GCN-NEXT: ; %bb.1: ; %bb2
+; GCN-NEXT: scratch_load_b32 v0, v0, off
+; GCN-NEXT: s_waitcnt vmcnt(0)
+; GCN-NEXT: s_setpc_b64 s[30:31]
+; GCN-NEXT: .LBB0_2: ; %bb1
+; GCN-NEXT: v_mov_b32_e32 v1, 1
+; GCN-NEXT: scratch_store_b32 v0, v1, off
+; GCN-NEXT: v_mov_b32_e32 v0, 0
+; GCN-NEXT: s_setpc_b64 s[30:31]
+;
+; GISEL-LABEL: sink_scratch_pointer:
+; GISEL: ; %bb.0:
+; GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
+; GISEL-NEXT: s_cmp_lg_u32 s4, 0
+; GISEL-NEXT: s_cbranch_scc0 .LBB0_2
+; GISEL-NEXT: ; %bb.1: ; %bb2
+; GISEL-NEXT: scratch_load_b32 v0, v0, off offset:-4
+; GISEL-NEXT: s_waitcnt vmcnt(0)
+; GISEL-NEXT: s_setpc_b64 s[30:31]
+; GISEL-NEXT: .LBB0_2: ; %bb1
+; GISEL-NEXT: v_mov_b32_e32 v1, 1
+; GISEL-NEXT: scratch_store_b32 v0, v1, off offset:-4
+; GISEL-NEXT: v_mov_b32_e32 v0, 0
+; GISEL-NEXT: s_setpc_b64 s[30:31]
+ %ptr = getelementptr inbounds i32, ptr addrspace(5) %stack, i32 -1
+ %cond = icmp eq i32 %flag, 0
+ br i1 %cond, label %bb1, label %bb2
+
+bb1:
+ store i32 1, ptr addrspace(5) %ptr, align 4
+ ret i32 0
+
+bb2:
+ %value = load i32, ptr addrspace(5) %ptr, align 4
+ ret i32 %value
+}
More information about the llvm-commits
mailing list