brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · f634940 Raw
95 lines · plain
1; REQUIRES: asserts2; RUN: opt < %s -passes='loop-vectorize' -debug-only=loop-vectorize --disable-output -S 2>&1 | FileCheck %s3 4target datalayout = "e-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512"5 6; CHECK: LV: Checking a loop in 'f1'7; CHECK: LV: Loop hints: force=? width=0 interleave=18define dso_local void @f1(i32 signext %n, ptr %A) {9entry:10  %cmp1 = icmp sgt i32 %n, 011  br i1 %cmp1, label %for.body.preheader, label %for.end12 13for.body.preheader:                               ; preds = %entry14  %wide.trip.count = zext i32 %n to i6415  br label %for.body16 17for.body:                                         ; preds = %for.body.preheader, %for.body18  %indvars.iv = phi i64 [ 0, %for.body.preheader ], [ %indvars.iv.next, %for.body ]19  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv20  %0 = trunc i64 %indvars.iv to i3221  store i32 %0, ptr %arrayidx, align 422  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 123  %exitcond = icmp ne i64 %indvars.iv.next, %wide.trip.count24  br i1 %exitcond, label %for.body, label %for.end.loopexit, !llvm.loop !125 26for.end.loopexit:                                 ; preds = %for.body27  br label %for.end28 29for.end:                                          ; preds = %for.end.loopexit, %entry30  ret void31}32 33; CHECK: LV: Checking a loop in 'f2'34; CHECK: LV: Loop hints: force=? width=0 interleave=435define dso_local void @f2(i32 signext %n, ptr %A) {36entry:37  %cmp1 = icmp sgt i32 %n, 038  br i1 %cmp1, label %for.body.preheader, label %for.end39 40for.body.preheader:                               ; preds = %entry41  %wide.trip.count = zext i32 %n to i6442  br label %for.body43 44for.body:                                         ; preds = %for.body.preheader, %for.body45  %indvars.iv = phi i64 [ 0, %for.body.preheader ], [ %indvars.iv.next, %for.body ]46  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv47  %0 = trunc i64 %indvars.iv to i3248  store i32 %0, ptr %arrayidx, align 449  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 150  %exitcond = icmp ne i64 %indvars.iv.next, %wide.trip.count51  br i1 %exitcond, label %for.body, label %for.end.loopexit, !llvm.loop !352 53for.end.loopexit:                                 ; preds = %for.body54  br label %for.end55 56for.end:                                          ; preds = %for.end.loopexit, %entry57  ret void58}59 60; CHECK: LV: Checking a loop in 'f3'61; CHECK: LV: Loop hints: force=? width=0 interleave=162define dso_local void @f3(i32 signext %n, ptr %A) {63entry:64  %cmp1 = icmp sgt i32 %n, 065  br i1 %cmp1, label %for.body.preheader, label %for.end66 67for.body.preheader:                               ; preds = %entry68  %wide.trip.count = zext i32 %n to i6469  br label %for.body70 71for.body:                                         ; preds = %for.body.preheader, %for.body72  %indvars.iv = phi i64 [ 0, %for.body.preheader ], [ %indvars.iv.next, %for.body ]73  %arrayidx = getelementptr inbounds i32, ptr %A, i64 %indvars.iv74  %0 = trunc i64 %indvars.iv to i3275  store i32 %0, ptr %arrayidx, align 476  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 177  %exitcond = icmp ne i64 %indvars.iv.next, %wide.trip.count78  br i1 %exitcond, label %for.body, label %for.end.loopexit, !llvm.loop !679 80for.end.loopexit:                                 ; preds = %for.body81  br label %for.end82 83for.end:                                          ; preds = %for.end.loopexit, %entry84  ret void85}86 87!1 = distinct !{!1, !2}88!2 = !{!"llvm.loop.unroll.disable"}89!3 = distinct !{!3, !4, !5}90!4 = !{!"llvm.loop.unroll.disable"}91!5 = !{!"llvm.loop.interleave.count", i32 4}92!6 = distinct !{!6, !7, !8}93!7 = !{!"llvm.loop.mustprogress"}94!8 = !{!"llvm.loop.unroll.count", i32 1}95