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 ]
24
35; CHECK-LABEL: @test_func_addrspacecast_cost_noop(
46; CHECK-NOT: br i1
911for.body:
1012 %indvars.iv = phi i32 [ %indvars.iv.next , %for.body ], [ 0 , %entry ]
1113 %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
1418 %cast.in = addrspacecast ptr addrspace (1 ) %arrayidx.in to ptr
1519 %cast.out = addrspacecast ptr addrspace (1 ) %arrayidx.out to ptr
1620 %load = load float , ptr %cast.in
@@ -34,8 +38,10 @@ entry:
3438for.body:
3539 %indvars.iv = phi i32 [ %indvars.iv.next , %for.body ], [ 0 , %entry ]
3640 %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
3945 %cast.in = addrspacecast ptr %arrayidx.in to ptr addrspace (3 )
4046 %cast.out = addrspacecast ptr %arrayidx.out to ptr addrspace (3 )
4147 %load = load float , ptr addrspace (3 ) %cast.in
@@ -58,8 +64,10 @@ entry:
5864for.body:
5965 %indvars.iv = phi i32 [ %indvars.iv.next , %for.body ], [ 0 , %entry ]
6066 %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
6371 %cast.in = addrspacecast ptr addrspace (3 ) %arrayidx.in to ptr
6472 %cast.out = addrspacecast ptr addrspace (3 ) %arrayidx.out to ptr
6573 %load = load float , ptr %cast.in
0 commit comments