Krzysztof Parzyszek | 046090d | 2018-03-12 14:01:28 +0000 | [diff] [blame] | 1 | ; RUN: llc -march=hexagon -O3 < %s |
| 2 | ; REQUIRES: asserts |
| 3 | |
| 4 | ; This used to assert in the register scavenger. |
| 5 | |
| 6 | target triple = "hexagon-unknown-linux-gnu" |
| 7 | |
| 8 | %0 = type { %1 } |
| 9 | %1 = type { %2 } |
| 10 | %2 = type { [4 x [4 x double]] } |
| 11 | %3 = type { [3 x double] } |
| 12 | %4 = type { %5, %0, %0, %5*, %3, %3 } |
| 13 | %5 = type { i32 (...)** } |
| 14 | %6 = type { %3, %3 } |
| 15 | |
| 16 | declare void @f0(%3* sret, %0*, %3*) |
| 17 | |
| 18 | ; Function Attrs: nounwind |
| 19 | define void @f1(%4* %a0, %0* nocapture %a1, %0* nocapture %a2) #0 align 2 { |
| 20 | b0: |
| 21 | %v0 = alloca %6, align 8 |
| 22 | %v1 = alloca [2 x [2 x [2 x %3]]], align 8 |
| 23 | %v2 = alloca %3, align 8 |
| 24 | %v3 = getelementptr inbounds %4, %4* %a0, i32 0, i32 1 |
| 25 | %v4 = bitcast %0* %v3 to i8* |
| 26 | %v5 = bitcast %0* %a1 to i8* |
| 27 | call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %v4, i8* align 8 %v5, i32 128, i1 false) |
| 28 | %v6 = getelementptr inbounds %4, %4* %a0, i32 0, i32 2 |
| 29 | %v7 = bitcast %0* %v6 to i8* |
| 30 | %v8 = bitcast %0* %a2 to i8* |
| 31 | call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %v7, i8* align 8 %v8, i32 128, i1 false) |
| 32 | %v9 = bitcast %6* %v0 to i8* |
| 33 | call void @llvm.memset.p0i8.i64(i8* align 8 %v9, i8 0, i64 48, i1 false) |
| 34 | %v10 = getelementptr inbounds %4, %4* %a0, i32 0, i32 3 |
| 35 | %v11 = load %5*, %5** %v10, align 4, !tbaa !0 |
| 36 | %v12 = bitcast %5* %v11 to i32 (%5*, double, double, %6*)*** |
| 37 | %v13 = load i32 (%5*, double, double, %6*)**, i32 (%5*, double, double, %6*)*** %v12, align 4, !tbaa !4 |
| 38 | %v14 = getelementptr inbounds i32 (%5*, double, double, %6*)*, i32 (%5*, double, double, %6*)** %v13, i32 3 |
| 39 | %v15 = load i32 (%5*, double, double, %6*)*, i32 (%5*, double, double, %6*)** %v14, align 4 |
| 40 | %v16 = call i32 %v15(%5* %v11, double 0.000000e+00, double 0.000000e+00, %6* %v0) |
| 41 | %v17 = icmp eq i32 %v16, 0 |
| 42 | br i1 %v17, label %b1, label %b3 |
| 43 | |
| 44 | b1: ; preds = %b0 |
| 45 | %v18 = getelementptr inbounds %4, %4* %a0, i32 0, i32 4, i32 0, i32 0 |
| 46 | store double -1.000000e+06, double* %v18, align 8, !tbaa !6 |
| 47 | %v19 = getelementptr inbounds %4, %4* %a0, i32 0, i32 4, i32 0, i32 1 |
| 48 | store double -1.000000e+06, double* %v19, align 8, !tbaa !6 |
| 49 | %v20 = getelementptr inbounds %4, %4* %a0, i32 0, i32 4, i32 0, i32 2 |
| 50 | store double -1.000000e+06, double* %v20, align 8, !tbaa !6 |
| 51 | %v21 = getelementptr inbounds %4, %4* %a0, i32 0, i32 5, i32 0, i32 0 |
| 52 | store double 1.000000e+06, double* %v21, align 8, !tbaa !6 |
| 53 | %v22 = getelementptr inbounds %4, %4* %a0, i32 0, i32 5, i32 0, i32 1 |
| 54 | store double 1.000000e+06, double* %v22, align 8, !tbaa !6 |
| 55 | %v23 = getelementptr inbounds %4, %4* %a0, i32 0, i32 5, i32 0, i32 2 |
| 56 | store double 1.000000e+06, double* %v23, align 8, !tbaa !6 |
| 57 | br label %b2 |
| 58 | |
| 59 | b2: ; preds = %b3, %b1 |
| 60 | ret void |
| 61 | |
| 62 | b3: ; preds = %b0 |
| 63 | %v24 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 0 |
| 64 | %v25 = bitcast [2 x [2 x [2 x %3]]]* %v1 to i8* |
| 65 | %v26 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 2 |
| 66 | %v27 = bitcast %3* %v26 to i8* |
| 67 | %v28 = bitcast [2 x [2 x [2 x %3]]]* %v1 to i8* |
| 68 | call void @llvm.memset.p0i8.i64(i8* align 8 %v28, i8 0, i64 48, i1 false) |
| 69 | call void @llvm.memset.p0i8.i64(i8* align 8 %v27, i8 0, i64 24, i1 false) |
| 70 | %v29 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 3 |
| 71 | %v30 = bitcast %3* %v29 to i8* |
| 72 | call void @llvm.memset.p0i8.i64(i8* align 8 %v30, i8 0, i64 24, i1 false) |
| 73 | %v31 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 4 |
| 74 | %v32 = bitcast %3* %v31 to i8* |
| 75 | call void @llvm.memset.p0i8.i64(i8* align 8 %v32, i8 0, i64 24, i1 false) |
| 76 | %v33 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 5 |
| 77 | %v34 = bitcast %3* %v33 to i8* |
| 78 | call void @llvm.memset.p0i8.i64(i8* align 8 %v34, i8 0, i64 24, i1 false) |
| 79 | %v35 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 6 |
| 80 | %v36 = bitcast %3* %v35 to i8* |
| 81 | call void @llvm.memset.p0i8.i64(i8* align 8 %v36, i8 0, i64 24, i1 false) |
| 82 | %v37 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 7 |
| 83 | %v38 = bitcast %3* %v37 to i8* |
| 84 | call void @llvm.memset.p0i8.i64(i8* align 8 %v38, i8 0, i64 24, i1 false) |
| 85 | %v39 = getelementptr inbounds %6, %6* %v0, i32 0, i32 0, i32 0, i32 0 |
| 86 | %v40 = getelementptr inbounds %6, %6* %v0, i32 0, i32 0, i32 0, i32 1 |
| 87 | %v41 = getelementptr inbounds %6, %6* %v0, i32 0, i32 0, i32 0, i32 2 |
| 88 | %v42 = bitcast %3* %v2 to i8* |
| 89 | %v43 = getelementptr inbounds %6, %6* %v0, i32 0, i32 1, i32 0, i32 2 |
| 90 | %v44 = getelementptr inbounds %6, %6* %v0, i32 0, i32 1, i32 0, i32 1 |
| 91 | %v45 = getelementptr inbounds %6, %6* %v0, i32 0, i32 1, i32 0, i32 0 |
| 92 | %v46 = load double, double* %v39, align 8, !tbaa !6 |
| 93 | %v47 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 |
| 94 | store double %v46, double* %v47, align 8, !tbaa !6 |
| 95 | %v48 = load double, double* %v40, align 8, !tbaa !6 |
| 96 | %v49 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 |
| 97 | store double %v48, double* %v49, align 8, !tbaa !6 |
| 98 | %v50 = load double, double* %v41, align 8, !tbaa !6 |
| 99 | %v51 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 |
| 100 | store double %v50, double* %v51, align 8, !tbaa !6 |
| 101 | call void @f0(%3* sret %v2, %0* %v3, %3* %v24) |
| 102 | call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %v25, i8* align 8 %v42, i32 24, i1 false) |
| 103 | %v52 = load double, double* %v39, align 8, !tbaa !6 |
| 104 | %v53 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 |
| 105 | store double %v52, double* %v53, align 8, !tbaa !6 |
| 106 | %v54 = load double, double* %v40, align 8, !tbaa !6 |
| 107 | %v55 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 |
| 108 | store double %v54, double* %v55, align 8, !tbaa !6 |
| 109 | %v56 = load double, double* %v43, align 8, !tbaa !6 |
| 110 | %v57 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 |
| 111 | store double %v56, double* %v57, align 8, !tbaa !6 |
| 112 | %v58 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 1 |
| 113 | call void @f0(%3* sret %v2, %0* %v3, %3* %v58) |
| 114 | %v59 = bitcast %3* %v58 to i8* |
| 115 | call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %v59, i8* align 8 %v42, i32 24, i1 false) |
| 116 | %v60 = load double, double* %v39, align 8, !tbaa !6 |
| 117 | %v61 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0 |
| 118 | store double %v60, double* %v61, align 8, !tbaa !6 |
| 119 | %v62 = load double, double* %v44, align 8, !tbaa !6 |
| 120 | %v63 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1 |
| 121 | store double %v62, double* %v63, align 8, !tbaa !6 |
| 122 | %v64 = load double, double* %v41, align 8, !tbaa !6 |
| 123 | %v65 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2 |
| 124 | store double %v64, double* %v65, align 8, !tbaa !6 |
| 125 | %v66 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 1, i32 0 |
| 126 | call void @f0(%3* sret %v2, %0* %v3, %3* %v66) |
| 127 | %v67 = bitcast %3* %v66 to i8* |
| 128 | call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %v67, i8* align 8 %v42, i32 24, i1 false) |
| 129 | %v68 = load double, double* %v39, align 8, !tbaa !6 |
| 130 | %v69 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 |
| 131 | store double %v68, double* %v69, align 8, !tbaa !6 |
| 132 | %v70 = load double, double* %v44, align 8, !tbaa !6 |
| 133 | %v71 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 |
| 134 | store double %v70, double* %v71, align 8, !tbaa !6 |
| 135 | %v72 = load double, double* %v43, align 8, !tbaa !6 |
| 136 | %v73 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 |
| 137 | store double %v72, double* %v73, align 8, !tbaa !6 |
| 138 | %v74 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 1, i32 1 |
| 139 | call void @f0(%3* sret %v2, %0* %v3, %3* %v74) |
| 140 | %v75 = bitcast %3* %v74 to i8* |
| 141 | call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %v75, i8* align 8 %v42, i32 24, i1 false) |
| 142 | %v76 = load double, double* %v45, align 8, !tbaa !6 |
| 143 | %v77 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 |
| 144 | store double %v76, double* %v77, align 8, !tbaa !6 |
| 145 | %v78 = load double, double* %v40, align 8, !tbaa !6 |
| 146 | %v79 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 |
| 147 | store double %v78, double* %v79, align 8, !tbaa !6 |
| 148 | %v80 = load double, double* %v41, align 8, !tbaa !6 |
| 149 | %v81 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 |
| 150 | store double %v80, double* %v81, align 8, !tbaa !6 |
| 151 | %v82 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 0, i32 0 |
| 152 | call void @f0(%3* sret %v2, %0* %v3, %3* %v82) |
| 153 | %v83 = bitcast %3* %v82 to i8* |
| 154 | call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %v83, i8* align 8 %v42, i32 24, i1 false) |
| 155 | %v84 = load double, double* %v45, align 8, !tbaa !6 |
| 156 | %v85 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 |
| 157 | store double %v84, double* %v85, align 8, !tbaa !6 |
| 158 | %v86 = load double, double* %v40, align 8, !tbaa !6 |
| 159 | %v87 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 |
| 160 | store double %v86, double* %v87, align 8, !tbaa !6 |
| 161 | %v88 = load double, double* %v43, align 8, !tbaa !6 |
| 162 | %v89 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 |
| 163 | store double %v88, double* %v89, align 8, !tbaa !6 |
| 164 | %v90 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 0, i32 1 |
| 165 | call void @f0(%3* sret %v2, %0* %v3, %3* %v90) |
| 166 | %v91 = bitcast %3* %v90 to i8* |
| 167 | call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %v91, i8* align 8 %v42, i32 24, i1 false) |
| 168 | %v92 = load double, double* %v45, align 8, !tbaa !6 |
| 169 | %v93 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 0 |
| 170 | store double %v92, double* %v93, align 8, !tbaa !6 |
| 171 | %v94 = load double, double* %v44, align 8, !tbaa !6 |
| 172 | %v95 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1 |
| 173 | store double %v94, double* %v95, align 8, !tbaa !6 |
| 174 | %v96 = load double, double* %v41, align 8, !tbaa !6 |
| 175 | %v97 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 2 |
| 176 | store double %v96, double* %v97, align 8, !tbaa !6 |
| 177 | %v98 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 1, i32 0 |
| 178 | call void @f0(%3* sret %v2, %0* %v3, %3* %v98) |
| 179 | %v99 = bitcast %3* %v98 to i8* |
| 180 | call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %v99, i8* align 8 %v42, i32 24, i1 false) |
| 181 | %v100 = load double, double* %v45, align 8, !tbaa !6 |
| 182 | %v101 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 1, i32 1, i32 0, i32 0 |
| 183 | store double %v100, double* %v101, align 8, !tbaa !6 |
| 184 | %v102 = load double, double* %v44, align 8, !tbaa !6 |
| 185 | %v103 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 1, i32 1, i32 0, i32 1 |
| 186 | store double %v102, double* %v103, align 8, !tbaa !6 |
| 187 | %v104 = load double, double* %v43, align 8, !tbaa !6 |
| 188 | %v105 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 1, i32 1, i32 0, i32 2 |
| 189 | store double %v104, double* %v105, align 8, !tbaa !6 |
| 190 | %v106 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 1, i32 1 |
| 191 | call void @f0(%3* sret %v2, %0* %v3, %3* %v106) |
| 192 | %v107 = bitcast %3* %v106 to i8* |
| 193 | call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 8 %v107, i8* align 8 %v42, i32 24, i1 false) |
| 194 | %v108 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0 |
| 195 | %v109 = load double, double* %v108, align 8, !tbaa !6 |
| 196 | %v110 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1 |
| 197 | %v111 = load double, double* %v110, align 8, !tbaa !6 |
| 198 | %v112 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 2 |
| 199 | %v113 = load double, double* %v112, align 8, !tbaa !6 |
| 200 | %v114 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 0 |
| 201 | %v115 = load double, double* %v114, align 8, !tbaa !6 |
| 202 | %v116 = fcmp olt double %v115, %v109 |
| 203 | %v117 = select i1 %v116, double %v115, double %v109 |
| 204 | %v118 = fcmp ogt double %v115, %v109 |
| 205 | %v119 = select i1 %v118, double %v115, double %v109 |
| 206 | %v120 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 1 |
| 207 | %v121 = load double, double* %v120, align 8, !tbaa !6 |
| 208 | %v122 = fcmp olt double %v121, %v111 |
| 209 | %v123 = select i1 %v122, double %v121, double %v111 |
| 210 | %v124 = fcmp ogt double %v121, %v111 |
| 211 | %v125 = select i1 %v124, double %v121, double %v111 |
| 212 | %v126 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 0, i32 1, i32 0, i32 2 |
| 213 | %v127 = load double, double* %v126, align 8, !tbaa !6 |
| 214 | %v128 = fcmp olt double %v127, %v113 |
| 215 | %v129 = select i1 %v128, double %v127, double %v113 |
| 216 | %v130 = fcmp ogt double %v127, %v113 |
| 217 | %v131 = select i1 %v130, double %v127, double %v113 |
| 218 | %v132 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 0 |
| 219 | %v133 = load double, double* %v132, align 8, !tbaa !6 |
| 220 | %v134 = fcmp olt double %v133, %v117 |
| 221 | %v135 = select i1 %v134, double %v133, double %v117 |
| 222 | %v136 = fcmp ogt double %v133, %v119 |
| 223 | %v137 = select i1 %v136, double %v133, double %v119 |
| 224 | %v138 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 1 |
| 225 | %v139 = load double, double* %v138, align 8, !tbaa !6 |
| 226 | %v140 = fcmp olt double %v139, %v123 |
| 227 | %v141 = select i1 %v140, double %v139, double %v123 |
| 228 | %v142 = fcmp ogt double %v139, %v125 |
| 229 | %v143 = select i1 %v142, double %v139, double %v125 |
| 230 | %v144 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 1, i32 0, i32 0, i32 2 |
| 231 | %v145 = load double, double* %v144, align 8, !tbaa !6 |
| 232 | %v146 = fcmp olt double %v145, %v129 |
| 233 | %v147 = select i1 %v146, double %v145, double %v129 |
| 234 | %v148 = fcmp ogt double %v145, %v131 |
| 235 | %v149 = select i1 %v148, double %v145, double %v131 |
| 236 | %v150 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 0 |
| 237 | %v151 = load double, double* %v150, align 8, !tbaa !6 |
| 238 | %v152 = fcmp olt double %v151, %v135 |
| 239 | %v153 = select i1 %v152, double %v151, double %v135 |
| 240 | %v154 = fcmp ogt double %v151, %v137 |
| 241 | %v155 = select i1 %v154, double %v151, double %v137 |
| 242 | %v156 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 1 |
| 243 | %v157 = load double, double* %v156, align 8, !tbaa !6 |
| 244 | %v158 = fcmp olt double %v157, %v141 |
| 245 | %v159 = select i1 %v158, double %v157, double %v141 |
| 246 | %v160 = fcmp ogt double %v157, %v143 |
| 247 | %v161 = select i1 %v160, double %v157, double %v143 |
| 248 | %v162 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 0, i32 1, i32 1, i32 0, i32 2 |
| 249 | %v163 = load double, double* %v162, align 8, !tbaa !6 |
| 250 | %v164 = fcmp olt double %v163, %v147 |
| 251 | %v165 = select i1 %v164, double %v163, double %v147 |
| 252 | %v166 = fcmp ogt double %v163, %v149 |
| 253 | %v167 = select i1 %v166, double %v163, double %v149 |
| 254 | %v168 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 0 |
| 255 | %v169 = load double, double* %v168, align 8, !tbaa !6 |
| 256 | %v170 = fcmp olt double %v169, %v153 |
| 257 | %v171 = select i1 %v170, double %v169, double %v153 |
| 258 | %v172 = fcmp ogt double %v169, %v155 |
| 259 | %v173 = select i1 %v172, double %v169, double %v155 |
| 260 | %v174 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 1 |
| 261 | %v175 = load double, double* %v174, align 8, !tbaa !6 |
| 262 | %v176 = fcmp olt double %v175, %v159 |
| 263 | %v177 = select i1 %v176, double %v175, double %v159 |
| 264 | %v178 = fcmp ogt double %v175, %v161 |
| 265 | %v179 = select i1 %v178, double %v175, double %v161 |
| 266 | %v180 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 0, i32 0, i32 0, i32 2 |
| 267 | %v181 = load double, double* %v180, align 8, !tbaa !6 |
| 268 | %v182 = fcmp olt double %v181, %v165 |
| 269 | %v183 = select i1 %v182, double %v181, double %v165 |
| 270 | %v184 = fcmp ogt double %v181, %v167 |
| 271 | %v185 = select i1 %v184, double %v181, double %v167 |
| 272 | %v186 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 0 |
| 273 | %v187 = load double, double* %v186, align 8, !tbaa !6 |
| 274 | %v188 = fcmp olt double %v187, %v171 |
| 275 | %v189 = select i1 %v188, double %v187, double %v171 |
| 276 | %v190 = fcmp ogt double %v187, %v173 |
| 277 | %v191 = select i1 %v190, double %v187, double %v173 |
| 278 | %v192 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1 |
| 279 | %v193 = load double, double* %v192, align 8, !tbaa !6 |
| 280 | %v194 = fcmp olt double %v193, %v177 |
| 281 | %v195 = select i1 %v194, double %v193, double %v177 |
| 282 | %v196 = fcmp ogt double %v193, %v179 |
| 283 | %v197 = select i1 %v196, double %v193, double %v179 |
| 284 | %v198 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 2 |
| 285 | %v199 = load double, double* %v198, align 8, !tbaa !6 |
| 286 | %v200 = fcmp olt double %v199, %v183 |
| 287 | %v201 = select i1 %v200, double %v199, double %v183 |
| 288 | %v202 = fcmp ogt double %v199, %v185 |
| 289 | %v203 = select i1 %v202, double %v199, double %v185 |
| 290 | %v204 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 0 |
| 291 | %v205 = load double, double* %v204, align 8, !tbaa !6 |
| 292 | %v206 = fcmp olt double %v205, %v189 |
| 293 | %v207 = select i1 %v206, double %v205, double %v189 |
| 294 | %v208 = fcmp ogt double %v205, %v191 |
| 295 | %v209 = select i1 %v208, double %v205, double %v191 |
| 296 | %v210 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1 |
| 297 | %v211 = load double, double* %v210, align 8, !tbaa !6 |
| 298 | %v212 = fcmp olt double %v211, %v195 |
| 299 | %v213 = select i1 %v212, double %v211, double %v195 |
| 300 | %v214 = fcmp ogt double %v211, %v197 |
| 301 | %v215 = select i1 %v214, double %v211, double %v197 |
| 302 | %v216 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 1, i32 0, i32 0, i32 2 |
| 303 | %v217 = load double, double* %v216, align 8, !tbaa !6 |
| 304 | %v218 = fcmp olt double %v217, %v201 |
| 305 | %v219 = select i1 %v218, double %v217, double %v201 |
| 306 | %v220 = fcmp ogt double %v217, %v203 |
| 307 | %v221 = select i1 %v220, double %v217, double %v203 |
| 308 | %v222 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 1, i32 1, i32 0, i32 0 |
| 309 | %v223 = load double, double* %v222, align 8, !tbaa !6 |
| 310 | %v224 = fcmp olt double %v223, %v207 |
| 311 | %v225 = select i1 %v224, double %v223, double %v207 |
| 312 | %v226 = fcmp ogt double %v223, %v209 |
| 313 | %v227 = select i1 %v226, double %v223, double %v209 |
| 314 | %v228 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 1, i32 1, i32 0, i32 1 |
| 315 | %v229 = load double, double* %v228, align 8, !tbaa !6 |
| 316 | %v230 = fcmp olt double %v229, %v213 |
| 317 | %v231 = select i1 %v230, double %v229, double %v213 |
| 318 | %v232 = fcmp ogt double %v229, %v215 |
| 319 | %v233 = select i1 %v232, double %v229, double %v215 |
| 320 | %v234 = getelementptr inbounds [2 x [2 x [2 x %3]]], [2 x [2 x [2 x %3]]]* %v1, i32 0, i32 1, i32 1, i32 1, i32 0, i32 2 |
| 321 | %v235 = load double, double* %v234, align 8, !tbaa !6 |
| 322 | %v236 = fcmp olt double %v235, %v219 |
| 323 | %v237 = select i1 %v236, double %v235, double %v219 |
| 324 | %v238 = fcmp ogt double %v235, %v221 |
| 325 | %v239 = select i1 %v238, double %v235, double %v221 |
| 326 | %v240 = getelementptr inbounds %4, %4* %a0, i32 0, i32 4, i32 0, i32 0 |
| 327 | store double %v225, double* %v240, align 8 |
| 328 | %v241 = getelementptr inbounds %4, %4* %a0, i32 0, i32 4, i32 0, i32 1 |
| 329 | store double %v231, double* %v241, align 8 |
| 330 | %v242 = getelementptr inbounds %4, %4* %a0, i32 0, i32 4, i32 0, i32 2 |
| 331 | store double %v237, double* %v242, align 8 |
| 332 | %v243 = getelementptr inbounds %4, %4* %a0, i32 0, i32 5, i32 0, i32 0 |
| 333 | store double %v227, double* %v243, align 8 |
| 334 | %v244 = getelementptr inbounds %4, %4* %a0, i32 0, i32 5, i32 0, i32 1 |
| 335 | store double %v233, double* %v244, align 8 |
| 336 | %v245 = getelementptr inbounds %4, %4* %a0, i32 0, i32 5, i32 0, i32 2 |
| 337 | store double %v239, double* %v245, align 8 |
| 338 | br label %b2 |
| 339 | } |
| 340 | |
| 341 | ; Function Attrs: argmemonly nounwind |
| 342 | declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i1) #1 |
| 343 | |
| 344 | ; Function Attrs: argmemonly nounwind |
| 345 | declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1) #1 |
| 346 | |
| 347 | attributes #0 = { nounwind "target-cpu"="hexagonv55" } |
| 348 | attributes #1 = { argmemonly nounwind } |
| 349 | |
| 350 | !0 = !{!1, !1, i64 0} |
| 351 | !1 = !{!"any pointer", !2} |
| 352 | !2 = !{!"omnipotent char", !3} |
| 353 | !3 = !{!"Simple C/C++ TBAA"} |
| 354 | !4 = !{!5, !5, i64 0} |
| 355 | !5 = !{!"vtable pointer", !3} |
| 356 | !6 = !{!7, !7, i64 0} |
| 357 | !7 = !{!"double", !2} |