diff options
Diffstat (limited to 'test/Transforms/LoopVectorize/vect.stats.ll')
-rw-r--r-- | test/Transforms/LoopVectorize/vect.stats.ll | 58 |
1 files changed, 26 insertions, 32 deletions
diff --git a/test/Transforms/LoopVectorize/vect.stats.ll b/test/Transforms/LoopVectorize/vect.stats.ll index 556da45..c5b6e64 100644 --- a/test/Transforms/LoopVectorize/vect.stats.ll +++ b/test/Transforms/LoopVectorize/vect.stats.ll @@ -13,53 +13,47 @@ target triple = "x86_64-unknown-linux-gnu" define void @vectorized(float* nocapture %a, i64 %size) { entry: - %cmp1 = icmp sgt i64 %size, 0 - br i1 %cmp1, label %for.header, label %for.end - -for.header: - %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %entry ] - %cmp2 = icmp sgt i64 %indvars.iv, %size - br i1 %cmp2, label %for.end, label %for.body - -for.body: - - %arrayidx = getelementptr inbounds float* %a, i64 %indvars.iv + %cmp1 = icmp sle i64 %size, 0 + %cmp21 = icmp sgt i64 0, %size + %or.cond = or i1 %cmp1, %cmp21 + br i1 %or.cond, label %for.end, label %for.body + +for.body: ; preds = %entry, %for.body + %indvars.iv2 = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %entry ] + %arrayidx = getelementptr inbounds float* %a, i64 %indvars.iv2 %0 = load float* %arrayidx, align 4 %mul = fmul float %0, %0 store float %mul, float* %arrayidx, align 4 + %indvars.iv.next = add nuw nsw i64 %indvars.iv2, 1 + %cmp2 = icmp sgt i64 %indvars.iv.next, %size + br i1 %cmp2, label %for.end, label %for.body - %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - br label %for.header - -for.end: +for.end: ; preds = %entry, %for.body ret void } define void @not_vectorized(float* nocapture %a, i64 %size) { entry: - %cmp1 = icmp sgt i64 %size, 0 - br i1 %cmp1, label %for.header, label %for.end - -for.header: - %indvars.iv = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %entry ] - %cmp2 = icmp sgt i64 %indvars.iv, %size - br i1 %cmp2, label %for.end, label %for.body - -for.body: - - %0 = add nsw i64 %indvars.iv, -5 + %cmp1 = icmp sle i64 %size, 0 + %cmp21 = icmp sgt i64 0, %size + %or.cond = or i1 %cmp1, %cmp21 + br i1 %or.cond, label %for.end, label %for.body + +for.body: ; preds = %entry, %for.body + %indvars.iv2 = phi i64 [ %indvars.iv.next, %for.body ], [ 0, %entry ] + %0 = add nsw i64 %indvars.iv2, -5 %arrayidx = getelementptr inbounds float* %a, i64 %0 %1 = load float* %arrayidx, align 4 - %2 = add nsw i64 %indvars.iv, 2 + %2 = add nsw i64 %indvars.iv2, 2 %arrayidx2 = getelementptr inbounds float* %a, i64 %2 %3 = load float* %arrayidx2, align 4 %mul = fmul float %1, %3 - %arrayidx4 = getelementptr inbounds float* %a, i64 %indvars.iv + %arrayidx4 = getelementptr inbounds float* %a, i64 %indvars.iv2 store float %mul, float* %arrayidx4, align 4 + %indvars.iv.next = add nuw nsw i64 %indvars.iv2, 1 + %cmp2 = icmp sgt i64 %indvars.iv.next, %size + br i1 %cmp2, label %for.end, label %for.body - %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - br label %for.header - -for.end: +for.end: ; preds = %entry, %for.body ret void } |