brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.3 KiB · 26bab4d Raw
171 lines · plain
1; RUN: opt -mtriple=hexagon -passes=loop-vectorize -hexagon-autohvx -debug-only=loop-vectorize -disable-output < %s 2>&1 | FileCheck %s2; REQUIRES: asserts3 4; Check that TTI::getMinimumVF works. The calculated MaxVF was based on the5; register pressure and was less than 64.6; CHECK: LV: Overriding calculated MaxVF({{[0-9]+}}) with target's minimum: 647 8target datalayout = "e-m:e-p:32:32:32-a:0-n16:32-i64:64:64-i32:32:32-i16:16:16-i1:8:8-f32:32:32-f64:64:64-v32:32:32-v64:64:64-v512:512:512-v1024:1024:1024-v2048:2048:2048"9 10%s.0 = type { ptr, i32, i32, i32, i32 }11 12@g0 = external dso_local local_unnamed_addr global ptr, align 413 14declare void @llvm.lifetime.start.p0(ptr nocapture) #015declare void @llvm.lifetime.end.p0(ptr nocapture) #016 17; Function Attrs: nounwind18define hidden fastcc void @f0(ptr nocapture %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i8 zeroext %a5) unnamed_addr #1 {19b0:20  %v0 = alloca [4 x [9 x i16]], align 821  call void @llvm.lifetime.start.p0(ptr nonnull %v0) #222  %v2 = add i32 %a1, -223  %v3 = add i32 %a3, -924  %v4 = icmp ugt i32 %v2, %v325  %v5 = add i32 %a2, -226  %v6 = add i32 %a4, -927  %v7 = icmp ugt i32 %v5, %v628  %v8 = or i1 %v4, %v729  %v9 = load ptr, ptr @g0, align 4, !tbaa !130  %v10 = zext i8 %a5 to i3231  %v11 = getelementptr inbounds ptr, ptr %v9, i32 %v1032  %v12 = load ptr, ptr %v11, align 4, !tbaa !133  %v14 = load ptr, ptr %v12, align 4, !tbaa !534  br i1 %v8, label %b1, label %b235 36b1:                                               ; preds = %b1, %b037  %v15 = phi i32 [ 0, %b0 ], [ %v119, %b1 ]38  %v16 = add i32 %v5, %v1539  %v17 = icmp slt i32 %v16, 040  %v18 = icmp slt i32 %v16, %a441  %v19 = select i1 %v18, i32 %v16, i32 %v342  %v20 = select i1 %v17, i32 0, i32 %v1943  %v21 = mul i32 %v20, %a344  %v22 = add i32 97, %v2145  %v23 = getelementptr inbounds i8, ptr %v14, i32 %v2246  %v24 = load i8, ptr %v23, align 1, !tbaa !847  %v25 = zext i8 %v24 to i3248  %v26 = add i32 101, %v2149  %v27 = getelementptr inbounds i8, ptr %v14, i32 %v2650  %v28 = load i8, ptr %v27, align 1, !tbaa !851  %v29 = zext i8 %v28 to i3252  %v30 = mul nsw i32 %v29, -553  %v31 = add nsw i32 %v30, %v2554  %v32 = add i32 106, %v2155  %v33 = getelementptr inbounds i8, ptr %v14, i32 %v3256  %v34 = load i8, ptr %v33, align 1, !tbaa !857  %v35 = zext i8 %v34 to i3258  %v36 = mul nuw nsw i32 %v35, 2059  %v37 = add nsw i32 %v36, %v3160  %v38 = add i32 111, %v2161  %v39 = getelementptr inbounds i8, ptr %v14, i32 %v3862  %v40 = load i8, ptr %v39, align 1, !tbaa !863  %v41 = zext i8 %v40 to i3264  %v42 = mul nuw nsw i32 %v41, 2065  %v43 = add nsw i32 %v42, %v3766  %v44 = add i32 116, %v2167  %v45 = getelementptr inbounds i8, ptr %v14, i32 %v4468  %v46 = load i8, ptr %v45, align 1, !tbaa !869  %v47 = zext i8 %v46 to i3270  %v48 = mul nsw i32 %v47, -571  %v49 = add nsw i32 %v48, %v4372  %v50 = add i32 120, %v2173  %v51 = getelementptr inbounds i8, ptr %v14, i32 %v5074  %v52 = load i8, ptr %v51, align 1, !tbaa !875  %v53 = zext i8 %v52 to i3276  %v54 = add nsw i32 %v49, %v5377  %v55 = trunc i32 %v54 to i1678  %v56 = getelementptr inbounds [4 x [9 x i16]], ptr %v0, i32 0, i32 0, i32 %v1579  store i16 %v55, ptr %v56, align 2, !tbaa !980  %v57 = mul nsw i32 %v35, -581  %v58 = add nsw i32 %v57, %v2982  %v59 = add nsw i32 %v42, %v5883  %v60 = mul nuw nsw i32 %v47, 2084  %v61 = add nsw i32 %v60, %v5985  %v62 = mul nsw i32 %v53, -586  %v63 = add nsw i32 %v62, %v6187  %v64 = add i32 125, %v2188  %v65 = getelementptr inbounds i8, ptr %v14, i32 %v6489  %v66 = load i8, ptr %v65, align 1, !tbaa !890  %v67 = zext i8 %v66 to i3291  %v68 = add nsw i32 %v63, %v6792  %v69 = trunc i32 %v68 to i1693  %v70 = getelementptr inbounds [4 x [9 x i16]], ptr %v0, i32 0, i32 1, i32 %v1594  store i16 %v69, ptr %v70, align 2, !tbaa !995  %v71 = mul nsw i32 %v41, -596  %v72 = add nsw i32 %v71, %v3597  %v73 = add nsw i32 %v60, %v7298  %v74 = mul nuw nsw i32 %v53, 2099  %v75 = add nsw i32 %v74, %v73100  %v76 = mul nsw i32 %v67, -5101  %v77 = add nsw i32 %v76, %v75102  %v78 = add i32 130, %v21103  %v79 = getelementptr inbounds i8, ptr %v14, i32 %v78104  %v80 = load i8, ptr %v79, align 1, !tbaa !8105  %v81 = zext i8 %v80 to i32106  %v82 = add nsw i32 %v77, %v81107  %v83 = trunc i32 %v82 to i16108  %v84 = getelementptr inbounds [4 x [9 x i16]], ptr %v0, i32 0, i32 2, i32 %v15109  store i16 %v83, ptr %v84, align 2, !tbaa !9110  %v85 = add i32 92, %v21111  %v86 = getelementptr inbounds i8, ptr %v14, i32 %v85112  %v87 = load i8, ptr %v86, align 1, !tbaa !8113  %v88 = zext i8 %v87 to i16114  %v89 = add i32 135, %v21115  %v90 = getelementptr inbounds i8, ptr %v14, i32 %v89116  %v91 = load i8, ptr %v90, align 1, !tbaa !8117  %v92 = zext i8 %v91 to i16118  %v93 = mul nsw i16 %v92, -5119  %v94 = add nsw i16 %v93, %v88120  %v95 = add i32 140, %v21121  %v96 = getelementptr inbounds i8, ptr %v14, i32 %v95122  %v97 = load i8, ptr %v96, align 1, !tbaa !8123  %v98 = zext i8 %v97 to i16124  %v99 = mul nuw nsw i16 %v98, 20125  %v100 = add nsw i16 %v99, %v94126  %v101 = add i32 145, %v21127  %v102 = getelementptr inbounds i8, ptr %v14, i32 %v101128  %v103 = load i8, ptr %v102, align 1, !tbaa !8129  %v104 = zext i8 %v103 to i16130  %v105 = mul nuw nsw i16 %v104, 20131  %v106 = add i16 %v105, %v100132  %v107 = add i32 150, %v21133  %v108 = getelementptr inbounds i8, ptr %v14, i32 %v107134  %v109 = load i8, ptr %v108, align 1, !tbaa !8135  %v110 = zext i8 %v109 to i16136  %v111 = mul nsw i16 %v110, -5137  %v112 = add i16 %v111, %v106138  %v113 = add i32 154, %v21139  %v114 = getelementptr inbounds i8, ptr %v14, i32 %v113140  %v115 = load i8, ptr %v114, align 1, !tbaa !8141  %v116 = zext i8 %v115 to i16142  %v117 = add i16 %v112, %v116143  %v118 = getelementptr inbounds [4 x [9 x i16]], ptr %v0, i32 0, i32 3, i32 %v15144  store i16 %v117, ptr %v118, align 2, !tbaa !9145  %v119 = add nuw nsw i32 %v15, 1146  %v120 = icmp eq i32 %v119, 19147  br i1 %v120, label %b2, label %b1148 149b2:                                               ; preds = %b1, %b0150  call void @llvm.lifetime.end.p0(ptr nonnull %v0) #2151  ret void152}153 154attributes #0 = { argmemonly nounwind }155attributes #1 = { nounwind "target-cpu"="hexagonv60" "target-features"="+hvx-length64b,+hvxv60" }156attributes #2 = { nounwind }157 158!llvm.module.flags = !{!0}159 160!0 = !{i32 1, !"wchar_size", i32 4}161!1 = !{!2, !2, i64 0}162!2 = !{!"any pointer", !3, i64 0}163!3 = !{!"omnipotent char", !4, i64 0}164!4 = !{!"Simple C/C++ TBAA"}165!5 = !{!6, !2, i64 0}166!6 = !{!"", !2, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16}167!7 = !{!"int", !3, i64 0}168!8 = !{!3, !3, i64 0}169!9 = !{!10, !10, i64 0}170!10 = !{!"short", !3, i64 0}171