410 lines · plain
1; RUN: llc -mtriple=hexagon -O3 < %s | FileCheck %s2 3; CHECK-LABEL: @test_pos1_ir_slt4; CHECK: loop05; a < b6define void @test_pos1_ir_slt(ptr nocapture %p, i32 %a, i32 %b) nounwind {7entry:8 %cmp3 = icmp slt i32 8531, %b9 br i1 %cmp3, label %for.body.lr.ph, label %for.end10 11for.body.lr.ph:12 br label %for.body13 14for.body:15 %i.04 = phi i32 [ 8531, %for.body.lr.ph ], [ %inc, %for.body ]16 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.0417 %0 = load i8, ptr %arrayidx, align 118 %conv = zext i8 %0 to i3219 %add = add nsw i32 %conv, 120 %conv1 = trunc i32 %add to i821 store i8 %conv1, ptr %arrayidx, align 122 %inc = add nsw i32 %i.04, 123 %cmp = icmp slt i32 %inc, %b24 br i1 %cmp, label %for.body, label %for.end25 26for.end:27 ret void28}29 30; CHECK-LABEL: @test_pos2_ir_slt31; CHECK: loop032; a < b33define void @test_pos2_ir_slt(ptr nocapture %p, i32 %a, i32 %b) nounwind {34entry:35 %cmp3 = icmp slt i32 9152, %b36 br i1 %cmp3, label %for.body.lr.ph, label %for.end37 38for.body.lr.ph:39 br label %for.body40 41for.body:42 %i.04 = phi i32 [ 9152, %for.body.lr.ph ], [ %inc, %for.body ]43 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.0444 %0 = load i8, ptr %arrayidx, align 145 %conv = zext i8 %0 to i3246 %add = add nsw i32 %conv, 147 %conv1 = trunc i32 %add to i848 store i8 %conv1, ptr %arrayidx, align 149 %inc = add nsw i32 %i.04, 250 %cmp = icmp slt i32 %inc, %b51 br i1 %cmp, label %for.body, label %for.end52 53for.end:54 ret void55}56 57; CHECK-LABEL: @test_pos4_ir_slt58; CHECK: loop059; a < b60define void @test_pos4_ir_slt(ptr nocapture %p, i32 %a, i32 %b) nounwind {61entry:62 %cmp3 = icmp slt i32 18851, %b63 br i1 %cmp3, label %for.body.lr.ph, label %for.end64 65for.body.lr.ph:66 br label %for.body67 68for.body:69 %i.04 = phi i32 [ 18851, %for.body.lr.ph ], [ %inc, %for.body ]70 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.0471 %0 = load i8, ptr %arrayidx, align 172 %conv = zext i8 %0 to i3273 %add = add nsw i32 %conv, 174 %conv1 = trunc i32 %add to i875 store i8 %conv1, ptr %arrayidx, align 176 %inc = add nsw i32 %i.04, 477 %cmp = icmp slt i32 %inc, %b78 br i1 %cmp, label %for.body, label %for.end79 80for.end:81 ret void82}83 84; CHECK-LABEL: @test_pos8_ir_slt85; CHECK: loop086; a < b87define void @test_pos8_ir_slt(ptr nocapture %p, i32 %a, i32 %b) nounwind {88entry:89 %cmp3 = icmp slt i32 25466, %b90 br i1 %cmp3, label %for.body.lr.ph, label %for.end91 92for.body.lr.ph:93 br label %for.body94 95for.body:96 %i.04 = phi i32 [ 25466, %for.body.lr.ph ], [ %inc, %for.body ]97 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.0498 %0 = load i8, ptr %arrayidx, align 199 %conv = zext i8 %0 to i32100 %add = add nsw i32 %conv, 1101 %conv1 = trunc i32 %add to i8102 store i8 %conv1, ptr %arrayidx, align 1103 %inc = add nsw i32 %i.04, 8104 %cmp = icmp slt i32 %inc, %b105 br i1 %cmp, label %for.body, label %for.end106 107for.end:108 ret void109}110 111; CHECK-LABEL: @test_pos16_ir_slt112; CHECK: loop0113; a < b114define void @test_pos16_ir_slt(ptr nocapture %p, i32 %a, i32 %b) nounwind {115entry:116 %cmp3 = icmp slt i32 9295, %b117 br i1 %cmp3, label %for.body.lr.ph, label %for.end118 119for.body.lr.ph:120 br label %for.body121 122for.body:123 %i.04 = phi i32 [ 9295, %for.body.lr.ph ], [ %inc, %for.body ]124 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04125 %0 = load i8, ptr %arrayidx, align 1126 %conv = zext i8 %0 to i32127 %add = add nsw i32 %conv, 1128 %conv1 = trunc i32 %add to i8129 store i8 %conv1, ptr %arrayidx, align 1130 %inc = add nsw i32 %i.04, 16131 %cmp = icmp slt i32 %inc, %b132 br i1 %cmp, label %for.body, label %for.end133 134for.end:135 ret void136}137 138; CHECK-LABEL: @test_pos1_ri_slt139; CHECK: loop0140; a < b141define void @test_pos1_ri_slt(ptr nocapture %p, i32 %a, i32 %b) nounwind {142entry:143 %cmp3 = icmp slt i32 %a, 31236144 br i1 %cmp3, label %for.body.lr.ph, label %for.end145 146for.body.lr.ph:147 br label %for.body148 149for.body:150 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]151 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04152 %0 = load i8, ptr %arrayidx, align 1153 %conv = zext i8 %0 to i32154 %add = add nsw i32 %conv, 1155 %conv1 = trunc i32 %add to i8156 store i8 %conv1, ptr %arrayidx, align 1157 %inc = add nsw i32 %i.04, 1158 %cmp = icmp slt i32 %inc, 31236159 br i1 %cmp, label %for.body, label %for.end160 161for.end:162 ret void163}164 165; CHECK-LABEL: @test_pos2_ri_slt166; CHECK: loop0167; a < b168define void @test_pos2_ri_slt(ptr nocapture %p, i32 %a, i32 %b) nounwind {169entry:170 %cmp3 = icmp slt i32 %a, 22653171 br i1 %cmp3, label %for.body.lr.ph, label %for.end172 173for.body.lr.ph:174 br label %for.body175 176for.body:177 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]178 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04179 %0 = load i8, ptr %arrayidx, align 1180 %conv = zext i8 %0 to i32181 %add = add nsw i32 %conv, 1182 %conv1 = trunc i32 %add to i8183 store i8 %conv1, ptr %arrayidx, align 1184 %inc = add nsw i32 %i.04, 2185 %cmp = icmp slt i32 %inc, 22653186 br i1 %cmp, label %for.body, label %for.end187 188for.end:189 ret void190}191 192; CHECK-LABEL: @test_pos4_ri_slt193; CHECK: loop0194; a < b195define void @test_pos4_ri_slt(ptr nocapture %p, i32 %a, i32 %b) nounwind {196entry:197 %cmp3 = icmp slt i32 %a, 1431198 br i1 %cmp3, label %for.body.lr.ph, label %for.end199 200for.body.lr.ph:201 br label %for.body202 203for.body:204 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]205 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04206 %0 = load i8, ptr %arrayidx, align 1207 %conv = zext i8 %0 to i32208 %add = add nsw i32 %conv, 1209 %conv1 = trunc i32 %add to i8210 store i8 %conv1, ptr %arrayidx, align 1211 %inc = add nsw i32 %i.04, 4212 %cmp = icmp slt i32 %inc, 1431213 br i1 %cmp, label %for.body, label %for.end214 215for.end:216 ret void217}218 219; CHECK-LABEL: @test_pos8_ri_slt220; CHECK: loop0221; a < b222define void @test_pos8_ri_slt(ptr nocapture %p, i32 %a, i32 %b) nounwind {223entry:224 %cmp3 = icmp slt i32 %a, 22403225 br i1 %cmp3, label %for.body.lr.ph, label %for.end226 227for.body.lr.ph:228 br label %for.body229 230for.body:231 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]232 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04233 %0 = load i8, ptr %arrayidx, align 1234 %conv = zext i8 %0 to i32235 %add = add nsw i32 %conv, 1236 %conv1 = trunc i32 %add to i8237 store i8 %conv1, ptr %arrayidx, align 1238 %inc = add nsw i32 %i.04, 8239 %cmp = icmp slt i32 %inc, 22403240 br i1 %cmp, label %for.body, label %for.end241 242for.end:243 ret void244}245 246; CHECK-LABEL: @test_pos16_ri_slt247; CHECK: loop0248; a < b249define void @test_pos16_ri_slt(ptr nocapture %p, i32 %a, i32 %b) nounwind {250entry:251 %cmp3 = icmp slt i32 %a, 21715252 br i1 %cmp3, label %for.body.lr.ph, label %for.end253 254for.body.lr.ph:255 br label %for.body256 257for.body:258 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]259 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04260 %0 = load i8, ptr %arrayidx, align 1261 %conv = zext i8 %0 to i32262 %add = add nsw i32 %conv, 1263 %conv1 = trunc i32 %add to i8264 store i8 %conv1, ptr %arrayidx, align 1265 %inc = add nsw i32 %i.04, 16266 %cmp = icmp slt i32 %inc, 21715267 br i1 %cmp, label %for.body, label %for.end268 269for.end:270 ret void271}272 273; CHECK-LABEL: @test_pos1_rr_slt274; CHECK: loop0275; a < b276define void @test_pos1_rr_slt(ptr nocapture %p, i32 %a, i32 %b) nounwind {277entry:278 %cmp3 = icmp slt i32 %a, %b279 br i1 %cmp3, label %for.body.lr.ph, label %for.end280 281for.body.lr.ph:282 br label %for.body283 284for.body:285 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]286 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04287 %0 = load i8, ptr %arrayidx, align 1288 %conv = zext i8 %0 to i32289 %add = add nsw i32 %conv, 1290 %conv1 = trunc i32 %add to i8291 store i8 %conv1, ptr %arrayidx, align 1292 %inc = add nsw i32 %i.04, 1293 %cmp = icmp slt i32 %inc, %b294 br i1 %cmp, label %for.body, label %for.end295 296for.end:297 ret void298}299 300; CHECK-LABEL: @test_pos2_rr_slt301; CHECK: loop0302; a < b303define void @test_pos2_rr_slt(ptr nocapture %p, i32 %a, i32 %b) nounwind {304entry:305 %cmp3 = icmp slt i32 %a, %b306 br i1 %cmp3, label %for.body.lr.ph, label %for.end307 308for.body.lr.ph:309 br label %for.body310 311for.body:312 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]313 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04314 %0 = load i8, ptr %arrayidx, align 1315 %conv = zext i8 %0 to i32316 %add = add nsw i32 %conv, 1317 %conv1 = trunc i32 %add to i8318 store i8 %conv1, ptr %arrayidx, align 1319 %inc = add nsw i32 %i.04, 2320 %cmp = icmp slt i32 %inc, %b321 br i1 %cmp, label %for.body, label %for.end322 323for.end:324 ret void325}326 327; CHECK-LABEL: @test_pos4_rr_slt328; CHECK: loop0329; a < b330define void @test_pos4_rr_slt(ptr nocapture %p, i32 %a, i32 %b) nounwind {331entry:332 %cmp3 = icmp slt i32 %a, %b333 br i1 %cmp3, label %for.body.lr.ph, label %for.end334 335for.body.lr.ph:336 br label %for.body337 338for.body:339 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]340 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04341 %0 = load i8, ptr %arrayidx, align 1342 %conv = zext i8 %0 to i32343 %add = add nsw i32 %conv, 1344 %conv1 = trunc i32 %add to i8345 store i8 %conv1, ptr %arrayidx, align 1346 %inc = add nsw i32 %i.04, 4347 %cmp = icmp slt i32 %inc, %b348 br i1 %cmp, label %for.body, label %for.end349 350for.end:351 ret void352}353 354; CHECK-LABEL: @test_pos8_rr_slt355; CHECK: loop0356; a < b357define void @test_pos8_rr_slt(ptr nocapture %p, i32 %a, i32 %b) nounwind {358entry:359 %cmp3 = icmp slt i32 %a, %b360 br i1 %cmp3, label %for.body.lr.ph, label %for.end361 362for.body.lr.ph:363 br label %for.body364 365for.body:366 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]367 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04368 %0 = load i8, ptr %arrayidx, align 1369 %conv = zext i8 %0 to i32370 %add = add nsw i32 %conv, 1371 %conv1 = trunc i32 %add to i8372 store i8 %conv1, ptr %arrayidx, align 1373 %inc = add nsw i32 %i.04, 8374 %cmp = icmp slt i32 %inc, %b375 br i1 %cmp, label %for.body, label %for.end376 377for.end:378 ret void379}380 381; CHECK-LABEL: @test_pos16_rr_slt382; CHECK: loop0383; a < b384define void @test_pos16_rr_slt(ptr nocapture %p, i32 %a, i32 %b) nounwind {385entry:386 %cmp3 = icmp slt i32 %a, %b387 br i1 %cmp3, label %for.body.lr.ph, label %for.end388 389for.body.lr.ph:390 br label %for.body391 392for.body:393 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]394 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04395 %0 = load i8, ptr %arrayidx, align 1396 %conv = zext i8 %0 to i32397 %add = add nsw i32 %conv, 1398 %conv1 = trunc i32 %add to i8399 store i8 %conv1, ptr %arrayidx, align 1400 %inc = add nsw i32 %i.04, 16401 %cmp = icmp slt i32 %inc, %b402 br i1 %cmp, label %for.body, label %for.end403 404for.end:405 ret void406}407 408 409 410