summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/LoopVectorize
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Transforms/LoopVectorize')
-rw-r--r--llvm/test/Transforms/LoopVectorize/AArch64/backedge-overflow.ll166
-rw-r--r--llvm/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll3
2 files changed, 1 insertions, 168 deletions
diff --git a/llvm/test/Transforms/LoopVectorize/AArch64/backedge-overflow.ll b/llvm/test/Transforms/LoopVectorize/AArch64/backedge-overflow.ll
deleted file mode 100644
index aba47f6c628..00000000000
--- a/llvm/test/Transforms/LoopVectorize/AArch64/backedge-overflow.ll
+++ /dev/null
@@ -1,166 +0,0 @@
-; RUN: opt -mtriple=aarch64--linux-gnueabi -loop-vectorize -force-vector-width=4 -force-vector-interleave=1 < %s -S | FileCheck %s
-
-; The following tests contain loops for which SCEV cannot determine the backedge
-; taken count. This is because the backedge taken condition is produced by an
-; icmp with one of the sides being a loop varying non-AddRec expression.
-; However, there is a possibility to normalize this to an AddRec expression
-; using SCEV predicates. This allows us to compute a 'guarded' backedge count.
-; The Loop Vectorizer is able to version to loop in order to use this guarded
-; backedge count and vectorize more loops.
-
-
-; CHECK-LABEL: test_sge
-; CHECK-LABEL: vector.scevcheck
-; CHECK-LABEL: vector.body
-define void @test_sge(i32* noalias %A,
- i32* noalias %B,
- i32* noalias %C, i32 %N) {
-entry:
- %cmp13 = icmp eq i32 %N, 0
- br i1 %cmp13, label %for.end, label %for.body.preheader
-
-for.body.preheader:
- br label %for.body
-
-for.body:
- %indvars.iv = phi i16 [ %indvars.next, %for.body ], [ 0, %for.body.preheader ]
- %indvars.next = add i16 %indvars.iv, 1
- %indvars.ext = zext i16 %indvars.iv to i32
-
- %arrayidx = getelementptr inbounds i32, i32* %B, i32 %indvars.ext
- %0 = load i32, i32* %arrayidx, align 4
- %arrayidx3 = getelementptr inbounds i32, i32* %C, i32 %indvars.ext
- %1 = load i32, i32* %arrayidx3, align 4
-
- %mul4 = mul i32 %1, %0
-
- %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %indvars.ext
- store i32 %mul4, i32* %arrayidx7, align 4
-
- %exitcond = icmp sge i32 %indvars.ext, %N
- br i1 %exitcond, label %for.end.loopexit, label %for.body
-
-for.end.loopexit:
- br label %for.end
-
-for.end:
- ret void
-}
-
-; CHECK-LABEL: test_uge
-; CHECK-LABEL: vector.scevcheck
-; CHECK-LABEL: vector.body
-define void @test_uge(i32* noalias %A,
- i32* noalias %B,
- i32* noalias %C, i32 %N, i32 %Offset) {
-entry:
- %cmp13 = icmp eq i32 %N, 0
- br i1 %cmp13, label %for.end, label %for.body.preheader
-
-for.body.preheader:
- br label %for.body
-
-for.body:
- %indvars.iv = phi i16 [ %indvars.next, %for.body ], [ 0, %for.body.preheader ]
- %indvars.next = add i16 %indvars.iv, 1
-
- %indvars.ext = sext i16 %indvars.iv to i32
- %indvars.access = add i32 %Offset, %indvars.ext
-
- %arrayidx = getelementptr inbounds i32, i32* %B, i32 %indvars.access
- %0 = load i32, i32* %arrayidx, align 4
- %arrayidx3 = getelementptr inbounds i32, i32* %C, i32 %indvars.access
- %1 = load i32, i32* %arrayidx3, align 4
-
- %mul4 = add i32 %1, %0
-
- %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %indvars.access
- store i32 %mul4, i32* %arrayidx7, align 4
-
- %exitcond = icmp uge i32 %indvars.ext, %N
- br i1 %exitcond, label %for.end.loopexit, label %for.body
-
-for.end.loopexit:
- br label %for.end
-
-for.end:
- ret void
-}
-
-; CHECK-LABEL: test_ule
-; CHECK-LABEL: vector.scevcheck
-; CHECK-LABEL: vector.body
-define void @test_ule(i32* noalias %A,
- i32* noalias %B,
- i32* noalias %C, i32 %N,
- i16 %M) {
-entry:
- %cmp13 = icmp eq i32 %N, 0
- br i1 %cmp13, label %for.end, label %for.body.preheader
-
-for.body.preheader:
- br label %for.body
-
-for.body:
- %indvars.iv = phi i16 [ %indvars.next, %for.body ], [ %M, %for.body.preheader ]
- %indvars.next = sub i16 %indvars.iv, 1
- %indvars.ext = zext i16 %indvars.iv to i32
-
- %arrayidx = getelementptr inbounds i32, i32* %B, i32 %indvars.ext
- %0 = load i32, i32* %arrayidx, align 4
- %arrayidx3 = getelementptr inbounds i32, i32* %C, i32 %indvars.ext
- %1 = load i32, i32* %arrayidx3, align 4
-
- %mul4 = mul i32 %1, %0
-
- %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %indvars.ext
- store i32 %mul4, i32* %arrayidx7, align 4
-
- %exitcond = icmp ule i32 %indvars.ext, %N
- br i1 %exitcond, label %for.end.loopexit, label %for.body
-
-for.end.loopexit:
- br label %for.end
-
-for.end:
- ret void
-}
-
-; CHECK-LABEL: test_sle
-; CHECK-LABEL: vector.scevcheck
-; CHECK-LABEL: vector.body
-define void @test_sle(i32* noalias %A,
- i32* noalias %B,
- i32* noalias %C, i32 %N,
- i16 %M) {
-entry:
- %cmp13 = icmp eq i32 %N, 0
- br i1 %cmp13, label %for.end, label %for.body.preheader
-
-for.body.preheader:
- br label %for.body
-
-for.body:
- %indvars.iv = phi i16 [ %indvars.next, %for.body ], [ %M, %for.body.preheader ]
- %indvars.next = sub i16 %indvars.iv, 1
- %indvars.ext = sext i16 %indvars.iv to i32
-
- %arrayidx = getelementptr inbounds i32, i32* %B, i32 %indvars.ext
- %0 = load i32, i32* %arrayidx, align 4
- %arrayidx3 = getelementptr inbounds i32, i32* %C, i32 %indvars.ext
- %1 = load i32, i32* %arrayidx3, align 4
-
- %mul4 = mul i32 %1, %0
-
- %arrayidx7 = getelementptr inbounds i32, i32* %A, i32 %indvars.ext
- store i32 %mul4, i32* %arrayidx7, align 4
-
- %exitcond = icmp sle i32 %indvars.ext, %N
- br i1 %exitcond, label %for.end.loopexit, label %for.body
-
-for.end.loopexit:
- br label %for.end
-
-for.end:
- ret void
-}
diff --git a/llvm/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll b/llvm/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll
index 740ff3682be..42ec3b3ffda 100644
--- a/llvm/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll
+++ b/llvm/test/Transforms/LoopVectorize/X86/vectorization-remarks-missed.ll
@@ -54,9 +54,8 @@ for.body: ; preds = %entry, %for.body
%indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %entry ]
%arrayidx = getelementptr inbounds i32, i32* %A, i64 %indvars.iv, !dbg !16
%0 = trunc i64 %indvars.iv to i32, !dbg !16
- %ld = load i32, i32* %arrayidx, align 4
store i32 %0, i32* %arrayidx, align 4, !dbg !16, !tbaa !18
- %cmp3 = icmp sle i32 %ld, %Length, !dbg !22
+ %cmp3 = icmp sle i32 %0, %Length, !dbg !22
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1, !dbg !12
%1 = trunc i64 %indvars.iv.next to i32
%cmp = icmp slt i32 %1, %Length, !dbg !12
OpenPOWER on IntegriCloud