Changeset View
Changeset View
Standalone View
Standalone View
test/Transforms/LoopVectorize/X86/metadata-enable.ll
Show First 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | |||||
for.body: ; preds = %for.body, %entry | for.body: ; preds = %for.body, %entry | ||||
%indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ] | %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ] | ||||
%arrayidx = getelementptr inbounds i32, i32* %b, i64 %indvars.iv | %arrayidx = getelementptr inbounds i32, i32* %b, i64 %indvars.iv | ||||
%0 = load i32, i32* %arrayidx, align 4 | %0 = load i32, i32* %arrayidx, align 4 | ||||
%add = add nsw i32 %0, %N | %add = add nsw i32 %0, %N | ||||
%arrayidx2 = getelementptr inbounds i32, i32* %a, i64 %indvars.iv | %arrayidx2 = getelementptr inbounds i32, i32* %a, i64 %indvars.iv | ||||
store i32 %add, i32* %arrayidx2, align 4 | store i32 %add, i32* %arrayidx2, align 4 | ||||
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 | %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 | ||||
%exitcond = icmp eq i64 %indvars.iv.next, 32 | %exitcond = icmp eq i64 %indvars.iv.next, 64 | ||||
jingyue: After the change to `getGEPCost`, the loop size is reduced. Bump the trip count so that the… | |||||
br i1 %exitcond, label %for.end, label %for.body, !llvm.loop !0 | br i1 %exitcond, label %for.end, label %for.body, !llvm.loop !0 | ||||
for.end: ; preds = %for.body | for.end: ; preds = %for.body | ||||
%1 = load i32, i32* %a, align 4 | %1 = load i32, i32* %a, align 4 | ||||
ret i32 %1 | ret i32 %1 | ||||
} | } | ||||
; O1-LABEL: @nopragma( | ; O1-LABEL: @nopragma( | ||||
Show All 34 Lines | |||||
for.body: ; preds = %for.body, %entry | for.body: ; preds = %for.body, %entry | ||||
%indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ] | %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ] | ||||
%arrayidx = getelementptr inbounds i32, i32* %b, i64 %indvars.iv | %arrayidx = getelementptr inbounds i32, i32* %b, i64 %indvars.iv | ||||
%0 = load i32, i32* %arrayidx, align 4 | %0 = load i32, i32* %arrayidx, align 4 | ||||
%add = add nsw i32 %0, %N | %add = add nsw i32 %0, %N | ||||
%arrayidx2 = getelementptr inbounds i32, i32* %a, i64 %indvars.iv | %arrayidx2 = getelementptr inbounds i32, i32* %a, i64 %indvars.iv | ||||
store i32 %add, i32* %arrayidx2, align 4 | store i32 %add, i32* %arrayidx2, align 4 | ||||
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 | %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 | ||||
%exitcond = icmp eq i64 %indvars.iv.next, 32 | %exitcond = icmp eq i64 %indvars.iv.next, 64 | ||||
br i1 %exitcond, label %for.end, label %for.body | br i1 %exitcond, label %for.end, label %for.body | ||||
for.end: ; preds = %for.body | for.end: ; preds = %for.body | ||||
%1 = load i32, i32* %a, align 4 | %1 = load i32, i32* %a, align 4 | ||||
ret i32 %1 | ret i32 %1 | ||||
} | } | ||||
; O1-LABEL: @disabled( | ; O1-LABEL: @disabled( | ||||
Show All 34 Lines | |||||
for.body: ; preds = %for.body, %entry | for.body: ; preds = %for.body, %entry | ||||
%indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ] | %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ] | ||||
%arrayidx = getelementptr inbounds i32, i32* %b, i64 %indvars.iv | %arrayidx = getelementptr inbounds i32, i32* %b, i64 %indvars.iv | ||||
%0 = load i32, i32* %arrayidx, align 4 | %0 = load i32, i32* %arrayidx, align 4 | ||||
%add = add nsw i32 %0, %N | %add = add nsw i32 %0, %N | ||||
%arrayidx2 = getelementptr inbounds i32, i32* %a, i64 %indvars.iv | %arrayidx2 = getelementptr inbounds i32, i32* %a, i64 %indvars.iv | ||||
store i32 %add, i32* %arrayidx2, align 4 | store i32 %add, i32* %arrayidx2, align 4 | ||||
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 | %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 | ||||
%exitcond = icmp eq i64 %indvars.iv.next, 32 | %exitcond = icmp eq i64 %indvars.iv.next, 64 | ||||
br i1 %exitcond, label %for.end, label %for.body, !llvm.loop !2 | br i1 %exitcond, label %for.end, label %for.body, !llvm.loop !2 | ||||
for.end: ; preds = %for.body | for.end: ; preds = %for.body | ||||
%1 = load i32, i32* %a, align 4 | %1 = load i32, i32* %a, align 4 | ||||
ret i32 %1 | ret i32 %1 | ||||
} | } | ||||
!0 = !{!0, !1} | !0 = !{!0, !1} | ||||
!1 = !{!"llvm.loop.vectorize.enable", i1 1} | !1 = !{!"llvm.loop.vectorize.enable", i1 1} | ||||
!2 = !{!2, !3} | !2 = !{!2, !3} | ||||
!3 = !{!"llvm.loop.vectorize.enable", i1 0} | !3 = !{!"llvm.loop.vectorize.enable", i1 0} |
After the change to getGEPCost, the loop size is reduced. Bump the trip count so that the loops still cannot be fully unrolled.