6514 lines · plain
1# RUN: llc -run-pass ppc-mi-peepholes -ppc-convert-rr-to-ri %s -o - -verify-machineinstrs | FileCheck %s2# RUN: llc -start-after ppc-mi-peepholes -ppc-late-peephole %s -o - -verify-machineinstrs | FileCheck %s --check-prefix=CHECK-LATE3 4--- |5 ; ModuleID = 'convert-rr-to-ri-instrs.ll'6 source_filename = "convert-rr-to-ri-instrs.c"7 target datalayout = "e-m:e-i64:64-n32:64"8 target triple = "powerpc64le-unknown-linux-gnu"9 10 ; Function Attrs: norecurse nounwind readnone11 define signext i32 @testADD4(i32 signext %a, i32 signext %b) local_unnamed_addr #0 {12 entry:13 %add = add nsw i32 %a, 3314 %add1 = add nsw i32 %add, %b15 ret i32 %add116 }17 18 ; Function Attrs: norecurse nounwind readnone19 define i64 @testADD8(i64 %a, i64 %b) local_unnamed_addr #0 {20 entry:21 %add = add nsw i64 %a, 3322 %add1 = add nsw i64 %add, %b23 ret i64 %add124 }25 26 ; Function Attrs: norecurse nounwind readnone27 define i128 @testADDC(i128 %a, i128 %b) local_unnamed_addr #0 {28 entry:29 %add = add nsw i128 %b, %a30 ret i128 %add31 }32 33 ; Function Attrs: norecurse nounwind readnone34 define i128 @testADDC8(i128 %a, i128 %b) local_unnamed_addr #0 {35 entry:36 %add = add nsw i128 %b, %a37 ret i128 %add38 }39 40 ; Function Attrs: norecurse nounwind readnone41 define i64 @testADDC_rec(i64 %a, i64 %b) local_unnamed_addr #0 {42 entry:43 %add = add nsw i64 %b, %a44 %cmp = icmp eq i64 %add, 045 %neg = sext i1 %cmp to i6446 %retval.0 = xor i64 %add, %neg47 ret i64 %retval.048 }49 50 ; Function Attrs: norecurse nounwind readnone51 define signext i32 @testADDI(i32 signext %a) local_unnamed_addr #0 {52 entry:53 %add = add nsw i32 %a, 4454 ret i32 %add55 }56 57 ; Function Attrs: norecurse nounwind readnone58 define signext i32 @testADDI8(i32 signext %a) local_unnamed_addr #0 {59 entry:60 %add = add nsw i32 %a, 4461 ret i32 %add62 }63 64 ; Function Attrs: norecurse nounwind readnone65 define signext i32 @testAND_rec(i64 %a, i64 %b) local_unnamed_addr #0 {66 entry:67 %and = and i64 %b, %a68 %tobool = icmp eq i64 %and, 069 %cond = select i1 %tobool, i64 %b, i64 %a70 %conv = trunc i64 %cond to i3271 ret i32 %conv72 }73 74 ; Function Attrs: norecurse nounwind readnone75 define i64 @testAND8_rec(i64 %a, i64 %b) local_unnamed_addr #0 {76 entry:77 %and = and i64 %b, %a78 %tobool = icmp eq i64 %and, 079 %cond = select i1 %tobool, i64 %b, i64 %a80 ret i64 %cond81 }82 83 ; Function Attrs: norecurse nounwind readnone84 define i64 @testCMPD(i64 %a, i64 %b) local_unnamed_addr #0 {85 entry:86 %cmp = icmp sgt i64 %a, %b87 %add = select i1 %cmp, i64 0, i64 %a88 %cond = add nsw i64 %add, %b89 ret i64 %cond90 }91 92 ; Function Attrs: norecurse nounwind readnone93 define i64 @testCMPDI(i64 %a, i64 %b) local_unnamed_addr #0 {94 entry:95 %cmp = icmp sgt i64 %a, 8796 %add = select i1 %cmp, i64 0, i64 %a97 %cond = add nsw i64 %add, %b98 ret i64 %cond99 }100 101 ; Function Attrs: norecurse nounwind readnone102 define i64 @testCMPDI_F(i64 %a, i64 %b) local_unnamed_addr #0 {103 entry:104 %cmp = icmp sgt i64 %a, 87105 %add = select i1 %cmp, i64 0, i64 %a106 %cond = add nsw i64 %add, %b107 ret i64 %cond108 }109 110 ; Function Attrs: norecurse nounwind readnone111 define i64 @testCMPLD(i64 %a, i64 %b) local_unnamed_addr #0 {112 entry:113 %cmp = icmp ugt i64 %a, %b114 %add = select i1 %cmp, i64 0, i64 %a115 %cond = add i64 %add, %b116 ret i64 %cond117 }118 119 ; Function Attrs: norecurse nounwind readnone120 define i64 @testCMPLDI(i64 %a, i64 %b) local_unnamed_addr #0 {121 entry:122 %cmp = icmp ugt i64 %a, 87123 %add = select i1 %cmp, i64 0, i64 %a124 %cond = add i64 %add, %b125 ret i64 %cond126 }127 128 ; Function Attrs: norecurse nounwind readnone129 define signext i32 @testCMPW(i32 signext %a, i32 signext %b) local_unnamed_addr #0 {130 entry:131 %cmp = icmp sgt i32 %a, %b132 %add = select i1 %cmp, i32 0, i32 %a133 %cond = add nsw i32 %add, %b134 ret i32 %cond135 }136 137 ; Function Attrs: norecurse nounwind readnone138 define signext i32 @testCMPWI(i32 signext %a, i32 signext %b) local_unnamed_addr #0 {139 entry:140 %cmp = icmp sgt i32 %a, 87141 %add = select i1 %cmp, i32 0, i32 %a142 %cond = add nsw i32 %add, %b143 ret i32 %cond144 }145 146 ; Function Attrs: norecurse nounwind readnone147 define zeroext i32 @testCMPLW(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {148 entry:149 %cmp = icmp ugt i32 %a, %b150 %add = select i1 %cmp, i32 0, i32 %a151 %cond = add i32 %add, %b152 ret i32 %cond153 }154 155 ; Function Attrs: norecurse nounwind readnone156 define zeroext i32 @testCMPLWI(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {157 entry:158 %cmp = icmp ugt i32 %a, 87159 %add = select i1 %cmp, i32 0, i32 %a160 %cond = add i32 %add, %b161 ret i32 %cond162 }163 164 ; Function Attrs: norecurse nounwind readonly165 define zeroext i8 @testLBZUX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {166 entry:167 %add = add i32 %idx, 1168 %idxprom = zext i32 %add to i64169 %arrayidx = getelementptr inbounds i8, ptr %ptr, i64 %idxprom170 %0 = load i8, ptr %arrayidx, align 1, !tbaa !3171 %conv = zext i8 %0 to i32172 %add1 = add i32 %idx, 2173 %idxprom2 = zext i32 %add1 to i64174 %arrayidx3 = getelementptr inbounds i8, ptr %ptr, i64 %idxprom2175 %1 = load i8, ptr %arrayidx3, align 1, !tbaa !3176 %conv4 = zext i8 %1 to i32177 %add5 = add nuw nsw i32 %conv4, %conv178 %conv6 = trunc i32 %add5 to i8179 ret i8 %conv6180 }181 182 ; Function Attrs: norecurse nounwind readonly183 define zeroext i8 @testLBZX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {184 entry:185 %add = add i32 %idx, 1186 %idxprom = zext i32 %add to i64187 %arrayidx = getelementptr inbounds i8, ptr %ptr, i64 %idxprom188 %0 = load i8, ptr %arrayidx, align 1, !tbaa !3189 %conv = zext i8 %0 to i32190 %add1 = add i32 %idx, 2191 %idxprom2 = zext i32 %add1 to i64192 %arrayidx3 = getelementptr inbounds i8, ptr %ptr, i64 %idxprom2193 %1 = load i8, ptr %arrayidx3, align 1, !tbaa !3194 %conv4 = zext i8 %1 to i32195 %add5 = add nuw nsw i32 %conv4, %conv196 %conv6 = trunc i32 %add5 to i8197 ret i8 %conv6198 }199 200 ; Function Attrs: norecurse nounwind readonly201 define zeroext i16 @testLHZUX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {202 entry:203 %add = add i32 %idx, 1204 %idxprom = zext i32 %add to i64205 %arrayidx = getelementptr inbounds i16, ptr %ptr, i64 %idxprom206 %0 = load i16, ptr %arrayidx, align 2, !tbaa !6207 %conv = zext i16 %0 to i32208 %add1 = add i32 %idx, 2209 %idxprom2 = zext i32 %add1 to i64210 %arrayidx3 = getelementptr inbounds i16, ptr %ptr, i64 %idxprom2211 %1 = load i16, ptr %arrayidx3, align 2, !tbaa !6212 %conv4 = zext i16 %1 to i32213 %add5 = add nuw nsw i32 %conv4, %conv214 %conv6 = trunc i32 %add5 to i16215 ret i16 %conv6216 }217 218 ; Function Attrs: norecurse nounwind readonly219 define zeroext i16 @testLHZX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {220 entry:221 %add = add i32 %idx, 1222 %idxprom = zext i32 %add to i64223 %arrayidx = getelementptr inbounds i16, ptr %ptr, i64 %idxprom224 %0 = load i16, ptr %arrayidx, align 2, !tbaa !6225 %conv = zext i16 %0 to i32226 %add1 = add i32 %idx, 2227 %idxprom2 = zext i32 %add1 to i64228 %arrayidx3 = getelementptr inbounds i16, ptr %ptr, i64 %idxprom2229 %1 = load i16, ptr %arrayidx3, align 2, !tbaa !6230 %conv4 = zext i16 %1 to i32231 %add5 = add nuw nsw i32 %conv4, %conv232 %conv6 = trunc i32 %add5 to i16233 ret i16 %conv6234 }235 236 ; Function Attrs: norecurse nounwind readonly237 define signext i16 @testLHAUX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {238 entry:239 %add = add i32 %idx, 1240 %idxprom = zext i32 %add to i64241 %arrayidx = getelementptr inbounds i16, ptr %ptr, i64 %idxprom242 %0 = load i16, ptr %arrayidx, align 2, !tbaa !6243 %conv9 = zext i16 %0 to i32244 %add1 = add i32 %idx, 2245 %idxprom2 = zext i32 %add1 to i64246 %arrayidx3 = getelementptr inbounds i16, ptr %ptr, i64 %idxprom2247 %1 = load i16, ptr %arrayidx3, align 2, !tbaa !6248 %conv410 = zext i16 %1 to i32249 %add5 = add nuw nsw i32 %conv410, %conv9250 %conv6 = trunc i32 %add5 to i16251 ret i16 %conv6252 }253 254 ; Function Attrs: norecurse nounwind readonly255 define signext i16 @testLHAX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {256 entry:257 %add = add i32 %idx, 1258 %idxprom = zext i32 %add to i64259 %arrayidx = getelementptr inbounds i16, ptr %ptr, i64 %idxprom260 %0 = load i16, ptr %arrayidx, align 2, !tbaa !6261 %conv9 = zext i16 %0 to i32262 %add1 = add i32 %idx, 2263 %idxprom2 = zext i32 %add1 to i64264 %arrayidx3 = getelementptr inbounds i16, ptr %ptr, i64 %idxprom2265 %1 = load i16, ptr %arrayidx3, align 2, !tbaa !6266 %conv410 = zext i16 %1 to i32267 %add5 = add nuw nsw i32 %conv410, %conv9268 %conv6 = trunc i32 %add5 to i16269 ret i16 %conv6270 }271 272 ; Function Attrs: norecurse nounwind readonly273 define zeroext i32 @testLWZUX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {274 entry:275 %add = add i32 %idx, 1276 %idxprom = zext i32 %add to i64277 %arrayidx = getelementptr inbounds i32, ptr %ptr, i64 %idxprom278 %0 = load i32, ptr %arrayidx, align 4, !tbaa !8279 %add1 = add i32 %idx, 2280 %idxprom2 = zext i32 %add1 to i64281 %arrayidx3 = getelementptr inbounds i32, ptr %ptr, i64 %idxprom2282 %1 = load i32, ptr %arrayidx3, align 4, !tbaa !8283 %add4 = add i32 %1, %0284 ret i32 %add4285 }286 287 ; Function Attrs: norecurse nounwind readonly288 define zeroext i32 @testLWZX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {289 entry:290 %add = add i32 %idx, 1291 %idxprom = zext i32 %add to i64292 %arrayidx = getelementptr inbounds i32, ptr %ptr, i64 %idxprom293 %0 = load i32, ptr %arrayidx, align 4, !tbaa !8294 %add1 = add i32 %idx, 2295 %idxprom2 = zext i32 %add1 to i64296 %arrayidx3 = getelementptr inbounds i32, ptr %ptr, i64 %idxprom2297 %1 = load i32, ptr %arrayidx3, align 4, !tbaa !8298 %add4 = add i32 %1, %0299 ret i32 %add4300 }301 302 ; Function Attrs: norecurse nounwind readonly303 define i64 @testLWAX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {304 entry:305 %add = add i32 %idx, 1306 %idxprom = zext i32 %add to i64307 %arrayidx = getelementptr inbounds i32, ptr %ptr, i64 %idxprom308 %0 = load i32, ptr %arrayidx, align 4, !tbaa !8309 %conv = sext i32 %0 to i64310 %add1 = add i32 %idx, 2311 %idxprom2 = zext i32 %add1 to i64312 %arrayidx3 = getelementptr inbounds i32, ptr %ptr, i64 %idxprom2313 %1 = load i32, ptr %arrayidx3, align 4, !tbaa !8314 %conv4 = sext i32 %1 to i64315 %add5 = add nsw i64 %conv4, %conv316 ret i64 %add5317 }318 319 ; Function Attrs: norecurse nounwind readonly320 define i64 @testLDUX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {321 entry:322 %add = add i32 %idx, 1323 %idxprom = zext i32 %add to i64324 %arrayidx = getelementptr inbounds i64, ptr %ptr, i64 %idxprom325 %0 = load i64, ptr %arrayidx, align 8, !tbaa !10326 %add1 = add i32 %idx, 2327 %idxprom2 = zext i32 %add1 to i64328 %arrayidx3 = getelementptr inbounds i64, ptr %ptr, i64 %idxprom2329 %1 = load i64, ptr %arrayidx3, align 8, !tbaa !10330 %add4 = add i64 %1, %0331 ret i64 %add4332 }333 334 ; Function Attrs: norecurse nounwind readonly335 define i64 @testLDX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {336 entry:337 %add = add i32 %idx, 1338 %idxprom = zext i32 %add to i64339 %arrayidx = getelementptr inbounds i64, ptr %ptr, i64 %idxprom340 %0 = load i64, ptr %arrayidx, align 8, !tbaa !10341 %add1 = add i32 %idx, 2342 %idxprom2 = zext i32 %add1 to i64343 %arrayidx3 = getelementptr inbounds i64, ptr %ptr, i64 %idxprom2344 %1 = load i64, ptr %arrayidx3, align 8, !tbaa !10345 %add4 = add i64 %1, %0346 ret i64 %add4347 }348 349 ; Function Attrs: norecurse nounwind readonly350 define double @testLFDUX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #2 {351 entry:352 %add = add i32 %idx, 1353 %idxprom = zext i32 %add to i64354 %arrayidx = getelementptr inbounds double, ptr %ptr, i64 %idxprom355 %0 = load double, ptr %arrayidx, align 8, !tbaa !12356 %add1 = add i32 %idx, 2357 %idxprom2 = zext i32 %add1 to i64358 %arrayidx3 = getelementptr inbounds double, ptr %ptr, i64 %idxprom2359 %1 = load double, ptr %arrayidx3, align 8, !tbaa !12360 %add4 = fadd double %0, %1361 ret double %add4362 }363 364 ; Function Attrs: norecurse nounwind readonly365 define double @testLFDX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #2 {366 entry:367 %add = add i32 %idx, 1368 %idxprom = zext i32 %add to i64369 %arrayidx = getelementptr inbounds double, ptr %ptr, i64 %idxprom370 %0 = load double, ptr %arrayidx, align 8, !tbaa !12371 %add1 = add i32 %idx, 2372 %idxprom2 = zext i32 %add1 to i64373 %arrayidx3 = getelementptr inbounds double, ptr %ptr, i64 %idxprom2374 %1 = load double, ptr %arrayidx3, align 8, !tbaa !12375 %add4 = fadd double %0, %1376 ret double %add4377 }378 379 ; Function Attrs: norecurse nounwind readonly380 define <4 x float> @testLFSUX(ptr nocapture readonly %ptr, i32 signext %idx) local_unnamed_addr #2 {381 entry:382 %idxprom = sext i32 %idx to i64383 %arrayidx = getelementptr inbounds float, ptr %ptr, i64 %idxprom384 %0 = load float, ptr %arrayidx, align 4, !tbaa !14385 %conv = fptoui float %0 to i32386 %vecinit = insertelement <4 x i32> undef, i32 %conv, i32 0387 %1 = bitcast ptr %ptr to ptr388 %2 = shl i64 %idxprom, 2389 %uglygep = getelementptr i8, ptr %1, i64 %2390 %uglygep2 = getelementptr i8, ptr %uglygep, i64 4391 %3 = bitcast ptr %uglygep2 to ptr392 %4 = load float, ptr %3, align 4, !tbaa !14393 %conv3 = fptoui float %4 to i32394 %vecinit4 = insertelement <4 x i32> %vecinit, i32 %conv3, i32 1395 %uglygep5 = getelementptr i8, ptr %uglygep, i64 8396 %5 = bitcast ptr %uglygep5 to ptr397 %6 = load float, ptr %5, align 4, !tbaa !14398 %conv8 = fptoui float %6 to i32399 %vecinit9 = insertelement <4 x i32> %vecinit4, i32 %conv8, i32 2400 %uglygep8 = getelementptr i8, ptr %uglygep, i64 12401 %7 = bitcast ptr %uglygep8 to ptr402 %8 = load float, ptr %7, align 4, !tbaa !14403 %conv13 = fptoui float %8 to i32404 %vecinit14 = insertelement <4 x i32> %vecinit9, i32 %conv13, i32 3405 %9 = bitcast <4 x i32> %vecinit14 to <4 x float>406 ret <4 x float> %9407 }408 409 ; Function Attrs: norecurse nounwind readonly410 define float @testLFSX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #2 {411 entry:412 %add = add i32 %idx, 1413 %idxprom = zext i32 %add to i64414 %arrayidx = getelementptr inbounds float, ptr %ptr, i64 %idxprom415 %0 = load float, ptr %arrayidx, align 4, !tbaa !14416 %add1 = add i32 %idx, 2417 %idxprom2 = zext i32 %add1 to i64418 %arrayidx3 = getelementptr inbounds float, ptr %ptr, i64 %idxprom2419 %1 = load float, ptr %arrayidx3, align 4, !tbaa !14420 %add4 = fadd float %0, %1421 ret float %add4422 }423 424 ; Function Attrs: norecurse nounwind readonly425 define double @testLXSDX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {426 entry:427 %add = add i32 %idx, 1428 %idxprom = zext i32 %add to i64429 %arrayidx = getelementptr inbounds double, ptr %ptr, i64 %idxprom430 %0 = load double, ptr %arrayidx, align 8, !tbaa !12431 %add1 = add i32 %idx, 2432 %idxprom2 = zext i32 %add1 to i64433 %arrayidx3 = getelementptr inbounds double, ptr %ptr, i64 %idxprom2434 %1 = load double, ptr %arrayidx3, align 8, !tbaa !12435 %add4 = fadd double %0, %1436 ret double %add4437 }438 439 ; Function Attrs: norecurse nounwind readonly440 define float @testLXSSPX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {441 entry:442 %add = add i32 %idx, 1443 %idxprom = zext i32 %add to i64444 %arrayidx = getelementptr inbounds float, ptr %ptr, i64 %idxprom445 %0 = load float, ptr %arrayidx, align 4, !tbaa !14446 %add1 = add i32 %idx, 2447 %idxprom2 = zext i32 %add1 to i64448 %arrayidx3 = getelementptr inbounds float, ptr %ptr, i64 %idxprom2449 %1 = load float, ptr %arrayidx3, align 4, !tbaa !14450 %add4 = fadd float %0, %1451 ret float %add4452 }453 454 ; Function Attrs: norecurse nounwind readonly455 define <4 x i32> @testLXVX(ptr nocapture readonly %ptr, i32 zeroext %idx) local_unnamed_addr #1 {456 entry:457 %add = add i32 %idx, 1458 %idxprom = zext i32 %add to i64459 %arrayidx = getelementptr inbounds <4 x i32>, ptr %ptr, i64 %idxprom460 %0 = load <4 x i32>, ptr %arrayidx, align 16, !tbaa !3461 %add1 = add i32 %idx, 2462 %idxprom2 = zext i32 %add1 to i64463 %arrayidx3 = getelementptr inbounds <4 x i32>, ptr %ptr, i64 %idxprom2464 %1 = load <4 x i32>, ptr %arrayidx3, align 16, !tbaa !3465 %add4 = add <4 x i32> %1, %0466 ret <4 x i32> %add4467 }468 469 ; Function Attrs: norecurse nounwind readnone470 define signext i32 @testOR(i32 signext %a, i32 signext %b) local_unnamed_addr #0 {471 entry:472 %or = or i32 %b, %a473 ret i32 %or474 }475 476 ; Function Attrs: norecurse nounwind readnone477 define i64 @testOR8(i64 %a, i64 %b) local_unnamed_addr #0 {478 entry:479 %or = or i64 %b, %a480 ret i64 %or481 }482 483 ; Function Attrs: norecurse nounwind readnone484 define signext i32 @testORI(i32 signext %a) local_unnamed_addr #0 {485 entry:486 %or = or i32 %a, 88487 ret i32 %or488 }489 490 ; Function Attrs: norecurse nounwind readnone491 define i64 @testORI8(i64 %a) local_unnamed_addr #0 {492 entry:493 %or = or i64 %a, 99494 ret i64 %or495 }496 497 ; Function Attrs: norecurse nounwind readnone498 define i64 @testRLDCL(i64 %a, i64 %b) local_unnamed_addr #0 {499 entry:500 %and = and i64 %b, 63501 %shl = shl i64 %a, %and502 %sub = sub nsw i64 64, %and503 %shr = lshr i64 %a, %sub504 %or = or i64 %shr, %shl505 ret i64 %or506 }507 508 ; Function Attrs: norecurse nounwind readnone509 define i64 @testRLDCL_rec(i64 %a, i64 %b) local_unnamed_addr #0 {510 entry:511 %and = and i64 %b, 63512 %shl = shl i64 %a, %and513 %sub = sub nsw i64 64, %and514 %shr = lshr i64 %a, %sub515 %or = or i64 %shr, %shl516 %tobool = icmp eq i64 %or, 0517 %cond = select i1 %tobool, i64 %and, i64 %a518 ret i64 %cond519 }520 521 ; Function Attrs: norecurse nounwind readnone522 define i64 @testRLDCR(i64 %a, i64 %b) local_unnamed_addr #0 {523 entry:524 %and = and i64 %b, 63525 %shl = shl i64 %a, %and526 %sub = sub nsw i64 64, %and527 %shr = lshr i64 %a, %sub528 %or = or i64 %shr, %shl529 ret i64 %or530 }531 532 ; Function Attrs: norecurse nounwind readnone533 define i64 @testRLDCR_rec(i64 %a, i64 %b) local_unnamed_addr #0 {534 entry:535 %and = and i64 %b, 63536 %shl = shl i64 %a, %and537 %sub = sub nsw i64 64, %and538 %shr = lshr i64 %a, %sub539 %or = or i64 %shr, %shl540 %tobool = icmp eq i64 %or, 0541 %cond = select i1 %tobool, i64 %and, i64 %a542 ret i64 %cond543 }544 545 ; Function Attrs: norecurse nounwind readnone546 define i64 @testRLDICL(i64 %a) local_unnamed_addr #0 {547 entry:548 %shr = lshr i64 %a, 11549 %and = and i64 %shr, 16777215550 ret i64 %and551 }552 553 ; Function Attrs: norecurse nounwind readnone554 define i64 @testRLDICL_MB0(i64 %a) local_unnamed_addr #0 {555 entry:556 %shr = lshr i64 %a, 11557 %and = and i64 %shr, 16777215558 ret i64 %and559 }560 561 ; Function Attrs: norecurse nounwind readnone562 define i64 @testRLDICL_rec(i64 %a, i64 %b) local_unnamed_addr #0 {563 entry:564 %shr = lshr i64 %a, 11565 %and = and i64 %shr, 16777215566 %tobool = icmp eq i64 %and, 0567 %cond = select i1 %tobool, i64 %b, i64 %and568 ret i64 %cond569 }570 571 ; Function Attrs: norecurse nounwind readnone572 define i64 @testRLDICL_rec2(i64 %a, i64 %b) local_unnamed_addr #0 {573 entry:574 %shr = lshr i64 %a, 11575 %and = and i64 %shr, 16777215576 %tobool = icmp eq i64 %and, 0577 %cond = select i1 %tobool, i64 %b, i64 %and578 ret i64 %cond579 }580 581 ; Function Attrs: norecurse nounwind readnone582 define i64 @testRLDICL_rec3(i64 %a, i64 %b) local_unnamed_addr #0 {583 entry:584 %shr = lshr i64 %a, 11585 %and = and i64 %shr, 16777215586 %tobool = icmp eq i64 %and, 0587 %cond = select i1 %tobool, i64 %b, i64 %and588 ret i64 %cond589 }590 591 ; Function Attrs: norecurse nounwind readnone592 define zeroext i32 @testRLWINM(i32 zeroext %a) local_unnamed_addr #0 {593 entry:594 %shl = shl i32 %a, 4595 %and = and i32 %shl, 4080596 ret i32 %and597 }598 599 ; Function Attrs: norecurse nounwind readnone600 define zeroext i32 @testRLWINMFullReg(i32 zeroext %a) local_unnamed_addr #0 {601 entry:602 %shl = shl i32 %a, 4603 %and = and i32 %shl, 4080604 ret i32 %and605 }606 607 ; Function Attrs: norecurse nounwind readnone608 define zeroext i32 @testRLWINMFullRegOutOfRange(i32 zeroext %a) local_unnamed_addr #0 {609 entry:610 %shl = shl i32 %a, 4611 %and = and i32 %shl, 4080612 ret i32 %and613 }614 615 ; Function Attrs: norecurse nounwind readnone616 define i64 @testRLWINM8(i64 %a) local_unnamed_addr #0 {617 entry:618 %shl = shl i64 %a, 4619 %and = and i64 %shl, 4080620 ret i64 %and621 }622 623 ; Function Attrs: norecurse nounwind readnone624 define zeroext i32 @testRLWINM_rec(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {625 entry:626 %and = and i32 %a, 255627 %tobool = icmp eq i32 %and, 0628 %cond = select i1 %tobool, i32 %b, i32 %a629 ret i32 %cond630 }631 632 ; Function Attrs: norecurse nounwind readnone633 define zeroext i32 @testRLWINM_rec2(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {634 entry:635 %and = and i32 %a, 255636 %tobool = icmp eq i32 %and, 0637 %cond = select i1 %tobool, i32 %b, i32 %a638 ret i32 %cond639 }640 641 ; Function Attrs: norecurse nounwind readnone642 define i64 @testRLWINM8_rec(i64 %a, i64 %b) local_unnamed_addr #0 {643 entry:644 %a.tr = trunc i64 %a to i32645 %0 = shl i32 %a.tr, 4646 %conv = and i32 %0, 4080647 %tobool = icmp eq i32 %conv, 0648 %conv1 = zext i32 %conv to i64649 %cond = select i1 %tobool, i64 %b, i64 %conv1650 ret i64 %cond651 }652 653 ; Function Attrs: norecurse nounwind readnone654 define i64 @testSLD(i64 %a, i64 %b) local_unnamed_addr #0 {655 entry:656 %shl = shl i64 %a, %b657 ret i64 %shl658 }659 660 ; Function Attrs: norecurse nounwind readnone661 define i64 @testSLD_rec(i64 %a, i64 %b) local_unnamed_addr #0 {662 entry:663 %shl = shl i64 %a, %b664 %tobool = icmp eq i64 %shl, 0665 %cond = select i1 %tobool, i64 %b, i64 %a666 ret i64 %cond667 }668 669 ; Function Attrs: norecurse nounwind readnone670 define i64 @testSRD(i64 %a, i64 %b) local_unnamed_addr #0 {671 entry:672 %shr = lshr i64 %a, %b673 ret i64 %shr674 }675 676 ; Function Attrs: norecurse nounwind readnone677 define i64 @testSRD_rec(i64 %a, i64 %b) local_unnamed_addr #0 {678 entry:679 %shr = lshr i64 %a, %b680 %tobool = icmp eq i64 %shr, 0681 %cond = select i1 %tobool, i64 %b, i64 %a682 ret i64 %cond683 }684 685 ; Function Attrs: norecurse nounwind readnone686 define zeroext i32 @testSLW(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {687 entry:688 %shl = shl i32 %a, %b689 ret i32 %shl690 }691 692 ; Function Attrs: norecurse nounwind readnone693 define zeroext i32 @testSLW_rec(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {694 entry:695 %shl = shl i32 %a, %b696 %tobool = icmp eq i32 %shl, 0697 %cond = select i1 %tobool, i32 %b, i32 %a698 ret i32 %cond699 }700 701 ; Function Attrs: norecurse nounwind readnone702 define zeroext i32 @testSRW(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {703 entry:704 %shr = lshr i32 %a, %b705 ret i32 %shr706 }707 708 ; Function Attrs: norecurse nounwind readnone709 define zeroext i32 @testSRW_rec(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 {710 entry:711 %shr = lshr i32 %a, %b712 %tobool = icmp eq i32 %shr, 0713 %cond = select i1 %tobool, i32 %b, i32 %a714 ret i32 %cond715 }716 717 ; Function Attrs: norecurse nounwind readnone718 define signext i32 @testSRAW(i32 signext %a, i32 signext %b) local_unnamed_addr #0 {719 entry:720 %shr = ashr i32 %a, %b721 ret i32 %shr722 }723 724 ; Function Attrs: norecurse nounwind readnone725 define signext i32 @testSRAW_rec(i32 signext %a, i32 signext %b) local_unnamed_addr #0 {726 entry:727 %shr = ashr i32 %a, %b728 %tobool = icmp eq i32 %shr, 0729 %cond = select i1 %tobool, i32 %b, i32 %shr730 ret i32 %cond731 }732 733 ; Function Attrs: norecurse nounwind readnone734 define i64 @testSRAD(i64 %a, i64 %b) local_unnamed_addr #0 {735 entry:736 %shr = ashr i64 %a, %b737 ret i64 %shr738 }739 740 ; Function Attrs: norecurse nounwind readnone741 define i64 @testSRAD_rec(i64 %a, i64 %b) local_unnamed_addr #0 {742 entry:743 %shr = ashr i64 %a, %b744 %tobool = icmp eq i64 %shr, 0745 %cond = select i1 %tobool, i64 %b, i64 %shr746 ret i64 %cond747 }748 749 ; Function Attrs: norecurse nounwind750 define void @testSTBUX(ptr nocapture %ptr, i8 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 {751 entry:752 %add = add i32 %idx, 1753 %idxprom = zext i32 %add to i64754 %arrayidx = getelementptr inbounds i8, ptr %ptr, i64 %idxprom755 store i8 %a, ptr %arrayidx, align 1, !tbaa !3756 %add1 = add i32 %idx, 2757 %idxprom2 = zext i32 %add1 to i64758 %arrayidx3 = getelementptr inbounds i8, ptr %ptr, i64 %idxprom2759 store i8 %a, ptr %arrayidx3, align 1, !tbaa !3760 ret void761 }762 763 ; Function Attrs: norecurse nounwind764 define void @testSTBX(ptr nocapture %ptr, i8 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 {765 entry:766 %add = add i32 %idx, 1767 %idxprom = zext i32 %add to i64768 %arrayidx = getelementptr inbounds i8, ptr %ptr, i64 %idxprom769 store i8 %a, ptr %arrayidx, align 1, !tbaa !3770 %add1 = add i32 %idx, 2771 %idxprom2 = zext i32 %add1 to i64772 %arrayidx3 = getelementptr inbounds i8, ptr %ptr, i64 %idxprom2773 store i8 %a, ptr %arrayidx3, align 1, !tbaa !3774 ret void775 }776 777 ; Function Attrs: norecurse nounwind778 define void @testSTHUX(ptr nocapture %ptr, i16 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 {779 entry:780 %add = add i32 %idx, 1781 %idxprom = zext i32 %add to i64782 %arrayidx = getelementptr inbounds i16, ptr %ptr, i64 %idxprom783 store i16 %a, ptr %arrayidx, align 2, !tbaa !6784 %add1 = add i32 %idx, 2785 %idxprom2 = zext i32 %add1 to i64786 %arrayidx3 = getelementptr inbounds i16, ptr %ptr, i64 %idxprom2787 store i16 %a, ptr %arrayidx3, align 2, !tbaa !6788 ret void789 }790 791 ; Function Attrs: norecurse nounwind792 define void @testSTHX(ptr nocapture %ptr, i16 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 {793 entry:794 %add = add i32 %idx, 1795 %idxprom = zext i32 %add to i64796 %arrayidx = getelementptr inbounds i16, ptr %ptr, i64 %idxprom797 store i16 %a, ptr %arrayidx, align 1, !tbaa !3798 %add1 = add i32 %idx, 2799 %idxprom2 = zext i32 %add1 to i64800 %arrayidx3 = getelementptr inbounds i16, ptr %ptr, i64 %idxprom2801 store i16 %a, ptr %arrayidx3, align 1, !tbaa !3802 ret void803 }804 805 ; Function Attrs: norecurse nounwind806 define void @testSTWUX(ptr nocapture %ptr, i32 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 {807 entry:808 %add = add i32 %idx, 1809 %idxprom = zext i32 %add to i64810 %arrayidx = getelementptr inbounds i32, ptr %ptr, i64 %idxprom811 store i32 %a, ptr %arrayidx, align 4, !tbaa !8812 %add1 = add i32 %idx, 2813 %idxprom2 = zext i32 %add1 to i64814 %arrayidx3 = getelementptr inbounds i32, ptr %ptr, i64 %idxprom2815 store i32 %a, ptr %arrayidx3, align 4, !tbaa !8816 ret void817 }818 819 ; Function Attrs: norecurse nounwind820 define void @testSTWX(ptr nocapture %ptr, i32 zeroext %a, i32 zeroext %idx) local_unnamed_addr #3 {821 entry:822 %add = add i32 %idx, 1823 %idxprom = zext i32 %add to i64824 %arrayidx = getelementptr inbounds i32, ptr %ptr, i64 %idxprom825 store i32 %a, ptr %arrayidx, align 4, !tbaa !8826 %add1 = add i32 %idx, 2827 %idxprom2 = zext i32 %add1 to i64828 %arrayidx3 = getelementptr inbounds i32, ptr %ptr, i64 %idxprom2829 store i32 %a, ptr %arrayidx3, align 4, !tbaa !8830 ret void831 }832 833 ; Function Attrs: norecurse nounwind834 define void @testSTDUX(ptr nocapture %ptr, i64 %a, i32 zeroext %idx) local_unnamed_addr #3 {835 entry:836 %add = add i32 %idx, 1837 %idxprom = zext i32 %add to i64838 %arrayidx = getelementptr inbounds i64, ptr %ptr, i64 %idxprom839 store i64 %a, ptr %arrayidx, align 8, !tbaa !10840 %add1 = add i32 %idx, 2841 %idxprom2 = zext i32 %add1 to i64842 %arrayidx3 = getelementptr inbounds i64, ptr %ptr, i64 %idxprom2843 store i64 %a, ptr %arrayidx3, align 8, !tbaa !10844 ret void845 }846 847 ; Function Attrs: norecurse nounwind848 define void @testSTDX(ptr nocapture %ptr, i64 %a, i32 zeroext %idx) local_unnamed_addr #3 {849 entry:850 %add = add i32 %idx, 1851 %idxprom = zext i32 %add to i64852 %arrayidx = getelementptr inbounds i64, ptr %ptr, i64 %idxprom853 store i64 %a, ptr %arrayidx, align 8, !tbaa !10854 %add1 = add i32 %idx, 2855 %idxprom2 = zext i32 %add1 to i64856 %arrayidx3 = getelementptr inbounds i64, ptr %ptr, i64 %idxprom2857 store i64 %a, ptr %arrayidx3, align 8, !tbaa !10858 ret void859 }860 861 ; Function Attrs: norecurse nounwind readonly862 define void @testSTFSX(ptr nocapture %ptr, float %a, i32 zeroext %idx) local_unnamed_addr #2 {863 entry:864 %add = add i32 %idx, 1865 %idxprom = zext i32 %add to i64866 %arrayidx = getelementptr inbounds float, ptr %ptr, i64 %idxprom867 store float %a, ptr %arrayidx, align 4, !tbaa !14868 %add1 = add i32 %idx, 2869 %idxprom2 = zext i32 %add1 to i64870 %arrayidx3 = getelementptr inbounds float, ptr %ptr, i64 %idxprom2871 store float %a, ptr %arrayidx3, align 4, !tbaa !14872 ret void873 }874 875 ; Function Attrs: norecurse nounwind readonly876 define void @testSTFSUX(ptr nocapture %ptr, float %a, i32 zeroext %idx) local_unnamed_addr #2 {877 entry:878 %add = add i32 %idx, 1879 %idxprom = zext i32 %add to i64880 %arrayidx = getelementptr inbounds float, ptr %ptr, i64 %idxprom881 store float %a, ptr %arrayidx, align 4, !tbaa !14882 %add1 = add i32 %idx, 2883 %idxprom2 = zext i32 %add1 to i64884 %arrayidx3 = getelementptr inbounds float, ptr %ptr, i64 %idxprom2885 store float %a, ptr %arrayidx3, align 4, !tbaa !14886 ret void887 }888 889 ; Function Attrs: norecurse nounwind readonly890 define void @testSTFDX(ptr nocapture %ptr, double %a, i32 zeroext %idx) local_unnamed_addr #2 {891 entry:892 %add = add i32 %idx, 1893 %idxprom = zext i32 %add to i64894 %arrayidx = getelementptr inbounds double, ptr %ptr, i64 %idxprom895 store double %a, ptr %arrayidx, align 8, !tbaa !12896 %add1 = add i32 %idx, 2897 %idxprom2 = zext i32 %add1 to i64898 %arrayidx3 = getelementptr inbounds double, ptr %ptr, i64 %idxprom2899 store double %a, ptr %arrayidx3, align 8, !tbaa !12900 ret void901 }902 903 ; Function Attrs: norecurse nounwind readonly904 define void @testSTFDUX(ptr nocapture %ptr, double %a, i32 zeroext %idx) local_unnamed_addr #2 {905 entry:906 %add = add i32 %idx, 1907 %idxprom = zext i32 %add to i64908 %arrayidx = getelementptr inbounds double, ptr %ptr, i64 %idxprom909 store double %a, ptr %arrayidx, align 8, !tbaa !12910 %add1 = add i32 %idx, 2911 %idxprom2 = zext i32 %add1 to i64912 %arrayidx3 = getelementptr inbounds double, ptr %ptr, i64 %idxprom2913 store double %a, ptr %arrayidx3, align 8, !tbaa !12914 ret void915 }916 917 ; Function Attrs: norecurse nounwind918 define void @testSTXSSPX(ptr nocapture %ptr, float %a, i32 zeroext %idx) local_unnamed_addr #3 {919 entry:920 %idxprom = zext i32 %idx to i64921 %arrayidx = getelementptr inbounds float, ptr %ptr, i64 %idxprom922 store float %a, ptr %arrayidx, align 4, !tbaa !14923 ret void924 }925 926 ; Function Attrs: norecurse nounwind927 define void @testSTXSDX(ptr nocapture %ptr, double %a, i32 zeroext %idx) local_unnamed_addr #3 {928 entry:929 %idxprom = zext i32 %idx to i64930 %arrayidx = getelementptr inbounds double, ptr %ptr, i64 %idxprom931 store double %a, ptr %arrayidx, align 8, !tbaa !12932 ret void933 }934 935 ; Function Attrs: norecurse nounwind936 define void @testSTXVX(ptr nocapture %ptr, <4 x i32> %a, i32 zeroext %idx) local_unnamed_addr #3 {937 entry:938 %idxprom = zext i32 %idx to i64939 %arrayidx = getelementptr inbounds <4 x i32>, ptr %ptr, i64 %idxprom940 store <4 x i32> %a, ptr %arrayidx, align 16, !tbaa !3941 ret void942 }943 944 ; Function Attrs: norecurse nounwind readnone945 define i128 @testSUBFC(i128 %a, i128 %b) local_unnamed_addr #0 {946 entry:947 %sub = sub nsw i128 %a, %b948 ret i128 %sub949 }950 951 ; Function Attrs: norecurse nounwind readnone952 define i128 @testSUBFC8(i128 %a, i128 %b) local_unnamed_addr #0 {953 entry:954 %sub = sub nsw i128 %a, %b955 ret i128 %sub956 }957 958 ; Function Attrs: norecurse nounwind readnone959 define signext i32 @testXOR(i32 signext %a, i32 signext %b) local_unnamed_addr #0 {960 entry:961 %xor = xor i32 %b, %a962 ret i32 %xor963 }964 965 ; Function Attrs: norecurse nounwind readnone966 define i64 @testXOR8(i64 %a, i64 %b) local_unnamed_addr #0 {967 entry:968 %xor = xor i64 %b, %a969 ret i64 %xor970 }971 972 ; Function Attrs: norecurse nounwind readnone973 define signext i32 @testXORI(i32 signext %a) local_unnamed_addr #0 {974 entry:975 %xor = xor i32 %a, 17976 ret i32 %xor977 }978 979 ; Function Attrs: norecurse nounwind readnone980 define i64 @testXOR8I(i64 %a) local_unnamed_addr #0 {981 entry:982 %xor = xor i64 %a, 17983 ret i64 %xor984 }985 986 attributes #0 = { norecurse nounwind readnone "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pwr9" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+htm,+power8-vector,+power9-vector,+vsx" "use-soft-float"="false" }987 attributes #1 = { norecurse nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pwr9" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+htm,+power8-vector,+power9-vector,+vsx" "use-soft-float"="false" }988 attributes #2 = { norecurse nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pwr9" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+htm,+power8-vector,+power9-vector,-vsx" "use-soft-float"="false" }989 attributes #3 = { norecurse nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pwr9" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+htm,+power8-vector,+power9-vector,+vsx" "use-soft-float"="false" }990 991 !llvm.module.flags = !{!0, !1}992 !llvm.ident = !{!2}993 994 !0 = !{i32 1, !"wchar_size", i32 4}995 !1 = !{i32 7, !"PIC Level", i32 2}996 !2 = !{!"clang version 6.0.0 (trunk 316067)"}997 !3 = !{!4, !4, i64 0}998 !4 = !{!"omnipotent char", !5, i64 0}999 !5 = !{!"Simple C/C++ TBAA"}1000 !6 = !{!7, !7, i64 0}1001 !7 = !{!"short", !4, i64 0}1002 !8 = !{!9, !9, i64 0}1003 !9 = !{!"int", !4, i64 0}1004 !10 = !{!11, !11, i64 0}1005 !11 = !{!"long long", !4, i64 0}1006 !12 = !{!13, !13, i64 0}1007 !13 = !{!"double", !4, i64 0}1008 !14 = !{!15, !15, i64 0}1009 !15 = !{!"float", !4, i64 0}1010 1011...1012---1013name: testADD41014# CHECK-ALL: name: testADD41015alignment: 161016exposesReturnsTwice: false1017legalized: false1018regBankSelected: false1019selected: false1020tracksRegLiveness: true1021registers:1022 - { id: 0, class: g8rc, preferred-register: '' }1023 - { id: 1, class: g8rc, preferred-register: '' }1024 - { id: 2, class: gprc, preferred-register: '' }1025 - { id: 3, class: gprc, preferred-register: '' }1026 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }1027 - { id: 5, class: gprc, preferred-register: '' }1028 - { id: 6, class: g8rc, preferred-register: '' }1029liveins:1030 - { reg: '$x3', virtual-reg: '%0' }1031 - { reg: '$x4', virtual-reg: '%1' }1032frameInfo:1033 isFrameAddressTaken: false1034 isReturnAddressTaken: false1035 hasStackMap: false1036 hasPatchPoint: false1037 stackSize: 01038 offsetAdjustment: 01039 maxAlignment: 01040 adjustsStack: false1041 hasCalls: false1042 stackProtector: ''1043 maxCallFrameSize: 42949672951044 hasOpaqueSPAdjustment: false1045 hasVAStart: false1046 hasMustTailInVarArgFunc: false1047 savePoint: []1048 restorePoint: []1049fixedStack:1050stack:1051constants:1052body: |1053 bb.0.entry:1054 liveins: $x3, $x41055 1056 %1 = COPY $x41057 %0 = COPY $x31058 %2 = LI 331059 %3 = COPY %0.sub_321060 %4 = ADD4 killed %3, %21061 %5 = ADD4 killed %2, killed %41062 ; CHECK: ADDI killed %3, 331063 ; CHECK: ADDI killed %4, 331064 ; CHECK-LATE: addi 3, 3, 331065 ; CHECK-LATE: addi 3, 3, 331066 %6 = EXTSW_32_64 killed %51067 $x3 = COPY %61068 BLR8 implicit $lr8, implicit $rm, implicit $x31069 1070...1071---1072name: testADD81073# CHECK-ALL: name: testADD81074alignment: 161075exposesReturnsTwice: false1076legalized: false1077regBankSelected: false1078selected: false1079tracksRegLiveness: true1080registers:1081 - { id: 0, class: g8rc, preferred-register: '' }1082 - { id: 1, class: g8rc, preferred-register: '' }1083 - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' }1084 - { id: 3, class: g8rc, preferred-register: '' }1085liveins:1086 - { reg: '$x3', virtual-reg: '%0' }1087 - { reg: '$x4', virtual-reg: '%1' }1088frameInfo:1089 isFrameAddressTaken: false1090 isReturnAddressTaken: false1091 hasStackMap: false1092 hasPatchPoint: false1093 stackSize: 01094 offsetAdjustment: 01095 maxAlignment: 01096 adjustsStack: false1097 hasCalls: false1098 stackProtector: ''1099 maxCallFrameSize: 42949672951100 hasOpaqueSPAdjustment: false1101 hasVAStart: false1102 hasMustTailInVarArgFunc: false1103 savePoint: []1104 restorePoint: []1105fixedStack:1106stack:1107constants:1108body: |1109 bb.0.entry:1110 liveins: $x3, $x41111 1112 %1 = LI8 331113 %0 = COPY $x31114 %2 = ADD8 %0, %11115 %3 = ADD8 killed %1, killed %21116 ; CHECK: ADDI8 killed %0, 331117 ; CHECK: ADDI8 killed %2, 331118 ; CHECK-LATE: addi 3, 3, 331119 ; CHECK-LATE: addi 3, 3, 331120 $x3 = COPY %31121 BLR8 implicit $lr8, implicit $rm, implicit $x31122 1123...1124---1125name: testADDC1126# CHECK-ALL: name: testADDC1127alignment: 161128exposesReturnsTwice: false1129legalized: false1130regBankSelected: false1131selected: false1132tracksRegLiveness: true1133registers:1134 - { id: 0, class: g8rc, preferred-register: '' }1135 - { id: 1, class: g8rc, preferred-register: '' }1136 - { id: 2, class: g8rc, preferred-register: '' }1137 - { id: 3, class: g8rc, preferred-register: '' }1138 - { id: 4, class: gprc, preferred-register: '' }1139 - { id: 5, class: gprc, preferred-register: '' }1140 - { id: 6, class: gprc, preferred-register: '' }1141 - { id: 7, class: g8rc, preferred-register: '' }1142 - { id: 8, class: g8rc, preferred-register: '' }1143liveins:1144 - { reg: '$x3', virtual-reg: '%0' }1145 - { reg: '$x4', virtual-reg: '%1' }1146 - { reg: '$x5', virtual-reg: '%2' }1147 - { reg: '$x6', virtual-reg: '%3' }1148frameInfo:1149 isFrameAddressTaken: false1150 isReturnAddressTaken: false1151 hasStackMap: false1152 hasPatchPoint: false1153 stackSize: 01154 offsetAdjustment: 01155 maxAlignment: 01156 adjustsStack: false1157 hasCalls: false1158 stackProtector: ''1159 maxCallFrameSize: 42949672951160 hasOpaqueSPAdjustment: false1161 hasVAStart: false1162 hasMustTailInVarArgFunc: false1163 savePoint: []1164 restorePoint: []1165fixedStack:1166stack:1167constants:1168body: |1169 bb.0.entry:1170 liveins: $x3, $x4, $x5, $x61171 1172 %3 = COPY $x61173 %2 = COPY $x51174 %1 = COPY $x41175 %0 = COPY $x31176 %4 = COPY %0.sub_321177 %5 = LI 551178 %6 = ADDC %5, %4, implicit-def $carry1179 ; CHECK: ADDIC killed %4, 55, implicit-def $carry1180 ; CHECK-LATE: addic 3, 3, 551181 %7 = ADDE8 %3, %1, implicit-def dead $carry, implicit $carry1182 %8 = EXTSW_32_64 %61183 $x3 = COPY %81184 $x4 = COPY %71185 BLR8 implicit $lr8, implicit $rm, implicit $x3, implicit $x41186 1187...1188---1189name: testADDC81190# CHECK-ALL: name: testADDC81191alignment: 161192exposesReturnsTwice: false1193legalized: false1194regBankSelected: false1195selected: false1196tracksRegLiveness: true1197registers:1198 - { id: 0, class: g8rc, preferred-register: '' }1199 - { id: 1, class: g8rc, preferred-register: '' }1200 - { id: 2, class: g8rc, preferred-register: '' }1201 - { id: 3, class: g8rc, preferred-register: '' }1202 - { id: 4, class: g8rc, preferred-register: '' }1203 - { id: 5, class: g8rc, preferred-register: '' }1204liveins:1205 - { reg: '$x3', virtual-reg: '%0' }1206 - { reg: '$x4', virtual-reg: '%1' }1207 - { reg: '$x5', virtual-reg: '%2' }1208 - { reg: '$x6', virtual-reg: '%3' }1209frameInfo:1210 isFrameAddressTaken: false1211 isReturnAddressTaken: false1212 hasStackMap: false1213 hasPatchPoint: false1214 stackSize: 01215 offsetAdjustment: 01216 maxAlignment: 01217 adjustsStack: false1218 hasCalls: false1219 stackProtector: ''1220 maxCallFrameSize: 42949672951221 hasOpaqueSPAdjustment: false1222 hasVAStart: false1223 hasMustTailInVarArgFunc: false1224 savePoint: []1225 restorePoint: []1226fixedStack:1227stack:1228constants:1229body: |1230 bb.0.entry:1231 liveins: $x3, $x4, $x5, $x61232 1233 %3 = COPY $x61234 %2 = COPY $x51235 %1 = COPY $x41236 %0 = LI8 7771237 %4 = ADDC8 %2, %0, implicit-def $carry1238 ; CHECK: ADDIC8 killed %2, 777, implicit-def $carry1239 ; CHECK-LATE: addic 3, 5, 7771240 %5 = ADDE8 %3, %1, implicit-def dead $carry, implicit $carry1241 $x3 = COPY %41242 $x4 = COPY %51243 BLR8 implicit $lr8, implicit $rm, implicit $x3, implicit $x41244 1245...1246---1247name: testADDC_rec1248# CHECK-ALL: name: testADDC_rec1249alignment: 161250exposesReturnsTwice: false1251legalized: false1252regBankSelected: false1253selected: false1254tracksRegLiveness: true1255registers:1256 - { id: 0, class: g8rc, preferred-register: '' }1257 - { id: 1, class: gprc, preferred-register: '' }1258 - { id: 2, class: gprc, preferred-register: '' }1259 - { id: 3, class: gprc, preferred-register: '' }1260 - { id: 4, class: crrc, preferred-register: '' }1261 - { id: 5, class: crbitrc, preferred-register: '' }1262 - { id: 6, class: g8rc_and_g8rc_nox0, preferred-register: '' }1263 - { id: 7, class: g8rc_and_g8rc_nox0, preferred-register: '' }1264 - { id: 8, class: g8rc, preferred-register: '' }1265liveins:1266 - { reg: '$x3', virtual-reg: '%0' }1267 - { reg: '$x4', virtual-reg: '%1' }1268frameInfo:1269 isFrameAddressTaken: false1270 isReturnAddressTaken: false1271 hasStackMap: false1272 hasPatchPoint: false1273 stackSize: 01274 offsetAdjustment: 01275 maxAlignment: 01276 adjustsStack: false1277 hasCalls: false1278 stackProtector: ''1279 maxCallFrameSize: 42949672951280 hasOpaqueSPAdjustment: false1281 hasVAStart: false1282 hasMustTailInVarArgFunc: false1283 savePoint: []1284 restorePoint: []1285fixedStack:1286stack:1287constants:1288body: |1289 bb.0.entry:1290 liveins: $x3, $x41291 1292 %1 = LI 4331293 %0 = COPY $x31294 %2 = COPY %0.sub_321295 %3 = ADDC_rec %1, %2, implicit-def $cr0, implicit-def $carry1296 ; CHECK: ADDIC_rec killed %2, 433, implicit-def $cr0, implicit-def dead $carry1297 ; CHECK-LATE: addic. 3, 3, 4331298 %4 = COPY killed $cr01299 %5 = COPY %4.sub_eq1300 %6 = LI8 01301 %7 = LI8 -11302 %8 = ISEL8 %7, %6, %51303 $x3 = COPY %81304 BLR8 implicit $lr8, implicit $rm, implicit $x31305 1306...1307---1308name: testADDI1309# CHECK-ALL: name: testADDI1310alignment: 161311exposesReturnsTwice: false1312legalized: false1313regBankSelected: false1314selected: false1315tracksRegLiveness: true1316registers:1317 - { id: 0, class: g8rc, preferred-register: '' }1318 - { id: 1, class: gprc_and_gprc_nor0, preferred-register: '' }1319 - { id: 2, class: gprc, preferred-register: '' }1320 - { id: 3, class: g8rc, preferred-register: '' }1321liveins:1322 - { reg: '$x3', virtual-reg: '%0' }1323frameInfo:1324 isFrameAddressTaken: false1325 isReturnAddressTaken: false1326 hasStackMap: false1327 hasPatchPoint: false1328 stackSize: 01329 offsetAdjustment: 01330 maxAlignment: 01331 adjustsStack: false1332 hasCalls: false1333 stackProtector: ''1334 maxCallFrameSize: 42949672951335 hasOpaqueSPAdjustment: false1336 hasVAStart: false1337 hasMustTailInVarArgFunc: false1338 savePoint: []1339 restorePoint: []1340fixedStack:1341stack:1342constants:1343body: |1344 bb.0.entry:1345 liveins: $x31346 1347 %0 = COPY $x31348 %1 = LI 771349 %2 = ADDI killed %1, 441350 %3 = EXTSW_32_64 killed %21351 ; CHECK: LI8 1211352 ; CHECK-LATE: li 3, 1211353 $x3 = COPY %31354 BLR8 implicit $lr8, implicit $rm, implicit $x31355 1356...1357---1358name: testADDI81359# CHECK-ALL: name: testADDI81360alignment: 161361exposesReturnsTwice: false1362legalized: false1363regBankSelected: false1364selected: false1365tracksRegLiveness: true1366registers:1367 - { id: 0, class: g8rc, preferred-register: '' }1368 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }1369 - { id: 2, class: g8rc, preferred-register: '' }1370 - { id: 3, class: g8rc, preferred-register: '' }1371liveins:1372 - { reg: '$x3', virtual-reg: '%0' }1373frameInfo:1374 isFrameAddressTaken: false1375 isReturnAddressTaken: false1376 hasStackMap: false1377 hasPatchPoint: false1378 stackSize: 01379 offsetAdjustment: 01380 maxAlignment: 01381 adjustsStack: false1382 hasCalls: false1383 stackProtector: ''1384 maxCallFrameSize: 42949672951385 hasOpaqueSPAdjustment: false1386 hasVAStart: false1387 hasMustTailInVarArgFunc: false1388 savePoint: []1389 restorePoint: []1390fixedStack:1391stack:1392constants:1393body: |1394 bb.0.entry:1395 liveins: $x31396 1397 %0 = COPY $x31398 %1 = LI8 3331399 %2 = ADDI8 killed %1, 441400 ; CHECK: LI8 3771401 ; CHECK-LATE: li 3, 3771402 %3 = EXTSW killed %21403 $x3 = COPY %31404 BLR8 implicit $lr8, implicit $rm, implicit $x31405 1406...1407---1408name: testAND_rec1409# CHECK-ALL: name: testAND_rec1410alignment: 161411exposesReturnsTwice: false1412legalized: false1413regBankSelected: false1414selected: false1415tracksRegLiveness: true1416registers:1417 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }1418 - { id: 1, class: gprc, preferred-register: '' }1419 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }1420 - { id: 3, class: gprc, preferred-register: '' }1421 - { id: 4, class: crrc, preferred-register: '' }1422 - { id: 5, class: gprc, preferred-register: '' }1423 - { id: 6, class: g8rc, preferred-register: '' }1424liveins:1425 - { reg: '$x3', virtual-reg: '%0' }1426 - { reg: '$x4', virtual-reg: '%1' }1427frameInfo:1428 isFrameAddressTaken: false1429 isReturnAddressTaken: false1430 hasStackMap: false1431 hasPatchPoint: false1432 stackSize: 01433 offsetAdjustment: 01434 maxAlignment: 01435 adjustsStack: false1436 hasCalls: false1437 stackProtector: ''1438 maxCallFrameSize: 42949672951439 hasOpaqueSPAdjustment: false1440 hasVAStart: false1441 hasMustTailInVarArgFunc: false1442 savePoint: []1443 restorePoint: []1444fixedStack:1445stack:1446constants:1447body: |1448 bb.0.entry:1449 liveins: $x3, $x41450 1451 %1 = LI 781452 %0 = COPY $x31453 %2 = COPY %0.sub_321454 %3 = AND_rec %1, %2, implicit-def $cr01455 ; CHECK: ANDI_rec %2, 78, implicit-def $cr01456 ; CHECK-LATE: andi. 5, 3, 781457 %4 = COPY killed $cr01458 %5 = ISEL %2, %1, %4.sub_eq1459 %6 = EXTSW_32_64 killed %51460 $x3 = COPY %61461 BLR8 implicit $lr8, implicit $rm, implicit $x31462 1463...1464---1465name: testAND8_rec1466# CHECK-ALL: name: testAND8_rec1467alignment: 161468exposesReturnsTwice: false1469legalized: false1470regBankSelected: false1471selected: false1472tracksRegLiveness: true1473registers:1474 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }1475 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }1476 - { id: 2, class: g8rc, preferred-register: '' }1477 - { id: 3, class: crrc, preferred-register: '' }1478 - { id: 4, class: g8rc, preferred-register: '' }1479liveins:1480 - { reg: '$x3', virtual-reg: '%0' }1481 - { reg: '$x4', virtual-reg: '%1' }1482frameInfo:1483 isFrameAddressTaken: false1484 isReturnAddressTaken: false1485 hasStackMap: false1486 hasPatchPoint: false1487 stackSize: 01488 offsetAdjustment: 01489 maxAlignment: 01490 adjustsStack: false1491 hasCalls: false1492 stackProtector: ''1493 maxCallFrameSize: 42949672951494 hasOpaqueSPAdjustment: false1495 hasVAStart: false1496 hasMustTailInVarArgFunc: false1497 savePoint: []1498 restorePoint: []1499fixedStack:1500stack:1501constants:1502body: |1503 bb.0.entry:1504 liveins: $x3, $x41505 1506 %1 = LI8 3211507 %0 = COPY $x31508 %2 = AND8_rec %1, %0, implicit-def $cr01509 ; CHECK: ANDI8_rec %0, 321, implicit-def $cr01510 ; CHECK-LATE: andi. 5, 3, 3211511 %3 = COPY killed $cr01512 %4 = ISEL8 %1, %0, %3.sub_eq1513 $x3 = COPY %41514 BLR8 implicit $lr8, implicit $rm, implicit $x31515 1516...1517---1518name: testCMPD1519# CHECK-ALL: name: testCMPD1520alignment: 161521exposesReturnsTwice: false1522legalized: false1523regBankSelected: false1524selected: false1525tracksRegLiveness: true1526registers:1527 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }1528 - { id: 1, class: g8rc, preferred-register: '' }1529 - { id: 2, class: crrc, preferred-register: '' }1530 - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' }1531 - { id: 4, class: g8rc, preferred-register: '' }1532 - { id: 5, class: g8rc, preferred-register: '' }1533liveins:1534 - { reg: '$x3', virtual-reg: '%0' }1535 - { reg: '$x4', virtual-reg: '%1' }1536frameInfo:1537 isFrameAddressTaken: false1538 isReturnAddressTaken: false1539 hasStackMap: false1540 hasPatchPoint: false1541 stackSize: 01542 offsetAdjustment: 01543 maxAlignment: 01544 adjustsStack: false1545 hasCalls: false1546 stackProtector: ''1547 maxCallFrameSize: 42949672951548 hasOpaqueSPAdjustment: false1549 hasVAStart: false1550 hasMustTailInVarArgFunc: false1551 savePoint: []1552 restorePoint: []1553fixedStack:1554stack:1555constants:1556body: |1557 bb.0.entry:1558 liveins: $x3, $x41559 1560 %1 = LI8 655331561 %0 = COPY $x31562 %2 = CMPD %0, %11563 ; CHECK: CMPDI %0, -31564 ; CHECK-LATE: cmpdi 3, -31565 %4 = ISEL8 $zero8, %0, %2.sub_gt1566 %5 = ADD8 killed %4, %11567 $x3 = COPY %51568 BLR8 implicit $lr8, implicit $rm, implicit $x31569 1570...1571---1572name: testCMPDI1573# CHECK-ALL: name: testCMPDI1574alignment: 161575exposesReturnsTwice: false1576legalized: false1577regBankSelected: false1578selected: false1579tracksRegLiveness: true1580registers:1581 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }1582 - { id: 1, class: g8rc, preferred-register: '' }1583 - { id: 2, class: crrc, preferred-register: '' }1584 - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' }1585 - { id: 4, class: g8rc, preferred-register: '' }1586 - { id: 5, class: g8rc, preferred-register: '' }1587liveins:1588 - { reg: '$x3', virtual-reg: '%0' }1589 - { reg: '$x4', virtual-reg: '%1' }1590frameInfo:1591 isFrameAddressTaken: false1592 isReturnAddressTaken: false1593 hasStackMap: false1594 hasPatchPoint: false1595 stackSize: 01596 offsetAdjustment: 01597 maxAlignment: 01598 adjustsStack: false1599 hasCalls: false1600 stackProtector: ''1601 maxCallFrameSize: 42949672951602 hasOpaqueSPAdjustment: false1603 hasVAStart: false1604 hasMustTailInVarArgFunc: false1605 savePoint: []1606 restorePoint: []1607fixedStack:1608stack:1609constants:1610body: |1611 bb.0.entry:1612 liveins: $x3, $x41613 1614 %1 = COPY $x41615 %0 = LI8 891616 %2 = CMPDI %0, 871617 %4 = ISEL8 $zero8, %0, %2.sub_gt1618 ; CHECK: ADDI8 killed %1, 01619 %5 = ADD8 killed %4, %11620 $x3 = COPY %51621 BLR8 implicit $lr8, implicit $rm, implicit $x31622 1623...1624---1625name: testCMPDI_F1626# CHECK-ALL: name: testCMPDI_F1627alignment: 161628exposesReturnsTwice: false1629legalized: false1630regBankSelected: false1631selected: false1632tracksRegLiveness: true1633registers:1634 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }1635 - { id: 1, class: g8rc, preferred-register: '' }1636 - { id: 2, class: crrc, preferred-register: '' }1637 - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' }1638 - { id: 4, class: g8rc, preferred-register: '' }1639 - { id: 5, class: g8rc, preferred-register: '' }1640liveins:1641 - { reg: '$x3', virtual-reg: '%0' }1642 - { reg: '$x4', virtual-reg: '%1' }1643frameInfo:1644 isFrameAddressTaken: false1645 isReturnAddressTaken: false1646 hasStackMap: false1647 hasPatchPoint: false1648 stackSize: 01649 offsetAdjustment: 01650 maxAlignment: 01651 adjustsStack: false1652 hasCalls: false1653 stackProtector: ''1654 maxCallFrameSize: 42949672951655 hasOpaqueSPAdjustment: false1656 hasVAStart: false1657 hasMustTailInVarArgFunc: false1658 savePoint: []1659 restorePoint: []1660fixedStack:1661stack:1662constants:1663body: |1664 bb.0.entry:1665 liveins: $x3, $x41666 1667 %1 = COPY $x41668 %0 = LI8 871669 %2 = CMPDI %0, 871670 %4 = ISEL8 $zero8, %0, %2.sub_gt1671 ; CHECK: COPY killed %01672 %5 = ADD8 killed %4, %11673 $x3 = COPY %51674 BLR8 implicit $lr8, implicit $rm, implicit $x31675 1676...1677---1678name: testCMPLD1679# CHECK-ALL: name: testCMPLD1680alignment: 161681exposesReturnsTwice: false1682legalized: false1683regBankSelected: false1684selected: false1685tracksRegLiveness: true1686registers:1687 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }1688 - { id: 1, class: g8rc, preferred-register: '' }1689 - { id: 2, class: crrc, preferred-register: '' }1690 - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' }1691 - { id: 4, class: g8rc, preferred-register: '' }1692 - { id: 5, class: g8rc, preferred-register: '' }1693liveins:1694 - { reg: '$x3', virtual-reg: '%0' }1695 - { reg: '$x4', virtual-reg: '%1' }1696frameInfo:1697 isFrameAddressTaken: false1698 isReturnAddressTaken: false1699 hasStackMap: false1700 hasPatchPoint: false1701 stackSize: 01702 offsetAdjustment: 01703 maxAlignment: 01704 adjustsStack: false1705 hasCalls: false1706 stackProtector: ''1707 maxCallFrameSize: 42949672951708 hasOpaqueSPAdjustment: false1709 hasVAStart: false1710 hasMustTailInVarArgFunc: false1711 savePoint: []1712 restorePoint: []1713fixedStack:1714stack:1715constants:1716body: |1717 bb.0.entry:1718 liveins: $x3, $x41719 1720 %1 = LI8 991721 %0 = COPY $x31722 %2 = CMPLD %0, %11723 ; CHECK: CMPLDI %0, 991724 ; CHECK-LATE: cmpldi 3, 991725 %4 = ISEL8 $zero8, %0, %2.sub_gt1726 %5 = ADD8 killed %4, %11727 $x3 = COPY %51728 BLR8 implicit $lr8, implicit $rm, implicit $x31729 1730...1731---1732name: testCMPLDI1733# CHECK-ALL: name: testCMPLDI1734alignment: 161735exposesReturnsTwice: false1736legalized: false1737regBankSelected: false1738selected: false1739tracksRegLiveness: true1740registers:1741 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }1742 - { id: 1, class: g8rc, preferred-register: '' }1743 - { id: 2, class: crrc, preferred-register: '' }1744 - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' }1745 - { id: 4, class: g8rc, preferred-register: '' }1746 - { id: 5, class: g8rc, preferred-register: '' }1747liveins:1748 - { reg: '$x3', virtual-reg: '%0' }1749 - { reg: '$x4', virtual-reg: '%1' }1750frameInfo:1751 isFrameAddressTaken: false1752 isReturnAddressTaken: false1753 hasStackMap: false1754 hasPatchPoint: false1755 stackSize: 01756 offsetAdjustment: 01757 maxAlignment: 01758 adjustsStack: false1759 hasCalls: false1760 stackProtector: ''1761 maxCallFrameSize: 42949672951762 hasOpaqueSPAdjustment: false1763 hasVAStart: false1764 hasMustTailInVarArgFunc: false1765 savePoint: []1766 restorePoint: []1767fixedStack:1768stack:1769constants:1770body: |1771 bb.0.entry:1772 liveins: $x3, $x41773 1774 %1 = COPY $x41775 %0 = LI8 655341776 %2 = CMPLDI %0, 655351777 %4 = ISEL8 $zero8, %0, %2.sub_gt1778 ; CHECK: COPY killed %01779 %5 = ADD8 killed %4, %11780 $x3 = COPY %51781 BLR8 implicit $lr8, implicit $rm, implicit $x31782 1783...1784---1785name: testCMPW1786# CHECK-ALL: name: testCMPW1787alignment: 161788exposesReturnsTwice: false1789legalized: false1790regBankSelected: false1791selected: false1792tracksRegLiveness: true1793registers:1794 - { id: 0, class: g8rc, preferred-register: '' }1795 - { id: 1, class: g8rc, preferred-register: '' }1796 - { id: 2, class: gprc, preferred-register: '' }1797 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }1798 - { id: 4, class: crrc, preferred-register: '' }1799 - { id: 5, class: gprc_and_gprc_nor0, preferred-register: '' }1800 - { id: 6, class: gprc, preferred-register: '' }1801 - { id: 7, class: gprc, preferred-register: '' }1802 - { id: 8, class: g8rc, preferred-register: '' }1803liveins:1804 - { reg: '$x3', virtual-reg: '%0' }1805 - { reg: '$x4', virtual-reg: '%1' }1806frameInfo:1807 isFrameAddressTaken: false1808 isReturnAddressTaken: false1809 hasStackMap: false1810 hasPatchPoint: false1811 stackSize: 01812 offsetAdjustment: 01813 maxAlignment: 01814 adjustsStack: false1815 hasCalls: false1816 stackProtector: ''1817 maxCallFrameSize: 42949672951818 hasOpaqueSPAdjustment: false1819 hasVAStart: false1820 hasMustTailInVarArgFunc: false1821 savePoint: []1822 restorePoint: []1823fixedStack:1824stack:1825constants:1826body: |1827 bb.0.entry:1828 liveins: $x3, $x41829 1830 %1 = COPY $x41831 %0 = COPY $x31832 %2 = LI -11833 %3 = COPY %0.sub_321834 %4 = CMPW %3, %21835 ; CHECK: CMPWI %3, -11836 %6 = ISEL $zero, %3, %4.sub_gt1837 %7 = ADD4 killed %6, %21838 %8 = EXTSW_32_64 killed %71839 $x3 = COPY %81840 BLR8 implicit $lr8, implicit $rm, implicit $x31841 1842...1843---1844name: testCMPWI1845# CHECK-ALL: name: testCMPWI1846alignment: 161847exposesReturnsTwice: false1848legalized: false1849regBankSelected: false1850selected: false1851tracksRegLiveness: true1852registers:1853 - { id: 0, class: g8rc, preferred-register: '' }1854 - { id: 1, class: g8rc, preferred-register: '' }1855 - { id: 2, class: gprc, preferred-register: '' }1856 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }1857 - { id: 4, class: crrc, preferred-register: '' }1858 - { id: 5, class: gprc_and_gprc_nor0, preferred-register: '' }1859 - { id: 6, class: gprc, preferred-register: '' }1860 - { id: 7, class: gprc, preferred-register: '' }1861 - { id: 8, class: g8rc, preferred-register: '' }1862liveins:1863 - { reg: '$x3', virtual-reg: '%0' }1864 - { reg: '$x4', virtual-reg: '%1' }1865frameInfo:1866 isFrameAddressTaken: false1867 isReturnAddressTaken: false1868 hasStackMap: false1869 hasPatchPoint: false1870 stackSize: 01871 offsetAdjustment: 01872 maxAlignment: 01873 adjustsStack: false1874 hasCalls: false1875 stackProtector: ''1876 maxCallFrameSize: 42949672951877 hasOpaqueSPAdjustment: false1878 hasVAStart: false1879 hasMustTailInVarArgFunc: false1880 savePoint: []1881 restorePoint: []1882fixedStack:1883stack:1884constants:1885body: |1886 bb.0.entry:1887 liveins: $x3, $x41888 1889 %1 = COPY $x41890 %0 = COPY $x31891 %2 = COPY %1.sub_321892 %3 = LI -31893 %4 = CMPWI %3, 871894 %6 = ISEL $zero, %3, %4.sub_gt1895 ; CHECK: COPY killed %31896 %7 = ADD4 killed %6, killed %21897 %8 = EXTSW_32_64 killed %71898 $x3 = COPY %81899 BLR8 implicit $lr8, implicit $rm, implicit $x31900 1901...1902---1903name: testCMPLW1904# CHECK-ALL: name: testCMPLW1905alignment: 161906exposesReturnsTwice: false1907legalized: false1908regBankSelected: false1909selected: false1910tracksRegLiveness: true1911registers:1912 - { id: 0, class: g8rc, preferred-register: '' }1913 - { id: 1, class: g8rc, preferred-register: '' }1914 - { id: 2, class: gprc, preferred-register: '' }1915 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }1916 - { id: 4, class: crrc, preferred-register: '' }1917 - { id: 5, class: gprc_and_gprc_nor0, preferred-register: '' }1918 - { id: 6, class: gprc, preferred-register: '' }1919 - { id: 7, class: gprc, preferred-register: '' }1920 - { id: 8, class: g8rc, preferred-register: '' }1921 - { id: 9, class: g8rc, preferred-register: '' }1922 - { id: 10, class: g8rc, preferred-register: '' }1923liveins:1924 - { reg: '$x3', virtual-reg: '%0' }1925 - { reg: '$x4', virtual-reg: '%1' }1926frameInfo:1927 isFrameAddressTaken: false1928 isReturnAddressTaken: false1929 hasStackMap: false1930 hasPatchPoint: false1931 stackSize: 01932 offsetAdjustment: 01933 maxAlignment: 01934 adjustsStack: false1935 hasCalls: false1936 stackProtector: ''1937 maxCallFrameSize: 42949672951938 hasOpaqueSPAdjustment: false1939 hasVAStart: false1940 hasMustTailInVarArgFunc: false1941 savePoint: []1942 restorePoint: []1943fixedStack:1944stack:1945constants:1946body: |1947 bb.0.entry:1948 liveins: $x3, $x41949 1950 %1 = COPY $x41951 %0 = COPY $x31952 %2 = LI 327671953 %3 = COPY %0.sub_321954 %4 = CMPLW %3, %21955 ; CHECK: CMPLWI %3, 327671956 ; CHECK-LATE: cmplwi 3, 327671957 %6 = ISEL $zero, %3, %4.sub_gt1958 %7 = ADD4 killed %6, %21959 %9 = IMPLICIT_DEF1960 %8 = INSERT_SUBREG %9, killed %7, 11961 %10 = RLDICL killed %8, 0, 321962 $x3 = COPY %101963 BLR8 implicit $lr8, implicit $rm, implicit $x31964 1965...1966---1967name: testCMPLWI1968# CHECK-ALL: name: testCMPLWI1969alignment: 161970exposesReturnsTwice: false1971legalized: false1972regBankSelected: false1973selected: false1974tracksRegLiveness: true1975registers:1976 - { id: 0, class: g8rc, preferred-register: '' }1977 - { id: 1, class: g8rc, preferred-register: '' }1978 - { id: 2, class: gprc, preferred-register: '' }1979 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }1980 - { id: 4, class: crrc, preferred-register: '' }1981 - { id: 5, class: gprc_and_gprc_nor0, preferred-register: '' }1982 - { id: 6, class: gprc, preferred-register: '' }1983 - { id: 7, class: gprc, preferred-register: '' }1984 - { id: 8, class: g8rc, preferred-register: '' }1985 - { id: 9, class: g8rc, preferred-register: '' }1986 - { id: 10, class: g8rc, preferred-register: '' }1987liveins:1988 - { reg: '$x3', virtual-reg: '%0' }1989 - { reg: '$x4', virtual-reg: '%1' }1990frameInfo:1991 isFrameAddressTaken: false1992 isReturnAddressTaken: false1993 hasStackMap: false1994 hasPatchPoint: false1995 stackSize: 01996 offsetAdjustment: 01997 maxAlignment: 01998 adjustsStack: false1999 hasCalls: false2000 stackProtector: ''2001 maxCallFrameSize: 42949672952002 hasOpaqueSPAdjustment: false2003 hasVAStart: false2004 hasMustTailInVarArgFunc: false2005 savePoint: []2006 restorePoint: []2007fixedStack:2008stack:2009constants:2010body: |2011 bb.0.entry:2012 liveins: $x3, $x42013 2014 %1 = COPY $x42015 %0 = COPY $x32016 %2 = COPY %1.sub_322017 %3 = LI -32018 %4 = CMPLWI %3, 872019 %6 = ISEL $zero, %3, %4.sub_gt2020 ; CHECK: ADDI killed %2, 02021 %7 = ADD4 killed %6, killed %22022 %9 = IMPLICIT_DEF2023 %8 = INSERT_SUBREG %9, killed %7, 12024 %10 = RLDICL killed %8, 0, 322025 $x3 = COPY %102026 BLR8 implicit $lr8, implicit $rm, implicit $x32027 2028...2029---2030name: testLBZUX2031# CHECK-ALL: name: testLBZUX2032alignment: 162033exposesReturnsTwice: false2034legalized: false2035regBankSelected: false2036selected: false2037tracksRegLiveness: true2038registers:2039 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }2040 - { id: 1, class: g8rc, preferred-register: '' }2041 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }2042 - { id: 3, class: gprc, preferred-register: '' }2043 - { id: 4, class: g8rc, preferred-register: '' }2044 - { id: 5, class: g8rc, preferred-register: '' }2045 - { id: 6, class: g8rc, preferred-register: '' }2046 - { id: 7, class: gprc, preferred-register: '' }2047 - { id: 8, class: gprc, preferred-register: '' }2048 - { id: 9, class: g8rc, preferred-register: '' }2049 - { id: 10, class: g8rc, preferred-register: '' }2050 - { id: 11, class: g8rc, preferred-register: '' }2051 - { id: 12, class: gprc, preferred-register: '' }2052 - { id: 13, class: gprc, preferred-register: '' }2053 - { id: 14, class: g8rc, preferred-register: '' }2054 - { id: 15, class: g8rc, preferred-register: '' }2055 - { id: 16, class: g8rc, preferred-register: '' }2056 - { id: 17, class: g8rc_and_g8rc_nox0, preferred-register: '' }2057liveins:2058 - { reg: '$x3', virtual-reg: '%0' }2059 - { reg: '$x4', virtual-reg: '%1' }2060frameInfo:2061 isFrameAddressTaken: false2062 isReturnAddressTaken: false2063 hasStackMap: false2064 hasPatchPoint: false2065 stackSize: 02066 offsetAdjustment: 02067 maxAlignment: 02068 adjustsStack: false2069 hasCalls: false2070 stackProtector: ''2071 maxCallFrameSize: 42949672952072 hasOpaqueSPAdjustment: false2073 hasVAStart: false2074 hasMustTailInVarArgFunc: false2075 savePoint: []2076 restorePoint: []2077fixedStack:2078stack:2079constants:2080body: |2081 bb.0.entry:2082 liveins: $x3, $x42083 2084 %1 = COPY $x42085 %0 = COPY $x32086 %2 = COPY %1.sub_322087 %3 = ADDI %2, 12088 %5 = IMPLICIT_DEF2089 %4 = INSERT_SUBREG %5, killed %3, 12090 %6 = RLDICL killed %4, 0, 322091 %7 = LBZX %0, killed %6 :: (load (s8) from %ir.arrayidx, !tbaa !3)2092 %8 = ADDI %2, 22093 %10 = IMPLICIT_DEF2094 %9 = INSERT_SUBREG %10, killed %8, 12095 %11 = LI8 -152096 %12,%17 = LBZUX %0, killed %11 :: (load (s8) from %ir.arrayidx3, !tbaa !3)2097 ; CHECK: LBZU -15, killed %02098 ; CHECK-LATE: lbzu 5, -15(3)2099 %13 = ADD4 killed %12, killed %72100 %15 = IMPLICIT_DEF2101 %14 = INSERT_SUBREG %15, killed %13, 12102 %16 = RLWINM8 killed %14, 0, 24, 312103 $x3 = COPY %162104 BLR8 implicit $lr8, implicit $rm, implicit $x32105 2106...2107---2108name: testLBZX2109# CHECK-ALL: name: testLBZX2110alignment: 162111exposesReturnsTwice: false2112legalized: false2113regBankSelected: false2114selected: false2115tracksRegLiveness: true2116registers:2117 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }2118 - { id: 1, class: g8rc, preferred-register: '' }2119 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }2120 - { id: 3, class: gprc, preferred-register: '' }2121 - { id: 4, class: g8rc, preferred-register: '' }2122 - { id: 5, class: g8rc, preferred-register: '' }2123 - { id: 6, class: g8rc, preferred-register: '' }2124 - { id: 7, class: gprc, preferred-register: '' }2125 - { id: 8, class: gprc, preferred-register: '' }2126 - { id: 9, class: g8rc, preferred-register: '' }2127 - { id: 10, class: g8rc, preferred-register: '' }2128 - { id: 11, class: g8rc, preferred-register: '' }2129 - { id: 12, class: gprc, preferred-register: '' }2130 - { id: 13, class: gprc, preferred-register: '' }2131 - { id: 14, class: g8rc, preferred-register: '' }2132 - { id: 15, class: g8rc, preferred-register: '' }2133 - { id: 16, class: g8rc, preferred-register: '' }2134liveins:2135 - { reg: '$x3', virtual-reg: '%0' }2136 - { reg: '$x4', virtual-reg: '%1' }2137frameInfo:2138 isFrameAddressTaken: false2139 isReturnAddressTaken: false2140 hasStackMap: false2141 hasPatchPoint: false2142 stackSize: 02143 offsetAdjustment: 02144 maxAlignment: 02145 adjustsStack: false2146 hasCalls: false2147 stackProtector: ''2148 maxCallFrameSize: 42949672952149 hasOpaqueSPAdjustment: false2150 hasVAStart: false2151 hasMustTailInVarArgFunc: false2152 savePoint: []2153 restorePoint: []2154fixedStack:2155stack:2156constants:2157body: |2158 bb.0.entry:2159 liveins: $x3, $x42160 2161 %1 = COPY $x42162 %0 = LI8 452163 %2 = COPY %1.sub_322164 %3 = ADDI %2, 12165 %5 = IMPLICIT_DEF2166 %4 = INSERT_SUBREG %5, killed %3, 12167 %6 = RLDICL killed %4, 0, 322168 %7 = LBZX %0, killed %6 :: (load (s8) from %ir.arrayidx, !tbaa !3)2169 ; CHECK: LBZ 45, killed %62170 ; CHECK-LATE: lbz 5, 45(5)2171 %8 = ADDI %2, 22172 %10 = IMPLICIT_DEF2173 %9 = INSERT_SUBREG %10, killed %8, 12174 %11 = RLDICL killed %9, 0, 322175 %12 = LBZX %0, killed %11 :: (load (s8) from %ir.arrayidx3, !tbaa !3)2176 ; CHECK: LBZ 45, killed %112177 ; CHECK-LATE: lbz 3, 45(4)2178 %13 = ADD4 killed %12, killed %72179 %15 = IMPLICIT_DEF2180 %14 = INSERT_SUBREG %15, killed %13, 12181 %16 = RLWINM8 killed %14, 0, 24, 312182 $x3 = COPY %162183 BLR8 implicit $lr8, implicit $rm, implicit $x32184 2185...2186---2187name: testLHZUX2188# CHECK-ALL: name: testLHZUX2189alignment: 162190exposesReturnsTwice: false2191legalized: false2192regBankSelected: false2193selected: false2194tracksRegLiveness: true2195registers:2196 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }2197 - { id: 1, class: g8rc, preferred-register: '' }2198 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }2199 - { id: 3, class: gprc, preferred-register: '' }2200 - { id: 4, class: g8rc, preferred-register: '' }2201 - { id: 5, class: g8rc, preferred-register: '' }2202 - { id: 6, class: g8rc, preferred-register: '' }2203 - { id: 7, class: gprc, preferred-register: '' }2204 - { id: 8, class: gprc, preferred-register: '' }2205 - { id: 9, class: g8rc, preferred-register: '' }2206 - { id: 10, class: g8rc, preferred-register: '' }2207 - { id: 11, class: g8rc, preferred-register: '' }2208 - { id: 12, class: gprc, preferred-register: '' }2209 - { id: 13, class: gprc, preferred-register: '' }2210 - { id: 14, class: g8rc, preferred-register: '' }2211 - { id: 15, class: g8rc, preferred-register: '' }2212 - { id: 16, class: g8rc, preferred-register: '' }2213 - { id: 17, class: g8rc_and_g8rc_nox0, preferred-register: '' }2214liveins:2215 - { reg: '$x3', virtual-reg: '%0' }2216 - { reg: '$x4', virtual-reg: '%1' }2217frameInfo:2218 isFrameAddressTaken: false2219 isReturnAddressTaken: false2220 hasStackMap: false2221 hasPatchPoint: false2222 stackSize: 02223 offsetAdjustment: 02224 maxAlignment: 02225 adjustsStack: false2226 hasCalls: false2227 stackProtector: ''2228 maxCallFrameSize: 42949672952229 hasOpaqueSPAdjustment: false2230 hasVAStart: false2231 hasMustTailInVarArgFunc: false2232 savePoint: []2233 restorePoint: []2234fixedStack:2235stack:2236constants:2237body: |2238 bb.0.entry:2239 liveins: $x3, $x42240 2241 %1 = COPY $x42242 %0 = COPY $x32243 %2 = COPY %1.sub_322244 %3 = ADDI %2, 12245 %5 = IMPLICIT_DEF2246 %4 = INSERT_SUBREG %5, killed %3, 12247 %6 = RLDIC killed %4, 1, 312248 %7 = LHZX %0, killed %6 :: (load (s16) from %ir.arrayidx, !tbaa !6)2249 %8 = ADDI %2, 22250 %10 = IMPLICIT_DEF2251 %9 = INSERT_SUBREG %10, killed %8, 12252 %11 = LI8 314402253 %12,%17 = LHZUX %0, killed %11 :: (load (s16) from %ir.arrayidx3, !tbaa !6)2254 ; CHECK: LHZU 31440, killed %02255 ; CHECK-LATE: lhzu 5, 31440(3)2256 %13 = ADD4 killed %12, killed %72257 %15 = IMPLICIT_DEF2258 %14 = INSERT_SUBREG %15, killed %13, 12259 %16 = RLWINM8 killed %14, 0, 16, 312260 $x3 = COPY %162261 BLR8 implicit $lr8, implicit $rm, implicit $x32262 2263...2264---2265name: testLHZX2266# CHECK-ALL: name: testLHZX2267alignment: 162268exposesReturnsTwice: false2269legalized: false2270regBankSelected: false2271selected: false2272tracksRegLiveness: true2273registers:2274 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }2275 - { id: 1, class: g8rc, preferred-register: '' }2276 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }2277 - { id: 3, class: gprc, preferred-register: '' }2278 - { id: 4, class: g8rc, preferred-register: '' }2279 - { id: 5, class: g8rc, preferred-register: '' }2280 - { id: 6, class: g8rc, preferred-register: '' }2281 - { id: 7, class: gprc, preferred-register: '' }2282 - { id: 8, class: gprc, preferred-register: '' }2283 - { id: 9, class: g8rc, preferred-register: '' }2284 - { id: 10, class: g8rc, preferred-register: '' }2285 - { id: 11, class: g8rc, preferred-register: '' }2286 - { id: 12, class: gprc, preferred-register: '' }2287 - { id: 13, class: gprc, preferred-register: '' }2288 - { id: 14, class: g8rc, preferred-register: '' }2289 - { id: 15, class: g8rc, preferred-register: '' }2290 - { id: 16, class: g8rc, preferred-register: '' }2291liveins:2292 - { reg: '$x3', virtual-reg: '%0' }2293 - { reg: '$x4', virtual-reg: '%1' }2294frameInfo:2295 isFrameAddressTaken: false2296 isReturnAddressTaken: false2297 hasStackMap: false2298 hasPatchPoint: false2299 stackSize: 02300 offsetAdjustment: 02301 maxAlignment: 02302 adjustsStack: false2303 hasCalls: false2304 stackProtector: ''2305 maxCallFrameSize: 42949672952306 hasOpaqueSPAdjustment: false2307 hasVAStart: false2308 hasMustTailInVarArgFunc: false2309 savePoint: []2310 restorePoint: []2311fixedStack:2312stack:2313constants:2314body: |2315 bb.0.entry:2316 liveins: $x3, $x42317 2318 %1 = COPY $x42319 %0 = COPY $x32320 %2 = COPY %1.sub_322321 %3 = ADDI %2, 12322 %5 = IMPLICIT_DEF2323 %4 = INSERT_SUBREG %5, killed %3, 12324 %6 = RLDIC killed %4, 1, 312325 %7 = LHZX %0, killed %6 :: (load (s16) from %ir.arrayidx, !tbaa !6)2326 %8 = ADDI %2, 22327 %10 = IMPLICIT_DEF2328 %9 = INSERT_SUBREG %10, killed %8, 12329 %11 = LI8 8822330 %12 = LHZX %0, killed %11 :: (load (s16) from %ir.arrayidx3, !tbaa !6)2331 ; CHECK: LHZ 882, killed %02332 ; CHECK-LATE: lhz 3, 882(3)2333 %13 = ADD4 killed %12, killed %72334 %15 = IMPLICIT_DEF2335 %14 = INSERT_SUBREG %15, killed %13, 12336 %16 = RLWINM8 killed %14, 0, 16, 312337 $x3 = COPY %162338 BLR8 implicit $lr8, implicit $rm, implicit $x32339 2340...2341---2342name: testLHAUX2343# CHECK-ALL: name: testLHAUX2344alignment: 162345exposesReturnsTwice: false2346legalized: false2347regBankSelected: false2348selected: false2349tracksRegLiveness: true2350registers:2351 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }2352 - { id: 1, class: g8rc, preferred-register: '' }2353 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }2354 - { id: 3, class: gprc, preferred-register: '' }2355 - { id: 4, class: g8rc, preferred-register: '' }2356 - { id: 5, class: g8rc, preferred-register: '' }2357 - { id: 6, class: g8rc, preferred-register: '' }2358 - { id: 7, class: gprc, preferred-register: '' }2359 - { id: 8, class: gprc, preferred-register: '' }2360 - { id: 9, class: g8rc, preferred-register: '' }2361 - { id: 10, class: g8rc, preferred-register: '' }2362 - { id: 11, class: g8rc, preferred-register: '' }2363 - { id: 12, class: gprc, preferred-register: '' }2364 - { id: 13, class: gprc, preferred-register: '' }2365 - { id: 14, class: g8rc, preferred-register: '' }2366 - { id: 15, class: g8rc, preferred-register: '' }2367 - { id: 16, class: g8rc, preferred-register: '' }2368 - { id: 17, class: g8rc_and_g8rc_nox0, preferred-register: '' }2369liveins:2370 - { reg: '$x3', virtual-reg: '%0' }2371 - { reg: '$x4', virtual-reg: '%1' }2372frameInfo:2373 isFrameAddressTaken: false2374 isReturnAddressTaken: false2375 hasStackMap: false2376 hasPatchPoint: false2377 stackSize: 02378 offsetAdjustment: 02379 maxAlignment: 02380 adjustsStack: false2381 hasCalls: false2382 stackProtector: ''2383 maxCallFrameSize: 42949672952384 hasOpaqueSPAdjustment: false2385 hasVAStart: false2386 hasMustTailInVarArgFunc: false2387 savePoint: []2388 restorePoint: []2389fixedStack:2390stack:2391constants:2392body: |2393 bb.0.entry:2394 liveins: $x3, $x42395 2396 %1 = COPY $x42397 %0 = COPY $x32398 %2 = COPY %1.sub_322399 %3 = ADDI %2, 12400 %5 = IMPLICIT_DEF2401 %4 = INSERT_SUBREG %5, killed %3, 12402 %6 = RLDIC %4, 1, 312403 %7 = LHZX %0, killed %6 :: (load (s16) from %ir.arrayidx, !tbaa !6)2404 %8 = ADDI %2, 22405 %10 = IMPLICIT_DEF2406 %9 = INSERT_SUBREG %10, killed %8, 12407 %11 = LI8 4002408 %12,%17 = LHAUX %0, killed %11 :: (load (s16) from %ir.arrayidx3, !tbaa !6)2409 ; CHECK: LHAU 400, killed %02410 ; CHECK-LATE: lhau 5, 400(3)2411 %13 = ADD4 killed %12, killed %72412 %15 = IMPLICIT_DEF2413 %14 = INSERT_SUBREG %15, killed %13, 12414 %16 = EXTSH8 killed %142415 $x3 = COPY %162416 BLR8 implicit $lr8, implicit $rm, implicit $x32417 2418...2419---2420name: testLHAX2421# CHECK-ALL: name: testLHAX2422alignment: 162423exposesReturnsTwice: false2424legalized: false2425regBankSelected: false2426selected: false2427tracksRegLiveness: true2428registers:2429 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }2430 - { id: 1, class: g8rc, preferred-register: '' }2431 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }2432 - { id: 3, class: gprc, preferred-register: '' }2433 - { id: 4, class: g8rc, preferred-register: '' }2434 - { id: 5, class: g8rc, preferred-register: '' }2435 - { id: 6, class: g8rc, preferred-register: '' }2436 - { id: 7, class: gprc, preferred-register: '' }2437 - { id: 8, class: gprc, preferred-register: '' }2438 - { id: 9, class: g8rc, preferred-register: '' }2439 - { id: 10, class: g8rc, preferred-register: '' }2440 - { id: 11, class: g8rc, preferred-register: '' }2441 - { id: 12, class: gprc, preferred-register: '' }2442 - { id: 13, class: gprc, preferred-register: '' }2443 - { id: 14, class: g8rc, preferred-register: '' }2444 - { id: 15, class: g8rc, preferred-register: '' }2445 - { id: 16, class: g8rc, preferred-register: '' }2446liveins:2447 - { reg: '$x3', virtual-reg: '%0' }2448 - { reg: '$x4', virtual-reg: '%1' }2449frameInfo:2450 isFrameAddressTaken: false2451 isReturnAddressTaken: false2452 hasStackMap: false2453 hasPatchPoint: false2454 stackSize: 02455 offsetAdjustment: 02456 maxAlignment: 02457 adjustsStack: false2458 hasCalls: false2459 stackProtector: ''2460 maxCallFrameSize: 42949672952461 hasOpaqueSPAdjustment: false2462 hasVAStart: false2463 hasMustTailInVarArgFunc: false2464 savePoint: []2465 restorePoint: []2466fixedStack:2467stack:2468constants:2469body: |2470 bb.0.entry:2471 liveins: $x3, $x42472 2473 %1 = COPY $x42474 %0 = COPY $x32475 %2 = COPY %1.sub_322476 %3 = ADDI %2, 12477 %5 = IMPLICIT_DEF2478 %4 = INSERT_SUBREG %5, killed %3, 12479 %6 = LI8 -9992480 %7 = LHAX %0, killed %6 :: (load (s16) from %ir.arrayidx, !tbaa !6)2481 ; CHECK: LHA -999, %02482 ; CHECK-LATE: lha 4, -999(3)2483 %8 = ADDI %2, 22484 %10 = IMPLICIT_DEF2485 %9 = INSERT_SUBREG %10, killed %8, 12486 %11 = LI8 9992487 %12 = LHAX %0, killed %11 :: (load (s16) from %ir.arrayidx3, !tbaa !6)2488 ; CHECK: LHA 999, killed %02489 ; CHECK-LATE: lha 3, 999(3)2490 %13 = ADD4 killed %12, killed %72491 %15 = IMPLICIT_DEF2492 %14 = INSERT_SUBREG %15, killed %13, 12493 %16 = EXTSH8 killed %142494 $x3 = COPY %162495 BLR8 implicit $lr8, implicit $rm, implicit $x32496 2497...2498---2499name: testLWZUX2500# CHECK-ALL: name: testLWZUX2501alignment: 162502exposesReturnsTwice: false2503legalized: false2504regBankSelected: false2505selected: false2506tracksRegLiveness: true2507registers:2508 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }2509 - { id: 1, class: g8rc, preferred-register: '' }2510 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }2511 - { id: 3, class: gprc, preferred-register: '' }2512 - { id: 4, class: g8rc, preferred-register: '' }2513 - { id: 5, class: g8rc, preferred-register: '' }2514 - { id: 6, class: g8rc, preferred-register: '' }2515 - { id: 7, class: gprc, preferred-register: '' }2516 - { id: 8, class: gprc, preferred-register: '' }2517 - { id: 9, class: g8rc, preferred-register: '' }2518 - { id: 10, class: g8rc, preferred-register: '' }2519 - { id: 11, class: g8rc, preferred-register: '' }2520 - { id: 12, class: gprc, preferred-register: '' }2521 - { id: 13, class: gprc, preferred-register: '' }2522 - { id: 14, class: g8rc, preferred-register: '' }2523 - { id: 15, class: g8rc, preferred-register: '' }2524 - { id: 16, class: g8rc, preferred-register: '' }2525 - { id: 17, class: g8rc_and_g8rc_nox0, preferred-register: '' }2526 - { id: 18, class: g8rc_and_g8rc_nox0, preferred-register: '' }2527liveins:2528 - { reg: '$x3', virtual-reg: '%0' }2529 - { reg: '$x4', virtual-reg: '%1' }2530frameInfo:2531 isFrameAddressTaken: false2532 isReturnAddressTaken: false2533 hasStackMap: false2534 hasPatchPoint: false2535 stackSize: 02536 offsetAdjustment: 02537 maxAlignment: 02538 adjustsStack: false2539 hasCalls: false2540 stackProtector: ''2541 maxCallFrameSize: 42949672952542 hasOpaqueSPAdjustment: false2543 hasVAStart: false2544 hasMustTailInVarArgFunc: false2545 savePoint: []2546 restorePoint: []2547fixedStack:2548stack:2549constants:2550body: |2551 bb.0.entry:2552 liveins: $x3, $x42553 2554 %1 = COPY $x42555 %0 = COPY $x32556 %2 = COPY %1.sub_322557 %3 = ADDI %2, 12558 %5 = IMPLICIT_DEF2559 %4 = INSERT_SUBREG %5, killed %3, 12560 %6 = LI8 8892561 %7,%17 = LWZUX %0, killed %6 :: (load (s32) from %ir.arrayidx, !tbaa !8)2562 ; CHECK: LWZU 889, %02563 ; CHECK-LATE: lwzu {{[0-9]+}}, 889({{[0-9]+}})2564 %8 = ADDI %2, 22565 %10 = IMPLICIT_DEF2566 %9 = INSERT_SUBREG %10, killed %8, 12567 %11 = LI8 -22568 %12,%18 = LWZUX %0, killed %11 :: (load (s32) from %ir.arrayidx3, !tbaa !8)2569 ; CHECK: LWZU -2, killed %02570 ; CHECK-LATE: lwzu {{[0-9]+}}, -2({{[0-9]+}})2571 %13 = ADD4 killed %12, killed %72572 %15 = IMPLICIT_DEF2573 %14 = INSERT_SUBREG %15, killed %13, 12574 %16 = RLDICL killed %14, 0, 322575 $x3 = COPY %162576 BLR8 implicit $lr8, implicit $rm, implicit $x32577 2578...2579---2580name: testLWZX2581# CHECK-ALL: name: testLWZX2582alignment: 162583exposesReturnsTwice: false2584legalized: false2585regBankSelected: false2586selected: false2587tracksRegLiveness: true2588registers:2589 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }2590 - { id: 1, class: g8rc, preferred-register: '' }2591 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }2592 - { id: 3, class: gprc, preferred-register: '' }2593 - { id: 4, class: g8rc, preferred-register: '' }2594 - { id: 5, class: g8rc, preferred-register: '' }2595 - { id: 6, class: g8rc, preferred-register: '' }2596 - { id: 7, class: gprc, preferred-register: '' }2597 - { id: 8, class: gprc, preferred-register: '' }2598 - { id: 9, class: g8rc, preferred-register: '' }2599 - { id: 10, class: g8rc, preferred-register: '' }2600 - { id: 11, class: g8rc, preferred-register: '' }2601 - { id: 12, class: gprc, preferred-register: '' }2602 - { id: 13, class: gprc, preferred-register: '' }2603 - { id: 14, class: g8rc, preferred-register: '' }2604 - { id: 15, class: g8rc, preferred-register: '' }2605 - { id: 16, class: g8rc, preferred-register: '' }2606liveins:2607 - { reg: '$x3', virtual-reg: '%0' }2608 - { reg: '$x4', virtual-reg: '%1' }2609frameInfo:2610 isFrameAddressTaken: false2611 isReturnAddressTaken: false2612 hasStackMap: false2613 hasPatchPoint: false2614 stackSize: 02615 offsetAdjustment: 02616 maxAlignment: 02617 adjustsStack: false2618 hasCalls: false2619 stackProtector: ''2620 maxCallFrameSize: 42949672952621 hasOpaqueSPAdjustment: false2622 hasVAStart: false2623 hasMustTailInVarArgFunc: false2624 savePoint: []2625 restorePoint: []2626fixedStack:2627stack:2628constants:2629body: |2630 bb.0.entry:2631 liveins: $x3, $x42632 2633 %1 = COPY $x42634 %0 = LI8 10002635 %2 = COPY %1.sub_322636 %3 = ADDI %2, 12637 %5 = IMPLICIT_DEF2638 %4 = INSERT_SUBREG %5, killed %3, 12639 %6 = RLDIC %4, 2, 302640 %7 = LWZX %0, killed %6 :: (load (s32) from %ir.arrayidx, !tbaa !8)2641 ; CHECK: LWZ 1000, killed %62642 ; CHECK-LATE: lwz 5, 1000(5)2643 %8 = ADDI %2, 22644 %10 = IMPLICIT_DEF2645 %9 = INSERT_SUBREG %10, killed %8, 12646 %11 = RLDIC %9, 2, 302647 %12 = LWZX %0, killed %11 :: (load (s32) from %ir.arrayidx3, !tbaa !8)2648 ; CHECK: LWZ 1000, killed %112649 ; CHECK-LATE: lwz 3, 1000(4)2650 %13 = ADD4 killed %12, killed %72651 %15 = IMPLICIT_DEF2652 %14 = INSERT_SUBREG %15, killed %13, 12653 %16 = RLDICL killed %14, 0, 322654 $x3 = COPY %162655 BLR8 implicit $lr8, implicit $rm, implicit $x32656 2657...2658---2659name: testLWAX2660# CHECK-ALL: name: testLWAX2661alignment: 162662exposesReturnsTwice: false2663legalized: false2664regBankSelected: false2665selected: false2666tracksRegLiveness: true2667registers:2668 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }2669 - { id: 1, class: g8rc, preferred-register: '' }2670 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }2671 - { id: 3, class: gprc, preferred-register: '' }2672 - { id: 4, class: g8rc, preferred-register: '' }2673 - { id: 5, class: g8rc, preferred-register: '' }2674 - { id: 6, class: g8rc, preferred-register: '' }2675 - { id: 7, class: g8rc, preferred-register: '' }2676 - { id: 8, class: gprc, preferred-register: '' }2677 - { id: 9, class: g8rc, preferred-register: '' }2678 - { id: 10, class: g8rc, preferred-register: '' }2679 - { id: 11, class: g8rc, preferred-register: '' }2680 - { id: 12, class: g8rc, preferred-register: '' }2681 - { id: 13, class: g8rc, preferred-register: '' }2682liveins:2683 - { reg: '$x3', virtual-reg: '%0' }2684 - { reg: '$x4', virtual-reg: '%1' }2685frameInfo:2686 isFrameAddressTaken: false2687 isReturnAddressTaken: false2688 hasStackMap: false2689 hasPatchPoint: false2690 stackSize: 02691 offsetAdjustment: 02692 maxAlignment: 02693 adjustsStack: false2694 hasCalls: false2695 stackProtector: ''2696 maxCallFrameSize: 42949672952697 hasOpaqueSPAdjustment: false2698 hasVAStart: false2699 hasMustTailInVarArgFunc: false2700 savePoint: []2701 restorePoint: []2702fixedStack:2703stack:2704constants:2705body: |2706 bb.0.entry:2707 liveins: $x3, $x42708 2709 %1 = COPY $x42710 %0 = LI8 4442711 %2 = COPY %1.sub_322712 %3 = ADDI %2, 12713 %5 = IMPLICIT_DEF2714 %4 = INSERT_SUBREG %5, killed %3, 12715 %6 = RLDIC %4, 2, 302716 %7 = LWAX %0, killed %6 :: (load (s32) from %ir.arrayidx, !tbaa !8)2717 ; CHECK: LWA 444, killed %62718 ; CHECK-LATE: lwa 5, 444(5)2719 %8 = ADDI %2, 22720 %10 = IMPLICIT_DEF2721 %9 = INSERT_SUBREG %10, killed %8, 12722 %11 = RLDIC %9, 2, 302723 %12 = LWAX %0, killed %11 :: (load (s32) from %ir.arrayidx3, !tbaa !8)2724 ; CHECK: LWA 444, killed %112725 ; CHECK-LATE: lwa 3, 444(4)2726 %13 = ADD8 killed %12, killed %72727 $x3 = COPY %132728 BLR8 implicit $lr8, implicit $rm, implicit $x32729 2730...2731---2732name: testLDUX2733# CHECK-ALL: name: testLDUX2734alignment: 162735exposesReturnsTwice: false2736legalized: false2737regBankSelected: false2738selected: false2739tracksRegLiveness: true2740registers:2741 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }2742 - { id: 1, class: g8rc, preferred-register: '' }2743 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }2744 - { id: 3, class: gprc, preferred-register: '' }2745 - { id: 4, class: g8rc, preferred-register: '' }2746 - { id: 5, class: g8rc, preferred-register: '' }2747 - { id: 6, class: g8rc, preferred-register: '' }2748 - { id: 7, class: g8rc, preferred-register: '' }2749 - { id: 8, class: gprc, preferred-register: '' }2750 - { id: 9, class: g8rc, preferred-register: '' }2751 - { id: 10, class: g8rc, preferred-register: '' }2752 - { id: 11, class: g8rc, preferred-register: '' }2753 - { id: 12, class: g8rc, preferred-register: '' }2754 - { id: 13, class: g8rc, preferred-register: '' }2755 - { id: 14, class: g8rc_and_g8rc_nox0, preferred-register: '' }2756 - { id: 15, class: g8rc_and_g8rc_nox0, preferred-register: '' }2757liveins:2758 - { reg: '$x3', virtual-reg: '%0' }2759 - { reg: '$x4', virtual-reg: '%1' }2760frameInfo:2761 isFrameAddressTaken: false2762 isReturnAddressTaken: false2763 hasStackMap: false2764 hasPatchPoint: false2765 stackSize: 02766 offsetAdjustment: 02767 maxAlignment: 02768 adjustsStack: false2769 hasCalls: false2770 stackProtector: ''2771 maxCallFrameSize: 42949672952772 hasOpaqueSPAdjustment: false2773 hasVAStart: false2774 hasMustTailInVarArgFunc: false2775 savePoint: []2776 restorePoint: []2777fixedStack:2778stack:2779constants:2780body: |2781 bb.0.entry:2782 liveins: $x3, $x42783 2784 %1 = COPY $x42785 %0 = COPY $x32786 %2 = COPY %1.sub_322787 %3 = ADDI %2, 12788 %5 = IMPLICIT_DEF2789 %4 = INSERT_SUBREG %5, killed %3, 12790 %6 = LI8 1002791 %7,%14 = LDUX %0, killed %6 :: (load (s64) from %ir.arrayidx, !tbaa !10)2792 ; CHECK: LDU 100, %02793 ; CHECK-LATE: ldu {{[0-9]+}}, 100({{[0-9]+}})2794 %8 = ADDI %2, 22795 %10 = IMPLICIT_DEF2796 %9 = INSERT_SUBREG %10, killed %8, 12797 %11 = LI8 2002798 %12,%15 = LDUX %0, killed %11 :: (load (s64) from %ir.arrayidx3, !tbaa !10)2799 ; CHECK: LDU 200, killed %02800 ; CHECK-LATE: ldu {{[0-9]+}}, 200({{[0-9]+}})2801 %13 = ADD8 killed %12, killed %72802 $x3 = COPY %132803 BLR8 implicit $lr8, implicit $rm, implicit $x32804 2805...2806---2807name: testLDX2808# CHECK-ALL: name: testLDX2809alignment: 162810exposesReturnsTwice: false2811legalized: false2812regBankSelected: false2813selected: false2814tracksRegLiveness: true2815registers:2816 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }2817 - { id: 1, class: g8rc, preferred-register: '' }2818 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }2819 - { id: 3, class: gprc, preferred-register: '' }2820 - { id: 4, class: g8rc, preferred-register: '' }2821 - { id: 5, class: g8rc, preferred-register: '' }2822 - { id: 6, class: g8rc, preferred-register: '' }2823 - { id: 7, class: g8rc, preferred-register: '' }2824 - { id: 8, class: gprc, preferred-register: '' }2825 - { id: 9, class: g8rc, preferred-register: '' }2826 - { id: 10, class: g8rc, preferred-register: '' }2827 - { id: 11, class: g8rc, preferred-register: '' }2828 - { id: 12, class: g8rc, preferred-register: '' }2829 - { id: 13, class: g8rc, preferred-register: '' }2830liveins:2831 - { reg: '$x3', virtual-reg: '%0' }2832 - { reg: '$x4', virtual-reg: '%1' }2833frameInfo:2834 isFrameAddressTaken: false2835 isReturnAddressTaken: false2836 hasStackMap: false2837 hasPatchPoint: false2838 stackSize: 02839 offsetAdjustment: 02840 maxAlignment: 02841 adjustsStack: false2842 hasCalls: false2843 stackProtector: ''2844 maxCallFrameSize: 42949672952845 hasOpaqueSPAdjustment: false2846 hasVAStart: false2847 hasMustTailInVarArgFunc: false2848 savePoint: []2849 restorePoint: []2850fixedStack:2851stack:2852constants:2853body: |2854 bb.0.entry:2855 liveins: $x3, $x42856 2857 %1 = COPY $x42858 %0 = COPY $x32859 %2 = COPY %1.sub_322860 %3 = ADDI %2, 12861 %5 = IMPLICIT_DEF2862 %4 = INSERT_SUBREG %5, killed %3, 12863 %6 = LI8 1202864 %7 = LDX %0, killed %6 :: (load (s64) from %ir.arrayidx, !tbaa !10)2865 ; CHECK: LD 120, %02866 ; CHECK-LATE: ld 4, 120(3)2867 %8 = ADDI %2, 22868 %10 = IMPLICIT_DEF2869 %9 = INSERT_SUBREG %10, killed %8, 12870 %11 = LI8 2802871 %12 = LDX %0, killed %11 :: (load (s64) from %ir.arrayidx3, !tbaa !10)2872 ; CHECK: LD 280, killed %02873 ; CHECK-LATE: ld 3, 280(3)2874 %13 = ADD8 killed %12, killed %72875 $x3 = COPY %132876 BLR8 implicit $lr8, implicit $rm, implicit $x32877 2878...2879---2880name: testLFDUX2881# CHECK-ALL: name: testLFDUX2882alignment: 162883exposesReturnsTwice: false2884legalized: false2885regBankSelected: false2886selected: false2887tracksRegLiveness: true2888registers:2889 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }2890 - { id: 1, class: g8rc, preferred-register: '' }2891 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }2892 - { id: 3, class: gprc, preferred-register: '' }2893 - { id: 4, class: g8rc, preferred-register: '' }2894 - { id: 5, class: g8rc, preferred-register: '' }2895 - { id: 6, class: g8rc, preferred-register: '' }2896 - { id: 7, class: f8rc, preferred-register: '' }2897 - { id: 8, class: gprc, preferred-register: '' }2898 - { id: 9, class: g8rc, preferred-register: '' }2899 - { id: 10, class: g8rc, preferred-register: '' }2900 - { id: 11, class: g8rc, preferred-register: '' }2901 - { id: 12, class: f8rc, preferred-register: '' }2902 - { id: 13, class: f8rc, preferred-register: '' }2903 - { id: 14, class: g8rc_and_g8rc_nox0, preferred-register: '' }2904 - { id: 15, class: g8rc_and_g8rc_nox0, preferred-register: '' }2905liveins:2906 - { reg: '$x3', virtual-reg: '%0' }2907 - { reg: '$x4', virtual-reg: '%1' }2908frameInfo:2909 isFrameAddressTaken: false2910 isReturnAddressTaken: false2911 hasStackMap: false2912 hasPatchPoint: false2913 stackSize: 02914 offsetAdjustment: 02915 maxAlignment: 02916 adjustsStack: false2917 hasCalls: false2918 stackProtector: ''2919 maxCallFrameSize: 42949672952920 hasOpaqueSPAdjustment: false2921 hasVAStart: false2922 hasMustTailInVarArgFunc: false2923 savePoint: []2924 restorePoint: []2925fixedStack:2926stack:2927constants:2928body: |2929 bb.0.entry:2930 liveins: $x3, $x42931 2932 %1 = COPY $x42933 %0 = COPY $x32934 %2 = COPY %1.sub_322935 %3 = ADDI %2, 12936 %5 = IMPLICIT_DEF2937 %4 = INSERT_SUBREG %5, killed %3, 12938 %6 = LI8 4402939 %7,%14 = LFDUX %0, killed %6 :: (load (s64) from %ir.arrayidx, !tbaa !12)2940 ; CHECK: LFDU 440, %02941 ; CHECK-LATE: lfdu {{[0-9]+}}, 440({{[0-9]+}})2942 %8 = ADDI %2, 22943 %10 = IMPLICIT_DEF2944 %9 = INSERT_SUBREG %10, killed %8, 12945 %11 = LI8 162946 %12,%15 = LFDUX %0, killed %11 :: (load (s64) from %ir.arrayidx3, !tbaa !12)2947 ; CHECK: LFDU 16, killed %02948 ; CHECK-LATE: lfdu {{[0-9]+}}, 16({{[0-9]+}})2949 %13 = FADD killed %7, killed %12, implicit $rm2950 $f1 = COPY %132951 BLR8 implicit $lr8, implicit $rm, implicit $f12952 2953...2954---2955name: testLFDX2956# CHECK-ALL: name: testLFDX2957alignment: 162958exposesReturnsTwice: false2959legalized: false2960regBankSelected: false2961selected: false2962tracksRegLiveness: true2963registers:2964 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }2965 - { id: 1, class: g8rc, preferred-register: '' }2966 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }2967 - { id: 3, class: gprc, preferred-register: '' }2968 - { id: 4, class: g8rc, preferred-register: '' }2969 - { id: 5, class: g8rc, preferred-register: '' }2970 - { id: 6, class: g8rc, preferred-register: '' }2971 - { id: 7, class: f8rc, preferred-register: '' }2972 - { id: 8, class: gprc, preferred-register: '' }2973 - { id: 9, class: g8rc, preferred-register: '' }2974 - { id: 10, class: g8rc, preferred-register: '' }2975 - { id: 11, class: g8rc, preferred-register: '' }2976 - { id: 12, class: f8rc, preferred-register: '' }2977 - { id: 13, class: f8rc, preferred-register: '' }2978liveins:2979 - { reg: '$x3', virtual-reg: '%0' }2980 - { reg: '$x4', virtual-reg: '%1' }2981frameInfo:2982 isFrameAddressTaken: false2983 isReturnAddressTaken: false2984 hasStackMap: false2985 hasPatchPoint: false2986 stackSize: 02987 offsetAdjustment: 02988 maxAlignment: 02989 adjustsStack: false2990 hasCalls: false2991 stackProtector: ''2992 maxCallFrameSize: 42949672952993 hasOpaqueSPAdjustment: false2994 hasVAStart: false2995 hasMustTailInVarArgFunc: false2996 savePoint: []2997 restorePoint: []2998fixedStack:2999stack:3000constants:3001body: |3002 bb.0.entry:3003 liveins: $x3, $x43004 3005 %1 = COPY $x43006 %0 = LI8 -203007 %2 = COPY %1.sub_323008 %3 = ADDI %2, 13009 %5 = IMPLICIT_DEF3010 %4 = INSERT_SUBREG %5, killed %3, 13011 %6 = RLDIC %4, 3, 293012 %7 = LFDX %0, killed %6 :: (load (s64) from %ir.arrayidx, !tbaa !12)3013 ; CHECK: LFD -20, killed %63014 ; CHECK-LATE: lfd {{[0-9]+}}, -20({{[0-9]+}})3015 %8 = ADDI %2, 23016 %10 = IMPLICIT_DEF3017 %9 = INSERT_SUBREG %10, killed %8, 13018 %11 = RLDIC %9, 3, 293019 %12 = LFDX %0, killed %11 :: (load (s64) from %ir.arrayidx3, !tbaa !12)3020 ; CHECK: LFD -20, killed %113021 ; CHECK-LATE: lfd {{[0-9]+}}, -20({{[0-9]+}})3022 %13 = FADD killed %7, killed %12, implicit $rm3023 $f1 = COPY %133024 BLR8 implicit $lr8, implicit $rm, implicit $f13025 3026...3027---3028name: testLFSUX3029# CHECK-ALL: name: testLFSUX3030alignment: 163031exposesReturnsTwice: false3032legalized: false3033regBankSelected: false3034selected: false3035tracksRegLiveness: true3036registers:3037 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }3038 - { id: 1, class: g8rc, preferred-register: '' }3039 - { id: 2, class: g8rc, preferred-register: '' }3040 - { id: 3, class: f8rc, preferred-register: '' }3041 - { id: 4, class: g8rc_and_g8rc_nox0, preferred-register: '' }3042 - { id: 5, class: f8rc, preferred-register: '' }3043 - { id: 6, class: g8rc, preferred-register: '' }3044 - { id: 7, class: gprc, preferred-register: '' }3045 - { id: 8, class: f8rc, preferred-register: '' }3046 - { id: 9, class: f8rc, preferred-register: '' }3047 - { id: 10, class: f8rc, preferred-register: '' }3048 - { id: 11, class: g8rc, preferred-register: '' }3049 - { id: 12, class: gprc, preferred-register: '' }3050 - { id: 13, class: f8rc, preferred-register: '' }3051 - { id: 14, class: f8rc, preferred-register: '' }3052 - { id: 15, class: f8rc, preferred-register: '' }3053 - { id: 16, class: g8rc, preferred-register: '' }3054 - { id: 17, class: gprc, preferred-register: '' }3055 - { id: 18, class: f8rc, preferred-register: '' }3056 - { id: 19, class: f8rc, preferred-register: '' }3057 - { id: 20, class: f8rc, preferred-register: '' }3058 - { id: 21, class: g8rc, preferred-register: '' }3059 - { id: 22, class: gprc, preferred-register: '' }3060 - { id: 23, class: g8rc, preferred-register: '' }3061 - { id: 24, class: vrrc, preferred-register: '' }3062liveins:3063 - { reg: '$x3', virtual-reg: '%0' }3064 - { reg: '$x4', virtual-reg: '%1' }3065frameInfo:3066 isFrameAddressTaken: false3067 isReturnAddressTaken: false3068 hasStackMap: false3069 hasPatchPoint: false3070 stackSize: 03071 offsetAdjustment: 03072 maxAlignment: 163073 adjustsStack: false3074 hasCalls: false3075 stackProtector: ''3076 maxCallFrameSize: 42949672953077 hasOpaqueSPAdjustment: false3078 hasVAStart: false3079 hasMustTailInVarArgFunc: false3080 savePoint: []3081 restorePoint: []3082fixedStack:3083stack:3084 - { id: 0, name: '', type: default, offset: 0, size: 16, alignment: 16,3085 stack-id: default, callee-saved-register: '', callee-saved-restored: true,3086 local-offset: -16, debug-info-variable: '', debug-info-expression: '',3087 debug-info-location: '' }3088 - { id: 1, name: '', type: default, offset: 0, size: 4, alignment: 4,3089 stack-id: default, callee-saved-register: '', callee-saved-restored: true,3090 local-offset: -20, debug-info-variable: '', debug-info-expression: '',3091 debug-info-location: '' }3092 - { id: 2, name: '', type: default, offset: 0, size: 4, alignment: 4,3093 stack-id: default, callee-saved-register: '', callee-saved-restored: true,3094 local-offset: -24, debug-info-variable: '', debug-info-expression: '',3095 debug-info-location: '' }3096 - { id: 3, name: '', type: default, offset: 0, size: 4, alignment: 4,3097 stack-id: default, callee-saved-register: '', callee-saved-restored: true,3098 local-offset: -28, debug-info-variable: '', debug-info-expression: '',3099 debug-info-location: '' }3100 - { id: 4, name: '', type: default, offset: 0, size: 4, alignment: 4,3101 stack-id: default, callee-saved-register: '', callee-saved-restored: true,3102 local-offset: -32, debug-info-variable: '', debug-info-expression: '',3103 debug-info-location: '' }3104constants:3105body: |3106 bb.0.entry:3107 liveins: $x3, $x43108 3109 %1 = COPY $x43110 %0 = COPY $x33111 %2 = LI8 723112 %3, %4 = LFSUX %0, killed %2 :: (load (s32) from %ir.arrayidx, !tbaa !14)3113 ; CHECK: LFSU 72, killed %03114 ; CHECK-LATE: lfsu 0, 72(3)3115 %5 = FCTIWUZ killed %3, implicit $rm3116 %6 = ADDI8 %stack.4, 03117 STFIWX killed %5, $zero8, killed %63118 %7 = LWZ 0, %stack.4 :: (load (s32) from %stack.4)3119 %8 = LFS 4, %4 :: (load (s32) from %ir.3, !tbaa !14)3120 %10 = FCTIWUZ %8, implicit $rm3121 %11 = ADDI8 %stack.1, 03122 STFIWX killed %10, $zero8, killed %113123 %12 = LWZ 0, %stack.1 :: (load (s32) from %stack.1)3124 %13 = LFS 8, %4 :: (load (s32) from %ir.5, !tbaa !14)3125 %15 = FCTIWUZ %13, implicit $rm3126 %16 = ADDI8 %stack.2, 03127 STFIWX killed %15, $zero8, killed %163128 %17 = LWZ 0, %stack.2 :: (load (s32) from %stack.2)3129 %18 = LFS 12, %4 :: (load (s32) from %ir.7, !tbaa !14)3130 %20 = FCTIWUZ %18, implicit $rm3131 %21 = ADDI8 %stack.3, 03132 STFIWX killed %20, $zero8, killed %213133 %22 = LWZ 0, %stack.3 :: (load (s32) from %stack.3)3134 STW killed %7, 0, %stack.0 :: (store (s32) into %stack.0, align 16)3135 STW killed %22, 12, %stack.0 :: (store (s32) into %stack.0 + 12)3136 STW killed %17, 8, %stack.0 :: (store (s32) into %stack.0 + 8, align 8)3137 STW killed %12, 4, %stack.0 :: (store (s32) into %stack.0 + 4)3138 %23 = ADDI8 %stack.0, 03139 %24 = LVX $zero8, killed %23 :: (load (s128) from %stack.0)3140 $v2 = COPY %243141 BLR8 implicit $lr8, implicit $rm, implicit $v23142 3143...3144---3145name: testLFSX3146# CHECK-ALL: name: testLFSX3147alignment: 163148exposesReturnsTwice: false3149legalized: false3150regBankSelected: false3151selected: false3152tracksRegLiveness: true3153registers:3154 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }3155 - { id: 1, class: g8rc, preferred-register: '' }3156 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }3157 - { id: 3, class: gprc, preferred-register: '' }3158 - { id: 4, class: g8rc, preferred-register: '' }3159 - { id: 5, class: g8rc, preferred-register: '' }3160 - { id: 6, class: g8rc, preferred-register: '' }3161 - { id: 7, class: f4rc, preferred-register: '' }3162 - { id: 8, class: gprc, preferred-register: '' }3163 - { id: 9, class: g8rc, preferred-register: '' }3164 - { id: 10, class: g8rc, preferred-register: '' }3165 - { id: 11, class: g8rc, preferred-register: '' }3166 - { id: 12, class: f4rc, preferred-register: '' }3167 - { id: 13, class: f4rc, preferred-register: '' }3168liveins:3169 - { reg: '$x3', virtual-reg: '%0' }3170 - { reg: '$x4', virtual-reg: '%1' }3171frameInfo:3172 isFrameAddressTaken: false3173 isReturnAddressTaken: false3174 hasStackMap: false3175 hasPatchPoint: false3176 stackSize: 03177 offsetAdjustment: 03178 maxAlignment: 03179 adjustsStack: false3180 hasCalls: false3181 stackProtector: ''3182 maxCallFrameSize: 42949672953183 hasOpaqueSPAdjustment: false3184 hasVAStart: false3185 hasMustTailInVarArgFunc: false3186 savePoint: []3187 restorePoint: []3188fixedStack:3189stack:3190constants:3191body: |3192 bb.0.entry:3193 liveins: $x3, $x43194 3195 %1 = COPY $x43196 %0 = COPY $x33197 %2 = COPY %1.sub_323198 %3 = ADDI %2, 13199 %5 = IMPLICIT_DEF3200 %4 = INSERT_SUBREG %5, killed %3, 13201 %6 = LI8 883202 %7 = LFSX %0, killed %6 :: (load (s32) from %ir.arrayidx, !tbaa !14)3203 ; CHECK: LFS 88, %03204 ; CHECK-LATE: lfs 0, 88(3)3205 %8 = ADDI %2, 23206 %10 = IMPLICIT_DEF3207 %9 = INSERT_SUBREG %10, killed %8, 13208 %11 = LI8 -883209 %12 = LFSX %0, killed %11 :: (load (s32) from %ir.arrayidx3, !tbaa !14)3210 ; CHECK: LFS -88, killed %03211 ; CHECK-LATE: lfs 1, -88(3)3212 %13 = FADDS killed %7, killed %12, implicit $rm3213 $f1 = COPY %133214 BLR8 implicit $lr8, implicit $rm, implicit $f13215 3216...3217---3218name: testLXSDX3219# CHECK-ALL: name: testLXSDX3220alignment: 163221exposesReturnsTwice: false3222legalized: false3223regBankSelected: false3224selected: false3225tracksRegLiveness: true3226registers:3227 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }3228 - { id: 1, class: g8rc, preferred-register: '' }3229 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }3230 - { id: 3, class: gprc, preferred-register: '' }3231 - { id: 4, class: g8rc, preferred-register: '' }3232 - { id: 5, class: g8rc, preferred-register: '' }3233 - { id: 6, class: g8rc, preferred-register: '' }3234 - { id: 7, class: vsfrc, preferred-register: '' }3235 - { id: 8, class: gprc, preferred-register: '' }3236 - { id: 9, class: g8rc, preferred-register: '' }3237 - { id: 10, class: g8rc, preferred-register: '' }3238 - { id: 11, class: g8rc, preferred-register: '' }3239 - { id: 12, class: vsfrc, preferred-register: '' }3240 - { id: 13, class: vsfrc, preferred-register: '' }3241liveins:3242 - { reg: '$x3', virtual-reg: '%0' }3243 - { reg: '$x4', virtual-reg: '%1' }3244frameInfo:3245 isFrameAddressTaken: false3246 isReturnAddressTaken: false3247 hasStackMap: false3248 hasPatchPoint: false3249 stackSize: 03250 offsetAdjustment: 03251 maxAlignment: 03252 adjustsStack: false3253 hasCalls: false3254 stackProtector: ''3255 maxCallFrameSize: 42949672953256 hasOpaqueSPAdjustment: false3257 hasVAStart: false3258 hasMustTailInVarArgFunc: false3259 savePoint: []3260 restorePoint: []3261fixedStack:3262stack:3263constants:3264body: |3265 bb.0.entry:3266 liveins: $x3, $x43267 3268 %1 = COPY $x43269 %0 = COPY $x33270 %2 = COPY %1.sub_323271 %3 = ADDI %2, 13272 %5 = IMPLICIT_DEF3273 %4 = INSERT_SUBREG %5, killed %3, 13274 %6 = LI8 1003275 %7 = LXSDX %0, killed %6, implicit $rm :: (load (s64) from %ir.arrayidx, !tbaa !12)3276 ; CHECK: DFLOADf64 100, %03277 ; CHECK-LATE: lfd 0, 100(3)3278 %8 = ADDI %2, 23279 %10 = IMPLICIT_DEF3280 %9 = INSERT_SUBREG %10, killed %8, 13281 %11 = LI8 -1203282 %12 = LXSDX %0, killed %11, implicit $rm :: (load (s64) from %ir.arrayidx3, !tbaa !12)3283 ; CHECK: DFLOADf64 -120, killed %03284 ; CHECK-LATE: lfd 1, -120(3)3285 %13 = XSADDDP killed %7, killed %12, implicit $rm3286 $f1 = COPY %133287 BLR8 implicit $lr8, implicit $rm, implicit $f13288 3289...3290---3291name: testLXSSPX3292# CHECK-ALL: name: testLXSSPX3293alignment: 163294exposesReturnsTwice: false3295legalized: false3296regBankSelected: false3297selected: false3298tracksRegLiveness: true3299registers:3300 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }3301 - { id: 1, class: g8rc, preferred-register: '' }3302 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }3303 - { id: 3, class: gprc, preferred-register: '' }3304 - { id: 4, class: g8rc, preferred-register: '' }3305 - { id: 5, class: g8rc, preferred-register: '' }3306 - { id: 6, class: g8rc, preferred-register: '' }3307 - { id: 7, class: vssrc, preferred-register: '' }3308 - { id: 8, class: gprc, preferred-register: '' }3309 - { id: 9, class: g8rc, preferred-register: '' }3310 - { id: 10, class: g8rc, preferred-register: '' }3311 - { id: 11, class: g8rc, preferred-register: '' }3312 - { id: 12, class: vssrc, preferred-register: '' }3313 - { id: 13, class: vssrc, preferred-register: '' }3314liveins:3315 - { reg: '$x3', virtual-reg: '%0' }3316 - { reg: '$x4', virtual-reg: '%1' }3317frameInfo:3318 isFrameAddressTaken: false3319 isReturnAddressTaken: false3320 hasStackMap: false3321 hasPatchPoint: false3322 stackSize: 03323 offsetAdjustment: 03324 maxAlignment: 03325 adjustsStack: false3326 hasCalls: false3327 stackProtector: ''3328 maxCallFrameSize: 42949672953329 hasOpaqueSPAdjustment: false3330 hasVAStart: false3331 hasMustTailInVarArgFunc: false3332 savePoint: []3333 restorePoint: []3334fixedStack:3335stack:3336constants:3337body: |3338 bb.0.entry:3339 liveins: $x3, $x43340 3341 %1 = COPY $x43342 %0 = COPY $x33343 %2 = COPY %1.sub_323344 %3 = ADDI %2, 13345 %5 = IMPLICIT_DEF3346 %4 = INSERT_SUBREG %5, killed %3, 13347 %6 = LI8 963348 %7 = LXSSPX %0, killed %6 :: (load (s32) from %ir.arrayidx, !tbaa !14)3349 ; CHECK: DFLOADf32 96, %03350 ; CHECK-LATE: lfs 0, 96(3)3351 %8 = ADDI %2, 23352 %10 = IMPLICIT_DEF3353 %9 = INSERT_SUBREG %10, killed %8, 13354 %11 = LI8 -923355 %12 = LXSSPX %0, killed %11 :: (load (s32) from %ir.arrayidx3, !tbaa !14)3356 ; CHECK: DFLOADf32 -92, killed %03357 ; CHECK-LATE: lfs 1, -92(3)3358 %13 = XSADDSP killed %7, killed %123359 $f1 = COPY %133360 BLR8 implicit $lr8, implicit $rm, implicit $f13361 3362...3363---3364name: testLXVX3365# CHECK-ALL: name: testLXVX3366alignment: 163367exposesReturnsTwice: false3368legalized: false3369regBankSelected: false3370selected: false3371tracksRegLiveness: true3372registers:3373 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }3374 - { id: 1, class: g8rc, preferred-register: '' }3375 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }3376 - { id: 3, class: gprc, preferred-register: '' }3377 - { id: 4, class: g8rc, preferred-register: '' }3378 - { id: 5, class: g8rc, preferred-register: '' }3379 - { id: 6, class: g8rc, preferred-register: '' }3380 - { id: 7, class: vrrc, preferred-register: '' }3381 - { id: 8, class: gprc, preferred-register: '' }3382 - { id: 9, class: g8rc, preferred-register: '' }3383 - { id: 10, class: g8rc, preferred-register: '' }3384 - { id: 11, class: g8rc, preferred-register: '' }3385 - { id: 12, class: vrrc, preferred-register: '' }3386 - { id: 13, class: vrrc, preferred-register: '' }3387liveins:3388 - { reg: '$x3', virtual-reg: '%0' }3389 - { reg: '$x4', virtual-reg: '%1' }3390frameInfo:3391 isFrameAddressTaken: false3392 isReturnAddressTaken: false3393 hasStackMap: false3394 hasPatchPoint: false3395 stackSize: 03396 offsetAdjustment: 03397 maxAlignment: 03398 adjustsStack: false3399 hasCalls: false3400 stackProtector: ''3401 maxCallFrameSize: 42949672953402 hasOpaqueSPAdjustment: false3403 hasVAStart: false3404 hasMustTailInVarArgFunc: false3405 savePoint: []3406 restorePoint: []3407fixedStack:3408stack:3409constants:3410body: |3411 bb.0.entry:3412 liveins: $x3, $x43413 3414 %1 = COPY $x43415 %0 = COPY $x33416 %2 = COPY %1.sub_323417 %3 = ADDI %2, 13418 %5 = IMPLICIT_DEF3419 %4 = INSERT_SUBREG %5, killed %3, 13420 %6 = LI8 323421 %7 = LXVX %0, killed %6 :: (load (s128) from %ir.arrayidx, !tbaa !3)3422 ; CHECK: LXV 32, %03423 ; CHECK-LATE: lxv 34, 32(3)3424 %8 = ADDI %2, 23425 %10 = IMPLICIT_DEF3426 %9 = INSERT_SUBREG %10, killed %8, 13427 %11 = LI8 -163428 %12 = LXVX %0, killed %11 :: (load (s128) from %ir.arrayidx3, !tbaa !3)3429 ; CHECK: LXV -16, killed %03430 ; CHECK-LATE: lxv 35, -16(3)3431 %13 = VADDUWM killed %12, killed %73432 $v2 = COPY %133433 BLR8 implicit $lr8, implicit $rm, implicit $v23434 3435...3436---3437name: testOR3438# CHECK-ALL: name: testOR3439alignment: 163440exposesReturnsTwice: false3441legalized: false3442regBankSelected: false3443selected: false3444tracksRegLiveness: true3445registers:3446 - { id: 0, class: gprc, preferred-register: '' }3447 - { id: 1, class: g8rc, preferred-register: '' }3448 - { id: 2, class: gprc, preferred-register: '' }3449 - { id: 3, class: gprc, preferred-register: '' }3450liveins:3451 - { reg: '$x3', virtual-reg: '%0' }3452 - { reg: '$x4', virtual-reg: '%1' }3453frameInfo:3454 isFrameAddressTaken: false3455 isReturnAddressTaken: false3456 hasStackMap: false3457 hasPatchPoint: false3458 stackSize: 03459 offsetAdjustment: 03460 maxAlignment: 03461 adjustsStack: false3462 hasCalls: false3463 stackProtector: ''3464 maxCallFrameSize: 42949672953465 hasOpaqueSPAdjustment: false3466 hasVAStart: false3467 hasMustTailInVarArgFunc: false3468 savePoint: []3469 restorePoint: []3470fixedStack:3471stack:3472constants:3473body: |3474 bb.0.entry:3475 liveins: $x3, $x43476 3477 %1 = COPY $x43478 %0 = LI 993479 %3 = COPY %1.sub_323480 %2 = OR %0, %33481 ; CHECK: ORI killed %3, 993482 ; CHECK-LATE: ori 3, 4, 993483 $x3 = EXTSW_32_64 %23484 BLR8 implicit $lr8, implicit $rm, implicit $x33485 3486...3487---3488name: testOR83489# CHECK-ALL: name: testOR83490alignment: 163491exposesReturnsTwice: false3492legalized: false3493regBankSelected: false3494selected: false3495tracksRegLiveness: true3496registers:3497 - { id: 0, class: g8rc, preferred-register: '' }3498 - { id: 1, class: g8rc, preferred-register: '' }3499 - { id: 2, class: g8rc, preferred-register: '' }3500liveins:3501 - { reg: '$x3', virtual-reg: '%0' }3502 - { reg: '$x4', virtual-reg: '%1' }3503frameInfo:3504 isFrameAddressTaken: false3505 isReturnAddressTaken: false3506 hasStackMap: false3507 hasPatchPoint: false3508 stackSize: 03509 offsetAdjustment: 03510 maxAlignment: 03511 adjustsStack: false3512 hasCalls: false3513 stackProtector: ''3514 maxCallFrameSize: 42949672953515 hasOpaqueSPAdjustment: false3516 hasVAStart: false3517 hasMustTailInVarArgFunc: false3518 savePoint: []3519 restorePoint: []3520fixedStack:3521stack:3522constants:3523body: |3524 bb.0.entry:3525 liveins: $x3, $x43526 3527 %1 = COPY $x43528 %0 = LI8 7773529 %2 = OR8 %1, %03530 ; CHECK: ORI8 killed %1, 7773531 ; CHECK-LATE: ori 3, 4, 7773532 $x3 = COPY %23533 BLR8 implicit $lr8, implicit $rm, implicit $x33534 3535...3536---3537name: testORI3538# CHECK-ALL: name: testORI3539alignment: 163540exposesReturnsTwice: false3541legalized: false3542regBankSelected: false3543selected: false3544tracksRegLiveness: true3545registers:3546 - { id: 0, class: gprc, preferred-register: '' }3547 - { id: 1, class: gprc, preferred-register: '' }3548liveins:3549 - { reg: '$x3', virtual-reg: '%0' }3550frameInfo:3551 isFrameAddressTaken: false3552 isReturnAddressTaken: false3553 hasStackMap: false3554 hasPatchPoint: false3555 stackSize: 03556 offsetAdjustment: 03557 maxAlignment: 03558 adjustsStack: false3559 hasCalls: false3560 stackProtector: ''3561 maxCallFrameSize: 42949672953562 hasOpaqueSPAdjustment: false3563 hasVAStart: false3564 hasMustTailInVarArgFunc: false3565 savePoint: []3566 restorePoint: []3567fixedStack:3568stack:3569constants:3570body: |3571 bb.0.entry:3572 liveins: $x33573 3574 %0 = LI 7773575 %1 = ORI %0, 883576 ; CHECK: LI8 8573577 ; CHECK-LATE: li 3, 8573578 $x3 = EXTSW_32_64 %13579 BLR8 implicit $lr8, implicit $rm, implicit $x33580 3581...3582---3583name: testORI83584# CHECK-ALL: name: testORI83585alignment: 163586exposesReturnsTwice: false3587legalized: false3588regBankSelected: false3589selected: false3590tracksRegLiveness: true3591registers:3592 - { id: 0, class: g8rc, preferred-register: '' }3593 - { id: 1, class: g8rc, preferred-register: '' }3594liveins:3595 - { reg: '$x3', virtual-reg: '%0' }3596frameInfo:3597 isFrameAddressTaken: false3598 isReturnAddressTaken: false3599 hasStackMap: false3600 hasPatchPoint: false3601 stackSize: 03602 offsetAdjustment: 03603 maxAlignment: 03604 adjustsStack: false3605 hasCalls: false3606 stackProtector: ''3607 maxCallFrameSize: 42949672953608 hasOpaqueSPAdjustment: false3609 hasVAStart: false3610 hasMustTailInVarArgFunc: false3611 savePoint: []3612 restorePoint: []3613fixedStack:3614stack:3615constants:3616body: |3617 bb.0.entry:3618 liveins: $x33619 3620 %0 = LI8 87213621 %1 = ORI8 %0, 993622 ; CHECK: LI8 88193623 ; CHECK-LATE: li 3, 88193624 $x3 = COPY %13625 BLR8 implicit $lr8, implicit $rm, implicit $x33626 3627...3628---3629name: testRLDCL3630# CHECK-ALL: name: testRLDCL3631alignment: 163632exposesReturnsTwice: false3633legalized: false3634regBankSelected: false3635selected: false3636tracksRegLiveness: true3637registers:3638 - { id: 0, class: g8rc, preferred-register: '' }3639 - { id: 1, class: g8rc, preferred-register: '' }3640 - { id: 2, class: gprc, preferred-register: '' }3641 - { id: 3, class: gprc, preferred-register: '' }3642 - { id: 4, class: g8rc, preferred-register: '' }3643liveins:3644 - { reg: '$x3', virtual-reg: '%0' }3645 - { reg: '$x4', virtual-reg: '%1' }3646frameInfo:3647 isFrameAddressTaken: false3648 isReturnAddressTaken: false3649 hasStackMap: false3650 hasPatchPoint: false3651 stackSize: 03652 offsetAdjustment: 03653 maxAlignment: 03654 adjustsStack: false3655 hasCalls: false3656 stackProtector: ''3657 maxCallFrameSize: 42949672953658 hasOpaqueSPAdjustment: false3659 hasVAStart: false3660 hasMustTailInVarArgFunc: false3661 savePoint: []3662 restorePoint: []3663fixedStack:3664stack:3665constants:3666body: |3667 bb.0.entry:3668 liveins: $x3, $x43669 3670 %1 = COPY $x43671 %0 = COPY $x33672 %2 = COPY %1.sub_323673 %3 = LI 143674 %4 = RLDCL %0, killed %3, 03675 ; CHECK: RLDICL killed %0, 14, 03676 ; CHECK-LATE: rotldi 3, 3, 143677 $x3 = COPY %43678 BLR8 implicit $lr8, implicit $rm, implicit $x33679 3680...3681---3682name: testRLDCL_rec3683# CHECK-ALL: name: testRLDCL_rec3684alignment: 163685exposesReturnsTwice: false3686legalized: false3687regBankSelected: false3688selected: false3689tracksRegLiveness: true3690registers:3691 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }3692 - { id: 1, class: g8rc, preferred-register: '' }3693 - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' }3694 - { id: 3, class: gprc, preferred-register: '' }3695 - { id: 4, class: g8rc, preferred-register: '' }3696 - { id: 5, class: crrc, preferred-register: '' }3697 - { id: 6, class: g8rc, preferred-register: '' }3698liveins:3699 - { reg: '$x3', virtual-reg: '%0' }3700 - { reg: '$x4', virtual-reg: '%1' }3701frameInfo:3702 isFrameAddressTaken: false3703 isReturnAddressTaken: false3704 hasStackMap: false3705 hasPatchPoint: false3706 stackSize: 03707 offsetAdjustment: 03708 maxAlignment: 03709 adjustsStack: false3710 hasCalls: false3711 stackProtector: ''3712 maxCallFrameSize: 42949672953713 hasOpaqueSPAdjustment: false3714 hasVAStart: false3715 hasMustTailInVarArgFunc: false3716 savePoint: []3717 restorePoint: []3718fixedStack:3719stack:3720constants:3721body: |3722 bb.0.entry:3723 liveins: $x3, $x43724 3725 %1 = COPY $x43726 %0 = COPY $x33727 %2 = RLDICL %1, 0, 583728 %3 = LI 373729 %4 = RLDCL_rec %0, killed %3, 0, implicit-def $cr03730 ; CHECK: RLDICL_rec %0, 37, 0, implicit-def $cr03731 ; CHECK-LATE: rotldi. 5, 3, 373732 %5 = COPY killed $cr03733 %6 = ISEL8 %2, %0, %5.sub_eq3734 $x3 = COPY %63735 BLR8 implicit $lr8, implicit $rm, implicit $x33736 3737...3738---3739name: testRLDCR3740# CHECK-ALL: name: testRLDCR3741alignment: 163742exposesReturnsTwice: false3743legalized: false3744regBankSelected: false3745selected: false3746tracksRegLiveness: true3747registers:3748 - { id: 0, class: g8rc, preferred-register: '' }3749 - { id: 1, class: g8rc, preferred-register: '' }3750 - { id: 2, class: gprc, preferred-register: '' }3751 - { id: 3, class: gprc, preferred-register: '' }3752 - { id: 4, class: g8rc, preferred-register: '' }3753liveins:3754 - { reg: '$x3', virtual-reg: '%0' }3755 - { reg: '$x4', virtual-reg: '%1' }3756frameInfo:3757 isFrameAddressTaken: false3758 isReturnAddressTaken: false3759 hasStackMap: false3760 hasPatchPoint: false3761 stackSize: 03762 offsetAdjustment: 03763 maxAlignment: 03764 adjustsStack: false3765 hasCalls: false3766 stackProtector: ''3767 maxCallFrameSize: 42949672953768 hasOpaqueSPAdjustment: false3769 hasVAStart: false3770 hasMustTailInVarArgFunc: false3771 savePoint: []3772 restorePoint: []3773fixedStack:3774stack:3775constants:3776body: |3777 bb.0.entry:3778 liveins: $x3, $x43779 3780 %1 = COPY $x43781 %0 = COPY $x33782 %2 = COPY %1.sub_323783 %3 = LI 03784 %4 = RLDCR %0, killed %3, 03785 ; CHECK: RLDICR killed %0, 0, 03786 ; CHECK-LATE: rldicr 3, 3, 0, 03787 $x3 = COPY %43788 BLR8 implicit $lr8, implicit $rm, implicit $x33789 3790...3791---3792name: testRLDCR_rec3793# CHECK-ALL: name: testRLDCR_rec3794alignment: 163795exposesReturnsTwice: false3796legalized: false3797regBankSelected: false3798selected: false3799tracksRegLiveness: true3800registers:3801 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }3802 - { id: 1, class: g8rc, preferred-register: '' }3803 - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' }3804 - { id: 3, class: gprc, preferred-register: '' }3805 - { id: 4, class: g8rc, preferred-register: '' }3806 - { id: 5, class: crrc, preferred-register: '' }3807 - { id: 6, class: g8rc, preferred-register: '' }3808liveins:3809 - { reg: '$x3', virtual-reg: '%0' }3810 - { reg: '$x4', virtual-reg: '%1' }3811frameInfo:3812 isFrameAddressTaken: false3813 isReturnAddressTaken: false3814 hasStackMap: false3815 hasPatchPoint: false3816 stackSize: 03817 offsetAdjustment: 03818 maxAlignment: 03819 adjustsStack: false3820 hasCalls: false3821 stackProtector: ''3822 maxCallFrameSize: 42949672953823 hasOpaqueSPAdjustment: false3824 hasVAStart: false3825 hasMustTailInVarArgFunc: false3826 savePoint: []3827 restorePoint: []3828fixedStack:3829stack:3830constants:3831body: |3832 bb.0.entry:3833 liveins: $x3, $x43834 3835 %1 = COPY $x43836 %0 = COPY $x33837 %2 = RLDICL %1, 0, 583838 %3 = LI 183839 %4 = RLDCR_rec %0, killed %3, 0, implicit-def $cr03840 ; CHECK: RLDICR_rec %0, 18, 0, implicit-def $cr03841 ; CHECK-LATE: rldicr. 5, 3, 18, 03842 %5 = COPY killed $cr03843 %6 = ISEL8 %2, %0, %5.sub_eq3844 $x3 = COPY %63845 BLR8 implicit $lr8, implicit $rm, implicit $x33846 3847...3848---3849name: testRLDICL3850# CHECK-ALL: name: testRLDICL3851alignment: 163852exposesReturnsTwice: false3853legalized: false3854regBankSelected: false3855selected: false3856tracksRegLiveness: true3857registers:3858 - { id: 0, class: g8rc, preferred-register: '' }3859 - { id: 1, class: g8rc, preferred-register: '' }3860liveins:3861 - { reg: '$x3', virtual-reg: '%0' }3862frameInfo:3863 isFrameAddressTaken: false3864 isReturnAddressTaken: false3865 hasStackMap: false3866 hasPatchPoint: false3867 stackSize: 03868 offsetAdjustment: 03869 maxAlignment: 03870 adjustsStack: false3871 hasCalls: false3872 stackProtector: ''3873 maxCallFrameSize: 42949672953874 hasOpaqueSPAdjustment: false3875 hasVAStart: false3876 hasMustTailInVarArgFunc: false3877 savePoint: []3878 restorePoint: []3879fixedStack:3880stack:3881constants:3882body: |3883 bb.0.entry:3884 liveins: $x33885 3886 %0 = LI8 -13887 %1 = RLDICL %0, 53, 493888 ; CHECK: LI8 327673889 ; CHECK-LATE: li 3, 327673890 $x3 = COPY %13891 BLR8 implicit $lr8, implicit $rm, implicit $x33892 3893...3894---3895name: testRLDICL_MB03896# CHECK-ALL: name: testRLDICL_MB03897alignment: 163898exposesReturnsTwice: false3899legalized: false3900regBankSelected: false3901selected: false3902tracksRegLiveness: true3903registers:3904 - { id: 0, class: g8rc, preferred-register: '' }3905 - { id: 1, class: g8rc, preferred-register: '' }3906liveins:3907 - { reg: '$x3', virtual-reg: '%0' }3908frameInfo:3909 isFrameAddressTaken: false3910 isReturnAddressTaken: false3911 hasStackMap: false3912 hasPatchPoint: false3913 stackSize: 03914 offsetAdjustment: 03915 maxAlignment: 03916 adjustsStack: false3917 hasCalls: false3918 stackProtector: ''3919 maxCallFrameSize: 42949672953920 hasOpaqueSPAdjustment: false3921 hasVAStart: false3922 hasMustTailInVarArgFunc: false3923 savePoint: []3924 restorePoint: []3925fixedStack:3926stack:3927constants:3928body: |3929 bb.0.entry:3930 liveins: $x33931 3932 %0 = LI8 323933 %1 = RLDICL %0, 60, 03934 ; CHECK: LI8 23935 ; CHECK-LATE: li 3, 23936 $x3 = COPY %13937 BLR8 implicit $lr8, implicit $rm, implicit $x33938 3939...3940---3941name: testRLDICL_rec3942# CHECK-ALL: name: testRLDICL_rec3943alignment: 163944exposesReturnsTwice: false3945legalized: false3946regBankSelected: false3947selected: false3948tracksRegLiveness: true3949registers:3950 - { id: 0, class: g8rc, preferred-register: '' }3951 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }3952 - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' }3953 - { id: 3, class: crrc, preferred-register: '' }3954 - { id: 4, class: g8rc, preferred-register: '' }3955liveins:3956 - { reg: '$x3', virtual-reg: '%0' }3957 - { reg: '$x4', virtual-reg: '%1' }3958frameInfo:3959 isFrameAddressTaken: false3960 isReturnAddressTaken: false3961 hasStackMap: false3962 hasPatchPoint: false3963 stackSize: 03964 offsetAdjustment: 03965 maxAlignment: 03966 adjustsStack: false3967 hasCalls: false3968 stackProtector: ''3969 maxCallFrameSize: 42949672953970 hasOpaqueSPAdjustment: false3971 hasVAStart: false3972 hasMustTailInVarArgFunc: false3973 savePoint: []3974 restorePoint: []3975fixedStack:3976stack:3977constants:3978body: |3979 bb.0.entry:3980 liveins: $x3, $x43981 3982 %1 = COPY $x43983 %0 = LI8 -13984 %2 = RLDICL_rec %0, 53, 48, implicit-def $cr03985 ; CHECK: ANDI8_rec killed %0, 655353986 ; CHECK-LATE: li 3, -13987 ; CHECK-LATE: andi. 3, 3, 655353988 %3 = COPY killed $cr03989 %4 = ISEL8 %1, %2, %3.sub_eq3990 $x3 = COPY %43991 BLR8 implicit $lr8, implicit $rm, implicit $x33992 3993...3994---3995name: testRLDICL_rec23996# CHECK-ALL: name: testRLDICL_rec23997alignment: 163998exposesReturnsTwice: false3999legalized: false4000regBankSelected: false4001selected: false4002tracksRegLiveness: true4003registers:4004 - { id: 0, class: g8rc, preferred-register: '' }4005 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }4006 - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' }4007 - { id: 3, class: crrc, preferred-register: '' }4008 - { id: 4, class: g8rc, preferred-register: '' }4009liveins:4010 - { reg: '$x3', virtual-reg: '%0' }4011 - { reg: '$x4', virtual-reg: '%1' }4012frameInfo:4013 isFrameAddressTaken: false4014 isReturnAddressTaken: false4015 hasStackMap: false4016 hasPatchPoint: false4017 stackSize: 04018 offsetAdjustment: 04019 maxAlignment: 04020 adjustsStack: false4021 hasCalls: false4022 stackProtector: ''4023 maxCallFrameSize: 42949672954024 hasOpaqueSPAdjustment: false4025 hasVAStart: false4026 hasMustTailInVarArgFunc: false4027 savePoint: []4028 restorePoint: []4029fixedStack:4030stack:4031constants:4032body: |4033 bb.0.entry:4034 liveins: $x3, $x44035 4036 %1 = COPY $x44037 %0 = LI8 2004038 %2 = RLDICL_rec %0, 61, 3, implicit-def $cr04039 ; CHECK: LI8 254040 ; CHECK: ANDI8_rec killed %0, 254041 ; CHECK-LATE-NOT: andi.4042 %3 = COPY killed $cr04043 %4 = ISEL8 %1, %2, %3.sub_eq4044 $x3 = COPY %44045 BLR8 implicit $lr8, implicit $rm, implicit $x34046 4047...4048---4049name: testRLDICL_rec34050# CHECK-ALL: name: testRLDICL_rec34051alignment: 164052exposesReturnsTwice: false4053legalized: false4054regBankSelected: false4055selected: false4056tracksRegLiveness: true4057registers:4058 - { id: 0, class: g8rc, preferred-register: '' }4059 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }4060 - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' }4061 - { id: 3, class: crrc, preferred-register: '' }4062 - { id: 4, class: g8rc, preferred-register: '' }4063liveins:4064 - { reg: '$x3', virtual-reg: '%0' }4065 - { reg: '$x4', virtual-reg: '%1' }4066frameInfo:4067 isFrameAddressTaken: false4068 isReturnAddressTaken: false4069 hasStackMap: false4070 hasPatchPoint: false4071 stackSize: 04072 offsetAdjustment: 04073 maxAlignment: 04074 adjustsStack: false4075 hasCalls: false4076 stackProtector: ''4077 maxCallFrameSize: 42949672954078 hasOpaqueSPAdjustment: false4079 hasVAStart: false4080 hasMustTailInVarArgFunc: false4081 savePoint: []4082 restorePoint: []4083fixedStack:4084stack:4085constants:4086body: |4087 bb.0.entry:4088 liveins: $x3, $x44089 4090 %1 = COPY $x44091 %0 = LI8 24092 %2 = RLDICL_rec %0, 32, 32, implicit-def $cr04093 ; CHECK: ANDI8_rec killed %0, 04094 ; CHECK-LATE: li 3, 24095 ; CHECK-LATE: andi. 3, 3, 04096 %3 = COPY killed $cr04097 %4 = ISEL8 %1, %2, %3.sub_eq4098 $x3 = COPY %44099 BLR8 implicit $lr8, implicit $rm, implicit $x34100 4101...4102---4103name: testRLWINM4104# CHECK-ALL: name: testRLWINM4105alignment: 164106exposesReturnsTwice: false4107legalized: false4108regBankSelected: false4109selected: false4110tracksRegLiveness: true4111registers:4112 - { id: 0, class: g8rc, preferred-register: '' }4113 - { id: 1, class: gprc, preferred-register: '' }4114 - { id: 2, class: gprc, preferred-register: '' }4115 - { id: 3, class: g8rc, preferred-register: '' }4116 - { id: 4, class: gprc, preferred-register: '' }4117liveins:4118 - { reg: '$x3', virtual-reg: '%0' }4119frameInfo:4120 isFrameAddressTaken: false4121 isReturnAddressTaken: false4122 hasStackMap: false4123 hasPatchPoint: false4124 stackSize: 04125 offsetAdjustment: 04126 maxAlignment: 04127 adjustsStack: false4128 hasCalls: false4129 stackProtector: ''4130 maxCallFrameSize: 42949672954131 hasOpaqueSPAdjustment: false4132 hasVAStart: false4133 hasMustTailInVarArgFunc: false4134 savePoint: []4135 restorePoint: []4136fixedStack:4137stack:4138constants:4139body: |4140 bb.0.entry:4141 liveins: $x34142 4143 %0 = COPY $x34144 %1 = COPY %0.sub_324145 %3 = IMPLICIT_DEF4146 %2 = LI 174147 %4 = RLWINM killed %2, 4, 20, 274148 ; CHECK: LI8 2724149 ; CHECK-LATE: li 3, 2724150 $x3 = EXTSW_32_64 %44151 BLR8 implicit $lr8, implicit $rm, implicit $x34152 4153...4154---4155name: testRLWINMFullReg4156# CHECK-ALL: name: testRLWINMFullReg4157alignment: 164158exposesReturnsTwice: false4159legalized: false4160regBankSelected: false4161selected: false4162tracksRegLiveness: true4163registers:4164 - { id: 0, class: g8rc, preferred-register: '' }4165 - { id: 1, class: gprc, preferred-register: '' }4166 - { id: 2, class: gprc, preferred-register: '' }4167 - { id: 3, class: g8rc, preferred-register: '' }4168 - { id: 4, class: gprc, preferred-register: '' }4169liveins:4170 - { reg: '$x3', virtual-reg: '%0' }4171frameInfo:4172 isFrameAddressTaken: false4173 isReturnAddressTaken: false4174 hasStackMap: false4175 hasPatchPoint: false4176 stackSize: 04177 offsetAdjustment: 04178 maxAlignment: 04179 adjustsStack: false4180 hasCalls: false4181 stackProtector: ''4182 maxCallFrameSize: 42949672954183 hasOpaqueSPAdjustment: false4184 hasVAStart: false4185 hasMustTailInVarArgFunc: false4186 savePoint: []4187 restorePoint: []4188fixedStack:4189stack:4190constants:4191body: |4192 bb.0.entry:4193 liveins: $x34194 4195 %0 = COPY $x34196 %1 = COPY %0.sub_324197 %3 = IMPLICIT_DEF4198 %2 = LI 24199 %4 = RLWINM killed %2, 31, 0, 314200 ; CHECK: LI 14201 ; CHECK-LATE: li 3, 14202 $x3 = EXTSW_32_64 %44203 BLR8 implicit $lr8, implicit $rm, implicit $x34204 4205...4206---4207name: testRLWINMFullRegOutOfRange4208# CHECK-ALL: name: testRLWINMFullRegOutOfRange4209alignment: 164210exposesReturnsTwice: false4211legalized: false4212regBankSelected: false4213selected: false4214tracksRegLiveness: true4215registers:4216 - { id: 0, class: g8rc, preferred-register: '' }4217 - { id: 1, class: gprc, preferred-register: '' }4218 - { id: 2, class: gprc, preferred-register: '' }4219 - { id: 3, class: g8rc, preferred-register: '' }4220 - { id: 4, class: gprc, preferred-register: '' }4221liveins:4222 - { reg: '$x3', virtual-reg: '%0' }4223frameInfo:4224 isFrameAddressTaken: false4225 isReturnAddressTaken: false4226 hasStackMap: false4227 hasPatchPoint: false4228 stackSize: 04229 offsetAdjustment: 04230 maxAlignment: 04231 adjustsStack: false4232 hasCalls: false4233 stackProtector: ''4234 maxCallFrameSize: 42949672954235 hasOpaqueSPAdjustment: false4236 hasVAStart: false4237 hasMustTailInVarArgFunc: false4238 savePoint: []4239 restorePoint: []4240fixedStack:4241stack:4242constants:4243body: |4244 bb.0.entry:4245 liveins: $x34246 4247 %0 = COPY $x34248 %1 = COPY %0.sub_324249 %3 = IMPLICIT_DEF4250 %2 = LI 14251 %4 = RLWINM killed %2, 31, 0, 314252 ; CHECK: RLWINM killed %2, 31, 0, 314253 ; CHECK-LATE: rotlwi 3, 3, 314254 $x3 = EXTSW_32_64 %44255 BLR8 implicit $lr8, implicit $rm, implicit $x34256 4257...4258---4259name: testRLWINM84260# CHECK-ALL: name: testRLWINM84261alignment: 164262exposesReturnsTwice: false4263legalized: false4264regBankSelected: false4265selected: false4266tracksRegLiveness: true4267registers:4268 - { id: 0, class: g8rc, preferred-register: '' }4269 - { id: 1, class: g8rc, preferred-register: '' }4270liveins:4271 - { reg: '$x3', virtual-reg: '%0' }4272frameInfo:4273 isFrameAddressTaken: false4274 isReturnAddressTaken: false4275 hasStackMap: false4276 hasPatchPoint: false4277 stackSize: 04278 offsetAdjustment: 04279 maxAlignment: 04280 adjustsStack: false4281 hasCalls: false4282 stackProtector: ''4283 maxCallFrameSize: 42949672954284 hasOpaqueSPAdjustment: false4285 hasVAStart: false4286 hasMustTailInVarArgFunc: false4287 savePoint: []4288 restorePoint: []4289fixedStack:4290stack:4291constants:4292body: |4293 bb.0.entry:4294 liveins: $x34295 4296 %0 = LI8 2344297 %1 = RLWINM8 %0, 4, 20, 274298 ; CHECK: LI8 37444299 ; CHECK-LATE: li 3, 37444300 $x3 = COPY %14301 BLR8 implicit $lr8, implicit $rm, implicit $x34302 4303...4304---4305name: testRLWINM_rec4306# CHECK-ALL: name: testRLWINM_rec4307alignment: 164308exposesReturnsTwice: false4309legalized: false4310regBankSelected: false4311selected: false4312tracksRegLiveness: true4313registers:4314 - { id: 0, class: g8rc, preferred-register: '' }4315 - { id: 1, class: g8rc, preferred-register: '' }4316 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }4317 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }4318 - { id: 4, class: gprc, preferred-register: '' }4319 - { id: 5, class: crrc, preferred-register: '' }4320 - { id: 6, class: gprc, preferred-register: '' }4321 - { id: 7, class: g8rc, preferred-register: '' }4322 - { id: 8, class: g8rc, preferred-register: '' }4323 - { id: 9, class: g8rc, preferred-register: '' }4324liveins:4325 - { reg: '$x3', virtual-reg: '%0' }4326 - { reg: '$x4', virtual-reg: '%1' }4327frameInfo:4328 isFrameAddressTaken: false4329 isReturnAddressTaken: false4330 hasStackMap: false4331 hasPatchPoint: false4332 stackSize: 04333 offsetAdjustment: 04334 maxAlignment: 04335 adjustsStack: false4336 hasCalls: false4337 stackProtector: ''4338 maxCallFrameSize: 42949672954339 hasOpaqueSPAdjustment: false4340 hasVAStart: false4341 hasMustTailInVarArgFunc: false4342 savePoint: []4343 restorePoint: []4344fixedStack:4345stack:4346constants:4347body: |4348 bb.0.entry:4349 liveins: $x3, $x44350 4351 %1 = COPY $x44352 %0 = COPY $x34353 %2 = COPY %1.sub_324354 %3 = LI -224355 %4 = RLWINM_rec %3, 0, 24, 31, implicit-def $cr04356 ; CHECK: LI -224357 ; CHECK: ANDI_rec %3, 655144358 ; CHECK-LATE: li 3, -224359 ; CHECK-LATE: andi. 5, 3, 2344360 %5 = COPY killed $cr04361 %6 = ISEL %2, %3, %5.sub_eq4362 %8 = IMPLICIT_DEF4363 %7 = INSERT_SUBREG %8, killed %6, 14364 %9 = RLDICL killed %7, 0, 324365 $x3 = COPY %94366 BLR8 implicit $lr8, implicit $rm, implicit $x34367 4368...4369---4370name: testRLWINM_rec24371# CHECK-ALL: name: testRLWINM_rec24372alignment: 164373exposesReturnsTwice: false4374legalized: false4375regBankSelected: false4376selected: false4377tracksRegLiveness: true4378registers:4379 - { id: 0, class: g8rc, preferred-register: '' }4380 - { id: 1, class: g8rc, preferred-register: '' }4381 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }4382 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }4383 - { id: 4, class: gprc, preferred-register: '' }4384 - { id: 5, class: crrc, preferred-register: '' }4385 - { id: 6, class: gprc, preferred-register: '' }4386 - { id: 7, class: g8rc, preferred-register: '' }4387 - { id: 8, class: g8rc, preferred-register: '' }4388 - { id: 9, class: g8rc, preferred-register: '' }4389liveins:4390 - { reg: '$x3', virtual-reg: '%0' }4391 - { reg: '$x4', virtual-reg: '%1' }4392frameInfo:4393 isFrameAddressTaken: false4394 isReturnAddressTaken: false4395 hasStackMap: false4396 hasPatchPoint: false4397 stackSize: 04398 offsetAdjustment: 04399 maxAlignment: 04400 adjustsStack: false4401 hasCalls: false4402 stackProtector: ''4403 maxCallFrameSize: 42949672954404 hasOpaqueSPAdjustment: false4405 hasVAStart: false4406 hasMustTailInVarArgFunc: false4407 savePoint: []4408 restorePoint: []4409fixedStack:4410stack:4411constants:4412body: |4413 bb.0.entry:4414 liveins: $x3, $x44415 4416 %1 = COPY $x44417 %0 = COPY $x34418 %2 = COPY %1.sub_324419 %3 = LI -224420 %4 = RLWINM_rec %3, 5, 24, 31, implicit-def $cr04421 ; CHECK: LI -224422 ; CHECK-NOT: ANDI8_rec %3, 655144423 ; CHECK-LATE-NOT: andi.4424 %5 = COPY killed $cr04425 %6 = ISEL %2, %3, %5.sub_eq4426 %8 = IMPLICIT_DEF4427 %7 = INSERT_SUBREG %8, killed %6, 14428 %9 = RLDICL killed %7, 0, 324429 $x3 = COPY %94430 BLR8 implicit $lr8, implicit $rm, implicit $x34431 4432...4433---4434name: testRLWINM8_rec4435# CHECK-ALL: name: testRLWINM8_rec4436alignment: 164437exposesReturnsTwice: false4438legalized: false4439regBankSelected: false4440selected: false4441tracksRegLiveness: true4442registers:4443 - { id: 0, class: g8rc, preferred-register: '' }4444 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }4445 - { id: 2, class: g8rc, preferred-register: '' }4446 - { id: 3, class: g8rc, preferred-register: '' }4447 - { id: 4, class: g8rc, preferred-register: '' }4448 - { id: 5, class: g8rc, preferred-register: '' }4449 - { id: 6, class: g8rc_and_g8rc_nox0, preferred-register: '' }4450 - { id: 7, class: crrc, preferred-register: '' }4451 - { id: 8, class: g8rc, preferred-register: '' }4452liveins:4453 - { reg: '$x3', virtual-reg: '%0' }4454 - { reg: '$x4', virtual-reg: '%1' }4455frameInfo:4456 isFrameAddressTaken: false4457 isReturnAddressTaken: false4458 hasStackMap: false4459 hasPatchPoint: false4460 stackSize: 04461 offsetAdjustment: 04462 maxAlignment: 04463 adjustsStack: false4464 hasCalls: false4465 stackProtector: ''4466 maxCallFrameSize: 42949672954467 hasOpaqueSPAdjustment: false4468 hasVAStart: false4469 hasMustTailInVarArgFunc: false4470 savePoint: []4471 restorePoint: []4472fixedStack:4473stack:4474constants:4475body: |4476 bb.0.entry:4477 liveins: $x3, $x44478 4479 %1 = COPY $x44480 %0 = COPY $x34481 %2 = LI8 -184482 %3 = RLWINM8_rec %2, 4, 20, 27, implicit-def $cr04483 ; CHECK: ANDI8_rec killed %2, 38084484 ; CHECK-LATE: li 3, -184485 ; CHECK-LATE: andi. 3, 3, 38084486 %7 = COPY killed $cr04487 %6 = RLDICL killed %3, 0, 324488 %8 = ISEL8 %1, %6, %7.sub_eq4489 $x3 = COPY %84490 BLR8 implicit $lr8, implicit $rm, implicit $x34491 4492...4493---4494name: testSLD4495# CHECK-ALL: name: testSLD4496alignment: 164497exposesReturnsTwice: false4498legalized: false4499regBankSelected: false4500selected: false4501tracksRegLiveness: true4502registers:4503 - { id: 0, class: g8rc, preferred-register: '' }4504 - { id: 1, class: g8rc, preferred-register: '' }4505 - { id: 2, class: gprc, preferred-register: '' }4506 - { id: 3, class: g8rc, preferred-register: '' }4507liveins:4508 - { reg: '$x3', virtual-reg: '%0' }4509 - { reg: '$x4', virtual-reg: '%1' }4510frameInfo:4511 isFrameAddressTaken: false4512 isReturnAddressTaken: false4513 hasStackMap: false4514 hasPatchPoint: false4515 stackSize: 04516 offsetAdjustment: 04517 maxAlignment: 04518 adjustsStack: false4519 hasCalls: false4520 stackProtector: ''4521 maxCallFrameSize: 42949672954522 hasOpaqueSPAdjustment: false4523 hasVAStart: false4524 hasMustTailInVarArgFunc: false4525 savePoint: []4526 restorePoint: []4527fixedStack:4528stack:4529constants:4530body: |4531 bb.0.entry:4532 liveins: $x3, $x44533 4534 %1 = COPY $x44535 %0 = COPY $x34536 %2 = LI 134537 %3 = SLD %0, killed %24538 ; CHECK: RLDICR killed %0, 13, 504539 ; CHECK-LATE: sldi 3, 3, 134540 $x3 = COPY %34541 BLR8 implicit $lr8, implicit $rm, implicit $x34542 4543...4544---4545name: testSLD_rec4546# CHECK-ALL: name: testSLD_rec4547alignment: 164548exposesReturnsTwice: false4549legalized: false4550regBankSelected: false4551selected: false4552tracksRegLiveness: true4553registers:4554 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }4555 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }4556 - { id: 2, class: gprc, preferred-register: '' }4557 - { id: 3, class: g8rc, preferred-register: '' }4558 - { id: 4, class: crrc, preferred-register: '' }4559 - { id: 5, class: g8rc, preferred-register: '' }4560liveins:4561 - { reg: '$x3', virtual-reg: '%0' }4562 - { reg: '$x4', virtual-reg: '%1' }4563frameInfo:4564 isFrameAddressTaken: false4565 isReturnAddressTaken: false4566 hasStackMap: false4567 hasPatchPoint: false4568 stackSize: 04569 offsetAdjustment: 04570 maxAlignment: 04571 adjustsStack: false4572 hasCalls: false4573 stackProtector: ''4574 maxCallFrameSize: 42949672954575 hasOpaqueSPAdjustment: false4576 hasVAStart: false4577 hasMustTailInVarArgFunc: false4578 savePoint: []4579 restorePoint: []4580fixedStack:4581stack:4582constants:4583body: |4584 bb.0.entry:4585 liveins: $x3, $x44586 4587 %1 = COPY $x44588 %0 = COPY $x34589 %2 = LI 174590 %3 = SLD_rec %0, killed %2, implicit-def $cr04591 ; CHECK: RLDICR_rec %0, 17, 46, implicit-def $cr04592 ; CHECK-LATE: rldicr. 5, 3, 17, 464593 %4 = COPY killed $cr04594 %5 = ISEL8 %1, %0, %4.sub_eq4595 $x3 = COPY %54596 BLR8 implicit $lr8, implicit $rm, implicit $x34597 4598...4599---4600name: testSRD4601# CHECK-ALL: name: testSRD4602alignment: 164603exposesReturnsTwice: false4604legalized: false4605regBankSelected: false4606selected: false4607tracksRegLiveness: true4608registers:4609 - { id: 0, class: g8rc, preferred-register: '' }4610 - { id: 1, class: g8rc, preferred-register: '' }4611 - { id: 2, class: gprc, preferred-register: '' }4612 - { id: 3, class: g8rc, preferred-register: '' }4613liveins:4614 - { reg: '$x3', virtual-reg: '%0' }4615 - { reg: '$x4', virtual-reg: '%1' }4616frameInfo:4617 isFrameAddressTaken: false4618 isReturnAddressTaken: false4619 hasStackMap: false4620 hasPatchPoint: false4621 stackSize: 04622 offsetAdjustment: 04623 maxAlignment: 04624 adjustsStack: false4625 hasCalls: false4626 stackProtector: ''4627 maxCallFrameSize: 42949672954628 hasOpaqueSPAdjustment: false4629 hasVAStart: false4630 hasMustTailInVarArgFunc: false4631 savePoint: []4632 restorePoint: []4633fixedStack:4634stack:4635constants:4636body: |4637 bb.0.entry:4638 liveins: $x3, $x44639 4640 %1 = COPY $x44641 %0 = COPY $x34642 %2 = LI 44643 %3 = SRD %0, killed %24644 ; CHECK: RLDICL killed %0, 60, 44645 ; CHECK-LATE: rldicl 3, 3, 60, 44646 $x3 = COPY %34647 BLR8 implicit $lr8, implicit $rm, implicit $x34648 4649...4650---4651name: testSRD_rec4652# CHECK-ALL: name: testSRD_rec4653alignment: 164654exposesReturnsTwice: false4655legalized: false4656regBankSelected: false4657selected: false4658tracksRegLiveness: true4659registers:4660 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }4661 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }4662 - { id: 2, class: gprc, preferred-register: '' }4663 - { id: 3, class: g8rc, preferred-register: '' }4664 - { id: 4, class: crrc, preferred-register: '' }4665 - { id: 5, class: g8rc, preferred-register: '' }4666liveins:4667 - { reg: '$x3', virtual-reg: '%0' }4668 - { reg: '$x4', virtual-reg: '%1' }4669frameInfo:4670 isFrameAddressTaken: false4671 isReturnAddressTaken: false4672 hasStackMap: false4673 hasPatchPoint: false4674 stackSize: 04675 offsetAdjustment: 04676 maxAlignment: 04677 adjustsStack: false4678 hasCalls: false4679 stackProtector: ''4680 maxCallFrameSize: 42949672954681 hasOpaqueSPAdjustment: false4682 hasVAStart: false4683 hasMustTailInVarArgFunc: false4684 savePoint: []4685 restorePoint: []4686fixedStack:4687stack:4688constants:4689body: |4690 bb.0.entry:4691 liveins: $x3, $x44692 4693 %1 = COPY $x44694 %0 = COPY $x34695 %2 = LI 174696 %3 = SRD_rec %0, killed %2, implicit-def $cr04697 ; CHECK: RLDICL_rec %0, 47, 17, implicit-def $cr04698 ; CHECK-LATE: rldicl. 5, 3, 47, 174699 %4 = COPY killed $cr04700 %5 = ISEL8 %1, %0, %4.sub_eq4701 $x3 = COPY %54702 BLR8 implicit $lr8, implicit $rm, implicit $x34703 4704...4705---4706name: testSLW4707# CHECK-ALL: name: testSLW4708alignment: 164709exposesReturnsTwice: false4710legalized: false4711regBankSelected: false4712selected: false4713tracksRegLiveness: true4714registers:4715 - { id: 0, class: g8rc, preferred-register: '' }4716 - { id: 1, class: g8rc, preferred-register: '' }4717 - { id: 2, class: gprc, preferred-register: '' }4718 - { id: 3, class: g8rc, preferred-register: '' }4719 - { id: 4, class: g8rc, preferred-register: '' }4720 - { id: 5, class: gprc, preferred-register: '' }4721 - { id: 6, class: g8rc, preferred-register: '' }4722 - { id: 7, class: g8rc, preferred-register: '' }4723 - { id: 8, class: gprc, preferred-register: '' }4724liveins:4725 - { reg: '$x3', virtual-reg: '%0' }4726 - { reg: '$x4', virtual-reg: '%1' }4727frameInfo:4728 isFrameAddressTaken: false4729 isReturnAddressTaken: false4730 hasStackMap: false4731 hasPatchPoint: false4732 stackSize: 04733 offsetAdjustment: 04734 maxAlignment: 04735 adjustsStack: false4736 hasCalls: false4737 stackProtector: ''4738 maxCallFrameSize: 42949672954739 hasOpaqueSPAdjustment: false4740 hasVAStart: false4741 hasMustTailInVarArgFunc: false4742 savePoint: []4743 restorePoint: []4744fixedStack:4745stack:4746constants:4747body: |4748 bb.0.entry:4749 liveins: $x3, $x44750 4751 %1 = COPY $x44752 %0 = COPY $x34753 %2 = COPY %1.sub_324754 %5 = LI 214755 %8 = SLW killed %2, killed %54756 ; CHECK: RLWINM killed %2, 21, 0, 104757 ; CHECK-LATE: slwi 3, 4, 214758 $x3 = EXTSW_32_64 %84759 BLR8 implicit $lr8, implicit $rm, implicit $x34760 4761...4762---4763name: testSLW_rec4764# CHECK-ALL: name: testSLW_rec4765alignment: 164766exposesReturnsTwice: false4767legalized: false4768regBankSelected: false4769selected: false4770tracksRegLiveness: true4771registers:4772 - { id: 0, class: g8rc, preferred-register: '' }4773 - { id: 1, class: g8rc, preferred-register: '' }4774 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }4775 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }4776 - { id: 4, class: gprc, preferred-register: '' }4777 - { id: 5, class: crrc, preferred-register: '' }4778 - { id: 6, class: gprc, preferred-register: '' }4779 - { id: 7, class: g8rc, preferred-register: '' }4780 - { id: 8, class: g8rc, preferred-register: '' }4781 - { id: 9, class: g8rc, preferred-register: '' }4782liveins:4783 - { reg: '$x3', virtual-reg: '%0' }4784 - { reg: '$x4', virtual-reg: '%1' }4785frameInfo:4786 isFrameAddressTaken: false4787 isReturnAddressTaken: false4788 hasStackMap: false4789 hasPatchPoint: false4790 stackSize: 04791 offsetAdjustment: 04792 maxAlignment: 04793 adjustsStack: false4794 hasCalls: false4795 stackProtector: ''4796 maxCallFrameSize: 42949672954797 hasOpaqueSPAdjustment: false4798 hasVAStart: false4799 hasMustTailInVarArgFunc: false4800 savePoint: []4801 restorePoint: []4802fixedStack:4803stack:4804constants:4805body: |4806 bb.0.entry:4807 liveins: $x3, $x44808 4809 %1 = COPY $x44810 %0 = COPY $x34811 %2 = LI 114812 %3 = COPY %0.sub_324813 %4 = SLW_rec %3, %2, implicit-def $cr04814 ; CHECK: RLWINM_rec %3, 11, 0, 20, implicit-def $cr04815 ; CHECK-LATE: rlwinm. 5, 3, 11, 0, 204816 %5 = COPY killed $cr04817 %6 = ISEL %2, %3, %5.sub_eq4818 %8 = IMPLICIT_DEF4819 %7 = INSERT_SUBREG %8, killed %6, 14820 %9 = RLDICL killed %7, 0, 324821 $x3 = COPY %94822 BLR8 implicit $lr8, implicit $rm, implicit $x34823 4824...4825---4826name: testSRW4827# CHECK-ALL: name: testSRW4828alignment: 164829exposesReturnsTwice: false4830legalized: false4831regBankSelected: false4832selected: false4833tracksRegLiveness: true4834registers:4835 - { id: 0, class: g8rc, preferred-register: '' }4836 - { id: 1, class: g8rc, preferred-register: '' }4837 - { id: 2, class: gprc, preferred-register: '' }4838 - { id: 3, class: g8rc, preferred-register: '' }4839 - { id: 4, class: g8rc, preferred-register: '' }4840 - { id: 5, class: gprc, preferred-register: '' }4841 - { id: 6, class: g8rc, preferred-register: '' }4842 - { id: 7, class: g8rc, preferred-register: '' }4843 - { id: 8, class: gprc, preferred-register: '' }4844liveins:4845 - { reg: '$x3', virtual-reg: '%0' }4846 - { reg: '$x4', virtual-reg: '%1' }4847frameInfo:4848 isFrameAddressTaken: false4849 isReturnAddressTaken: false4850 hasStackMap: false4851 hasPatchPoint: false4852 stackSize: 04853 offsetAdjustment: 04854 maxAlignment: 04855 adjustsStack: false4856 hasCalls: false4857 stackProtector: ''4858 maxCallFrameSize: 42949672954859 hasOpaqueSPAdjustment: false4860 hasVAStart: false4861 hasMustTailInVarArgFunc: false4862 savePoint: []4863 restorePoint: []4864fixedStack:4865stack:4866constants:4867body: |4868 bb.0.entry:4869 liveins: $x3, $x44870 4871 %1 = COPY $x44872 %0 = COPY $x34873 %2 = LI 84874 %5 = COPY %0.sub_324875 %8 = SRW killed %5, killed %24876 ; CHECK: RLWINM killed %5, 24, 8, 314877 ; CHECK-LATE: srwi 3, 3, 84878 $x3 = EXTSW_32_64 %84879 BLR8 implicit $lr8, implicit $rm, implicit $x34880 4881...4882---4883name: testSRW_rec4884# CHECK-ALL: name: testSRW_rec4885alignment: 164886exposesReturnsTwice: false4887legalized: false4888regBankSelected: false4889selected: false4890tracksRegLiveness: true4891registers:4892 - { id: 0, class: g8rc, preferred-register: '' }4893 - { id: 1, class: g8rc, preferred-register: '' }4894 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }4895 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }4896 - { id: 4, class: gprc, preferred-register: '' }4897 - { id: 5, class: crrc, preferred-register: '' }4898 - { id: 6, class: gprc, preferred-register: '' }4899 - { id: 7, class: g8rc, preferred-register: '' }4900 - { id: 8, class: g8rc, preferred-register: '' }4901 - { id: 9, class: g8rc, preferred-register: '' }4902liveins:4903 - { reg: '$x3', virtual-reg: '%0' }4904 - { reg: '$x4', virtual-reg: '%1' }4905frameInfo:4906 isFrameAddressTaken: false4907 isReturnAddressTaken: false4908 hasStackMap: false4909 hasPatchPoint: false4910 stackSize: 04911 offsetAdjustment: 04912 maxAlignment: 04913 adjustsStack: false4914 hasCalls: false4915 stackProtector: ''4916 maxCallFrameSize: 42949672954917 hasOpaqueSPAdjustment: false4918 hasVAStart: false4919 hasMustTailInVarArgFunc: false4920 savePoint: []4921 restorePoint: []4922fixedStack:4923stack:4924constants:4925body: |4926 bb.0.entry:4927 liveins: $x3, $x44928 4929 %1 = COPY $x44930 %0 = COPY $x34931 %2 = LI 74932 %3 = COPY %0.sub_324933 %4 = SRW_rec %3, %2, implicit-def $cr04934 ; CHECK: RLWINM_rec %3, 25, 7, 314935 ; CHECK-LATE: rlwinm. 5, 3, 25, 7, 314936 %5 = COPY killed $cr04937 %6 = ISEL %2, %3, %5.sub_eq4938 %8 = IMPLICIT_DEF4939 %7 = INSERT_SUBREG %8, killed %6, 14940 %9 = RLDICL killed %7, 0, 324941 $x3 = COPY %94942 BLR8 implicit $lr8, implicit $rm, implicit $x34943 4944...4945---4946name: testSRAW4947# CHECK-ALL: name: testSRAW4948alignment: 164949exposesReturnsTwice: false4950legalized: false4951regBankSelected: false4952selected: false4953tracksRegLiveness: true4954registers:4955 - { id: 0, class: g8rc, preferred-register: '' }4956 - { id: 1, class: g8rc, preferred-register: '' }4957 - { id: 2, class: gprc, preferred-register: '' }4958 - { id: 3, class: gprc, preferred-register: '' }4959 - { id: 4, class: gprc, preferred-register: '' }4960 - { id: 5, class: g8rc, preferred-register: '' }4961liveins:4962 - { reg: '$x3', virtual-reg: '%0' }4963 - { reg: '$x4', virtual-reg: '%1' }4964frameInfo:4965 isFrameAddressTaken: false4966 isReturnAddressTaken: false4967 hasStackMap: false4968 hasPatchPoint: false4969 stackSize: 04970 offsetAdjustment: 04971 maxAlignment: 04972 adjustsStack: false4973 hasCalls: false4974 stackProtector: ''4975 maxCallFrameSize: 42949672954976 hasOpaqueSPAdjustment: false4977 hasVAStart: false4978 hasMustTailInVarArgFunc: false4979 savePoint: []4980 restorePoint: []4981fixedStack:4982stack:4983constants:4984body: |4985 bb.0.entry:4986 liveins: $x3, $x44987 4988 %1 = COPY $x44989 %0 = COPY $x34990 %2 = LI 154991 %3 = COPY %0.sub_324992 %4 = SRAW killed %3, killed %2, implicit-def dead $carry4993 ; CHECK: %6:g8rc = IMPLICIT_DEF4994 ; CHECK-NEXT: %7:g8rc = INSERT_SUBREG %6, killed %3, %subreg.sub_324995 ; CHECK-NEXT: %8:g8rc = SRAWI8 killed %7, 15, implicit-def $carry, implicit-def dead $carry4996 ; CHECK-NEXT: %4:gprc = COPY killed %8.sub_324997 ; CHECK-LATE: srawi 3, 3, 154998 %5 = EXTSW_32_64 killed %44999 $x3 = COPY %55000 BLR8 implicit $lr8, implicit $rm, implicit $x35001 5002...5003---5004name: testSRAW_rec5005# CHECK-ALL: name: testSRAW_rec5006alignment: 165007exposesReturnsTwice: false5008legalized: false5009regBankSelected: false5010selected: false5011tracksRegLiveness: true5012registers:5013 - { id: 0, class: g8rc, preferred-register: '' }5014 - { id: 1, class: g8rc, preferred-register: '' }5015 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' }5016 - { id: 3, class: gprc, preferred-register: '' }5017 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }5018 - { id: 5, class: crrc, preferred-register: '' }5019 - { id: 6, class: gprc, preferred-register: '' }5020 - { id: 7, class: g8rc, preferred-register: '' }5021liveins:5022 - { reg: '$x3', virtual-reg: '%0' }5023 - { reg: '$x4', virtual-reg: '%1' }5024frameInfo:5025 isFrameAddressTaken: false5026 isReturnAddressTaken: false5027 hasStackMap: false5028 hasPatchPoint: false5029 stackSize: 05030 offsetAdjustment: 05031 maxAlignment: 05032 adjustsStack: false5033 hasCalls: false5034 stackProtector: ''5035 maxCallFrameSize: 42949672955036 hasOpaqueSPAdjustment: false5037 hasVAStart: false5038 hasMustTailInVarArgFunc: false5039 savePoint: []5040 restorePoint: []5041fixedStack:5042stack:5043constants:5044body: |5045 bb.0.entry:5046 liveins: $x3, $x45047 5048 %1 = COPY $x45049 %0 = COPY $x35050 %2 = LI 85051 %3 = COPY %0.sub_325052 %4 = SRAW_rec killed %3, %2, implicit-def dead $carry, implicit-def $cr05053 ; CHECK: %11:g8rc = SRAWI8_rec killed %10, 8, implicit-def $carry, implicit-def $cr0, implicit-def dead $carry, implicit-def $cr05054 ; CHECK-LATE: srawi. 3, 3, 85055 %5 = COPY killed $cr05056 %6 = ISEL %2, %4, %5.sub_eq5057 %7 = EXTSW_32_64 killed %65058 $x3 = COPY %75059 BLR8 implicit $lr8, implicit $rm, implicit $x35060 5061...5062---5063name: testSRAD5064# CHECK-ALL: name: testSRAD5065alignment: 165066exposesReturnsTwice: false5067legalized: false5068regBankSelected: false5069selected: false5070tracksRegLiveness: true5071registers:5072 - { id: 0, class: g8rc, preferred-register: '' }5073 - { id: 1, class: g8rc, preferred-register: '' }5074 - { id: 2, class: gprc, preferred-register: '' }5075 - { id: 3, class: g8rc, preferred-register: '' }5076liveins:5077 - { reg: '$x3', virtual-reg: '%0' }5078 - { reg: '$x4', virtual-reg: '%1' }5079frameInfo:5080 isFrameAddressTaken: false5081 isReturnAddressTaken: false5082 hasStackMap: false5083 hasPatchPoint: false5084 stackSize: 05085 offsetAdjustment: 05086 maxAlignment: 05087 adjustsStack: false5088 hasCalls: false5089 stackProtector: ''5090 maxCallFrameSize: 42949672955091 hasOpaqueSPAdjustment: false5092 hasVAStart: false5093 hasMustTailInVarArgFunc: false5094 savePoint: []5095 restorePoint: []5096fixedStack:5097stack:5098constants:5099body: |5100 bb.0.entry:5101 liveins: $x3, $x45102 5103 %1 = COPY $x45104 %0 = COPY $x35105 %2 = LI 445106 %3 = SRAD %0, killed %2, implicit-def dead $carry5107 ; CHECK: SRADI killed %0, 44, implicit-def dead $carry5108 ; CHECK-LATE: sradi 3, 3, 445109 $x3 = COPY %35110 BLR8 implicit $lr8, implicit $rm, implicit $x35111 5112...5113---5114name: testSRAD_rec5115# CHECK-ALL: name: testSRAD_rec5116alignment: 165117exposesReturnsTwice: false5118legalized: false5119regBankSelected: false5120selected: false5121tracksRegLiveness: true5122registers:5123 - { id: 0, class: g8rc, preferred-register: '' }5124 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' }5125 - { id: 2, class: gprc, preferred-register: '' }5126 - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' }5127 - { id: 4, class: crrc, preferred-register: '' }5128 - { id: 5, class: g8rc, preferred-register: '' }5129liveins:5130 - { reg: '$x3', virtual-reg: '%0' }5131 - { reg: '$x4', virtual-reg: '%1' }5132frameInfo:5133 isFrameAddressTaken: false5134 isReturnAddressTaken: false5135 hasStackMap: false5136 hasPatchPoint: false5137 stackSize: 05138 offsetAdjustment: 05139 maxAlignment: 05140 adjustsStack: false5141 hasCalls: false5142 stackProtector: ''5143 maxCallFrameSize: 42949672955144 hasOpaqueSPAdjustment: false5145 hasVAStart: false5146 hasMustTailInVarArgFunc: false5147 savePoint: []5148 restorePoint: []5149fixedStack:5150stack:5151constants:5152body: |5153 bb.0.entry:5154 liveins: $x3, $x45155 5156 %1 = COPY $x45157 %0 = COPY $x35158 %2 = LI 615159 %3 = SRAD_rec %0, killed %2, implicit-def dead $carry, implicit-def $cr05160 ; CHECK: SRADI_rec killed %0, 61, implicit-def dead $carry, implicit-def $cr05161 ; CHECK-LATE: sradi. 3, 3, 615162 %4 = COPY killed $cr05163 %5 = ISEL8 %1, %3, %4.sub_eq5164 $x3 = COPY %55165 BLR8 implicit $lr8, implicit $rm, implicit $x35166 5167...5168---5169name: testSTBUX5170# CHECK-ALL: name: testSTBUX5171alignment: 165172exposesReturnsTwice: false5173legalized: false5174regBankSelected: false5175selected: false5176tracksRegLiveness: true5177registers:5178 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }5179 - { id: 1, class: g8rc, preferred-register: '' }5180 - { id: 2, class: g8rc, preferred-register: '' }5181 - { id: 3, class: gprc, preferred-register: '' }5182 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }5183 - { id: 5, class: gprc, preferred-register: '' }5184 - { id: 6, class: g8rc, preferred-register: '' }5185 - { id: 7, class: g8rc, preferred-register: '' }5186 - { id: 8, class: g8rc, preferred-register: '' }5187 - { id: 9, class: gprc, preferred-register: '' }5188 - { id: 10, class: g8rc, preferred-register: '' }5189 - { id: 11, class: g8rc, preferred-register: '' }5190 - { id: 12, class: g8rc, preferred-register: '' }5191 - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' }5192 - { id: 14, class: g8rc_and_g8rc_nox0, preferred-register: '' }5193liveins:5194 - { reg: '$x3', virtual-reg: '%0' }5195 - { reg: '$x4', virtual-reg: '%1' }5196 - { reg: '$x5', virtual-reg: '%2' }5197frameInfo:5198 isFrameAddressTaken: false5199 isReturnAddressTaken: false5200 hasStackMap: false5201 hasPatchPoint: false5202 stackSize: 05203 offsetAdjustment: 05204 maxAlignment: 05205 adjustsStack: false5206 hasCalls: false5207 stackProtector: ''5208 maxCallFrameSize: 42949672955209 hasOpaqueSPAdjustment: false5210 hasVAStart: false5211 hasMustTailInVarArgFunc: false5212 savePoint: []5213 restorePoint: []5214fixedStack:5215stack:5216constants:5217body: |5218 bb.0.entry:5219 liveins: $x3, $x4, $x55220 5221 %2 = COPY $x55222 %1 = COPY $x45223 %0 = COPY $x35224 %3 = COPY %1.sub_325225 %4 = COPY %2.sub_325226 %5 = ADDI %4, 15227 %7 = IMPLICIT_DEF5228 %6 = INSERT_SUBREG %7, killed %5, 15229 %8 = LI8 9665230 %13 = STBUX %3, %0, killed %8 :: (store (s8) into %ir.arrayidx, !tbaa !3)5231 ; CHECK: STBU %3, 966, %05232 ; CHECK-LATE: {{[0-9]+}}, 966({{[0-9]+}})5233 %9 = ADDI %4, 25234 %11 = IMPLICIT_DEF5235 %10 = INSERT_SUBREG %11, killed %9, 15236 %12 = LI8 7775237 %14 = STBUX %3, %0, killed %12 :: (store (s8) into %ir.arrayidx3, !tbaa !3)5238 ; CHECK: STBU killed %3, 777, killed %05239 ; CHECK-LATE: {{[0-9]+}}, 777({{[0-9]+}})5240 BLR8 implicit $lr8, implicit $rm5241 5242...5243---5244name: testSTBX5245# CHECK-ALL: name: testSTBX5246alignment: 165247exposesReturnsTwice: false5248legalized: false5249regBankSelected: false5250selected: false5251tracksRegLiveness: true5252registers:5253 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }5254 - { id: 1, class: g8rc, preferred-register: '' }5255 - { id: 2, class: g8rc, preferred-register: '' }5256 - { id: 3, class: gprc, preferred-register: '' }5257 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }5258 - { id: 5, class: gprc, preferred-register: '' }5259 - { id: 6, class: g8rc, preferred-register: '' }5260 - { id: 7, class: g8rc, preferred-register: '' }5261 - { id: 8, class: g8rc, preferred-register: '' }5262 - { id: 9, class: gprc, preferred-register: '' }5263 - { id: 10, class: g8rc, preferred-register: '' }5264 - { id: 11, class: g8rc, preferred-register: '' }5265 - { id: 12, class: g8rc, preferred-register: '' }5266liveins:5267 - { reg: '$x3', virtual-reg: '%0' }5268 - { reg: '$x4', virtual-reg: '%1' }5269 - { reg: '$x5', virtual-reg: '%2' }5270frameInfo:5271 isFrameAddressTaken: false5272 isReturnAddressTaken: false5273 hasStackMap: false5274 hasPatchPoint: false5275 stackSize: 05276 offsetAdjustment: 05277 maxAlignment: 05278 adjustsStack: false5279 hasCalls: false5280 stackProtector: ''5281 maxCallFrameSize: 42949672955282 hasOpaqueSPAdjustment: false5283 hasVAStart: false5284 hasMustTailInVarArgFunc: false5285 savePoint: []5286 restorePoint: []5287fixedStack:5288stack:5289constants:5290body: |5291 bb.0.entry:5292 liveins: $x3, $x4, $x55293 5294 %2 = COPY $x55295 %1 = COPY $x45296 %0 = LI8 9755297 %3 = COPY %1.sub_325298 %4 = COPY %2.sub_325299 %5 = ADDI %4, 15300 %7 = IMPLICIT_DEF5301 %6 = INSERT_SUBREG %7, killed %5, 15302 %8 = RLDICL killed %6, 0, 325303 STBX %3, %0, killed %8 :: (store (s8) into %ir.arrayidx, !tbaa !3)5304 ; CHECK: STB %3, 975, killed %85305 ; CHECK-LATE: stb 4, 975(6)5306 %9 = ADDI %4, 25307 %11 = IMPLICIT_DEF5308 %10 = INSERT_SUBREG %11, killed %9, 15309 %12 = RLDICL killed %10, 0, 325310 STBX %3, %0, killed %12 :: (store (s8) into %ir.arrayidx3, !tbaa !3)5311 ; CHECK: STB killed %3, 975, killed %125312 ; CHECK-LATE: stb 4, 975(5)5313 BLR8 implicit $lr8, implicit $rm5314 5315...5316---5317name: testSTHUX5318# CHECK-ALL: name: testSTHUX5319alignment: 165320exposesReturnsTwice: false5321legalized: false5322regBankSelected: false5323selected: false5324tracksRegLiveness: true5325registers:5326 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }5327 - { id: 1, class: g8rc, preferred-register: '' }5328 - { id: 2, class: g8rc, preferred-register: '' }5329 - { id: 3, class: gprc, preferred-register: '' }5330 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }5331 - { id: 5, class: gprc, preferred-register: '' }5332 - { id: 6, class: g8rc, preferred-register: '' }5333 - { id: 7, class: g8rc, preferred-register: '' }5334 - { id: 8, class: g8rc, preferred-register: '' }5335 - { id: 9, class: gprc, preferred-register: '' }5336 - { id: 10, class: g8rc, preferred-register: '' }5337 - { id: 11, class: g8rc, preferred-register: '' }5338 - { id: 12, class: g8rc, preferred-register: '' }5339 - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' }5340 - { id: 14, class: g8rc_and_g8rc_nox0, preferred-register: '' }5341liveins:5342 - { reg: '$x3', virtual-reg: '%0' }5343 - { reg: '$x4', virtual-reg: '%1' }5344 - { reg: '$x5', virtual-reg: '%2' }5345frameInfo:5346 isFrameAddressTaken: false5347 isReturnAddressTaken: false5348 hasStackMap: false5349 hasPatchPoint: false5350 stackSize: 05351 offsetAdjustment: 05352 maxAlignment: 05353 adjustsStack: false5354 hasCalls: false5355 stackProtector: ''5356 maxCallFrameSize: 42949672955357 hasOpaqueSPAdjustment: false5358 hasVAStart: false5359 hasMustTailInVarArgFunc: false5360 savePoint: []5361 restorePoint: []5362fixedStack:5363stack:5364constants:5365body: |5366 bb.0.entry:5367 liveins: $x3, $x4, $x55368 5369 %2 = COPY $x55370 %1 = COPY $x45371 %0 = COPY $x35372 %3 = COPY %1.sub_325373 %4 = COPY %2.sub_325374 %5 = ADDI %4, 15375 %7 = IMPLICIT_DEF5376 %6 = INSERT_SUBREG %7, killed %5, 15377 %8 = LI8 320005378 %13 = STHUX %3, %0, killed %8 :: (store (s16) into %ir.arrayidx, !tbaa !6)5379 ; CHECK: STHU %3, 32000, %05380 ; CHECK-LATE: sthu {{[0-9]+}}, 32000({{[0-9]+}})5381 %9 = ADDI %4, 25382 %11 = IMPLICIT_DEF5383 %10 = INSERT_SUBREG %11, killed %9, 15384 %12 = LI8 -7615385 %14 = STHUX %3, %0, killed %12 :: (store (s16) into %ir.arrayidx3, !tbaa !6)5386 ; CHECK: STHU killed %3, -761, killed %05387 ; CHECK-LATE: sthu {{[0-9]+}}, -761({{[0-9]+}})5388 BLR8 implicit $lr8, implicit $rm5389 5390...5391---5392name: testSTHX5393# CHECK-ALL: name: testSTHX5394alignment: 165395exposesReturnsTwice: false5396legalized: false5397regBankSelected: false5398selected: false5399tracksRegLiveness: true5400registers:5401 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }5402 - { id: 1, class: g8rc, preferred-register: '' }5403 - { id: 2, class: g8rc, preferred-register: '' }5404 - { id: 3, class: gprc, preferred-register: '' }5405 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }5406 - { id: 5, class: gprc, preferred-register: '' }5407 - { id: 6, class: g8rc, preferred-register: '' }5408 - { id: 7, class: g8rc, preferred-register: '' }5409 - { id: 8, class: g8rc, preferred-register: '' }5410 - { id: 9, class: gprc, preferred-register: '' }5411 - { id: 10, class: g8rc, preferred-register: '' }5412 - { id: 11, class: g8rc, preferred-register: '' }5413 - { id: 12, class: g8rc, preferred-register: '' }5414liveins:5415 - { reg: '$x3', virtual-reg: '%0' }5416 - { reg: '$x4', virtual-reg: '%1' }5417 - { reg: '$x5', virtual-reg: '%2' }5418frameInfo:5419 isFrameAddressTaken: false5420 isReturnAddressTaken: false5421 hasStackMap: false5422 hasPatchPoint: false5423 stackSize: 05424 offsetAdjustment: 05425 maxAlignment: 05426 adjustsStack: false5427 hasCalls: false5428 stackProtector: ''5429 maxCallFrameSize: 42949672955430 hasOpaqueSPAdjustment: false5431 hasVAStart: false5432 hasMustTailInVarArgFunc: false5433 savePoint: []5434 restorePoint: []5435fixedStack:5436stack:5437constants:5438body: |5439 bb.0.entry:5440 liveins: $x3, $x4, $x55441 5442 %2 = COPY $x55443 %1 = COPY $x45444 %0 = COPY $x35445 %3 = COPY %1.sub_325446 %4 = COPY %2.sub_325447 %5 = ADDI %4, 15448 %7 = IMPLICIT_DEF5449 %6 = INSERT_SUBREG %7, killed %5, 15450 %8 = LI8 9005451 STHX %3, %0, killed %8 :: (store (s8) into %ir.arrayidx, !tbaa !3)5452 ; CHECK: STH %3, 900, %05453 ; CHECK-LATE: sth {{[0-9]+}}, 900({{[0-9]+}})5454 %9 = ADDI %4, 25455 %11 = IMPLICIT_DEF5456 %10 = INSERT_SUBREG %11, killed %9, 15457 %12 = LI8 -9005458 STHX %3, %0, killed %12 :: (store (s8) into %ir.arrayidx3, !tbaa !3)5459 ; CHECK: STH killed %3, -900, killed %05460 ; CHECK-LATE: sth {{[0-9]+}}, -900({{[0-9]+}})5461 BLR8 implicit $lr8, implicit $rm5462 5463...5464---5465name: testSTWUX5466# CHECK-ALL: name: testSTWUX5467alignment: 165468exposesReturnsTwice: false5469legalized: false5470regBankSelected: false5471selected: false5472tracksRegLiveness: true5473registers:5474 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }5475 - { id: 1, class: g8rc, preferred-register: '' }5476 - { id: 2, class: g8rc, preferred-register: '' }5477 - { id: 3, class: gprc, preferred-register: '' }5478 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }5479 - { id: 5, class: gprc, preferred-register: '' }5480 - { id: 6, class: g8rc, preferred-register: '' }5481 - { id: 7, class: g8rc, preferred-register: '' }5482 - { id: 8, class: g8rc, preferred-register: '' }5483 - { id: 9, class: gprc, preferred-register: '' }5484 - { id: 10, class: g8rc, preferred-register: '' }5485 - { id: 11, class: g8rc, preferred-register: '' }5486 - { id: 12, class: g8rc, preferred-register: '' }5487 - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' }5488 - { id: 14, class: g8rc_and_g8rc_nox0, preferred-register: '' }5489liveins:5490 - { reg: '$x3', virtual-reg: '%0' }5491 - { reg: '$x4', virtual-reg: '%1' }5492 - { reg: '$x5', virtual-reg: '%2' }5493frameInfo:5494 isFrameAddressTaken: false5495 isReturnAddressTaken: false5496 hasStackMap: false5497 hasPatchPoint: false5498 stackSize: 05499 offsetAdjustment: 05500 maxAlignment: 05501 adjustsStack: false5502 hasCalls: false5503 stackProtector: ''5504 maxCallFrameSize: 42949672955505 hasOpaqueSPAdjustment: false5506 hasVAStart: false5507 hasMustTailInVarArgFunc: false5508 savePoint: []5509 restorePoint: []5510fixedStack:5511stack:5512constants:5513body: |5514 bb.0.entry:5515 liveins: $x3, $x4, $x55516 5517 %2 = COPY $x55518 %1 = COPY $x45519 %0 = COPY $x35520 %3 = COPY %1.sub_325521 %4 = COPY %2.sub_325522 %5 = ADDI %4, 15523 %7 = IMPLICIT_DEF5524 %6 = INSERT_SUBREG %7, killed %5, 15525 %8 = LI8 1115526 %13 = STWUX %3, %0, killed %8 :: (store (s32) into %ir.arrayidx, !tbaa !8)5527 ; CHECK: STWU %3, 111, %05528 ; CHECK-LATE: stwu {{[0-9]+}}, 111({{[0-9]+}})5529 %9 = ADDI %4, 25530 %11 = IMPLICIT_DEF5531 %10 = INSERT_SUBREG %11, killed %9, 15532 %12 = LI8 05533 %14 = STWUX %3, %0, killed %12 :: (store (s32) into %ir.arrayidx3, !tbaa !8)5534 ; CHECK: STWU killed %3, 0, killed %05535 ; CHECK-LATE: stwu {{[0-9]+}}, 0({{[0-9]+}})5536 BLR8 implicit $lr8, implicit $rm5537 5538...5539---5540name: testSTWX5541# CHECK-ALL: name: testSTWX5542alignment: 165543exposesReturnsTwice: false5544legalized: false5545regBankSelected: false5546selected: false5547tracksRegLiveness: true5548registers:5549 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }5550 - { id: 1, class: g8rc, preferred-register: '' }5551 - { id: 2, class: g8rc, preferred-register: '' }5552 - { id: 3, class: gprc, preferred-register: '' }5553 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' }5554 - { id: 5, class: gprc, preferred-register: '' }5555 - { id: 6, class: g8rc, preferred-register: '' }5556 - { id: 7, class: g8rc, preferred-register: '' }5557 - { id: 8, class: g8rc, preferred-register: '' }5558 - { id: 9, class: gprc, preferred-register: '' }5559 - { id: 10, class: g8rc, preferred-register: '' }5560 - { id: 11, class: g8rc, preferred-register: '' }5561 - { id: 12, class: g8rc, preferred-register: '' }5562liveins:5563 - { reg: '$x3', virtual-reg: '%0' }5564 - { reg: '$x4', virtual-reg: '%1' }5565 - { reg: '$x5', virtual-reg: '%2' }5566frameInfo:5567 isFrameAddressTaken: false5568 isReturnAddressTaken: false5569 hasStackMap: false5570 hasPatchPoint: false5571 stackSize: 05572 offsetAdjustment: 05573 maxAlignment: 05574 adjustsStack: false5575 hasCalls: false5576 stackProtector: ''5577 maxCallFrameSize: 42949672955578 hasOpaqueSPAdjustment: false5579 hasVAStart: false5580 hasMustTailInVarArgFunc: false5581 savePoint: []5582 restorePoint: []5583fixedStack:5584stack:5585constants:5586body: |5587 bb.0.entry:5588 liveins: $x3, $x4, $x55589 5590 %2 = COPY $x55591 %1 = COPY $x45592 %0 = COPY $x35593 %3 = COPY %1.sub_325594 %4 = COPY %2.sub_325595 %5 = ADDI %4, 15596 %7 = IMPLICIT_DEF5597 %6 = INSERT_SUBREG %7, killed %5, 15598 %8 = LI8 25599 STWX %3, %0, killed %8 :: (store (s32) into %ir.arrayidx, !tbaa !8)5600 ; CHECK: STW %3, 2, %05601 ; CHECK-LATE: stw 4, 2(3)5602 %9 = ADDI %4, 25603 %11 = IMPLICIT_DEF5604 %10 = INSERT_SUBREG %11, killed %9, 15605 %12 = LI8 995606 STWX %3, %0, killed %12 :: (store (s32) into %ir.arrayidx3, !tbaa !8)5607 ; CHECK: STW killed %3, 99, killed %05608 ; CHECK-LATE: stw 4, 99(3)5609 BLR8 implicit $lr8, implicit $rm5610 5611...5612---5613name: testSTDUX5614# CHECK-ALL: name: testSTDUX5615alignment: 165616exposesReturnsTwice: false5617legalized: false5618regBankSelected: false5619selected: false5620tracksRegLiveness: true5621registers:5622 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }5623 - { id: 1, class: g8rc, preferred-register: '' }5624 - { id: 2, class: g8rc, preferred-register: '' }5625 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }5626 - { id: 4, class: gprc, preferred-register: '' }5627 - { id: 5, class: g8rc, preferred-register: '' }5628 - { id: 6, class: g8rc, preferred-register: '' }5629 - { id: 7, class: g8rc, preferred-register: '' }5630 - { id: 8, class: gprc, preferred-register: '' }5631 - { id: 9, class: g8rc, preferred-register: '' }5632 - { id: 10, class: g8rc, preferred-register: '' }5633 - { id: 11, class: g8rc, preferred-register: '' }5634 - { id: 12, class: g8rc_and_g8rc_nox0, preferred-register: '' }5635 - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' }5636liveins:5637 - { reg: '$x3', virtual-reg: '%0' }5638 - { reg: '$x4', virtual-reg: '%1' }5639 - { reg: '$x5', virtual-reg: '%2' }5640frameInfo:5641 isFrameAddressTaken: false5642 isReturnAddressTaken: false5643 hasStackMap: false5644 hasPatchPoint: false5645 stackSize: 05646 offsetAdjustment: 05647 maxAlignment: 05648 adjustsStack: false5649 hasCalls: false5650 stackProtector: ''5651 maxCallFrameSize: 42949672955652 hasOpaqueSPAdjustment: false5653 hasVAStart: false5654 hasMustTailInVarArgFunc: false5655 savePoint: []5656 restorePoint: []5657fixedStack:5658stack:5659constants:5660body: |5661 bb.0.entry:5662 liveins: $x3, $x4, $x55663 5664 %2 = COPY $x55665 %1 = COPY $x45666 %0 = COPY $x35667 %3 = COPY %2.sub_325668 %4 = ADDI %3, 15669 %6 = IMPLICIT_DEF5670 %5 = INSERT_SUBREG %6, killed %4, 15671 %7 = LI8 4445672 %12 = STDUX %1, %0, killed %7 :: (store (s64) into %ir.arrayidx, !tbaa !10)5673 ; CHECK: STDU %1, 444, %05674 ; CHECK-LATE: stdu {{[0-9]+}}, 444({{[0-9]+}})5675 %8 = ADDI %3, 25676 %10 = IMPLICIT_DEF5677 %9 = INSERT_SUBREG %10, killed %8, 15678 %11 = LI8 -85679 %13 = STDUX %1, %0, killed %11 :: (store (s64) into %ir.arrayidx3, !tbaa !10)5680 ; CHECK: STDU killed %1, -8, killed %05681 ; CHECK-LATE: stdu {{[0-9]+}}, -8({{[0-9]+}})5682 BLR8 implicit $lr8, implicit $rm5683 5684...5685---5686name: testSTDX5687# CHECK-ALL: name: testSTDX5688alignment: 165689exposesReturnsTwice: false5690legalized: false5691regBankSelected: false5692selected: false5693tracksRegLiveness: true5694registers:5695 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }5696 - { id: 1, class: g8rc, preferred-register: '' }5697 - { id: 2, class: g8rc, preferred-register: '' }5698 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }5699 - { id: 4, class: gprc, preferred-register: '' }5700 - { id: 5, class: g8rc, preferred-register: '' }5701 - { id: 6, class: g8rc, preferred-register: '' }5702 - { id: 7, class: g8rc, preferred-register: '' }5703 - { id: 8, class: gprc, preferred-register: '' }5704 - { id: 9, class: g8rc, preferred-register: '' }5705 - { id: 10, class: g8rc, preferred-register: '' }5706 - { id: 11, class: g8rc, preferred-register: '' }5707liveins:5708 - { reg: '$x3', virtual-reg: '%0' }5709 - { reg: '$x4', virtual-reg: '%1' }5710 - { reg: '$x5', virtual-reg: '%2' }5711frameInfo:5712 isFrameAddressTaken: false5713 isReturnAddressTaken: false5714 hasStackMap: false5715 hasPatchPoint: false5716 stackSize: 05717 offsetAdjustment: 05718 maxAlignment: 05719 adjustsStack: false5720 hasCalls: false5721 stackProtector: ''5722 maxCallFrameSize: 42949672955723 hasOpaqueSPAdjustment: false5724 hasVAStart: false5725 hasMustTailInVarArgFunc: false5726 savePoint: []5727 restorePoint: []5728fixedStack:5729stack:5730constants:5731body: |5732 bb.0.entry:5733 liveins: $x3, $x4, $x55734 5735 %2 = COPY $x55736 %1 = COPY $x45737 %0 = LI8 10005738 %3 = COPY %2.sub_325739 %4 = ADDI %3, 15740 %6 = IMPLICIT_DEF5741 %5 = INSERT_SUBREG %6, killed %4, 15742 %7 = LI8 9005743 STDX %1, %0, killed %7 :: (store (s64) into %ir.arrayidx, !tbaa !10)5744 ; CHECK: STD %1, 1000, killed %75745 ; CHECK-LATE: {{[0-9]+}}, 1000({{[0-9]+}})5746 %8 = ADDI %3, 25747 %10 = IMPLICIT_DEF5748 %9 = INSERT_SUBREG %10, killed %8, 15749 %11 = LI8 -9005750 STDX %1, %0, killed %11 :: (store (s64) into %ir.arrayidx3, !tbaa !10)5751 ; CHECK: STD killed %1, 1000, killed %115752 ; CHECK-LATE: {{[0-9]+}}, 1000({{[0-9]+}})5753 BLR8 implicit $lr8, implicit $rm5754 5755...5756---5757name: testSTFSX5758# CHECK-ALL: name: testSTFSX5759alignment: 165760exposesReturnsTwice: false5761legalized: false5762regBankSelected: false5763selected: false5764tracksRegLiveness: true5765registers:5766 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }5767 - { id: 1, class: f4rc, preferred-register: '' }5768 - { id: 2, class: g8rc, preferred-register: '' }5769 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }5770 - { id: 4, class: gprc, preferred-register: '' }5771 - { id: 5, class: g8rc, preferred-register: '' }5772 - { id: 6, class: g8rc, preferred-register: '' }5773 - { id: 7, class: g8rc, preferred-register: '' }5774 - { id: 8, class: gprc, preferred-register: '' }5775 - { id: 9, class: g8rc, preferred-register: '' }5776 - { id: 10, class: g8rc, preferred-register: '' }5777 - { id: 11, class: g8rc, preferred-register: '' }5778liveins:5779 - { reg: '$x3', virtual-reg: '%0' }5780 - { reg: '$f1', virtual-reg: '%1' }5781 - { reg: '$x5', virtual-reg: '%2' }5782frameInfo:5783 isFrameAddressTaken: false5784 isReturnAddressTaken: false5785 hasStackMap: false5786 hasPatchPoint: false5787 stackSize: 05788 offsetAdjustment: 05789 maxAlignment: 05790 adjustsStack: false5791 hasCalls: false5792 stackProtector: ''5793 maxCallFrameSize: 42949672955794 hasOpaqueSPAdjustment: false5795 hasVAStart: false5796 hasMustTailInVarArgFunc: false5797 savePoint: []5798 restorePoint: []5799fixedStack:5800stack:5801constants:5802body: |5803 bb.0.entry:5804 liveins: $x3, $f1, $x55805 5806 %2 = COPY $x55807 %1 = COPY $f15808 %0 = COPY $x35809 %3 = COPY %2.sub_325810 %4 = ADDI %3, 15811 %6 = IMPLICIT_DEF5812 %5 = INSERT_SUBREG %6, killed %4, 15813 %7 = LI8 4005814 STFSX %1, %0, killed %7 :: (store (s32) into %ir.arrayidx, !tbaa !14)5815 ; CHECK: STFS %1, 400, %05816 ; CHECK-LATE: stfs 1, 400(3)5817 %8 = ADDI %3, 25818 %10 = IMPLICIT_DEF5819 %9 = INSERT_SUBREG %10, killed %8, 15820 %11 = LI8 -4015821 STFSX %1, %0, killed %11 :: (store (s32) into %ir.arrayidx3, !tbaa !14)5822 ; CHECK: STFS killed %1, -401, killed %05823 ; CHECK-LATE: stfs 1, -401(3)5824 BLR8 implicit $lr8, implicit $rm5825 5826...5827---5828name: testSTFSUX5829# CHECK-ALL: name: testSTFSUX5830alignment: 165831exposesReturnsTwice: false5832legalized: false5833regBankSelected: false5834selected: false5835tracksRegLiveness: true5836registers:5837 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }5838 - { id: 1, class: f4rc, preferred-register: '' }5839 - { id: 2, class: g8rc, preferred-register: '' }5840 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }5841 - { id: 4, class: gprc, preferred-register: '' }5842 - { id: 5, class: g8rc, preferred-register: '' }5843 - { id: 6, class: g8rc, preferred-register: '' }5844 - { id: 7, class: g8rc, preferred-register: '' }5845 - { id: 8, class: gprc, preferred-register: '' }5846 - { id: 9, class: g8rc, preferred-register: '' }5847 - { id: 10, class: g8rc, preferred-register: '' }5848 - { id: 11, class: g8rc, preferred-register: '' }5849 - { id: 12, class: g8rc_and_g8rc_nox0, preferred-register: '' }5850 - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' }5851liveins:5852 - { reg: '$x3', virtual-reg: '%0' }5853 - { reg: '$f1', virtual-reg: '%1' }5854 - { reg: '$x5', virtual-reg: '%2' }5855frameInfo:5856 isFrameAddressTaken: false5857 isReturnAddressTaken: false5858 hasStackMap: false5859 hasPatchPoint: false5860 stackSize: 05861 offsetAdjustment: 05862 maxAlignment: 05863 adjustsStack: false5864 hasCalls: false5865 stackProtector: ''5866 maxCallFrameSize: 42949672955867 hasOpaqueSPAdjustment: false5868 hasVAStart: false5869 hasMustTailInVarArgFunc: false5870 savePoint: []5871 restorePoint: []5872fixedStack:5873stack:5874constants:5875body: |5876 bb.0.entry:5877 liveins: $x3, $f1, $x55878 5879 %2 = COPY $x55880 %1 = COPY $f15881 %0 = COPY $x35882 %3 = COPY %2.sub_325883 %4 = ADDI %3, 15884 %6 = IMPLICIT_DEF5885 %5 = INSERT_SUBREG %6, killed %4, 15886 %7 = LI8 1115887 %12 = STFSUX %1, %0, killed %7 :: (store (s32) into %ir.arrayidx, !tbaa !14)5888 ; CHECK: STFSU %1, 111, %05889 ; CHECK-LATE: stfsu {{[0-9]+}}, 111({{[0-9]+}})5890 %8 = ADDI %3, 25891 %10 = IMPLICIT_DEF5892 %9 = INSERT_SUBREG %10, killed %8, 15893 %11 = LI8 9875894 %13 = STFSUX %1, %0, killed %11 :: (store (s32) into %ir.arrayidx3, !tbaa !14)5895 ; CHECK: STFSU killed %1, 987, killed %05896 ; CHECK-LATE: stfsu {{[0-9]+}}, 987({{[0-9]+}})5897 BLR8 implicit $lr8, implicit $rm5898 5899...5900---5901name: testSTFDX5902# CHECK-ALL: name: testSTFDX5903alignment: 165904exposesReturnsTwice: false5905legalized: false5906regBankSelected: false5907selected: false5908tracksRegLiveness: true5909registers:5910 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }5911 - { id: 1, class: f8rc, preferred-register: '' }5912 - { id: 2, class: g8rc, preferred-register: '' }5913 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }5914 - { id: 4, class: gprc, preferred-register: '' }5915 - { id: 5, class: g8rc, preferred-register: '' }5916 - { id: 6, class: g8rc, preferred-register: '' }5917 - { id: 7, class: g8rc, preferred-register: '' }5918 - { id: 8, class: gprc, preferred-register: '' }5919 - { id: 9, class: g8rc, preferred-register: '' }5920 - { id: 10, class: g8rc, preferred-register: '' }5921 - { id: 11, class: g8rc, preferred-register: '' }5922liveins:5923 - { reg: '$x3', virtual-reg: '%0' }5924 - { reg: '$f1', virtual-reg: '%1' }5925 - { reg: '$x5', virtual-reg: '%2' }5926frameInfo:5927 isFrameAddressTaken: false5928 isReturnAddressTaken: false5929 hasStackMap: false5930 hasPatchPoint: false5931 stackSize: 05932 offsetAdjustment: 05933 maxAlignment: 05934 adjustsStack: false5935 hasCalls: false5936 stackProtector: ''5937 maxCallFrameSize: 42949672955938 hasOpaqueSPAdjustment: false5939 hasVAStart: false5940 hasMustTailInVarArgFunc: false5941 savePoint: []5942 restorePoint: []5943fixedStack:5944stack:5945constants:5946body: |5947 bb.0.entry:5948 liveins: $x3, $f1, $x55949 5950 %2 = COPY $x55951 %1 = COPY $f15952 %0 = COPY $x35953 %3 = COPY %2.sub_325954 %4 = ADDI %3, 15955 %6 = IMPLICIT_DEF5956 %5 = INSERT_SUBREG %6, killed %4, 15957 %7 = LI8 8765958 STFDX %1, %0, killed %7 :: (store (s64) into %ir.arrayidx, !tbaa !12)5959 ; CHECK: STFD %1, 876, %05960 ; CHECK-LATE: stfd 1, 876(3)5961 %8 = ADDI %3, 25962 %10 = IMPLICIT_DEF5963 %9 = INSERT_SUBREG %10, killed %8, 15964 %11 = LI8 -8735965 STFDX %1, %0, killed %11 :: (store (s64) into %ir.arrayidx3, !tbaa !12)5966 ; CHECK: STFD killed %1, -873, killed %05967 ; CHECK-LATE: stfd 1, -873(3)5968 BLR8 implicit $lr8, implicit $rm5969 5970...5971---5972name: testSTFDUX5973# CHECK-ALL: name: testSTFDUX5974alignment: 165975exposesReturnsTwice: false5976legalized: false5977regBankSelected: false5978selected: false5979tracksRegLiveness: true5980registers:5981 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }5982 - { id: 1, class: f8rc, preferred-register: '' }5983 - { id: 2, class: g8rc, preferred-register: '' }5984 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' }5985 - { id: 4, class: gprc, preferred-register: '' }5986 - { id: 5, class: g8rc, preferred-register: '' }5987 - { id: 6, class: g8rc, preferred-register: '' }5988 - { id: 7, class: g8rc, preferred-register: '' }5989 - { id: 8, class: gprc, preferred-register: '' }5990 - { id: 9, class: g8rc, preferred-register: '' }5991 - { id: 10, class: g8rc, preferred-register: '' }5992 - { id: 11, class: g8rc, preferred-register: '' }5993 - { id: 12, class: g8rc_and_g8rc_nox0, preferred-register: '' }5994 - { id: 13, class: g8rc_and_g8rc_nox0, preferred-register: '' }5995liveins:5996 - { reg: '$x3', virtual-reg: '%0' }5997 - { reg: '$f1', virtual-reg: '%1' }5998 - { reg: '$x5', virtual-reg: '%2' }5999frameInfo:6000 isFrameAddressTaken: false6001 isReturnAddressTaken: false6002 hasStackMap: false6003 hasPatchPoint: false6004 stackSize: 06005 offsetAdjustment: 06006 maxAlignment: 06007 adjustsStack: false6008 hasCalls: false6009 stackProtector: ''6010 maxCallFrameSize: 42949672956011 hasOpaqueSPAdjustment: false6012 hasVAStart: false6013 hasMustTailInVarArgFunc: false6014 savePoint: []6015 restorePoint: []6016fixedStack:6017stack:6018constants:6019body: |6020 bb.0.entry:6021 liveins: $x3, $f1, $x56022 6023 %2 = COPY $x56024 %1 = COPY $f16025 %0 = COPY $x36026 %3 = COPY %2.sub_326027 %4 = ADDI %3, 16028 %6 = IMPLICIT_DEF6029 %5 = INSERT_SUBREG %6, killed %4, 16030 %7 = LI8 -90386031 %12 = STFDUX %1, %0, killed %7 :: (store (s64) into %ir.arrayidx, !tbaa !12)6032 ; CHECK: STFDU %1, -9038, %06033 ; CHECK-LATE: stfdu {{[0-9]+}}, -9038({{[0-9]+}})6034 %8 = ADDI %3, 26035 %10 = IMPLICIT_DEF6036 %9 = INSERT_SUBREG %10, killed %8, 16037 %11 = LI8 64776038 %13 = STFDUX %1, %0, killed %11 :: (store (s64) into %ir.arrayidx3, !tbaa !12)6039 ; CHECK: STFDU killed %1, 6477, killed %06040 ; CHECK-LATE: stfdu {{[0-9]+}}, 6477({{[0-9]+}})6041 BLR8 implicit $lr8, implicit $rm6042 6043...6044---6045name: testSTXSSPX6046# CHECK-ALL: name: testSTXSSPX6047alignment: 166048exposesReturnsTwice: false6049legalized: false6050regBankSelected: false6051selected: false6052tracksRegLiveness: true6053registers:6054 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }6055 - { id: 1, class: vssrc, preferred-register: '' }6056 - { id: 2, class: g8rc, preferred-register: '' }6057 - { id: 3, class: g8rc, preferred-register: '' }6058liveins:6059 - { reg: '$x3', virtual-reg: '%0' }6060 - { reg: '$f1', virtual-reg: '%1' }6061 - { reg: '$x5', virtual-reg: '%2' }6062frameInfo:6063 isFrameAddressTaken: false6064 isReturnAddressTaken: false6065 hasStackMap: false6066 hasPatchPoint: false6067 stackSize: 06068 offsetAdjustment: 06069 maxAlignment: 06070 adjustsStack: false6071 hasCalls: false6072 stackProtector: ''6073 maxCallFrameSize: 42949672956074 hasOpaqueSPAdjustment: false6075 hasVAStart: false6076 hasMustTailInVarArgFunc: false6077 savePoint: []6078 restorePoint: []6079fixedStack:6080stack:6081constants:6082body: |6083 bb.0.entry:6084 liveins: $x3, $f1, $x56085 6086 %2 = COPY $x56087 %1 = COPY $f16088 %0 = COPY $x36089 %3 = LI8 4446090 STXSSPX %1, %0, killed %3 :: (store (s32) into %ir.arrayidx, !tbaa !14)6091 ; CHECK: DFSTOREf32 killed %1, 444, killed %06092 ; CHECK-LATE: stfs 1, 444(3)6093 BLR8 implicit $lr8, implicit $rm6094 6095...6096---6097name: testSTXSDX6098# CHECK-ALL: name: testSTXSDX6099alignment: 166100exposesReturnsTwice: false6101legalized: false6102regBankSelected: false6103selected: false6104tracksRegLiveness: true6105registers:6106 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }6107 - { id: 1, class: vsfrc, preferred-register: '' }6108 - { id: 2, class: g8rc, preferred-register: '' }6109 - { id: 3, class: g8rc, preferred-register: '' }6110liveins:6111 - { reg: '$x3', virtual-reg: '%0' }6112 - { reg: '$f1', virtual-reg: '%1' }6113 - { reg: '$x5', virtual-reg: '%2' }6114frameInfo:6115 isFrameAddressTaken: false6116 isReturnAddressTaken: false6117 hasStackMap: false6118 hasPatchPoint: false6119 stackSize: 06120 offsetAdjustment: 06121 maxAlignment: 06122 adjustsStack: false6123 hasCalls: false6124 stackProtector: ''6125 maxCallFrameSize: 42949672956126 hasOpaqueSPAdjustment: false6127 hasVAStart: false6128 hasMustTailInVarArgFunc: false6129 savePoint: []6130 restorePoint: []6131fixedStack:6132stack:6133constants:6134body: |6135 bb.0.entry:6136 liveins: $x3, $f1, $x56137 6138 %2 = COPY $x56139 %1 = COPY $f16140 %0 = COPY $x36141 %3 = LI8 46142 STXSDX %1, %0, killed %3, implicit $rm :: (store (s64) into %ir.arrayidx, !tbaa !12)6143 ; CHECK: DFSTOREf64 killed %1, 4, killed %06144 ; CHECK-LATE: stfd 1, 4(3)6145 BLR8 implicit $lr8, implicit $rm6146 6147...6148---6149name: testSTXVX6150# CHECK-ALL: name: testSTXVX6151alignment: 166152exposesReturnsTwice: false6153legalized: false6154regBankSelected: false6155selected: false6156tracksRegLiveness: true6157registers:6158 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' }6159 - { id: 1, class: vrrc, preferred-register: '' }6160 - { id: 2, class: g8rc, preferred-register: '' }6161 - { id: 3, class: g8rc, preferred-register: '' }6162liveins:6163 - { reg: '$x3', virtual-reg: '%0' }6164 - { reg: '$v2', virtual-reg: '%1' }6165 - { reg: '$x7', virtual-reg: '%2' }6166frameInfo:6167 isFrameAddressTaken: false6168 isReturnAddressTaken: false6169 hasStackMap: false6170 hasPatchPoint: false6171 stackSize: 06172 offsetAdjustment: 06173 maxAlignment: 06174 adjustsStack: false6175 hasCalls: false6176 stackProtector: ''6177 maxCallFrameSize: 42949672956178 hasOpaqueSPAdjustment: false6179 hasVAStart: false6180 hasMustTailInVarArgFunc: false6181 savePoint: []6182 restorePoint: []6183fixedStack:6184stack:6185constants:6186body: |6187 bb.0.entry:6188 liveins: $x3, $v2, $x76189 6190 %2 = COPY $x76191 %1 = COPY $v26192 %0 = LI8 166193 %3 = RLDICR %2, 4, 596194 STXVX %1, %0, killed %3 :: (store (s128) into %ir.arrayidx, !tbaa !3)6195 ; CHECK: STXV killed %1, 16, killed %36196 ; CHECK-LATE: stxv 34, 16(4)6197 BLR8 implicit $lr8, implicit $rm6198 6199...6200---6201name: testSUBFC6202# CHECK-ALL: name: testSUBFC6203alignment: 166204exposesReturnsTwice: false6205legalized: false6206regBankSelected: false6207selected: false6208tracksRegLiveness: true6209registers:6210 - { id: 0, class: gprc, preferred-register: '' }6211 - { id: 1, class: g8rc, preferred-register: '' }6212 - { id: 2, class: g8rc, preferred-register: '' }6213 - { id: 3, class: g8rc, preferred-register: '' }6214 - { id: 4, class: gprc, preferred-register: '' }6215 - { id: 5, class: gprc, preferred-register: '' }6216 - { id: 6, class: gprc, preferred-register: '' }6217 - { id: 7, class: gprc, preferred-register: '' }6218 - { id: 8, class: gprc, preferred-register: '' }6219liveins:6220 - { reg: '$x3', virtual-reg: '%0' }6221 - { reg: '$x4', virtual-reg: '%1' }6222 - { reg: '$x5', virtual-reg: '%2' }6223 - { reg: '$x6', virtual-reg: '%3' }6224frameInfo:6225 isFrameAddressTaken: false6226 isReturnAddressTaken: false6227 hasStackMap: false6228 hasPatchPoint: false6229 stackSize: 06230 offsetAdjustment: 06231 maxAlignment: 06232 adjustsStack: false6233 hasCalls: false6234 stackProtector: ''6235 maxCallFrameSize: 42949672956236 hasOpaqueSPAdjustment: false6237 hasVAStart: false6238 hasMustTailInVarArgFunc: false6239 savePoint: []6240 restorePoint: []6241fixedStack:6242stack:6243constants:6244body: |6245 bb.0.entry:6246 liveins: $x3, $x4, $x5, $x66247 6248 %3 = COPY $x66249 %2 = COPY $x56250 %1 = COPY $x46251 %6 = COPY %3.sub_326252 %7 = COPY %2.sub_326253 %8 = COPY %1.sub_326254 %0 = LI 556255 %4 = SUBFC %7, %0, implicit-def $carry6256 ; CHECK: SUBFIC killed %7, 556257 ; CHECK-LATE: subfic 3, 5, 556258 %5 = SUBFE %6, %8, implicit-def dead $carry, implicit $carry6259 $x3 = EXTSW_32_64 %46260 $x4 = EXTSW_32_64 %56261 BLR8 implicit $lr8, implicit $rm, implicit $x3, implicit $x46262 6263...6264---6265name: testSUBFC86266# CHECK-ALL: name: testSUBFC86267alignment: 166268exposesReturnsTwice: false6269legalized: false6270regBankSelected: false6271selected: false6272tracksRegLiveness: true6273registers:6274 - { id: 0, class: g8rc, preferred-register: '' }6275 - { id: 1, class: g8rc, preferred-register: '' }6276 - { id: 2, class: g8rc, preferred-register: '' }6277 - { id: 3, class: g8rc, preferred-register: '' }6278 - { id: 4, class: g8rc, preferred-register: '' }6279 - { id: 5, class: g8rc, preferred-register: '' }6280liveins:6281 - { reg: '$x3', virtual-reg: '%0' }6282 - { reg: '$x4', virtual-reg: '%1' }6283 - { reg: '$x5', virtual-reg: '%2' }6284 - { reg: '$x6', virtual-reg: '%3' }6285frameInfo:6286 isFrameAddressTaken: false6287 isReturnAddressTaken: false6288 hasStackMap: false6289 hasPatchPoint: false6290 stackSize: 06291 offsetAdjustment: 06292 maxAlignment: 06293 adjustsStack: false6294 hasCalls: false6295 stackProtector: ''6296 maxCallFrameSize: 42949672956297 hasOpaqueSPAdjustment: false6298 hasVAStart: false6299 hasMustTailInVarArgFunc: false6300 savePoint: []6301 restorePoint: []6302fixedStack:6303stack:6304constants:6305body: |6306 bb.0.entry:6307 liveins: $x3, $x4, $x5, $x66308 6309 %3 = COPY $x66310 %2 = COPY $x56311 %1 = COPY $x46312 %0 = LI8 76356313 %4 = SUBFC8 %2, %0, implicit-def $carry6314 ; CHECK: SUBFIC8 killed %2, 76356315 ; CHECK-LATE: subfic 3, 5, 76356316 %5 = SUBFE8 %3, %1, implicit-def dead $carry, implicit $carry6317 $x3 = COPY %46318 $x4 = COPY %56319 BLR8 implicit $lr8, implicit $rm, implicit $x3, implicit $x46320 6321...6322---6323name: testXOR6324# CHECK-ALL: name: testXOR6325alignment: 166326exposesReturnsTwice: false6327legalized: false6328regBankSelected: false6329selected: false6330tracksRegLiveness: true6331registers:6332 - { id: 0, class: g8rc, preferred-register: '' }6333 - { id: 1, class: gprc, preferred-register: '' }6334 - { id: 2, class: gprc, preferred-register: '' }6335 - { id: 3, class: gprc, preferred-register: '' }6336liveins:6337 - { reg: '$x3', virtual-reg: '%0' }6338 - { reg: '$x4', virtual-reg: '%1' }6339frameInfo:6340 isFrameAddressTaken: false6341 isReturnAddressTaken: false6342 hasStackMap: false6343 hasPatchPoint: false6344 stackSize: 06345 offsetAdjustment: 06346 maxAlignment: 06347 adjustsStack: false6348 hasCalls: false6349 stackProtector: ''6350 maxCallFrameSize: 42949672956351 hasOpaqueSPAdjustment: false6352 hasVAStart: false6353 hasMustTailInVarArgFunc: false6354 savePoint: []6355 restorePoint: []6356fixedStack:6357stack:6358constants:6359body: |6360 bb.0.entry:6361 liveins: $x3, $x46362 6363 %1 = LI 101016364 %0 = COPY $x36365 %3 = COPY %0.sub_326366 %2 = XOR %1, %36367 ; CHECK: XORI killed %3, 101016368 ; CHECK-LATE: 3, 3, 101016369 $x3 = EXTSW_32_64 %26370 BLR8 implicit $lr8, implicit $rm, implicit $x36371 6372...6373---6374name: testXOR86375# CHECK-ALL: name: testXOR86376alignment: 166377exposesReturnsTwice: false6378legalized: false6379regBankSelected: false6380selected: false6381tracksRegLiveness: true6382registers:6383 - { id: 0, class: g8rc, preferred-register: '' }6384 - { id: 1, class: g8rc, preferred-register: '' }6385 - { id: 2, class: g8rc, preferred-register: '' }6386liveins:6387 - { reg: '$x3', virtual-reg: '%0' }6388 - { reg: '$x4', virtual-reg: '%1' }6389frameInfo:6390 isFrameAddressTaken: false6391 isReturnAddressTaken: false6392 hasStackMap: false6393 hasPatchPoint: false6394 stackSize: 06395 offsetAdjustment: 06396 maxAlignment: 06397 adjustsStack: false6398 hasCalls: false6399 stackProtector: ''6400 maxCallFrameSize: 42949672956401 hasOpaqueSPAdjustment: false6402 hasVAStart: false6403 hasMustTailInVarArgFunc: false6404 savePoint: []6405 restorePoint: []6406fixedStack:6407stack:6408constants:6409body: |6410 bb.0.entry:6411 liveins: $x3, $x46412 6413 %1 = COPY $x46414 %0 = LI8 55356415 %2 = XOR8 %1, %06416 ; CHECK: XORI8 killed %1, 55356417 ; CHECK-LATE: xori 3, 4, 55356418 $x3 = COPY %26419 BLR8 implicit $lr8, implicit $rm, implicit $x36420 6421...6422---6423name: testXORI6424# CHECK-ALL: name: testXORI6425alignment: 166426exposesReturnsTwice: false6427legalized: false6428regBankSelected: false6429selected: false6430tracksRegLiveness: true6431registers:6432 - { id: 0, class: gprc, preferred-register: '' }6433 - { id: 1, class: gprc, preferred-register: '' }6434liveins:6435 - { reg: '$x3', virtual-reg: '%0' }6436frameInfo:6437 isFrameAddressTaken: false6438 isReturnAddressTaken: false6439 hasStackMap: false6440 hasPatchPoint: false6441 stackSize: 06442 offsetAdjustment: 06443 maxAlignment: 06444 adjustsStack: false6445 hasCalls: false6446 stackProtector: ''6447 maxCallFrameSize: 42949672956448 hasOpaqueSPAdjustment: false6449 hasVAStart: false6450 hasMustTailInVarArgFunc: false6451 savePoint: []6452 restorePoint: []6453fixedStack:6454stack:6455constants:6456body: |6457 bb.0.entry:6458 liveins: $x36459 6460 %0 = LI 8716461 %1 = XORI %0, 176462 ; CHECK: LI8 8866463 ; CHECK-LATE: li 3, 8866464 $x3 = EXTSW_32_64 %16465 BLR8 implicit $lr8, implicit $rm, implicit $x36466 6467...6468---6469name: testXOR8I6470# CHECK-ALL: name: testXOR8I6471alignment: 166472exposesReturnsTwice: false6473legalized: false6474regBankSelected: false6475selected: false6476tracksRegLiveness: true6477registers:6478 - { id: 0, class: g8rc, preferred-register: '' }6479 - { id: 1, class: g8rc, preferred-register: '' }6480liveins:6481 - { reg: '$x3', virtual-reg: '%0' }6482frameInfo:6483 isFrameAddressTaken: false6484 isReturnAddressTaken: false6485 hasStackMap: false6486 hasPatchPoint: false6487 stackSize: 06488 offsetAdjustment: 06489 maxAlignment: 06490 adjustsStack: false6491 hasCalls: false6492 stackProtector: ''6493 maxCallFrameSize: 42949672956494 hasOpaqueSPAdjustment: false6495 hasVAStart: false6496 hasMustTailInVarArgFunc: false6497 savePoint: []6498 restorePoint: []6499fixedStack:6500stack:6501constants:6502body: |6503 bb.0.entry:6504 liveins: $x36505 6506 %0 = LI8 4536507 %1 = XORI8 %0, 176508 ; CHECK: LI8 4686509 ; CHECK-LATE: li 3, 4686510 $x3 = COPY %16511 BLR8 implicit $lr8, implicit $rm, implicit $x36512 6513...6514