diff options
Diffstat (limited to 'test/Transforms/SLPVectorizer/X86/in-tree-user.ll')
-rw-r--r-- | test/Transforms/SLPVectorizer/X86/in-tree-user.ll | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/test/Transforms/SLPVectorizer/X86/in-tree-user.ll b/test/Transforms/SLPVectorizer/X86/in-tree-user.ll index 3115232..194a0fb 100644 --- a/test/Transforms/SLPVectorizer/X86/in-tree-user.ll +++ b/test/Transforms/SLPVectorizer/X86/in-tree-user.ll @@ -5,9 +5,11 @@ target triple = "x86_64-apple-macosx10.7.0" @.str = private unnamed_addr constant [6 x i8] c"bingo\00", align 1 -; We can't vectorize when the roots are used inside the tree. +; Uses inside the tree must be scheduled after the corresponding tree bundle. ;CHECK-LABEL: @in_tree_user( -;CHECK-NOT: load <2 x double> +;CHECK: load <2 x double> +;CHECK: fadd <2 x double> +;CHECK: InTreeUser = fadd ;CHECK: ret define void @in_tree_user(double* nocapture %A, i32 %n) { entry: @@ -22,7 +24,7 @@ for.body: ; preds = %for.inc, %entry %mul1 = fmul double %conv, %1 %mul2 = fmul double %mul1, 7.000000e+00 %add = fadd double %mul2, 5.000000e+00 - %BadValue = fadd double %add, %add ; <------------------ In tree user. + %InTreeUser = fadd double %add, %add ; <------------------ In tree user. %2 = or i64 %0, 1 %arrayidx6 = getelementptr inbounds double* %A, i64 %2 %3 = load double* %arrayidx6, align 8 @@ -43,6 +45,7 @@ for.inc: ; preds = %for.body, %if.then br i1 %exitcond, label %for.end, label %for.body for.end: ; preds = %for.inc + store double %InTreeUser, double* %A, align 8 ; Avoid dead code elimination of the InTreeUser. ret void } |