Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / llvm.amdgcn.lds.param.load.ll
blob5a8b03e50e2ee6422797f345dee1bf106c005d5f
1 ; RUN: llc -march=amdgcn -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX11 %s
2 ; RUN: llc -global-isel -march=amdgcn -mcpu=gfx1100 -verify-machineinstrs < %s | FileCheck -check-prefix=GFX11 %s
4 ; GFX11-LABEL: {{^}}lds_param_load:
5 ; GFX11: s_mov_b32 m0
6 ; GFX11-DAG: lds_param_load v{{[0-9]+}}, attr0.x
7 ; GFX11-DAG: lds_param_load v{{[0-9]+}}, attr0.y
8 ; GFX11-DAG: lds_param_load v{{[0-9]+}}, attr0.z
9 ; GFX11-DAG: lds_param_load v{{[0-9]+}}, attr0.w
10 ; GFX11-DAG: lds_param_load v{{[0-9]+}}, attr1.x
11 ; GFX11: s_waitcnt expcnt(4)
12 ; GFX11: v_add_f32
13 ; GFX11: buffer_store_b32
14 ; GFX11: s_waitcnt expcnt(3)
15 ; GFX11: buffer_store_b32
16 ; GFX11: s_waitcnt expcnt(2)
17 ; GFX11: buffer_store_b32
18 ; GFX11: s_waitcnt expcnt(1)
19 ; GFX11: buffer_store_b32
20 ; GFX11: s_waitcnt expcnt(0)
21 ; GFX11: buffer_store_b32
22 ; GFX11: buffer_store_b32
23 define amdgpu_ps void @lds_param_load(ptr addrspace(8) inreg %buf, i32 inreg %arg) #0 {
24 main_body:
25   %p0 = call float @llvm.amdgcn.lds.param.load(i32 0, i32 0, i32 %arg)
26   ; Ensure memory clustering is occuring for lds_param_load
27   %p5 = fadd float %p0, 1.0
28   %p1 = call float @llvm.amdgcn.lds.param.load(i32 1, i32 0, i32 %arg)
29   %p2 = call float @llvm.amdgcn.lds.param.load(i32 2, i32 0, i32 %arg)
30   %p3 = call float @llvm.amdgcn.lds.param.load(i32 3, i32 0, i32 %arg)
31   %p4 = call float @llvm.amdgcn.lds.param.load(i32 0, i32 1, i32 %arg)
32   call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %p5, ptr addrspace(8) %buf, i32 4, i32 0, i32 0)
33   call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %p1, ptr addrspace(8) %buf, i32 4, i32 1, i32 0)
34   call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %p2, ptr addrspace(8) %buf, i32 4, i32 2, i32 0)
35   call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %p3, ptr addrspace(8) %buf, i32 4, i32 3, i32 0)
36   call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %p4, ptr addrspace(8) %buf, i32 4, i32 4, i32 0)
37   call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %p0, ptr addrspace(8) %buf, i32 4, i32 5, i32 0)
38   ret void
41 declare float @llvm.amdgcn.lds.param.load(i32, i32, i32) #1
42 declare void @llvm.amdgcn.raw.ptr.buffer.store.f32(float, ptr addrspace(8), i32, i32, i32)
44 attributes #0 = { nounwind }
45 attributes #1 = { nounwind readnone }