diff options
author | Warren Ristow <warren.ristow@sony.com> | 2018-09-21 23:03:50 +0000 |
---|---|---|
committer | Warren Ristow <warren.ristow@sony.com> | 2018-09-21 23:03:50 +0000 |
commit | 4f27730eaf600aeeb855964de09b90ff168ae247 (patch) | |
tree | edecdba46da7a274b009db63fb98439d8b3fee47 /llvm/test/Transforms/LoopVectorize/pr37515.ll | |
parent | d7e83e73627c84f19b1dc3c2b5859035367356ae (diff) | |
download | bcm5719-llvm-4f27730eaf600aeeb855964de09b90ff168ae247.tar.gz bcm5719-llvm-4f27730eaf600aeeb855964de09b90ff168ae247.zip |
[Loop Vectorizer] Abandon vectorization when no integer IV found
Support for vectorizing loops with secondary floating-point induction
variables was added in r276554. A primary integer IV is still required
for vectorization to be done. If an FP IV was found, but no integer IV
was found at all (primary or secondary), the attempt to vectorize still
went forward, causing a compiler-crash. This change abandons that
attempt when no integer IV is found. (Vectorizing FP-only cases like
this, rather than bailing out, is discussed as possible future work
in D52327.)
See PR38800 for more information.
Differential Revision: https://reviews.llvm.org/D52327
llvm-svn: 342786
Diffstat (limited to 'llvm/test/Transforms/LoopVectorize/pr37515.ll')
-rw-r--r-- | llvm/test/Transforms/LoopVectorize/pr37515.ll | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/test/Transforms/LoopVectorize/pr37515.ll b/llvm/test/Transforms/LoopVectorize/pr37515.ll new file mode 100644 index 00000000000..b09e11fe15e --- /dev/null +++ b/llvm/test/Transforms/LoopVectorize/pr37515.ll @@ -0,0 +1,20 @@ +; RUN: opt -passes='loop-vectorize' -S -pass-remarks-missed=loop-vectorize < %s 2>&1 | FileCheck %s +; +; FP primary induction is not supported in LV. Make sure Legal bails out. +; +; CHECK: loop not vectorized + +define void @PR37515() { +entry: + br label %loop + +loop: + %p = phi float [ 19.0, %entry ], [ %a, %loop ] + %a = fadd fast float %p, -1.0 + %m = fmul fast float %a, %a + %c = fcmp fast ugt float %a, 2.0 + br i1 %c, label %loop, label %exit + +exit: + unreachable +} |