1# RUN: llc -run-pass ppc-mi-peepholes -ppc-convert-rr-to-ri %s -o - | FileCheck %s 2# RUN: llc -start-after ppc-mi-peepholes -ppc-late-peephole %s -o - | FileCheck %s --check-prefix=CHECK-LATE 3 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 readnone 11 define zeroext i32 @testRLWNM(i32 zeroext %a) local_unnamed_addr #0 { 12 entry: 13 %shl = shl i32 %a, 4 14 %and = and i32 %shl, 4080 15 ret i32 %and 16 } 17 18 ; Function Attrs: norecurse nounwind readnone 19 define i64 @testRLWNM8(i64 %a) local_unnamed_addr #0 { 20 entry: 21 %shl = shl i64 %a, 4 22 %and = and i64 %shl, 4080 23 ret i64 %and 24 } 25 26 ; Function Attrs: norecurse nounwind readnone 27 define zeroext i32 @testRLWNM_rec(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 { 28 entry: 29 %and = and i32 %a, 255 30 %tobool = icmp eq i32 %and, 0 31 %cond = select i1 %tobool, i32 %b, i32 %a 32 ret i32 %cond 33 } 34 35 ; Function Attrs: norecurse nounwind readnone 36 define i64 @testRLWNM8_rec(i64 %a, i64 %b) local_unnamed_addr #0 { 37 entry: 38 %a.tr = trunc i64 %a to i32 39 %0 = shl i32 %a.tr, 4 40 %conv = and i32 %0, 4080 41 %tobool = icmp eq i32 %conv, 0 42 %conv1 = zext i32 %conv to i64 43 %cond = select i1 %tobool, i64 %b, i64 %conv1 44 ret i64 %cond 45 } 46 47 ; Function Attrs: norecurse nounwind readnone 48 define zeroext i32 @testSLW(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 { 49 entry: 50 %shl = shl i32 %a, %b 51 ret i32 %shl 52 } 53 54 ; Function Attrs: norecurse nounwind readnone 55 define zeroext i32 @testSLW_rec(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 { 56 entry: 57 %shl = shl i32 %a, %b 58 %tobool = icmp eq i32 %shl, 0 59 %cond = select i1 %tobool, i32 %b, i32 %a 60 ret i32 %cond 61 } 62 63 ; Function Attrs: norecurse nounwind readnone 64 define zeroext i32 @testSRW(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 { 65 entry: 66 %shr = lshr i32 %a, %b 67 ret i32 %shr 68 } 69 70 ; Function Attrs: norecurse nounwind readnone 71 define zeroext i32 @testSRW_rec(i32 zeroext %a, i32 zeroext %b) local_unnamed_addr #0 { 72 entry: 73 %shr = lshr i32 %a, %b 74 %tobool = icmp eq i32 %shr, 0 75 %cond = select i1 %tobool, i32 %b, i32 %a 76 ret i32 %cond 77 } 78 79 ; Function Attrs: norecurse nounwind readnone 80 define signext i32 @testSRAW(i32 signext %a, i32 signext %b) local_unnamed_addr #0 { 81 entry: 82 %shr = ashr i32 %a, %b 83 ret i32 %shr 84 } 85 86 ; Function Attrs: norecurse nounwind readnone 87 define signext i32 @testSRAW_rec(i32 signext %a, i32 signext %b) local_unnamed_addr #0 { 88 entry: 89 %shr = ashr i32 %a, %b 90 %tobool = icmp eq i32 %shr, 0 91 %cond = select i1 %tobool, i32 %b, i32 %shr 92 ret i32 %cond 93 } 94 95 ; Function Attrs: norecurse nounwind readnone 96 define i64 @testRLDCL(i64 %a, i64 %b) local_unnamed_addr #0 { 97 entry: 98 %and = and i64 %b, 63 99 %shl = shl i64 %a, %and 100 %sub = sub nsw i64 64, %and 101 %shr = lshr i64 %a, %sub 102 %or = or i64 %shr, %shl 103 ret i64 %or 104 } 105 106 ; Function Attrs: norecurse nounwind readnone 107 define i64 @testRLDCL_rec(i64 %a, i64 %b) local_unnamed_addr #0 { 108 entry: 109 %and = and i64 %b, 63 110 %shl = shl i64 %a, %and 111 %sub = sub nsw i64 64, %and 112 %shr = lshr i64 %a, %sub 113 %or = or i64 %shr, %shl 114 %tobool = icmp eq i64 %or, 0 115 %cond = select i1 %tobool, i64 %and, i64 %a 116 ret i64 %cond 117 } 118 119 ; Function Attrs: norecurse nounwind readnone 120 define i64 @testRLDCR(i64 %a, i64 %b) local_unnamed_addr #0 { 121 entry: 122 %and = and i64 %b, 63 123 %shl = shl i64 %a, %and 124 %sub = sub nsw i64 64, %and 125 %shr = lshr i64 %a, %sub 126 %or = or i64 %shr, %shl 127 ret i64 %or 128 } 129 130 ; Function Attrs: norecurse nounwind readnone 131 define i64 @testRLDCR_rec(i64 %a, i64 %b) local_unnamed_addr #0 { 132 entry: 133 %and = and i64 %b, 63 134 %shl = shl i64 %a, %and 135 %sub = sub nsw i64 64, %and 136 %shr = lshr i64 %a, %sub 137 %or = or i64 %shr, %shl 138 %tobool = icmp eq i64 %or, 0 139 %cond = select i1 %tobool, i64 %and, i64 %a 140 ret i64 %cond 141 } 142 143 define i64 @testSLD(i64 %a, i64 %b) local_unnamed_addr #0 { 144 entry: 145 %shl = shl i64 %a, %b 146 ret i64 %shl 147 } 148 149 ; Function Attrs: norecurse nounwind readnone 150 define i64 @testSLD_rec(i64 %a, i64 %b) local_unnamed_addr #0 { 151 entry: 152 %shl = shl i64 %a, %b 153 %tobool = icmp eq i64 %shl, 0 154 %cond = select i1 %tobool, i64 %b, i64 %a 155 ret i64 %cond 156 } 157 158 ; Function Attrs: norecurse nounwind readnone 159 define i64 @testSRD(i64 %a, i64 %b) local_unnamed_addr #0 { 160 entry: 161 %shr = lshr i64 %a, %b 162 ret i64 %shr 163 } 164 165 ; Function Attrs: norecurse nounwind readnone 166 define i64 @testSRD_rec(i64 %a, i64 %b) local_unnamed_addr #0 { 167 entry: 168 %shr = lshr i64 %a, %b 169 %tobool = icmp eq i64 %shr, 0 170 %cond = select i1 %tobool, i64 %b, i64 %a 171 ret i64 %cond 172 } 173 174 ; Function Attrs: norecurse nounwind readnone 175 define i64 @testSRAD(i64 %a, i64 %b) local_unnamed_addr #0 { 176 entry: 177 %shr = ashr i64 %a, %b 178 ret i64 %shr 179 } 180 181 ; Function Attrs: norecurse nounwind readnone 182 define i64 @testSRAD_rec(i64 %a, i64 %b) local_unnamed_addr #0 { 183 entry: 184 %shr = ashr i64 %a, %b 185 %tobool = icmp eq i64 %shr, 0 186 %cond = select i1 %tobool, i64 %b, i64 %shr 187 ret i64 %cond 188 } 189 190 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" "unsafe-fp-math"="false" "use-soft-float"="false" } 191 192 !llvm.module.flags = !{!0, !1} 193 !llvm.ident = !{!2} 194 195 !0 = !{i32 1, !"wchar_size", i32 4} 196 !1 = !{i32 7, !"PIC Level", i32 2} 197 !2 = !{!"clang version 6.0.0 (trunk 316067)"} 198 !3 = !{!4, !4, i64 0} 199 !4 = !{!"omnipotent char", !5, i64 0} 200 !5 = !{!"Simple C/C++ TBAA"} 201 !6 = !{!7, !7, i64 0} 202 !7 = !{!"short", !4, i64 0} 203 !8 = !{!9, !9, i64 0} 204 !9 = !{!"int", !4, i64 0} 205 !10 = !{!11, !11, i64 0} 206 !11 = !{!"long long", !4, i64 0} 207 !12 = !{!13, !13, i64 0} 208 !13 = !{!"double", !4, i64 0} 209 !14 = !{!15, !15, i64 0} 210 !15 = !{!"float", !4, i64 0} 211 212... 213--- 214name: testRLWNM 215# CHECK-ALL: name: testRLWNM 216alignment: 16 217exposesReturnsTwice: false 218legalized: false 219regBankSelected: false 220selected: false 221tracksRegLiveness: true 222registers: 223 - { id: 0, class: g8rc, preferred-register: '' } 224 - { id: 1, class: gprc, preferred-register: '' } 225 - { id: 2, class: gprc, preferred-register: '' } 226 - { id: 3, class: g8rc, preferred-register: '' } 227 - { id: 4, class: gprc, preferred-register: '' } 228liveins: 229 - { reg: '$x3', virtual-reg: '%0' } 230frameInfo: 231 isFrameAddressTaken: false 232 isReturnAddressTaken: false 233 hasStackMap: false 234 hasPatchPoint: false 235 stackSize: 0 236 offsetAdjustment: 0 237 maxAlignment: 0 238 adjustsStack: false 239 hasCalls: false 240 stackProtector: '' 241 maxCallFrameSize: 4294967295 242 hasOpaqueSPAdjustment: false 243 hasVAStart: false 244 hasMustTailInVarArgFunc: false 245 savePoint: '' 246 restorePoint: '' 247fixedStack: 248stack: 249constants: 250body: | 251 bb.0.entry: 252 liveins: $x3 253 254 %0 = COPY $x3 255 %1 = COPY %0.sub_32 256 %3 = IMPLICIT_DEF 257 %2 = LI 170 258 %4 = RLWNM killed %1, %2, 20, 27 259 ; CHECK: RLWINM killed %1, 10, 20, 27 260 ; CHECK-LATE: rlwinm 3, 3, 10, 20, 27 261 $x3 = EXTSW_32_64 %4 262 BLR8 implicit $lr8, implicit $rm, implicit $x3 263 264... 265--- 266name: testRLWNM8 267# CHECK-ALL: name: testRLWNM8 268alignment: 16 269exposesReturnsTwice: false 270legalized: false 271regBankSelected: false 272selected: false 273tracksRegLiveness: true 274registers: 275 - { id: 0, class: g8rc, preferred-register: '' } 276 - { id: 1, class: g8rc, preferred-register: '' } 277 - { id: 2, class: g8rc, preferred-register: '' } 278liveins: 279 - { reg: '$x3', virtual-reg: '%0' } 280frameInfo: 281 isFrameAddressTaken: false 282 isReturnAddressTaken: false 283 hasStackMap: false 284 hasPatchPoint: false 285 stackSize: 0 286 offsetAdjustment: 0 287 maxAlignment: 0 288 adjustsStack: false 289 hasCalls: false 290 stackProtector: '' 291 maxCallFrameSize: 4294967295 292 hasOpaqueSPAdjustment: false 293 hasVAStart: false 294 hasMustTailInVarArgFunc: false 295 savePoint: '' 296 restorePoint: '' 297fixedStack: 298stack: 299constants: 300body: | 301 bb.0.entry: 302 liveins: $x3 303 304 %0 = LI8 234 305 %1 = COPY $x3 306 %2 = RLWNM8 %1, %0, 20, 27 307 ; CHECK: RLWINM8 %1, 10, 20, 27 308 ; CHECK-LATE: rlwinm 3, 3, 10, 20, 27 309 $x3 = COPY %2 310 BLR8 implicit $lr8, implicit $rm, implicit $x3 311 312... 313--- 314name: testRLWNM_rec 315# CHECK-ALL: name: testRLWNM_rec 316alignment: 16 317exposesReturnsTwice: false 318legalized: false 319regBankSelected: false 320selected: false 321tracksRegLiveness: true 322registers: 323 - { id: 0, class: g8rc, preferred-register: '' } 324 - { id: 1, class: g8rc, preferred-register: '' } 325 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 326 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 327 - { id: 4, class: gprc, preferred-register: '' } 328 - { id: 5, class: crrc, preferred-register: '' } 329 - { id: 6, class: gprc, preferred-register: '' } 330 - { id: 7, class: g8rc, preferred-register: '' } 331 - { id: 8, class: g8rc, preferred-register: '' } 332 - { id: 9, class: g8rc, preferred-register: '' } 333liveins: 334 - { reg: '$x3', virtual-reg: '%0' } 335 - { reg: '$x4', virtual-reg: '%1' } 336frameInfo: 337 isFrameAddressTaken: false 338 isReturnAddressTaken: false 339 hasStackMap: false 340 hasPatchPoint: false 341 stackSize: 0 342 offsetAdjustment: 0 343 maxAlignment: 0 344 adjustsStack: false 345 hasCalls: false 346 stackProtector: '' 347 maxCallFrameSize: 4294967295 348 hasOpaqueSPAdjustment: false 349 hasVAStart: false 350 hasMustTailInVarArgFunc: false 351 savePoint: '' 352 restorePoint: '' 353fixedStack: 354stack: 355constants: 356body: | 357 bb.0.entry: 358 liveins: $x3, $x4 359 360 %1 = COPY $x4 361 %0 = COPY $x3 362 %2 = COPY %1.sub_32 363 %3 = LI -22 364 %4 = RLWNM_rec %2, %3, 24, 31, implicit-def $cr0 365 ; CHECK: RLWINM_rec %2, 10, 24, 31, implicit-def $cr0 366 ; CHECK-LATE: li 3, -22 367 ; CHECK-LATE: rlwinm. 5, 4, 10, 24, 31 368 %5 = COPY killed $cr0 369 %6 = ISEL %2, %3, %5.sub_eq 370 %8 = IMPLICIT_DEF 371 %7 = INSERT_SUBREG %8, killed %6, 1 372 %9 = RLDICL killed %7, 0, 32 373 $x3 = COPY %9 374 BLR8 implicit $lr8, implicit $rm, implicit $x3 375 376... 377--- 378name: testRLWNM8_rec 379# CHECK-ALL: name: testRLWNM8_rec 380alignment: 16 381exposesReturnsTwice: false 382legalized: false 383regBankSelected: false 384selected: false 385tracksRegLiveness: true 386registers: 387 - { id: 0, class: g8rc, preferred-register: '' } 388 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' } 389 - { id: 2, class: g8rc, preferred-register: '' } 390 - { id: 3, class: g8rc, preferred-register: '' } 391 - { id: 4, class: g8rc, preferred-register: '' } 392 - { id: 5, class: g8rc, preferred-register: '' } 393 - { id: 6, class: g8rc_and_g8rc_nox0, preferred-register: '' } 394 - { id: 7, class: crrc, preferred-register: '' } 395 - { id: 8, class: g8rc, preferred-register: '' } 396liveins: 397 - { reg: '$x3', virtual-reg: '%0' } 398 - { reg: '$x4', virtual-reg: '%1' } 399frameInfo: 400 isFrameAddressTaken: false 401 isReturnAddressTaken: false 402 hasStackMap: false 403 hasPatchPoint: false 404 stackSize: 0 405 offsetAdjustment: 0 406 maxAlignment: 0 407 adjustsStack: false 408 hasCalls: false 409 stackProtector: '' 410 maxCallFrameSize: 4294967295 411 hasOpaqueSPAdjustment: false 412 hasVAStart: false 413 hasMustTailInVarArgFunc: false 414 savePoint: '' 415 restorePoint: '' 416fixedStack: 417stack: 418constants: 419body: | 420 bb.0.entry: 421 liveins: $x3, $x4 422 423 %1 = COPY $x4 424 %0 = COPY $x3 425 %2 = LI8 -18 426 %3 = RLWNM8_rec %1, %2, 20, 27, implicit-def $cr0 427 ; CHECK: RLWINM8_rec %1, 14, 20, 27, implicit-def $cr0 428 ; CHECK-LATE: rlwinm. 3, 4, 14, 20, 27 429 %7 = COPY killed $cr0 430 %6 = RLDICL killed %3, 0, 32 431 %8 = ISEL8 %1, %6, %7.sub_eq 432 $x3 = COPY %8 433 BLR8 implicit $lr8, implicit $rm, implicit $x3 434 435... 436--- 437name: testSLW 438# CHECK-ALL: name: testSLW 439alignment: 16 440exposesReturnsTwice: false 441legalized: false 442regBankSelected: false 443selected: false 444tracksRegLiveness: true 445registers: 446 - { id: 0, class: g8rc, preferred-register: '' } 447 - { id: 1, class: g8rc, preferred-register: '' } 448 - { id: 2, class: gprc, preferred-register: '' } 449 - { id: 3, class: g8rc, preferred-register: '' } 450 - { id: 4, class: g8rc, preferred-register: '' } 451 - { id: 5, class: gprc, preferred-register: '' } 452 - { id: 6, class: g8rc, preferred-register: '' } 453 - { id: 7, class: g8rc, preferred-register: '' } 454 - { id: 8, class: gprc, preferred-register: '' } 455liveins: 456 - { reg: '$x3', virtual-reg: '%0' } 457 - { reg: '$x4', virtual-reg: '%1' } 458frameInfo: 459 isFrameAddressTaken: false 460 isReturnAddressTaken: false 461 hasStackMap: false 462 hasPatchPoint: false 463 stackSize: 0 464 offsetAdjustment: 0 465 maxAlignment: 0 466 adjustsStack: false 467 hasCalls: false 468 stackProtector: '' 469 maxCallFrameSize: 4294967295 470 hasOpaqueSPAdjustment: false 471 hasVAStart: false 472 hasMustTailInVarArgFunc: false 473 savePoint: '' 474 restorePoint: '' 475fixedStack: 476stack: 477constants: 478body: | 479 bb.0.entry: 480 liveins: $x3, $x4 481 482 %1 = COPY $x4 483 %0 = COPY $x3 484 %2 = COPY %1.sub_32 485 %5 = LI 210 486 %8 = SLW killed %2, killed %5 487 ; CHECK: RLWINM killed %2, 18, 0, 13 488 ; CHECK-LATE: slwi 3, 4, 18 489 $x3 = EXTSW_32_64 %8 490 BLR8 implicit $lr8, implicit $rm, implicit $x3 491 492... 493--- 494name: testSLW_rec 495# CHECK-ALL: name: testSLW_rec 496alignment: 16 497exposesReturnsTwice: false 498legalized: false 499regBankSelected: false 500selected: false 501tracksRegLiveness: true 502registers: 503 - { id: 0, class: g8rc, preferred-register: '' } 504 - { id: 1, class: g8rc, preferred-register: '' } 505 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 506 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 507 - { id: 4, class: gprc, preferred-register: '' } 508 - { id: 5, class: crrc, preferred-register: '' } 509 - { id: 6, class: gprc, preferred-register: '' } 510 - { id: 7, class: g8rc, preferred-register: '' } 511 - { id: 8, class: g8rc, preferred-register: '' } 512 - { id: 9, class: g8rc, preferred-register: '' } 513liveins: 514 - { reg: '$x3', virtual-reg: '%0' } 515 - { reg: '$x4', virtual-reg: '%1' } 516frameInfo: 517 isFrameAddressTaken: false 518 isReturnAddressTaken: false 519 hasStackMap: false 520 hasPatchPoint: false 521 stackSize: 0 522 offsetAdjustment: 0 523 maxAlignment: 0 524 adjustsStack: false 525 hasCalls: false 526 stackProtector: '' 527 maxCallFrameSize: 4294967295 528 hasOpaqueSPAdjustment: false 529 hasVAStart: false 530 hasMustTailInVarArgFunc: false 531 savePoint: '' 532 restorePoint: '' 533fixedStack: 534stack: 535constants: 536body: | 537 bb.0.entry: 538 liveins: $x3, $x4 539 540 %1 = COPY $x4 541 %0 = COPY $x3 542 %2 = LI 35 543 %3 = COPY %0.sub_32 544 %4 = SLW_rec %3, %2, implicit-def $cr0 545 ; CHECK: ANDI_rec %3, 0, implicit-def $cr0 546 ; CHECK-LATE: andi. 5, 3, 0 547 %5 = COPY killed $cr0 548 %6 = ISEL %2, %3, %5.sub_eq 549 %8 = IMPLICIT_DEF 550 %7 = INSERT_SUBREG %8, killed %6, 1 551 %9 = RLDICL killed %7, 0, 32 552 $x3 = COPY %9 553 BLR8 implicit $lr8, implicit $rm, implicit $x3 554 555... 556--- 557name: testSRW 558# CHECK-ALL: name: testSRW 559alignment: 16 560exposesReturnsTwice: false 561legalized: false 562regBankSelected: false 563selected: false 564tracksRegLiveness: true 565registers: 566 - { id: 0, class: g8rc, preferred-register: '' } 567 - { id: 1, class: g8rc, preferred-register: '' } 568 - { id: 2, class: gprc, preferred-register: '' } 569 - { id: 3, class: g8rc, preferred-register: '' } 570 - { id: 4, class: g8rc, preferred-register: '' } 571 - { id: 5, class: gprc, preferred-register: '' } 572 - { id: 6, class: g8rc, preferred-register: '' } 573 - { id: 7, class: g8rc, preferred-register: '' } 574 - { id: 8, class: gprc, preferred-register: '' } 575liveins: 576 - { reg: '$x3', virtual-reg: '%0' } 577 - { reg: '$x4', virtual-reg: '%1' } 578frameInfo: 579 isFrameAddressTaken: false 580 isReturnAddressTaken: false 581 hasStackMap: false 582 hasPatchPoint: false 583 stackSize: 0 584 offsetAdjustment: 0 585 maxAlignment: 0 586 adjustsStack: false 587 hasCalls: false 588 stackProtector: '' 589 maxCallFrameSize: 4294967295 590 hasOpaqueSPAdjustment: false 591 hasVAStart: false 592 hasMustTailInVarArgFunc: false 593 savePoint: '' 594 restorePoint: '' 595fixedStack: 596stack: 597constants: 598body: | 599 bb.0.entry: 600 liveins: $x3, $x4 601 602 %1 = COPY $x4 603 %0 = COPY $x3 604 %2 = LI 48 605 %5 = COPY %0.sub_32 606 %8 = SRW killed %5, killed %2 607 ; CHECK: LI 0 608 ; CHECK-LATE: li 3, 0 609 $x3 = EXTSW_32_64 %8 610 BLR8 implicit $lr8, implicit $rm, implicit $x3 611 612... 613--- 614name: testSRW_rec 615# CHECK-ALL: name: testSRW_rec 616alignment: 16 617exposesReturnsTwice: false 618legalized: false 619regBankSelected: false 620selected: false 621tracksRegLiveness: true 622registers: 623 - { id: 0, class: g8rc, preferred-register: '' } 624 - { id: 1, class: g8rc, preferred-register: '' } 625 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 626 - { id: 3, class: gprc_and_gprc_nor0, preferred-register: '' } 627 - { id: 4, class: gprc, preferred-register: '' } 628 - { id: 5, class: crrc, preferred-register: '' } 629 - { id: 6, class: gprc, preferred-register: '' } 630 - { id: 7, class: g8rc, preferred-register: '' } 631 - { id: 8, class: g8rc, preferred-register: '' } 632 - { id: 9, class: g8rc, preferred-register: '' } 633liveins: 634 - { reg: '$x3', virtual-reg: '%0' } 635 - { reg: '$x4', virtual-reg: '%1' } 636frameInfo: 637 isFrameAddressTaken: false 638 isReturnAddressTaken: false 639 hasStackMap: false 640 hasPatchPoint: false 641 stackSize: 0 642 offsetAdjustment: 0 643 maxAlignment: 0 644 adjustsStack: false 645 hasCalls: false 646 stackProtector: '' 647 maxCallFrameSize: 4294967295 648 hasOpaqueSPAdjustment: false 649 hasVAStart: false 650 hasMustTailInVarArgFunc: false 651 savePoint: '' 652 restorePoint: '' 653fixedStack: 654stack: 655constants: 656body: | 657 bb.0.entry: 658 liveins: $x3, $x4 659 660 %1 = COPY $x4 661 %0 = COPY $x3 662 %2 = LI -7 663 %3 = COPY %0.sub_32 664 %4 = SRW_rec %3, %2, implicit-def $cr0 665 ; CHECK: ANDI_rec %3, 0, implicit-def $cr0 666 ; CHECK-LATE: andi. 5, 3, 0 667 %5 = COPY killed $cr0 668 %6 = ISEL %2, %3, %5.sub_eq 669 %8 = IMPLICIT_DEF 670 %7 = INSERT_SUBREG %8, killed %6, 1 671 %9 = RLDICL killed %7, 0, 32 672 $x3 = COPY %9 673 BLR8 implicit $lr8, implicit $rm, implicit $x3 674 675... 676--- 677name: testSRAW 678# CHECK-ALL: name: testSRAW 679alignment: 16 680exposesReturnsTwice: false 681legalized: false 682regBankSelected: false 683selected: false 684tracksRegLiveness: true 685registers: 686 - { id: 0, class: g8rc, preferred-register: '' } 687 - { id: 1, class: g8rc, preferred-register: '' } 688 - { id: 2, class: gprc, preferred-register: '' } 689 - { id: 3, class: gprc, preferred-register: '' } 690 - { id: 4, class: gprc, preferred-register: '' } 691 - { id: 5, class: g8rc, preferred-register: '' } 692liveins: 693 - { reg: '$x3', virtual-reg: '%0' } 694 - { reg: '$x4', virtual-reg: '%1' } 695frameInfo: 696 isFrameAddressTaken: false 697 isReturnAddressTaken: false 698 hasStackMap: false 699 hasPatchPoint: false 700 stackSize: 0 701 offsetAdjustment: 0 702 maxAlignment: 0 703 adjustsStack: false 704 hasCalls: false 705 stackProtector: '' 706 maxCallFrameSize: 4294967295 707 hasOpaqueSPAdjustment: false 708 hasVAStart: false 709 hasMustTailInVarArgFunc: false 710 savePoint: '' 711 restorePoint: '' 712fixedStack: 713stack: 714constants: 715body: | 716 bb.0.entry: 717 liveins: $x3, $x4 718 719 %1 = COPY $x4 720 %0 = COPY $x3 721 %2 = LI 48 722 %3 = COPY %0.sub_32 723 %4 = SRAW killed %3, killed %2, implicit-def dead $carry 724 ; CHECK: LI 48 725 ; CHECK: SRAW killed %3, killed %2, implicit-def dead $carry 726 ; CHECK-LATE: sraw 3, 3, 4 727 %5 = EXTSW_32_64 killed %4 728 $x3 = COPY %5 729 BLR8 implicit $lr8, implicit $rm, implicit $x3 730 731... 732--- 733name: testSRAW_rec 734# CHECK-ALL: name: testSRAW_rec 735alignment: 16 736exposesReturnsTwice: false 737legalized: false 738regBankSelected: false 739selected: false 740tracksRegLiveness: true 741registers: 742 - { id: 0, class: g8rc, preferred-register: '' } 743 - { id: 1, class: g8rc, preferred-register: '' } 744 - { id: 2, class: gprc_and_gprc_nor0, preferred-register: '' } 745 - { id: 3, class: gprc, preferred-register: '' } 746 - { id: 4, class: gprc_and_gprc_nor0, preferred-register: '' } 747 - { id: 5, class: crrc, preferred-register: '' } 748 - { id: 6, class: gprc, preferred-register: '' } 749 - { id: 7, class: g8rc, preferred-register: '' } 750liveins: 751 - { reg: '$x3', virtual-reg: '%0' } 752 - { reg: '$x4', virtual-reg: '%1' } 753frameInfo: 754 isFrameAddressTaken: false 755 isReturnAddressTaken: false 756 hasStackMap: false 757 hasPatchPoint: false 758 stackSize: 0 759 offsetAdjustment: 0 760 maxAlignment: 0 761 adjustsStack: false 762 hasCalls: false 763 stackProtector: '' 764 maxCallFrameSize: 4294967295 765 hasOpaqueSPAdjustment: false 766 hasVAStart: false 767 hasMustTailInVarArgFunc: false 768 savePoint: '' 769 restorePoint: '' 770fixedStack: 771stack: 772constants: 773body: | 774 bb.0.entry: 775 liveins: $x3, $x4 776 777 %1 = COPY $x4 778 %0 = COPY $x3 779 %2 = LI 80 780 %3 = COPY %0.sub_32 781 %4 = SRAW_rec killed %3, %2, implicit-def dead $carry, implicit-def $cr0 782 ; CHECK: SRAW_rec killed %3, %2, implicit-def dead $carry, implicit-def $cr0 783 ; CHECK-LATE: sraw. 3, 3, 4 784 %5 = COPY killed $cr0 785 %6 = ISEL %2, %4, %5.sub_eq 786 %7 = EXTSW_32_64 killed %6 787 $x3 = COPY %7 788 BLR8 implicit $lr8, implicit $rm, implicit $x3 789 790... 791--- 792name: testRLDCL 793# CHECK-ALL: name: testRLDCL 794alignment: 16 795exposesReturnsTwice: false 796legalized: false 797regBankSelected: false 798selected: false 799tracksRegLiveness: true 800registers: 801 - { id: 0, class: g8rc, preferred-register: '' } 802 - { id: 1, class: g8rc, preferred-register: '' } 803 - { id: 2, class: gprc, preferred-register: '' } 804 - { id: 3, class: gprc, preferred-register: '' } 805 - { id: 4, class: g8rc, preferred-register: '' } 806liveins: 807 - { reg: '$x3', virtual-reg: '%0' } 808 - { reg: '$x4', virtual-reg: '%1' } 809frameInfo: 810 isFrameAddressTaken: false 811 isReturnAddressTaken: false 812 hasStackMap: false 813 hasPatchPoint: false 814 stackSize: 0 815 offsetAdjustment: 0 816 maxAlignment: 0 817 adjustsStack: false 818 hasCalls: false 819 stackProtector: '' 820 maxCallFrameSize: 4294967295 821 hasOpaqueSPAdjustment: false 822 hasVAStart: false 823 hasMustTailInVarArgFunc: false 824 savePoint: '' 825 restorePoint: '' 826fixedStack: 827stack: 828constants: 829body: | 830 bb.0.entry: 831 liveins: $x3, $x4 832 833 %1 = COPY $x4 834 %0 = COPY $x3 835 %2 = COPY %1.sub_32 836 %3 = LI 140 837 %4 = RLDCL %0, killed %3, 0 838 ; CHECK: RLDICL %0, 12, 0 839 ; CHECK-LATE: rotldi 3, 3, 12 840 $x3 = COPY %4 841 BLR8 implicit $lr8, implicit $rm, implicit $x3 842 843... 844--- 845name: testRLDCL_rec 846# CHECK-ALL: name: testRLDCL_rec 847alignment: 16 848exposesReturnsTwice: false 849legalized: false 850regBankSelected: false 851selected: false 852tracksRegLiveness: true 853registers: 854 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 855 - { id: 1, class: g8rc, preferred-register: '' } 856 - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' } 857 - { id: 3, class: gprc, preferred-register: '' } 858 - { id: 4, class: g8rc, preferred-register: '' } 859 - { id: 5, class: crrc, preferred-register: '' } 860 - { id: 6, class: g8rc, preferred-register: '' } 861liveins: 862 - { reg: '$x3', virtual-reg: '%0' } 863 - { reg: '$x4', virtual-reg: '%1' } 864frameInfo: 865 isFrameAddressTaken: false 866 isReturnAddressTaken: false 867 hasStackMap: false 868 hasPatchPoint: false 869 stackSize: 0 870 offsetAdjustment: 0 871 maxAlignment: 0 872 adjustsStack: false 873 hasCalls: false 874 stackProtector: '' 875 maxCallFrameSize: 4294967295 876 hasOpaqueSPAdjustment: false 877 hasVAStart: false 878 hasMustTailInVarArgFunc: false 879 savePoint: '' 880 restorePoint: '' 881fixedStack: 882stack: 883constants: 884body: | 885 bb.0.entry: 886 liveins: $x3, $x4 887 888 %1 = COPY $x4 889 %0 = COPY $x3 890 %2 = RLDICL %1, 0, 58 891 %3 = LI -37 892 %4 = RLDCL_rec %0, killed %3, 0, implicit-def $cr0 893 ; CHECK: RLDICL_rec %0, 27, 0, implicit-def $cr0 894 ; CHECK-LATE: rotldi. 5, 3, 27 895 %5 = COPY killed $cr0 896 %6 = ISEL8 %2, %0, %5.sub_eq 897 $x3 = COPY %6 898 BLR8 implicit $lr8, implicit $rm, implicit $x3 899 900... 901--- 902name: testRLDCR 903# CHECK-ALL: name: testRLDCR 904alignment: 16 905exposesReturnsTwice: false 906legalized: false 907regBankSelected: false 908selected: false 909tracksRegLiveness: true 910registers: 911 - { id: 0, class: g8rc, preferred-register: '' } 912 - { id: 1, class: g8rc, preferred-register: '' } 913 - { id: 2, class: gprc, preferred-register: '' } 914 - { id: 3, class: gprc, preferred-register: '' } 915 - { id: 4, class: g8rc, preferred-register: '' } 916liveins: 917 - { reg: '$x3', virtual-reg: '%0' } 918 - { reg: '$x4', virtual-reg: '%1' } 919frameInfo: 920 isFrameAddressTaken: false 921 isReturnAddressTaken: false 922 hasStackMap: false 923 hasPatchPoint: false 924 stackSize: 0 925 offsetAdjustment: 0 926 maxAlignment: 0 927 adjustsStack: false 928 hasCalls: false 929 stackProtector: '' 930 maxCallFrameSize: 4294967295 931 hasOpaqueSPAdjustment: false 932 hasVAStart: false 933 hasMustTailInVarArgFunc: false 934 savePoint: '' 935 restorePoint: '' 936fixedStack: 937stack: 938constants: 939body: | 940 bb.0.entry: 941 liveins: $x3, $x4 942 943 %1 = COPY $x4 944 %0 = COPY $x3 945 %2 = COPY %1.sub_32 946 %3 = LI 300 947 %4 = RLDCR %0, killed %3, 0 948 ; CHECK: RLDICR %0, 44, 0 949 ; CHECK-LATE: rldicr 3, 3, 44, 0 950 $x3 = COPY %4 951 BLR8 implicit $lr8, implicit $rm, implicit $x3 952 953... 954--- 955name: testRLDCR_rec 956# CHECK-ALL: name: testRLDCR_rec 957alignment: 16 958exposesReturnsTwice: false 959legalized: false 960regBankSelected: false 961selected: false 962tracksRegLiveness: true 963registers: 964 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 965 - { id: 1, class: g8rc, preferred-register: '' } 966 - { id: 2, class: g8rc_and_g8rc_nox0, preferred-register: '' } 967 - { id: 3, class: gprc, preferred-register: '' } 968 - { id: 4, class: g8rc, preferred-register: '' } 969 - { id: 5, class: crrc, preferred-register: '' } 970 - { id: 6, class: g8rc, preferred-register: '' } 971liveins: 972 - { reg: '$x3', virtual-reg: '%0' } 973 - { reg: '$x4', virtual-reg: '%1' } 974frameInfo: 975 isFrameAddressTaken: false 976 isReturnAddressTaken: false 977 hasStackMap: false 978 hasPatchPoint: false 979 stackSize: 0 980 offsetAdjustment: 0 981 maxAlignment: 0 982 adjustsStack: false 983 hasCalls: false 984 stackProtector: '' 985 maxCallFrameSize: 4294967295 986 hasOpaqueSPAdjustment: false 987 hasVAStart: false 988 hasMustTailInVarArgFunc: false 989 savePoint: '' 990 restorePoint: '' 991fixedStack: 992stack: 993constants: 994body: | 995 bb.0.entry: 996 liveins: $x3, $x4 997 998 %1 = COPY $x4 999 %0 = COPY $x3 1000 %2 = RLDICL %1, 0, 58 1001 %3 = LI -18 1002 %4 = RLDCR_rec %0, killed %3, 0, implicit-def $cr0 1003 ; CHECK: RLDICR_rec %0, 46, 0, implicit-def $cr0 1004 ; CHECK-LATE: rldicr. 5, 3, 46, 0 1005 %5 = COPY killed $cr0 1006 %6 = ISEL8 %2, %0, %5.sub_eq 1007 $x3 = COPY %6 1008 BLR8 implicit $lr8, implicit $rm, implicit $x3 1009 1010... 1011--- 1012name: testSLD 1013# CHECK-ALL: name: testSLD 1014alignment: 16 1015exposesReturnsTwice: false 1016legalized: false 1017regBankSelected: false 1018selected: false 1019tracksRegLiveness: true 1020registers: 1021 - { id: 0, class: g8rc, preferred-register: '' } 1022 - { id: 1, class: g8rc, preferred-register: '' } 1023 - { id: 2, class: gprc, preferred-register: '' } 1024 - { id: 3, class: g8rc, preferred-register: '' } 1025liveins: 1026 - { reg: '$x3', virtual-reg: '%0' } 1027 - { reg: '$x4', virtual-reg: '%1' } 1028frameInfo: 1029 isFrameAddressTaken: false 1030 isReturnAddressTaken: false 1031 hasStackMap: false 1032 hasPatchPoint: false 1033 stackSize: 0 1034 offsetAdjustment: 0 1035 maxAlignment: 0 1036 adjustsStack: false 1037 hasCalls: false 1038 stackProtector: '' 1039 maxCallFrameSize: 4294967295 1040 hasOpaqueSPAdjustment: false 1041 hasVAStart: false 1042 hasMustTailInVarArgFunc: false 1043 savePoint: '' 1044 restorePoint: '' 1045fixedStack: 1046stack: 1047constants: 1048body: | 1049 bb.0.entry: 1050 liveins: $x3, $x4 1051 1052 %1 = COPY $x4 1053 %0 = COPY $x3 1054 %2 = LI -13 1055 %3 = SLD %0, killed %2 1056 ; CHECK: LI8 0 1057 ; CHECK-LATE: li 3, 0 1058 $x3 = COPY %3 1059 BLR8 implicit $lr8, implicit $rm, implicit $x3 1060 1061... 1062--- 1063name: testSLD_rec 1064# CHECK-ALL: name: testSLD_rec 1065alignment: 16 1066exposesReturnsTwice: false 1067legalized: false 1068regBankSelected: false 1069selected: false 1070tracksRegLiveness: true 1071registers: 1072 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1073 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1074 - { id: 2, class: gprc, preferred-register: '' } 1075 - { id: 3, class: g8rc, preferred-register: '' } 1076 - { id: 4, class: crrc, preferred-register: '' } 1077 - { id: 5, class: g8rc, preferred-register: '' } 1078liveins: 1079 - { reg: '$x3', virtual-reg: '%0' } 1080 - { reg: '$x4', virtual-reg: '%1' } 1081frameInfo: 1082 isFrameAddressTaken: false 1083 isReturnAddressTaken: false 1084 hasStackMap: false 1085 hasPatchPoint: false 1086 stackSize: 0 1087 offsetAdjustment: 0 1088 maxAlignment: 0 1089 adjustsStack: false 1090 hasCalls: false 1091 stackProtector: '' 1092 maxCallFrameSize: 4294967295 1093 hasOpaqueSPAdjustment: false 1094 hasVAStart: false 1095 hasMustTailInVarArgFunc: false 1096 savePoint: '' 1097 restorePoint: '' 1098fixedStack: 1099stack: 1100constants: 1101body: | 1102 bb.0.entry: 1103 liveins: $x3, $x4 1104 1105 %1 = COPY $x4 1106 %0 = COPY $x3 1107 %2 = LI 88 1108 %3 = SLD_rec %0, killed %2, implicit-def $cr0 1109 ; CHECK: ANDI8_rec %0, 0, implicit-def $cr0 1110 ; CHECK-LATE: andi. 5, 3, 0 1111 %4 = COPY killed $cr0 1112 %5 = ISEL8 %1, %0, %4.sub_eq 1113 $x3 = COPY %5 1114 BLR8 implicit $lr8, implicit $rm, implicit $x3 1115 1116... 1117--- 1118name: testSRD 1119# CHECK-ALL: name: testSRD 1120alignment: 16 1121exposesReturnsTwice: false 1122legalized: false 1123regBankSelected: false 1124selected: false 1125tracksRegLiveness: true 1126registers: 1127 - { id: 0, class: g8rc, preferred-register: '' } 1128 - { id: 1, class: g8rc, preferred-register: '' } 1129 - { id: 2, class: gprc, preferred-register: '' } 1130 - { id: 3, class: g8rc, preferred-register: '' } 1131liveins: 1132 - { reg: '$x3', virtual-reg: '%0' } 1133 - { reg: '$x4', virtual-reg: '%1' } 1134frameInfo: 1135 isFrameAddressTaken: false 1136 isReturnAddressTaken: false 1137 hasStackMap: false 1138 hasPatchPoint: false 1139 stackSize: 0 1140 offsetAdjustment: 0 1141 maxAlignment: 0 1142 adjustsStack: false 1143 hasCalls: false 1144 stackProtector: '' 1145 maxCallFrameSize: 4294967295 1146 hasOpaqueSPAdjustment: false 1147 hasVAStart: false 1148 hasMustTailInVarArgFunc: false 1149 savePoint: '' 1150 restorePoint: '' 1151fixedStack: 1152stack: 1153constants: 1154body: | 1155 bb.0.entry: 1156 liveins: $x3, $x4 1157 1158 %1 = COPY $x4 1159 %0 = COPY $x3 1160 %2 = LI 400 1161 %3 = SRD %0, killed %2 1162 ; CHECK: RLDICL %0, 48, 16 1163 ; CHECK-LATE: rldicl 3, 3, 48, 16 1164 $x3 = COPY %3 1165 BLR8 implicit $lr8, implicit $rm, implicit $x3 1166 1167... 1168--- 1169name: testSRD_rec 1170# CHECK-ALL: name: testSRD_rec 1171alignment: 16 1172exposesReturnsTwice: false 1173legalized: false 1174regBankSelected: false 1175selected: false 1176tracksRegLiveness: true 1177registers: 1178 - { id: 0, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1179 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1180 - { id: 2, class: gprc, preferred-register: '' } 1181 - { id: 3, class: g8rc, preferred-register: '' } 1182 - { id: 4, class: crrc, preferred-register: '' } 1183 - { id: 5, class: g8rc, preferred-register: '' } 1184liveins: 1185 - { reg: '$x3', virtual-reg: '%0' } 1186 - { reg: '$x4', virtual-reg: '%1' } 1187frameInfo: 1188 isFrameAddressTaken: false 1189 isReturnAddressTaken: false 1190 hasStackMap: false 1191 hasPatchPoint: false 1192 stackSize: 0 1193 offsetAdjustment: 0 1194 maxAlignment: 0 1195 adjustsStack: false 1196 hasCalls: false 1197 stackProtector: '' 1198 maxCallFrameSize: 4294967295 1199 hasOpaqueSPAdjustment: false 1200 hasVAStart: false 1201 hasMustTailInVarArgFunc: false 1202 savePoint: '' 1203 restorePoint: '' 1204fixedStack: 1205stack: 1206constants: 1207body: | 1208 bb.0.entry: 1209 liveins: $x3, $x4 1210 1211 %1 = COPY $x4 1212 %0 = COPY $x3 1213 %2 = LI 64 1214 %3 = SRD_rec %0, killed %2, implicit-def $cr0 1215 ; CHECK: ANDI8_rec %0, 0, implicit-def $cr0 1216 ; CHECK-LATE: andi. 5, 3, 0 1217 %4 = COPY killed $cr0 1218 %5 = ISEL8 %1, %0, %4.sub_eq 1219 $x3 = COPY %5 1220 BLR8 implicit $lr8, implicit $rm, implicit $x3 1221 1222... 1223--- 1224name: testSRAD 1225# CHECK-ALL: name: testSRAD 1226alignment: 16 1227exposesReturnsTwice: false 1228legalized: false 1229regBankSelected: false 1230selected: false 1231tracksRegLiveness: true 1232registers: 1233 - { id: 0, class: g8rc, preferred-register: '' } 1234 - { id: 1, class: g8rc, preferred-register: '' } 1235 - { id: 2, class: gprc, preferred-register: '' } 1236 - { id: 3, class: g8rc, preferred-register: '' } 1237liveins: 1238 - { reg: '$x3', virtual-reg: '%0' } 1239 - { reg: '$x4', virtual-reg: '%1' } 1240frameInfo: 1241 isFrameAddressTaken: false 1242 isReturnAddressTaken: false 1243 hasStackMap: false 1244 hasPatchPoint: false 1245 stackSize: 0 1246 offsetAdjustment: 0 1247 maxAlignment: 0 1248 adjustsStack: false 1249 hasCalls: false 1250 stackProtector: '' 1251 maxCallFrameSize: 4294967295 1252 hasOpaqueSPAdjustment: false 1253 hasVAStart: false 1254 hasMustTailInVarArgFunc: false 1255 savePoint: '' 1256 restorePoint: '' 1257fixedStack: 1258stack: 1259constants: 1260body: | 1261 bb.0.entry: 1262 liveins: $x3, $x4 1263 1264 %1 = COPY $x4 1265 %0 = COPY $x3 1266 %2 = LI -44 1267 %3 = SRAD %0, killed %2, implicit-def dead $carry 1268 ; CHECK: SRAD %0, killed %2, implicit-def dead $carry 1269 ; CHECK-LATE: srad 3, 3, 4 1270 $x3 = COPY %3 1271 BLR8 implicit $lr8, implicit $rm, implicit $x3 1272 1273... 1274--- 1275name: testSRAD_rec 1276# CHECK-ALL: name: testSRAD_rec 1277alignment: 16 1278exposesReturnsTwice: false 1279legalized: false 1280regBankSelected: false 1281selected: false 1282tracksRegLiveness: true 1283registers: 1284 - { id: 0, class: g8rc, preferred-register: '' } 1285 - { id: 1, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1286 - { id: 2, class: gprc, preferred-register: '' } 1287 - { id: 3, class: g8rc_and_g8rc_nox0, preferred-register: '' } 1288 - { id: 4, class: crrc, preferred-register: '' } 1289 - { id: 5, class: g8rc, preferred-register: '' } 1290liveins: 1291 - { reg: '$x3', virtual-reg: '%0' } 1292 - { reg: '$x4', virtual-reg: '%1' } 1293frameInfo: 1294 isFrameAddressTaken: false 1295 isReturnAddressTaken: false 1296 hasStackMap: false 1297 hasPatchPoint: false 1298 stackSize: 0 1299 offsetAdjustment: 0 1300 maxAlignment: 0 1301 adjustsStack: false 1302 hasCalls: false 1303 stackProtector: '' 1304 maxCallFrameSize: 4294967295 1305 hasOpaqueSPAdjustment: false 1306 hasVAStart: false 1307 hasMustTailInVarArgFunc: false 1308 savePoint: '' 1309 restorePoint: '' 1310fixedStack: 1311stack: 1312constants: 1313body: | 1314 bb.0.entry: 1315 liveins: $x3, $x4 1316 1317 %1 = COPY $x4 1318 %0 = COPY $x3 1319 %2 = LI 68 1320 %3 = SRAD_rec %0, killed %2, implicit-def dead $carry, implicit-def $cr0 1321 ; CHECK: SRAD_rec %0, killed %2, implicit-def dead $carry, implicit-def $cr0 1322 ; CHECK-LATE: srad. 3, 3, 5 1323 %4 = COPY killed $cr0 1324 %5 = ISEL8 %1, %3, %4.sub_eq 1325 $x3 = COPY %5 1326 BLR8 implicit $lr8, implicit $rm, implicit $x3 1327 1328... 1329--- 1330