437 lines · plain
1; RUN: llc -verify-machineinstrs < %s | FileCheck %s2target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64"3target triple = "powerpc64-unknown-linux-gnu"4 5; CHECK: test_pos1_ir_sle6; CHECK: bdnz7; a < b8define void @test_pos1_ir_sle(ptr nocapture %p, i32 %a, i32 %b) nounwind {9entry:10 %cmp3 = icmp sle i32 28395, %b11 br i1 %cmp3, label %for.body.lr.ph, label %for.end12 13for.body.lr.ph: ; preds = %entry14 br label %for.body15 16for.body: ; preds = %for.body.lr.ph, %for.body17 %i.04 = phi i32 [ 28395, %for.body.lr.ph ], [ %inc, %for.body ]18 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.0419 %0 = load i8, ptr %arrayidx, align 120 %conv = zext i8 %0 to i3221 %add = add nsw i32 %conv, 122 %conv1 = trunc i32 %add to i823 store i8 %conv1, ptr %arrayidx, align 124 %inc = add nsw i32 %i.04, 125 %cmp = icmp sle i32 %inc, %b26 br i1 %cmp, label %for.body, label %for.end27 28for.end: ; preds = %for.body, %entry29 ret void30}31 32 33 34; CHECK: test_pos2_ir_sle35; CHECK: bdnz36; a < b37define void @test_pos2_ir_sle(ptr nocapture %p, i32 %a, i32 %b) nounwind {38entry:39 %cmp3 = icmp sle i32 9073, %b40 br i1 %cmp3, label %for.body.lr.ph, label %for.end41 42for.body.lr.ph: ; preds = %entry43 br label %for.body44 45for.body: ; preds = %for.body.lr.ph, %for.body46 %i.04 = phi i32 [ 9073, %for.body.lr.ph ], [ %inc, %for.body ]47 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.0448 %0 = load i8, ptr %arrayidx, align 149 %conv = zext i8 %0 to i3250 %add = add nsw i32 %conv, 151 %conv1 = trunc i32 %add to i852 store i8 %conv1, ptr %arrayidx, align 153 %inc = add nsw i32 %i.04, 254 %cmp = icmp sle i32 %inc, %b55 br i1 %cmp, label %for.body, label %for.end56 57for.end: ; preds = %for.body, %entry58 ret void59}60 61 62 63; CHECK: test_pos4_ir_sle64; CHECK: bdnz65; a < b66define void @test_pos4_ir_sle(ptr nocapture %p, i32 %a, i32 %b) nounwind {67entry:68 %cmp3 = icmp sle i32 21956, %b69 br i1 %cmp3, label %for.body.lr.ph, label %for.end70 71for.body.lr.ph: ; preds = %entry72 br label %for.body73 74for.body: ; preds = %for.body.lr.ph, %for.body75 %i.04 = phi i32 [ 21956, %for.body.lr.ph ], [ %inc, %for.body ]76 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.0477 %0 = load i8, ptr %arrayidx, align 178 %conv = zext i8 %0 to i3279 %add = add nsw i32 %conv, 180 %conv1 = trunc i32 %add to i881 store i8 %conv1, ptr %arrayidx, align 182 %inc = add nsw i32 %i.04, 483 %cmp = icmp sle i32 %inc, %b84 br i1 %cmp, label %for.body, label %for.end85 86for.end: ; preds = %for.body, %entry87 ret void88}89 90 91 92; CHECK: test_pos8_ir_sle93; CHECK: bdnz94; a < b95define void @test_pos8_ir_sle(ptr nocapture %p, i32 %a, i32 %b) nounwind {96entry:97 %cmp3 = icmp sle i32 16782, %b98 br i1 %cmp3, label %for.body.lr.ph, label %for.end99 100for.body.lr.ph: ; preds = %entry101 br label %for.body102 103for.body: ; preds = %for.body.lr.ph, %for.body104 %i.04 = phi i32 [ 16782, %for.body.lr.ph ], [ %inc, %for.body ]105 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04106 %0 = load i8, ptr %arrayidx, align 1107 %conv = zext i8 %0 to i32108 %add = add nsw i32 %conv, 1109 %conv1 = trunc i32 %add to i8110 store i8 %conv1, ptr %arrayidx, align 1111 %inc = add nsw i32 %i.04, 8112 %cmp = icmp sle i32 %inc, %b113 br i1 %cmp, label %for.body, label %for.end114 115for.end: ; preds = %for.body, %entry116 ret void117}118 119 120 121; CHECK: test_pos16_ir_sle122; CHECK: bdnz123; a < b124define void @test_pos16_ir_sle(ptr nocapture %p, i32 %a, i32 %b) nounwind {125entry:126 %cmp3 = icmp sle i32 19097, %b127 br i1 %cmp3, label %for.body.lr.ph, label %for.end128 129for.body.lr.ph: ; preds = %entry130 br label %for.body131 132for.body: ; preds = %for.body.lr.ph, %for.body133 %i.04 = phi i32 [ 19097, %for.body.lr.ph ], [ %inc, %for.body ]134 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04135 %0 = load i8, ptr %arrayidx, align 1136 %conv = zext i8 %0 to i32137 %add = add nsw i32 %conv, 1138 %conv1 = trunc i32 %add to i8139 store i8 %conv1, ptr %arrayidx, align 1140 %inc = add nsw i32 %i.04, 16141 %cmp = icmp sle i32 %inc, %b142 br i1 %cmp, label %for.body, label %for.end143 144for.end: ; preds = %for.body, %entry145 ret void146}147 148 149 150; CHECK: test_pos1_ri_sle151; CHECK: bdnz152; a < b153define void @test_pos1_ri_sle(ptr nocapture %p, i32 %a, i32 %b) nounwind {154entry:155 %cmp3 = icmp sle i32 %a, 14040156 br i1 %cmp3, label %for.body.lr.ph, label %for.end157 158for.body.lr.ph: ; preds = %entry159 br label %for.body160 161for.body: ; preds = %for.body.lr.ph, %for.body162 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]163 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04164 %0 = load i8, ptr %arrayidx, align 1165 %conv = zext i8 %0 to i32166 %add = add nsw i32 %conv, 1167 %conv1 = trunc i32 %add to i8168 store i8 %conv1, ptr %arrayidx, align 1169 %inc = add nsw i32 %i.04, 1170 %cmp = icmp sle i32 %inc, 14040171 br i1 %cmp, label %for.body, label %for.end172 173for.end: ; preds = %for.body, %entry174 ret void175}176 177 178 179; CHECK: test_pos2_ri_sle180; CHECK: bdnz181; a < b182define void @test_pos2_ri_sle(ptr nocapture %p, i32 %a, i32 %b) nounwind {183entry:184 %cmp3 = icmp sle i32 %a, 13710185 br i1 %cmp3, label %for.body.lr.ph, label %for.end186 187for.body.lr.ph: ; preds = %entry188 br label %for.body189 190for.body: ; preds = %for.body.lr.ph, %for.body191 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]192 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04193 %0 = load i8, ptr %arrayidx, align 1194 %conv = zext i8 %0 to i32195 %add = add nsw i32 %conv, 1196 %conv1 = trunc i32 %add to i8197 store i8 %conv1, ptr %arrayidx, align 1198 %inc = add nsw i32 %i.04, 2199 %cmp = icmp sle i32 %inc, 13710200 br i1 %cmp, label %for.body, label %for.end201 202for.end: ; preds = %for.body, %entry203 ret void204}205 206 207 208; CHECK: test_pos4_ri_sle209; CHECK: bdnz210; a < b211define void @test_pos4_ri_sle(ptr nocapture %p, i32 %a, i32 %b) nounwind {212entry:213 %cmp3 = icmp sle i32 %a, 9920214 br i1 %cmp3, label %for.body.lr.ph, label %for.end215 216for.body.lr.ph: ; preds = %entry217 br label %for.body218 219for.body: ; preds = %for.body.lr.ph, %for.body220 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]221 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04222 %0 = load i8, ptr %arrayidx, align 1223 %conv = zext i8 %0 to i32224 %add = add nsw i32 %conv, 1225 %conv1 = trunc i32 %add to i8226 store i8 %conv1, ptr %arrayidx, align 1227 %inc = add nsw i32 %i.04, 4228 %cmp = icmp sle i32 %inc, 9920229 br i1 %cmp, label %for.body, label %for.end230 231for.end: ; preds = %for.body, %entry232 ret void233}234 235 236 237; CHECK: test_pos8_ri_sle238; CHECK: bdnz239; a < b240define void @test_pos8_ri_sle(ptr nocapture %p, i32 %a, i32 %b) nounwind {241entry:242 %cmp3 = icmp sle i32 %a, 18924243 br i1 %cmp3, label %for.body.lr.ph, label %for.end244 245for.body.lr.ph: ; preds = %entry246 br label %for.body247 248for.body: ; preds = %for.body.lr.ph, %for.body249 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]250 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04251 %0 = load i8, ptr %arrayidx, align 1252 %conv = zext i8 %0 to i32253 %add = add nsw i32 %conv, 1254 %conv1 = trunc i32 %add to i8255 store i8 %conv1, ptr %arrayidx, align 1256 %inc = add nsw i32 %i.04, 8257 %cmp = icmp sle i32 %inc, 18924258 br i1 %cmp, label %for.body, label %for.end259 260for.end: ; preds = %for.body, %entry261 ret void262}263 264 265 266; CHECK: test_pos16_ri_sle267; CHECK: bdnz268; a < b269define void @test_pos16_ri_sle(ptr nocapture %p, i32 %a, i32 %b) nounwind {270entry:271 %cmp3 = icmp sle i32 %a, 11812272 br i1 %cmp3, label %for.body.lr.ph, label %for.end273 274for.body.lr.ph: ; preds = %entry275 br label %for.body276 277for.body: ; preds = %for.body.lr.ph, %for.body278 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]279 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04280 %0 = load i8, ptr %arrayidx, align 1281 %conv = zext i8 %0 to i32282 %add = add nsw i32 %conv, 1283 %conv1 = trunc i32 %add to i8284 store i8 %conv1, ptr %arrayidx, align 1285 %inc = add nsw i32 %i.04, 16286 %cmp = icmp sle i32 %inc, 11812287 br i1 %cmp, label %for.body, label %for.end288 289for.end: ; preds = %for.body, %entry290 ret void291}292 293 294 295; CHECK: test_pos1_rr_sle296; CHECK: bdnz297; a < b298define void @test_pos1_rr_sle(ptr nocapture %p, i32 %a, i32 %b) nounwind {299entry:300 %cmp3 = icmp sle i32 %a, %b301 br i1 %cmp3, label %for.body.lr.ph, label %for.end302 303for.body.lr.ph: ; preds = %entry304 br label %for.body305 306for.body: ; preds = %for.body.lr.ph, %for.body307 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]308 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04309 %0 = load i8, ptr %arrayidx, align 1310 %conv = zext i8 %0 to i32311 %add = add nsw i32 %conv, 1312 %conv1 = trunc i32 %add to i8313 store i8 %conv1, ptr %arrayidx, align 1314 %inc = add nsw i32 %i.04, 1315 %cmp = icmp sle i32 %inc, %b316 br i1 %cmp, label %for.body, label %for.end317 318for.end: ; preds = %for.body, %entry319 ret void320}321 322 323 324; CHECK: test_pos2_rr_sle325; CHECK: bdnz326; a < b327define void @test_pos2_rr_sle(ptr nocapture %p, i32 %a, i32 %b) nounwind {328entry:329 %cmp3 = icmp sle i32 %a, %b330 br i1 %cmp3, label %for.body.lr.ph, label %for.end331 332for.body.lr.ph: ; preds = %entry333 br label %for.body334 335for.body: ; preds = %for.body.lr.ph, %for.body336 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]337 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04338 %0 = load i8, ptr %arrayidx, align 1339 %conv = zext i8 %0 to i32340 %add = add nsw i32 %conv, 1341 %conv1 = trunc i32 %add to i8342 store i8 %conv1, ptr %arrayidx, align 1343 %inc = add nsw i32 %i.04, 2344 %cmp = icmp sle i32 %inc, %b345 br i1 %cmp, label %for.body, label %for.end346 347for.end: ; preds = %for.body, %entry348 ret void349}350 351 352 353; CHECK: test_pos4_rr_sle354; CHECK: bdnz355; a < b356define void @test_pos4_rr_sle(ptr nocapture %p, i32 %a, i32 %b) nounwind {357entry:358 %cmp3 = icmp sle i32 %a, %b359 br i1 %cmp3, label %for.body.lr.ph, label %for.end360 361for.body.lr.ph: ; preds = %entry362 br label %for.body363 364for.body: ; preds = %for.body.lr.ph, %for.body365 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]366 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04367 %0 = load i8, ptr %arrayidx, align 1368 %conv = zext i8 %0 to i32369 %add = add nsw i32 %conv, 1370 %conv1 = trunc i32 %add to i8371 store i8 %conv1, ptr %arrayidx, align 1372 %inc = add nsw i32 %i.04, 4373 %cmp = icmp sle i32 %inc, %b374 br i1 %cmp, label %for.body, label %for.end375 376for.end: ; preds = %for.body, %entry377 ret void378}379 380 381 382; CHECK: test_pos8_rr_sle383; CHECK: bdnz384; a < b385define void @test_pos8_rr_sle(ptr nocapture %p, i32 %a, i32 %b) nounwind {386entry:387 %cmp3 = icmp sle i32 %a, %b388 br i1 %cmp3, label %for.body.lr.ph, label %for.end389 390for.body.lr.ph: ; preds = %entry391 br label %for.body392 393for.body: ; preds = %for.body.lr.ph, %for.body394 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]395 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04396 %0 = load i8, ptr %arrayidx, align 1397 %conv = zext i8 %0 to i32398 %add = add nsw i32 %conv, 1399 %conv1 = trunc i32 %add to i8400 store i8 %conv1, ptr %arrayidx, align 1401 %inc = add nsw i32 %i.04, 8402 %cmp = icmp sle i32 %inc, %b403 br i1 %cmp, label %for.body, label %for.end404 405for.end: ; preds = %for.body, %entry406 ret void407}408 409 410 411; CHECK: test_pos16_rr_sle412; CHECK: bdnz413; a < b414define void @test_pos16_rr_sle(ptr nocapture %p, i32 %a, i32 %b) nounwind {415entry:416 %cmp3 = icmp sle i32 %a, %b417 br i1 %cmp3, label %for.body.lr.ph, label %for.end418 419for.body.lr.ph: ; preds = %entry420 br label %for.body421 422for.body: ; preds = %for.body.lr.ph, %for.body423 %i.04 = phi i32 [ %a, %for.body.lr.ph ], [ %inc, %for.body ]424 %arrayidx = getelementptr inbounds i8, ptr %p, i32 %i.04425 %0 = load i8, ptr %arrayidx, align 1426 %conv = zext i8 %0 to i32427 %add = add nsw i32 %conv, 1428 %conv1 = trunc i32 %add to i8429 store i8 %conv1, ptr %arrayidx, align 1430 %inc = add nsw i32 %i.04, 16431 %cmp = icmp sle i32 %inc, %b432 br i1 %cmp, label %for.body, label %for.end433 434for.end: ; preds = %for.body, %entry435 ret void436}437