[ARM] Better OR's for MVE compares
[llvm-core.git] / test / Transforms / LoopVectorize / fcmp-vectorize.ll
blobae7ce70057fd6f144f26ef226434fb926fe15c75
1 ; RUN: opt -loop-vectorize -force-vector-width=4 -force-vector-interleave=1 -S %s | FileCheck %s
3 ; Avoid crashing while trying to vectorize fcmp that can be folded to vector of
4 ; i1 true.
5 define void @test1() {
6 ; CHECK-LABEL: test1(
7 ; CHECK-LABEL: vector.body:
8 ; CHECK-NEXT:    %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
9 ; CHECK-NEXT:    %broadcast.splatinsert = insertelement <4 x i32> undef, i32 %index, i32 0
10 ; CHECK:         %induction = add <4 x i32> %broadcast.splat, <i32 0, i32 1, i32 2, i32 3>
11 ; CHECK:         %index.next = add i32 %index, 4
13 entry:
14   br label %loop
16 loop:                                              ; preds = %loop, %entry
17   %iv = phi i32 [ 0, %entry ], [ %ivnext, %loop ]
18   %fcmp = fcmp uno float 0.000000e+00, 0.000000e+00
19   %ivnext = add nsw i32 %iv, 1
20   %cnd = icmp sgt i32 %iv, 142
21   br i1 %cnd, label %exit, label %loop
23 exit:                                              ; preds = %loop
24   ret void