1
- ; RUN: opt -S -mtriple=amdgcn-unknown-amdhsa -mcpu=hawaii -passes=loop-unroll -unroll-threshold=49 -unroll-peel-count=0 -unroll-allow-partial=false -unroll-max-iteration-count-to-analyze=16 < %s | FileCheck %s
1
+ ; RUN: opt -S -mtriple=amdgcn-unknown-amdhsa -mcpu=hawaii -passes=loop-unroll -unroll-threshold=57 -unroll-peel-count=0 -unroll-allow-partial=false -unroll-max-iteration-count-to-analyze=16 < %s | FileCheck %s
2
+
3
+ @indices = external global [16 x i32 ]
2
4
3
5
; CHECK-LABEL: @test_func_addrspacecast_cost_noop(
4
6
; CHECK-NOT: br i1
9
11
for.body:
10
12
%indvars.iv = phi i32 [ %indvars.iv.next , %for.body ], [ 0 , %entry ]
11
13
%sum.02 = phi float [ %fmul , %for.body ], [ 0 .0 , %entry ]
12
- %arrayidx.in = getelementptr inbounds float , ptr addrspace (1 ) %in , i32 %indvars.iv
13
- %arrayidx.out = getelementptr inbounds float , ptr addrspace (1 ) %out , i32 %indvars.iv
14
+ %idx.ptr = getelementptr inbounds [16 x i32 ], ptr @indices , i32 0 , i32 %indvars.iv
15
+ %index = load i32 , ptr %idx.ptr
16
+ %arrayidx.in = getelementptr inbounds float , ptr addrspace (1 ) %in , i32 %index
17
+ %arrayidx.out = getelementptr inbounds float , ptr addrspace (1 ) %out , i32 %index
14
18
%cast.in = addrspacecast ptr addrspace (1 ) %arrayidx.in to ptr
15
19
%cast.out = addrspacecast ptr addrspace (1 ) %arrayidx.out to ptr
16
20
%load = load float , ptr %cast.in
@@ -34,8 +38,10 @@ entry:
34
38
for.body:
35
39
%indvars.iv = phi i32 [ %indvars.iv.next , %for.body ], [ 0 , %entry ]
36
40
%sum.02 = phi float [ %fmul , %for.body ], [ 0 .0 , %entry ]
37
- %arrayidx.in = getelementptr inbounds float , ptr %in , i32 %indvars.iv
38
- %arrayidx.out = getelementptr inbounds float , ptr %out , i32 %indvars.iv
41
+ %idx.ptr = getelementptr inbounds [16 x i32 ], ptr @indices , i32 0 , i32 %indvars.iv
42
+ %index = load i32 , ptr %idx.ptr
43
+ %arrayidx.in = getelementptr inbounds float , ptr %in , i32 %index
44
+ %arrayidx.out = getelementptr inbounds float , ptr %out , i32 %index
39
45
%cast.in = addrspacecast ptr %arrayidx.in to ptr addrspace (3 )
40
46
%cast.out = addrspacecast ptr %arrayidx.out to ptr addrspace (3 )
41
47
%load = load float , ptr addrspace (3 ) %cast.in
@@ -58,8 +64,10 @@ entry:
58
64
for.body:
59
65
%indvars.iv = phi i32 [ %indvars.iv.next , %for.body ], [ 0 , %entry ]
60
66
%sum.02 = phi float [ %fmul , %for.body ], [ 0 .0 , %entry ]
61
- %arrayidx.in = getelementptr inbounds float , ptr addrspace (3 ) %in , i32 %indvars.iv
62
- %arrayidx.out = getelementptr inbounds float , ptr addrspace (3 ) %out , i32 %indvars.iv
67
+ %idx.ptr = getelementptr inbounds [16 x i32 ], ptr @indices , i32 0 , i32 %indvars.iv
68
+ %index = load i32 , ptr %idx.ptr
69
+ %arrayidx.in = getelementptr inbounds float , ptr addrspace (3 ) %in , i32 %index
70
+ %arrayidx.out = getelementptr inbounds float , ptr addrspace (3 ) %out , i32 %index
63
71
%cast.in = addrspacecast ptr addrspace (3 ) %arrayidx.in to ptr
64
72
%cast.out = addrspacecast ptr addrspace (3 ) %arrayidx.out to ptr
65
73
%load = load float , ptr %cast.in
0 commit comments