diff options
| author | Eric Christopher <echristo@gmail.com> | 2019-04-17 02:12:23 +0000 |
|---|---|---|
| committer | Eric Christopher <echristo@gmail.com> | 2019-04-17 02:12:23 +0000 |
| commit | a86343512845c9c1fdbac865fea88aa5fce7142a (patch) | |
| tree | 666fc6353de19ad8b00e56b67edd33f24104e4a7 /llvm/test/Transforms/LoopUnroll/AMDGPU | |
| parent | 7f8ca6e3679b3af951cb7a4b1377edfaa3244b93 (diff) | |
| download | bcm5719-llvm-a86343512845c9c1fdbac865fea88aa5fce7142a.tar.gz bcm5719-llvm-a86343512845c9c1fdbac865fea88aa5fce7142a.zip | |
Temporarily Revert "Add basic loop fusion pass."
As it's causing some bot failures (and per request from kbarton).
This reverts commit r358543/ab70da07286e618016e78247e4a24fcb84077fda.
llvm-svn: 358546
Diffstat (limited to 'llvm/test/Transforms/LoopUnroll/AMDGPU')
4 files changed, 0 insertions, 267 deletions
diff --git a/llvm/test/Transforms/LoopUnroll/AMDGPU/lit.local.cfg b/llvm/test/Transforms/LoopUnroll/AMDGPU/lit.local.cfg deleted file mode 100644 index 6baccf05fff..00000000000 --- a/llvm/test/Transforms/LoopUnroll/AMDGPU/lit.local.cfg +++ /dev/null @@ -1,3 +0,0 @@ -if not 'AMDGPU' in config.root.targets: - config.unsupported = True - diff --git a/llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-barrier.ll b/llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-barrier.ll deleted file mode 100644 index ca8cc32469d..00000000000 --- a/llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-barrier.ll +++ /dev/null @@ -1,33 +0,0 @@ -; RUN: opt -mtriple=amdgcn-unknown-amdhsa -mcpu=hawaii -loop-unroll -S < %s | FileCheck %s - -; CHECK-LABEL: @test_unroll_convergent_barrier( -; CHECK: call void @llvm.amdgcn.s.barrier() -; CHECK: call void @llvm.amdgcn.s.barrier() -; CHECK: call void @llvm.amdgcn.s.barrier() -; CHECK: call void @llvm.amdgcn.s.barrier() -; CHECK-NOT: br -define amdgpu_kernel void @test_unroll_convergent_barrier(i32 addrspace(1)* noalias nocapture %out, i32 addrspace(1)* noalias nocapture %in) #0 { -entry: - br label %for.body - -for.body: ; preds = %for.body, %entry - %indvars.iv = phi i32 [ %indvars.iv.next, %for.body ], [ 0, %entry ] - %sum.02 = phi i32 [ %add, %for.body ], [ 0, %entry ] - %arrayidx.in = getelementptr inbounds i32, i32 addrspace(1)* %in, i32 %indvars.iv - %arrayidx.out = getelementptr inbounds i32, i32 addrspace(1)* %out, i32 %indvars.iv - %load = load i32, i32 addrspace(1)* %arrayidx.in - call void @llvm.amdgcn.s.barrier() #1 - %add = add i32 %load, %sum.02 - store i32 %add, i32 addrspace(1)* %arrayidx.out - %indvars.iv.next = add i32 %indvars.iv, 1 - %exitcond = icmp eq i32 %indvars.iv.next, 4 - br i1 %exitcond, label %for.end, label %for.body - -for.end: ; preds = %for.body, %entry - ret void -} - -declare void @llvm.amdgcn.s.barrier() #1 - -attributes #0 = { nounwind } -attributes #1 = { nounwind convergent } diff --git a/llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-cost-call.ll b/llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-cost-call.ll deleted file mode 100644 index 9ca109c4f74..00000000000 --- a/llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-cost-call.ll +++ /dev/null @@ -1,77 +0,0 @@ -; RUN: opt -S -mtriple=amdgcn-unknown-amdhsa -mcpu=hawaii -loop-unroll -unroll-threshold=100 -unroll-peel-count=0 -unroll-allow-partial=false -unroll-max-iteration-count-to-analyze=16 < %s | FileCheck %s - -; CHECK-LABEL: @test_intrinsic_call_cost( -; CHECK-NOT: br i1 -define amdgpu_kernel void @test_intrinsic_call_cost(float addrspace(1)* noalias nocapture %out, float addrspace(1)* noalias nocapture %in) #0 { -entry: - br label %for.body - -for.body: - %indvars.iv = phi i32 [ %indvars.iv.next, %for.body ], [ 0, %entry ] - %sum.02 = phi float [ %fmul, %for.body ], [ 0.0, %entry ] - %arrayidx.in = getelementptr inbounds float, float addrspace(1)* %in, i32 %indvars.iv - %arrayidx.out = getelementptr inbounds float, float addrspace(1)* %out, i32 %indvars.iv - %load = load float, float addrspace(1)* %arrayidx.in - %call = call float @llvm.minnum.f32(float %load, float 1.0); - %fmul = fmul float %call, %sum.02 - store float %fmul, float addrspace(1)* %arrayidx.out - %indvars.iv.next = add i32 %indvars.iv, 1 - %exitcond = icmp eq i32 %indvars.iv.next, 16 - br i1 %exitcond, label %for.end, label %for.body - -for.end: - ret void -} - -; CHECK-LABEL: @test_func_call_cost( -; CHECK: br i1 %exitcond -define amdgpu_kernel void @test_func_call_cost(float addrspace(1)* noalias nocapture %out, float addrspace(1)* noalias nocapture %in) #0 { -entry: - br label %for.body - -for.body: - %indvars.iv = phi i32 [ %indvars.iv.next, %for.body ], [ 0, %entry ] - %sum.02 = phi float [ %fmul, %for.body ], [ 0.0, %entry ] - %arrayidx.in = getelementptr inbounds float, float addrspace(1)* %in, i32 %indvars.iv - %arrayidx.out = getelementptr inbounds float, float addrspace(1)* %out, i32 %indvars.iv - %load = load float, float addrspace(1)* %arrayidx.in - %fptr = load float(float, float)*, float(float, float )* addrspace(4)* null - %call = tail call float %fptr(float %load, float 1.0) - %fmul = fmul float %call, %sum.02 - store float %fmul, float addrspace(1)* %arrayidx.out - %indvars.iv.next = add i32 %indvars.iv, 1 - %exitcond = icmp eq i32 %indvars.iv.next, 16 - br i1 %exitcond, label %for.end, label %for.body - -for.end: - ret void -} - -; CHECK-LABEL: @test_indirect_call_cost( -; CHECK: br i1 %exitcond -define amdgpu_kernel void @test_indirect_call_cost(float addrspace(1)* noalias nocapture %out, float addrspace(1)* noalias nocapture %in) #0 { -entry: - br label %for.body - -for.body: - %indvars.iv = phi i32 [ %indvars.iv.next, %for.body ], [ 0, %entry ] - %sum.02 = phi float [ %fmul, %for.body ], [ 0.0, %entry ] - %arrayidx.in = getelementptr inbounds float, float addrspace(1)* %in, i32 %indvars.iv - %arrayidx.out = getelementptr inbounds float, float addrspace(1)* %out, i32 %indvars.iv - %load = load float, float addrspace(1)* %arrayidx.in - %min = call float @func(float %load, float 1.0); - %fmul = fmul float %min, %sum.02 - store float %fmul, float addrspace(1)* %arrayidx.out - %indvars.iv.next = add i32 %indvars.iv, 1 - %exitcond = icmp eq i32 %indvars.iv.next, 16 - br i1 %exitcond, label %for.end, label %for.body - -for.end: - ret void -} - -declare float @llvm.minnum.f32(float, float) #1 -declare float @func(float, float) #1 - -attributes #0 = { nounwind } -attributes #1 = { nounwind readnone speculatable } diff --git a/llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-for-private.ll b/llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-for-private.ll deleted file mode 100644 index e2606bb69cf..00000000000 --- a/llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-for-private.ll +++ /dev/null @@ -1,154 +0,0 @@ -; RUN: opt -data-layout=A5 -mtriple=amdgcn-unknown-amdhsa -loop-unroll -S -amdgpu-unroll-threshold-private=20000 %s | FileCheck %s - -; Check that we full unroll loop to be able to eliminate alloca -; CHECK-LABEL: @non_invariant_ind -; CHECK: for.body: -; CHECK-NOT: br -; CHECK: store i32 %tmp15, i32 addrspace(1)* %arrayidx7, align 4 -; CHECK: ret void - -define amdgpu_kernel void @non_invariant_ind(i32 addrspace(1)* nocapture %a, i32 %x) { -entry: - %arr = alloca [64 x i32], align 4, addrspace(5) - %tmp1 = tail call i32 @llvm.amdgcn.workitem.id.x() #1 - br label %for.body - -for.cond.cleanup: ; preds = %for.body - %arrayidx5 = getelementptr inbounds [64 x i32], [64 x i32] addrspace(5)* %arr, i32 0, i32 %x - %tmp15 = load i32, i32 addrspace(5)* %arrayidx5, align 4 - %arrayidx7 = getelementptr inbounds i32, i32 addrspace(1)* %a, i32 %tmp1 - store i32 %tmp15, i32 addrspace(1)* %arrayidx7, align 4 - ret void - -for.body: ; preds = %for.body, %entry - %i.015 = phi i32 [ 0, %entry ], [ %inc, %for.body ] - %idxprom = sext i32 %i.015 to i64 - %arrayidx = getelementptr inbounds i32, i32 addrspace(1)* %a, i64 %idxprom - %tmp16 = load i32, i32 addrspace(1)* %arrayidx, align 4 - %add = add nsw i32 %i.015, %tmp1 - %rem = srem i32 %add, 64 - %arrayidx3 = getelementptr inbounds [64 x i32], [64 x i32] addrspace(5)* %arr, i32 0, i32 %rem - store i32 %tmp16, i32 addrspace(5)* %arrayidx3, align 4 - %inc = add nuw nsw i32 %i.015, 1 - %exitcond = icmp eq i32 %inc, 100 - br i1 %exitcond, label %for.cond.cleanup, label %for.body -} - -; Check that we unroll inner loop but not outer -; CHECK-LABEL: @invariant_ind -; CHECK: %[[exitcond:[^ ]+]] = icmp eq i32 %{{.*}}, 32 -; CHECK: br i1 %[[exitcond]] -; CHECK-NOT: icmp eq i32 %{{.*}}, 100 - -define amdgpu_kernel void @invariant_ind(i32 addrspace(1)* nocapture %a, i32 %x) { -entry: - %arr = alloca [64 x i32], align 4, addrspace(5) - %tmp1 = tail call i32 @llvm.amdgcn.workitem.id.x() #1 - br label %for.cond2.preheader - -for.cond2.preheader: ; preds = %for.cond.cleanup5, %entry - %i.026 = phi i32 [ 0, %entry ], [ %inc10, %for.cond.cleanup5 ] - %idxprom = sext i32 %i.026 to i64 - %arrayidx = getelementptr inbounds i32, i32 addrspace(1)* %a, i64 %idxprom - %tmp15 = load i32, i32 addrspace(1)* %arrayidx, align 4 - br label %for.body6 - -for.cond.cleanup: ; preds = %for.cond.cleanup5 - %arrayidx13 = getelementptr inbounds [64 x i32], [64 x i32] addrspace(5)* %arr, i32 0, i32 %x - %tmp16 = load i32, i32 addrspace(5)* %arrayidx13, align 4 - %arrayidx15 = getelementptr inbounds i32, i32 addrspace(1)* %a, i32 %tmp1 - store i32 %tmp16, i32 addrspace(1)* %arrayidx15, align 4 - ret void - -for.cond.cleanup5: ; preds = %for.body6 - %inc10 = add nuw nsw i32 %i.026, 1 - %exitcond27 = icmp eq i32 %inc10, 32 - br i1 %exitcond27, label %for.cond.cleanup, label %for.cond2.preheader - -for.body6: ; preds = %for.body6, %for.cond2.preheader - %j.025 = phi i32 [ 0, %for.cond2.preheader ], [ %inc, %for.body6 ] - %add = add nsw i32 %j.025, %tmp1 - %rem = srem i32 %add, 64 - %arrayidx8 = getelementptr inbounds [64 x i32], [64 x i32] addrspace(5)* %arr, i32 0, i32 %rem - store i32 %tmp15, i32 addrspace(5)* %arrayidx8, align 4 - %inc = add nuw nsw i32 %j.025, 1 - %exitcond = icmp eq i32 %inc, 100 - br i1 %exitcond, label %for.cond.cleanup5, label %for.body6 -} - -; Check we do not enforce unroll if alloca is too big -; CHECK-LABEL: @too_big -; CHECK: for.body: -; CHECK: icmp eq i32 %{{.*}}, 100 -; CHECK: br - -define amdgpu_kernel void @too_big(i32 addrspace(1)* nocapture %a, i32 %x) { -entry: - %arr = alloca [256 x i32], align 4, addrspace(5) - %tmp1 = tail call i32 @llvm.amdgcn.workitem.id.x() #1 - br label %for.body - -for.cond.cleanup: ; preds = %for.body - %arrayidx5 = getelementptr inbounds [256 x i32], [256 x i32] addrspace(5)* %arr, i32 0, i32 %x - %tmp15 = load i32, i32 addrspace(5)* %arrayidx5, align 4 - %arrayidx7 = getelementptr inbounds i32, i32 addrspace(1)* %a, i32 %tmp1 - store i32 %tmp15, i32 addrspace(1)* %arrayidx7, align 4 - ret void - -for.body: ; preds = %for.body, %entry - %i.015 = phi i32 [ 0, %entry ], [ %inc, %for.body ] - %idxprom = sext i32 %i.015 to i64 - %arrayidx = getelementptr inbounds i32, i32 addrspace(1)* %a, i64 %idxprom - %tmp16 = load i32, i32 addrspace(1)* %arrayidx, align 4 - %add = add nsw i32 %i.015, %tmp1 - %rem = srem i32 %add, 64 - %arrayidx3 = getelementptr inbounds [256 x i32], [256 x i32] addrspace(5)* %arr, i32 0, i32 %rem - store i32 %tmp16, i32 addrspace(5)* %arrayidx3, align 4 - %inc = add nuw nsw i32 %i.015, 1 - %exitcond = icmp eq i32 %inc, 100 - br i1 %exitcond, label %for.cond.cleanup, label %for.body -} - -; Check we do not enforce unroll if alloca is dynamic -; CHECK-LABEL: @dynamic_size_alloca( -; CHECK: alloca i32, i32 %n -; CHECK: for.body: -; CHECK: icmp eq i32 %{{.*}}, 100 -; CHECK: br - -define amdgpu_kernel void @dynamic_size_alloca(i32 addrspace(1)* nocapture %a, i32 %n, i32 %x) { -entry: - %arr = alloca i32, i32 %n, align 4, addrspace(5) - %tmp1 = tail call i32 @llvm.amdgcn.workitem.id.x() #1 - br label %for.body - -for.cond.cleanup: ; preds = %for.body - %arrayidx5 = getelementptr inbounds i32, i32 addrspace(5)* %arr, i32 %x - %tmp15 = load i32, i32 addrspace(5)* %arrayidx5, align 4 - %arrayidx7 = getelementptr inbounds i32, i32 addrspace(1)* %a, i32 %tmp1 - store i32 %tmp15, i32 addrspace(1)* %arrayidx7, align 4 - ret void - -for.body: ; preds = %for.body, %entry - %i.015 = phi i32 [ 0, %entry ], [ %inc, %for.body ] - %idxprom = sext i32 %i.015 to i64 - %arrayidx = getelementptr inbounds i32, i32 addrspace(1)* %a, i64 %idxprom - %tmp16 = load i32, i32 addrspace(1)* %arrayidx, align 4 - %add = add nsw i32 %i.015, %tmp1 - %rem = srem i32 %add, 64 - %arrayidx3 = getelementptr inbounds i32, i32 addrspace(5)* %arr, i32 %rem - store i32 %tmp16, i32 addrspace(5)* %arrayidx3, align 4 - %inc = add nuw nsw i32 %i.015, 1 - %exitcond = icmp eq i32 %inc, 100 - br i1 %exitcond, label %for.cond.cleanup, label %for.body -} - -declare i8 addrspace(4)* @llvm.amdgcn.dispatch.ptr() #1 - -declare i32 @llvm.amdgcn.workitem.id.x() #1 - -declare i32 @llvm.amdgcn.workgroup.id.x() #1 - -declare i8 addrspace(4)* @llvm.amdgcn.implicitarg.ptr() #1 - -attributes #1 = { nounwind readnone } |

