X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FTransforms%2FLoopVectorize%2Freverse_induction.ll;h=88dd2e4d66ca5872936d0ff8c63dfd33b56d6127;hb=f30ebaced7a284209032f59be6c15b533c4c8c67;hp=9e8c1b116d3a7c7170afd90f137df4836f306a4c;hpb=9b5d70f07630f99f1ec5589aeaba96c6d8ab0aee;p=oota-llvm.git diff --git a/test/Transforms/LoopVectorize/reverse_induction.ll b/test/Transforms/LoopVectorize/reverse_induction.ll index 9e8c1b116d3..88dd2e4d66c 100644 --- a/test/Transforms/LoopVectorize/reverse_induction.ll +++ b/test/Transforms/LoopVectorize/reverse_induction.ll @@ -1,11 +1,11 @@ -; RUN: opt < %s -loop-vectorize -force-vector-unroll=2 -force-vector-width=4 -S | FileCheck %s +; RUN: opt < %s -loop-vectorize -force-vector-interleave=2 -force-vector-width=4 -S | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; Make sure consecutive vector generates correct negative indices. ; PR15882 -; CHECK: reverse_induction_i64 +; CHECK-LABEL: @reverse_induction_i64( ; CHECK: add <4 x i64> %[[SPLAT:.*]], ; CHECK: add <4 x i64> %[[SPLAT]], @@ -18,8 +18,8 @@ for.body: %i.06 = phi i32 [ 0, %entry ], [ %inc4, %for.body ] %redux5 = phi i32 [ 0, %entry ], [ %inc.redux, %for.body ] %add.i = add i64 %add.i7, -1 - %kind_.i = getelementptr inbounds i32* %ptr, i64 %add.i - %tmp.i1 = load i32* %kind_.i, align 4 + %kind_.i = getelementptr inbounds i32, i32* %ptr, i64 %add.i + %tmp.i1 = load i32, i32* %kind_.i, align 4 %inc.redux = add i32 %tmp.i1, %redux5 %inc4 = add i32 %i.06, 1 %exitcond = icmp ne i32 %inc4, 1024 @@ -29,7 +29,7 @@ loopend: ret i32 %inc.redux } -; CHECK: reverse_induction_i128 +; CHECK-LABEL: @reverse_induction_i128( ; CHECK: add <4 x i128> %[[SPLAT:.*]], ; CHECK: add <4 x i128> %[[SPLAT]], define i32 @reverse_induction_i128(i128 %startval, i32 * %ptr) { @@ -41,8 +41,8 @@ for.body: %i.06 = phi i32 [ 0, %entry ], [ %inc4, %for.body ] %redux5 = phi i32 [ 0, %entry ], [ %inc.redux, %for.body ] %add.i = add i128 %add.i7, -1 - %kind_.i = getelementptr inbounds i32* %ptr, i128 %add.i - %tmp.i1 = load i32* %kind_.i, align 4 + %kind_.i = getelementptr inbounds i32, i32* %ptr, i128 %add.i + %tmp.i1 = load i32, i32* %kind_.i, align 4 %inc.redux = add i32 %tmp.i1, %redux5 %inc4 = add i32 %i.06, 1 %exitcond = icmp ne i32 %inc4, 1024 @@ -52,7 +52,7 @@ loopend: ret i32 %inc.redux } -; CHECK: reverse_induction_i16 +; CHECK-LABEL: @reverse_induction_i16( ; CHECK: add <4 x i16> %[[SPLAT:.*]], ; CHECK: add <4 x i16> %[[SPLAT]], @@ -65,8 +65,8 @@ for.body: %i.06 = phi i32 [ 0, %entry ], [ %inc4, %for.body ] %redux5 = phi i32 [ 0, %entry ], [ %inc.redux, %for.body ] %add.i = add i16 %add.i7, -1 - %kind_.i = getelementptr inbounds i32* %ptr, i16 %add.i - %tmp.i1 = load i32* %kind_.i, align 4 + %kind_.i = getelementptr inbounds i32, i32* %ptr, i16 %add.i + %tmp.i1 = load i32, i32* %kind_.i, align 4 %inc.redux = add i32 %tmp.i1, %redux5 %inc4 = add i32 %i.06, 1 %exitcond = icmp ne i32 %inc4, 1024 @@ -93,11 +93,10 @@ loopend: ; } ; } -; CHECK: reverse_forward_induction_i64_i8 +; CHECK-LABEL: @reverse_forward_induction_i64_i8( ; CHECK: vector.body ; CHECK: %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ] -; CHECK: %normalized.idx = sub i64 %index, 0 -; CHECK: %reverse.idx = sub i64 1023, %normalized.idx +; CHECK: %offset.idx = sub i64 1023, %index ; CHECK: trunc i64 %index to i8 define void @reverse_forward_induction_i64_i8() { @@ -109,7 +108,7 @@ while.body: %forward_induction.05 = phi i8 [ 0, %entry ], [ %inc, %while.body ] %inc = add i8 %forward_induction.05, 1 %conv = zext i8 %inc to i32 - %arrayidx = getelementptr inbounds [1024 x i32]* @a, i64 0, i64 %indvars.iv + %arrayidx = getelementptr inbounds [1024 x i32], [1024 x i32]* @a, i64 0, i64 %indvars.iv store i32 %conv, i32* %arrayidx, align 4 %indvars.iv.next = add i64 %indvars.iv, -1 %0 = trunc i64 %indvars.iv to i32 @@ -120,12 +119,10 @@ while.end: ret void } -; CHECK: reverse_forward_induction_i64_i8_signed +; CHECK-LABEL: @reverse_forward_induction_i64_i8_signed( ; CHECK: vector.body: -; CHECK: %index = phi i64 [ 129, %vector.ph ], [ %index.next, %vector.body ] -; CHECK: %normalized.idx = sub i64 %index, 129 -; CHECK: %reverse.idx = sub i64 1023, %normalized.idx -; CHECK: trunc i64 %index to i8 +; CHECK: %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ] +; CHECK: %offset.idx = sub i64 1023, %index define void @reverse_forward_induction_i64_i8_signed() { entry: @@ -136,7 +133,7 @@ while.body: %forward_induction.05 = phi i8 [ -127, %entry ], [ %inc, %while.body ] %inc = add i8 %forward_induction.05, 1 %conv = sext i8 %inc to i32 - %arrayidx = getelementptr inbounds [1024 x i32]* @a, i64 0, i64 %indvars.iv + %arrayidx = getelementptr inbounds [1024 x i32], [1024 x i32]* @a, i64 0, i64 %indvars.iv store i32 %conv, i32* %arrayidx, align 4 %indvars.iv.next = add i64 %indvars.iv, -1 %0 = trunc i64 %indvars.iv to i32