1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt -passes=loop-vectorize \ 3; RUN: -force-tail-folding-style=data-with-evl \ 4; RUN: -prefer-predicate-over-epilogue=predicate-dont-vectorize \ 5; RUN: -mtriple=riscv64 -mattr=+v -S < %s | FileCheck %s 6 7; RUN: opt -passes=loop-vectorize \ 8; RUN: -force-tail-folding-style=none \ 9; RUN: -prefer-predicate-over-epilogue=predicate-dont-vectorize \ 10; RUN: -mtriple=riscv64 -mattr=+v -S < %s | FileCheck %s 11 12; No need to emit predicated vector code if the vector instructions with masking are not required. 13define i32 @no_masking() { 14; CHECK-LABEL: @no_masking( 15; CHECK-NEXT: entry: 16; CHECK-NEXT: br label [[BODY:%.*]] 17; CHECK: body: 18; CHECK-NEXT: [[P:%.*]] = phi i32 [ 1, [[ENTRY:%.*]] ], [ [[INC:%.*]], [[BODY]] ] 19; CHECK-NEXT: [[INC]] = add i32 [[P]], 1 20; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[INC]], 0 21; CHECK-NEXT: br i1 [[CMP]], label [[END:%.*]], label [[BODY]] 22; CHECK: end: 23; CHECK-NEXT: ret i32 0 24; 25entry: 26 br label %body 27 28body: 29 %p = phi i32 [ 1, %entry ], [ %inc, %body ] 30 %inc = add i32 %p, 1 31 %cmp = icmp eq i32 %inc, 0 32 br i1 %cmp, label %end, label %body 33 34end: 35 ret i32 0 36} 37