1a9486a40SCraig Topper; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2be51fa45SRoman Lebedev; RUN: opt -S -mtriple=riscv64 -mattr=+v -passes=loop-vectorize -scalable-vectorization=off -riscv-v-vector-bits-min=0 < %s | FileCheck %s 3a9486a40SCraig Topper 4a9486a40SCraig Topper; Make sure we don't unroll scalar loops in the loop vectorizer. 5a9486a40SCraig Topper; 6*7d757725SNikita Popovdefine void @small_loop(ptr nocapture %inArray, i32 %size) nounwind { 7a9486a40SCraig Topper; CHECK-LABEL: @small_loop( 8a9486a40SCraig Topper; CHECK-NEXT: entry: 9a9486a40SCraig Topper; CHECK-NEXT: [[TMP0:%.*]] = icmp sgt i32 [[SIZE:%.*]], 0 10a9486a40SCraig Topper; CHECK-NEXT: br i1 [[TMP0]], label [[LOOP_PREHEADER:%.*]], label [[EXIT:%.*]] 11a9486a40SCraig Topper; CHECK: loop.preheader: 12a9486a40SCraig Topper; CHECK-NEXT: br label [[LOOP:%.*]] 13a9486a40SCraig Topper; CHECK: loop: 14a9486a40SCraig Topper; CHECK-NEXT: [[IV:%.*]] = phi i32 [ [[IV1:%.*]], [[LOOP]] ], [ 0, [[LOOP_PREHEADER]] ] 15*7d757725SNikita Popov; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds i32, ptr [[INARRAY:%.*]], i32 [[IV]] 16*7d757725SNikita Popov; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[TMP1]], align 4 17a9486a40SCraig Topper; CHECK-NEXT: [[TMP3:%.*]] = add nsw i32 [[TMP2]], 6 18*7d757725SNikita Popov; CHECK-NEXT: store i32 [[TMP3]], ptr [[TMP1]], align 4 19a9486a40SCraig Topper; CHECK-NEXT: [[IV1]] = add i32 [[IV]], 1 20a9486a40SCraig Topper; CHECK-NEXT: [[COND:%.*]] = icmp eq i32 [[IV1]], [[SIZE]] 21a9486a40SCraig Topper; CHECK-NEXT: br i1 [[COND]], label [[EXIT_LOOPEXIT:%.*]], label [[LOOP]] 22a9486a40SCraig Topper; CHECK: exit.loopexit: 23a9486a40SCraig Topper; CHECK-NEXT: br label [[EXIT]] 24a9486a40SCraig Topper; CHECK: exit: 25a9486a40SCraig Topper; CHECK-NEXT: ret void 26a9486a40SCraig Topper; 27a9486a40SCraig Topperentry: 28a9486a40SCraig Topper %0 = icmp sgt i32 %size, 0 29a9486a40SCraig Topper br i1 %0, label %loop, label %exit 30a9486a40SCraig Topper 31a9486a40SCraig Topperloop: ; preds = %entry, %loop 32a9486a40SCraig Topper %iv = phi i32 [ %iv1, %loop ], [ 0, %entry ] 33*7d757725SNikita Popov %1 = getelementptr inbounds i32, ptr %inArray, i32 %iv 34*7d757725SNikita Popov %2 = load i32, ptr %1, align 4 35a9486a40SCraig Topper %3 = add nsw i32 %2, 6 36*7d757725SNikita Popov store i32 %3, ptr %1, align 4 37a9486a40SCraig Topper %iv1 = add i32 %iv, 1 38a9486a40SCraig Topper %cond = icmp eq i32 %iv1, %size 39a9486a40SCraig Topper br i1 %cond, label %exit, label %loop 40a9486a40SCraig Topper 41a9486a40SCraig Topperexit: ; preds = %loop, %entry 42a9486a40SCraig Topper ret void 43a9486a40SCraig Topper} 44