summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/LoopUnroll/AMDGPU
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2019-04-17 02:12:23 +0000
committerEric Christopher <echristo@gmail.com>2019-04-17 02:12:23 +0000
commita86343512845c9c1fdbac865fea88aa5fce7142a (patch)
tree666fc6353de19ad8b00e56b67edd33f24104e4a7 /llvm/test/Transforms/LoopUnroll/AMDGPU
parent7f8ca6e3679b3af951cb7a4b1377edfaa3244b93 (diff)
downloadbcm5719-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')
-rw-r--r--llvm/test/Transforms/LoopUnroll/AMDGPU/lit.local.cfg3
-rw-r--r--llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-barrier.ll33
-rw-r--r--llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-cost-call.ll77
-rw-r--r--llvm/test/Transforms/LoopUnroll/AMDGPU/unroll-for-private.ll154
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 }
OpenPOWER on IntegriCloud