summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2018-02-19 13:55:23 +0000
committerHans Wennborg <hans@hanshq.net>2018-02-19 13:55:23 +0000
commit75d86fdcda24cc768d6d5b585a0ada9870845048 (patch)
treeca2e5d6149bb3a50d7213575fe3784259c57ad20 /test
parent08f6e35d6fdf32da14ad058748728c560c7556ac (diff)
Merging r324353:
------------------------------------------------------------------------ r324353 | mareko | 2018-02-06 16:17:55 +0100 (Tue, 06 Feb 2018) | 5 lines AMDGPU: Fix S_BUFFER_LOAD_DWORD_SGPR moveToVALU Author: Bas Nieuwenhuizen https://reviews.llvm.org/D42881 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_60@325497 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/CodeGen/AMDGPU/smrd.ll34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/CodeGen/AMDGPU/smrd.ll b/test/CodeGen/AMDGPU/smrd.ll
index 420c7b80b8d..adf22323ae6 100644
--- a/test/CodeGen/AMDGPU/smrd.ll
+++ b/test/CodeGen/AMDGPU/smrd.ll
@@ -261,8 +261,42 @@ main_body:
ret void
}
+; GCN-LABEL: {{^}}smrd_sgpr_descriptor_promoted
+; GCN: v_readfirstlane
+define amdgpu_cs void @smrd_sgpr_descriptor_promoted([0 x i8] addrspace(2)* inreg noalias dereferenceable(18446744073709551615), i32) #0 {
+main_body:
+ %descptr = bitcast [0 x i8] addrspace(2)* %0 to <4 x i32> addrspace(2)*, !amdgpu.uniform !0
+ br label %.outer_loop_header
+
+ret_block: ; preds = %.outer, %.label22, %main_body
+ ret void
+
+.outer_loop_header:
+ br label %.inner_loop_header
+
+.inner_loop_header: ; preds = %.inner_loop_body, %.outer_loop_header
+ %loopctr.1 = phi i32 [ 0, %.outer_loop_header ], [ %loopctr.2, %.inner_loop_body ]
+ %loopctr.2 = add i32 %loopctr.1, 1
+ %inner_br1 = icmp slt i32 %loopctr.2, 10
+ br i1 %inner_br1, label %.inner_loop_body, label %ret_block
+
+.inner_loop_body:
+ %descriptor = load <4 x i32>, <4 x i32> addrspace(2)* %descptr, align 16, !invariant.load !0
+ %load1result = call float @llvm.SI.load.const.v4i32(<4 x i32> %descriptor, i32 0)
+ %inner_br2 = icmp uge i32 %1, 10
+ br i1 %inner_br2, label %.inner_loop_header, label %.outer_loop_body
+
+.outer_loop_body:
+ %offset = shl i32 %loopctr.2, 6
+ %load2result = call float @llvm.SI.load.const.v4i32(<4 x i32> %descriptor, i32 %offset)
+ %outer_br = fcmp ueq float %load2result, 0x0
+ br i1 %outer_br, label %.outer_loop_header, label %ret_block
+}
+
declare void @llvm.amdgcn.exp.f32(i32, i32, float, float, float, float, i1, i1) #0
declare float @llvm.SI.load.const.v4i32(<4 x i32>, i32) #1
attributes #0 = { nounwind }
attributes #1 = { nounwind readnone }
+
+!0 = !{}