brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 8c804e5 Raw
69 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -S -mtriple=riscv64 -mattr=+zve32x -passes=loop-vectorize < %s | FileCheck %s3 4define void @small_trip_count_min_vlen_128(ptr nocapture %a) nounwind vscale_range(4,1024) {5; CHECK-LABEL: @small_trip_count_min_vlen_128(6; CHECK-NEXT:  entry:7; CHECK-NEXT:    br label [[LOOP1:%.*]]8; CHECK:       loop:9; CHECK-NEXT:    [[IV:%.*]] = phi i32 [ [[IV_NEXT:%.*]], [[LOOP1]] ], [ 0, [[ENTRY:%.*]] ]10; CHECK-NEXT:    [[GEP:%.*]] = getelementptr inbounds i32, ptr [[TMP1:%.*]], i32 [[IV]]11; CHECK-NEXT:    [[V:%.*]] = load i32, ptr [[GEP]], align 412; CHECK-NEXT:    [[ADD:%.*]] = add nsw i32 [[V]], 113; CHECK-NEXT:    store i32 [[ADD]], ptr [[GEP]], align 414; CHECK-NEXT:    [[IV_NEXT]] = add i32 [[IV]], 115; CHECK-NEXT:    [[COND:%.*]] = icmp eq i32 [[IV]], 316; CHECK-NEXT:    br i1 [[COND]], label [[EXIT:%.*]], label [[LOOP1]]17; CHECK:       exit:18; CHECK-NEXT:    ret void19;20entry:21  br label %loop22 23loop:24  %iv = phi i32 [ %iv.next, %loop ], [ 0, %entry ]25  %gep = getelementptr inbounds i32, ptr %a, i32 %iv26  %v = load i32, ptr %gep, align 427  %add = add nsw i32 %v, 128  store i32 %add, ptr %gep, align 429  %iv.next = add i32 %iv, 130  %cond = icmp eq i32 %iv, 331  br i1 %cond, label %exit, label %loop32 33exit:34  ret void35}36 37define void @small_trip_count_min_vlen_32(ptr nocapture %a) nounwind vscale_range(1,1024) {38; CHECK-LABEL: @small_trip_count_min_vlen_32(39; CHECK-NEXT:  entry:40; CHECK-NEXT:    br label [[LOOP1:%.*]]41; CHECK:       loop:42; CHECK-NEXT:    [[IV:%.*]] = phi i32 [ [[IV_NEXT:%.*]], [[LOOP1]] ], [ 0, [[ENTRY:%.*]] ]43; CHECK-NEXT:    [[GEP:%.*]] = getelementptr inbounds i32, ptr [[TMP1:%.*]], i32 [[IV]]44; CHECK-NEXT:    [[V:%.*]] = load i32, ptr [[GEP]], align 445; CHECK-NEXT:    [[ADD:%.*]] = add nsw i32 [[V]], 146; CHECK-NEXT:    store i32 [[ADD]], ptr [[GEP]], align 447; CHECK-NEXT:    [[IV_NEXT]] = add i32 [[IV]], 148; CHECK-NEXT:    [[COND:%.*]] = icmp eq i32 [[IV]], 349; CHECK-NEXT:    br i1 [[COND]], label [[EXIT:%.*]], label [[LOOP1]]50; CHECK:       exit:51; CHECK-NEXT:    ret void52;53entry:54  br label %loop55 56loop:57  %iv = phi i32 [ %iv.next, %loop ], [ 0, %entry ]58  %gep = getelementptr inbounds i32, ptr %a, i32 %iv59  %v = load i32, ptr %gep, align 460  %add = add nsw i32 %v, 161  store i32 %add, ptr %gep, align 462  %iv.next = add i32 %iv, 163  %cond = icmp eq i32 %iv, 364  br i1 %cond, label %exit, label %loop65 66exit:67  ret void68}69