409 lines · plain
1; RUN: llc -mtriple=hexagon -mcpu=hexagonv5 -O3 < %s | FileCheck %s2 3; CHECK-LABEL: f0:4; CHECK: loop05; a < b6define void @f0(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {7b0:8 %v0 = icmp sle i32 28395, %a29 br i1 %v0, label %b1, label %b310 11b1: ; preds = %b012 br label %b213 14b2: ; preds = %b2, %b115 %v1 = phi i32 [ 28395, %b1 ], [ %v7, %b2 ]16 %v2 = getelementptr inbounds i8, ptr %a0, i32 %v117 %v3 = load i8, ptr %v2, align 118 %v4 = zext i8 %v3 to i3219 %v5 = add nsw i32 %v4, 120 %v6 = trunc i32 %v5 to i821 store i8 %v6, ptr %v2, align 122 %v7 = add nsw i32 %v1, 123 %v8 = icmp sle i32 %v7, %a224 br i1 %v8, label %b2, label %b325 26b3: ; preds = %b2, %b027 ret void28}29 30; CHECK-LABEL: f1:31; CHECK: loop032; a < b33define void @f1(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {34b0:35 %v0 = icmp sle i32 9073, %a236 br i1 %v0, label %b1, label %b337 38b1: ; preds = %b039 br label %b240 41b2: ; preds = %b2, %b142 %v1 = phi i32 [ 9073, %b1 ], [ %v7, %b2 ]43 %v2 = getelementptr inbounds i8, ptr %a0, i32 %v144 %v3 = load i8, ptr %v2, align 145 %v4 = zext i8 %v3 to i3246 %v5 = add nsw i32 %v4, 147 %v6 = trunc i32 %v5 to i848 store i8 %v6, ptr %v2, align 149 %v7 = add nsw i32 %v1, 250 %v8 = icmp sle i32 %v7, %a251 br i1 %v8, label %b2, label %b352 53b3: ; preds = %b2, %b054 ret void55}56 57; CHECK-LABEL: f2:58; CHECK: loop059; a < b60define void @f2(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {61b0:62 %v0 = icmp sle i32 21956, %a263 br i1 %v0, label %b1, label %b364 65b1: ; preds = %b066 br label %b267 68b2: ; preds = %b2, %b169 %v1 = phi i32 [ 21956, %b1 ], [ %v7, %b2 ]70 %v2 = getelementptr inbounds i8, ptr %a0, i32 %v171 %v3 = load i8, ptr %v2, align 172 %v4 = zext i8 %v3 to i3273 %v5 = add nsw i32 %v4, 174 %v6 = trunc i32 %v5 to i875 store i8 %v6, ptr %v2, align 176 %v7 = add nsw i32 %v1, 477 %v8 = icmp sle i32 %v7, %a278 br i1 %v8, label %b2, label %b379 80b3: ; preds = %b2, %b081 ret void82}83 84; CHECK-LABEL: f3:85; CHECK: loop086; a < b87define void @f3(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {88b0:89 %v0 = icmp sle i32 16782, %a290 br i1 %v0, label %b1, label %b391 92b1: ; preds = %b093 br label %b294 95b2: ; preds = %b2, %b196 %v1 = phi i32 [ 16782, %b1 ], [ %v7, %b2 ]97 %v2 = getelementptr inbounds i8, ptr %a0, i32 %v198 %v3 = load i8, ptr %v2, align 199 %v4 = zext i8 %v3 to i32100 %v5 = add nsw i32 %v4, 1101 %v6 = trunc i32 %v5 to i8102 store i8 %v6, ptr %v2, align 1103 %v7 = add nsw i32 %v1, 8104 %v8 = icmp sle i32 %v7, %a2105 br i1 %v8, label %b2, label %b3106 107b3: ; preds = %b2, %b0108 ret void109}110 111; CHECK-LABEL: f4:112; CHECK: loop0113; a < b114define void @f4(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {115b0:116 %v0 = icmp sle i32 19097, %a2117 br i1 %v0, label %b1, label %b3118 119b1: ; preds = %b0120 br label %b2121 122b2: ; preds = %b2, %b1123 %v1 = phi i32 [ 19097, %b1 ], [ %v7, %b2 ]124 %v2 = getelementptr inbounds i8, ptr %a0, i32 %v1125 %v3 = load i8, ptr %v2, align 1126 %v4 = zext i8 %v3 to i32127 %v5 = add nsw i32 %v4, 1128 %v6 = trunc i32 %v5 to i8129 store i8 %v6, ptr %v2, align 1130 %v7 = add nsw i32 %v1, 16131 %v8 = icmp sle i32 %v7, %a2132 br i1 %v8, label %b2, label %b3133 134b3: ; preds = %b2, %b0135 ret void136}137 138; CHECK-LABEL: f5:139; CHECK: loop0140; a < b141define void @f5(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {142b0:143 %v0 = icmp sle i32 %a1, 14040144 br i1 %v0, label %b1, label %b3145 146b1: ; preds = %b0147 br label %b2148 149b2: ; preds = %b2, %b1150 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]151 %v2 = getelementptr inbounds i8, ptr %a0, i32 %v1152 %v3 = load i8, ptr %v2, align 1153 %v4 = zext i8 %v3 to i32154 %v5 = add nsw i32 %v4, 1155 %v6 = trunc i32 %v5 to i8156 store i8 %v6, ptr %v2, align 1157 %v7 = add nsw i32 %v1, 1158 %v8 = icmp sle i32 %v7, 14040159 br i1 %v8, label %b2, label %b3160 161b3: ; preds = %b2, %b0162 ret void163}164 165; CHECK-LABEL: f6:166; CHECK: loop0167; a < b168define void @f6(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {169b0:170 %v0 = icmp sle i32 %a1, 13710171 br i1 %v0, label %b1, label %b3172 173b1: ; preds = %b0174 br label %b2175 176b2: ; preds = %b2, %b1177 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]178 %v2 = getelementptr inbounds i8, ptr %a0, i32 %v1179 %v3 = load i8, ptr %v2, align 1180 %v4 = zext i8 %v3 to i32181 %v5 = add nsw i32 %v4, 1182 %v6 = trunc i32 %v5 to i8183 store i8 %v6, ptr %v2, align 1184 %v7 = add nsw i32 %v1, 2185 %v8 = icmp sle i32 %v7, 13710186 br i1 %v8, label %b2, label %b3187 188b3: ; preds = %b2, %b0189 ret void190}191 192; CHECK-LABEL: f7:193; CHECK: loop0194; a < b195define void @f7(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {196b0:197 %v0 = icmp sle i32 %a1, 9920198 br i1 %v0, label %b1, label %b3199 200b1: ; preds = %b0201 br label %b2202 203b2: ; preds = %b2, %b1204 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]205 %v2 = getelementptr inbounds i8, ptr %a0, i32 %v1206 %v3 = load i8, ptr %v2, align 1207 %v4 = zext i8 %v3 to i32208 %v5 = add nsw i32 %v4, 1209 %v6 = trunc i32 %v5 to i8210 store i8 %v6, ptr %v2, align 1211 %v7 = add nsw i32 %v1, 4212 %v8 = icmp sle i32 %v7, 9920213 br i1 %v8, label %b2, label %b3214 215b3: ; preds = %b2, %b0216 ret void217}218 219; CHECK-LABEL: f8:220; CHECK: loop0221; a < b222define void @f8(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {223b0:224 %v0 = icmp sle i32 %a1, 18924225 br i1 %v0, label %b1, label %b3226 227b1: ; preds = %b0228 br label %b2229 230b2: ; preds = %b2, %b1231 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]232 %v2 = getelementptr inbounds i8, ptr %a0, i32 %v1233 %v3 = load i8, ptr %v2, align 1234 %v4 = zext i8 %v3 to i32235 %v5 = add nsw i32 %v4, 1236 %v6 = trunc i32 %v5 to i8237 store i8 %v6, ptr %v2, align 1238 %v7 = add nsw i32 %v1, 8239 %v8 = icmp sle i32 %v7, 18924240 br i1 %v8, label %b2, label %b3241 242b3: ; preds = %b2, %b0243 ret void244}245 246; CHECK-LABEL: f9:247; CHECK: loop0248; a < b249define void @f9(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {250b0:251 %v0 = icmp sle i32 %a1, 11812252 br i1 %v0, label %b1, label %b3253 254b1: ; preds = %b0255 br label %b2256 257b2: ; preds = %b2, %b1258 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]259 %v2 = getelementptr inbounds i8, ptr %a0, i32 %v1260 %v3 = load i8, ptr %v2, align 1261 %v4 = zext i8 %v3 to i32262 %v5 = add nsw i32 %v4, 1263 %v6 = trunc i32 %v5 to i8264 store i8 %v6, ptr %v2, align 1265 %v7 = add nsw i32 %v1, 16266 %v8 = icmp sle i32 %v7, 11812267 br i1 %v8, label %b2, label %b3268 269b3: ; preds = %b2, %b0270 ret void271}272 273; CHECK-LABEL: f10:274; CHECK: loop0275; a < b276define void @f10(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {277b0:278 %v0 = icmp sle i32 %a1, %a2279 br i1 %v0, label %b1, label %b3280 281b1: ; preds = %b0282 br label %b2283 284b2: ; preds = %b2, %b1285 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]286 %v2 = getelementptr inbounds i8, ptr %a0, i32 %v1287 %v3 = load i8, ptr %v2, align 1288 %v4 = zext i8 %v3 to i32289 %v5 = add nsw i32 %v4, 1290 %v6 = trunc i32 %v5 to i8291 store i8 %v6, ptr %v2, align 1292 %v7 = add nsw i32 %v1, 1293 %v8 = icmp sle i32 %v7, %a2294 br i1 %v8, label %b2, label %b3295 296b3: ; preds = %b2, %b0297 ret void298}299 300; CHECK-LABEL: f11:301; CHECK: loop0302; a < b303define void @f11(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {304b0:305 %v0 = icmp sle i32 %a1, %a2306 br i1 %v0, label %b1, label %b3307 308b1: ; preds = %b0309 br label %b2310 311b2: ; preds = %b2, %b1312 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]313 %v2 = getelementptr inbounds i8, ptr %a0, i32 %v1314 %v3 = load i8, ptr %v2, align 1315 %v4 = zext i8 %v3 to i32316 %v5 = add nsw i32 %v4, 1317 %v6 = trunc i32 %v5 to i8318 store i8 %v6, ptr %v2, align 1319 %v7 = add nsw i32 %v1, 2320 %v8 = icmp sle i32 %v7, %a2321 br i1 %v8, label %b2, label %b3322 323b3: ; preds = %b2, %b0324 ret void325}326 327; CHECK-LABEL: f12:328; CHECK: loop0329; a < b330define void @f12(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {331b0:332 %v0 = icmp sle i32 %a1, %a2333 br i1 %v0, label %b1, label %b3334 335b1: ; preds = %b0336 br label %b2337 338b2: ; preds = %b2, %b1339 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]340 %v2 = getelementptr inbounds i8, ptr %a0, i32 %v1341 %v3 = load i8, ptr %v2, align 1342 %v4 = zext i8 %v3 to i32343 %v5 = add nsw i32 %v4, 1344 %v6 = trunc i32 %v5 to i8345 store i8 %v6, ptr %v2, align 1346 %v7 = add nsw i32 %v1, 4347 %v8 = icmp sle i32 %v7, %a2348 br i1 %v8, label %b2, label %b3349 350b3: ; preds = %b2, %b0351 ret void352}353 354; CHECK-LABEL: f13:355; CHECK: loop0356; a < b357define void @f13(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {358b0:359 %v0 = icmp sle i32 %a1, %a2360 br i1 %v0, label %b1, label %b3361 362b1: ; preds = %b0363 br label %b2364 365b2: ; preds = %b2, %b1366 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]367 %v2 = getelementptr inbounds i8, ptr %a0, i32 %v1368 %v3 = load i8, ptr %v2, align 1369 %v4 = zext i8 %v3 to i32370 %v5 = add nsw i32 %v4, 1371 %v6 = trunc i32 %v5 to i8372 store i8 %v6, ptr %v2, align 1373 %v7 = add nsw i32 %v1, 8374 %v8 = icmp sle i32 %v7, %a2375 br i1 %v8, label %b2, label %b3376 377b3: ; preds = %b2, %b0378 ret void379}380 381; CHECK-LABEL: f14:382; CHECK: loop0383; a < b384define void @f14(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {385b0:386 %v0 = icmp sle i32 %a1, %a2387 br i1 %v0, label %b1, label %b3388 389b1: ; preds = %b0390 br label %b2391 392b2: ; preds = %b2, %b1393 %v1 = phi i32 [ %a1, %b1 ], [ %v7, %b2 ]394 %v2 = getelementptr inbounds i8, ptr %a0, i32 %v1395 %v3 = load i8, ptr %v2, align 1396 %v4 = zext i8 %v3 to i32397 %v5 = add nsw i32 %v4, 1398 %v6 = trunc i32 %v5 to i8399 store i8 %v6, ptr %v2, align 1400 %v7 = add nsw i32 %v1, 16401 %v8 = icmp sle i32 %v7, %a2402 br i1 %v8, label %b2, label %b3403 404b3: ; preds = %b2, %b0405 ret void406}407 408attributes #0 = { nounwind "target-cpu"="hexagonv5" }409