brintos

brintos / llvm-project-archived public Read only

0
0
Text · 22.4 KiB · 2ffca9c Raw
600 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple powerpc64le-unknown-linux-gnu -o - %s -verify-machineinstrs \3# RUN:   -run-pass=machine-sink | FileCheck %s4 5# RUN: llc -mtriple powerpc64le-unknown-linux-gnu -o - %s -verify-machineinstrs \6# RUN:   -passes=machine-sink | FileCheck %s7--- |8  ; ModuleID = 'sink-down-more-instructions-1.ll'9  source_filename = "sink-down-more-instructions-1.c"10  target datalayout = "e-m:e-i64:64-n32:64"11  target triple = "powerpc64le-unknown-linux-gnu"12 13  ; Function Attrs: nofree norecurse nounwind14  define dso_local signext i32 @foo(i32 signext %0, i32 signext %1, ptr nocapture readonly %2, ptr nocapture %3, i32 signext %4) local_unnamed_addr #0 {15    %6 = icmp sgt i32 %4, 016    br i1 %6, label %7, label %3717 18  7:                                                ; preds = %519    %8 = zext i32 %4 to i6420    %9 = icmp eq i32 %4, 121    br i1 %9, label %17, label %1022 23  10:                                               ; preds = %724    %11 = and i64 %8, 429496729425    %scevgep20 = getelementptr i32, ptr %2, i64 -226    %scevgep2021 = bitcast ptr %scevgep20 to ptr27    %scevgep22 = getelementptr i32, ptr %3, i64 -228    %scevgep2223 = bitcast ptr %scevgep22 to ptr29    %12 = add nsw i64 %11, -230    %13 = lshr i64 %12, 131    %14 = add nuw i64 %13, 132    call void @llvm.set.loop.iterations.i64(i64 %14)33    br label %3834 35  15:                                               ; preds = %7436    %16 = add nuw i32 %tmp18, 10237    br label %1738 39  17:                                               ; preds = %15, %740    %18 = phi i64 [ 0, %7 ], [ %78, %15 ]41    %19 = phi i32 [ 100, %7 ], [ %16, %15 ]42    %20 = phi i32 [ 0, %7 ], [ %66, %15 ]43    %21 = and i64 %8, 144    %22 = icmp eq i64 %21, 045    br i1 %22, label %37, label %2346 47  23:                                               ; preds = %1748    %24 = getelementptr inbounds i32, ptr %2, i64 %1849    %25 = load i32, ptr %24, align 4, !tbaa !250    %26 = add nsw i32 %25, %2051    switch i32 %0, label %30 [52      i32 1, label %2753      i32 3, label %3354    ]55 56  27:                                               ; preds = %2357    %28 = trunc i64 %18 to i3258    %29 = shl i32 %28, 159    br label %3360 61  30:                                               ; preds = %2362    %31 = trunc i64 %18 to i3263    %32 = urem i32 %31, 3064    br label %3365 66  33:                                               ; preds = %30, %27, %2367    %34 = phi i32 [ %32, %30 ], [ %29, %27 ], [ %19, %23 ]68    %35 = add nsw i32 %34, %2669    %36 = getelementptr inbounds i32, ptr %3, i64 %1870    store i32 %35, ptr %36, align 4, !tbaa !271    br label %3772 73  37:                                               ; preds = %33, %17, %574    ret i32 undef75 76  38:                                               ; preds = %74, %1077    %39 = phi i64 [ 0, %10 ], [ %78, %74 ]78    %40 = phi i32 [ 0, %10 ], [ %66, %74 ]79    %41 = phi ptr [ %scevgep2021, %10 ], [ %45, %74 ]80    %42 = phi ptr [ %scevgep2223, %10 ], [ %43, %74 ]81    %43 = getelementptr i8, ptr %42, i64 882    %44 = bitcast ptr %43 to ptr83    %45 = getelementptr i8, ptr %41, i64 884    %46 = bitcast ptr %45 to ptr85    %lsr19 = trunc i64 %39 to i3286    %47 = udiv i32 %lsr19, 3087    %48 = mul nsw i32 %47, -3088    %49 = zext i32 %48 to i6489    %50 = add nuw nsw i64 %49, 190    %51 = load i32, ptr %46, align 4, !tbaa !291    %52 = add nsw i32 %51, %4092    switch i32 %0, label %58 [93      i32 1, label %5394      i32 3, label %5695    ]96 97  53:                                               ; preds = %3898    %54 = trunc i64 %39 to i3299    %55 = shl i32 %54, 1100    br label %60101 102  56:                                               ; preds = %38103    %57 = add nuw nsw i32 %lsr19, 100104    br label %60105 106  58:                                               ; preds = %38107    %59 = add i64 %39, %49108    %tmp15 = trunc i64 %59 to i32109    br label %60110 111  60:                                               ; preds = %58, %56, %53112    %61 = phi i32 [ %tmp15, %58 ], [ %57, %56 ], [ %55, %53 ]113    %62 = add nsw i32 %61, %52114    store i32 %62, ptr %44, align 4, !tbaa !2115    %63 = or i64 %39, 1116    %64 = getelementptr i8, ptr %45, i64 4117    %uglygep1112.cast = bitcast ptr %64 to ptr118    %65 = load i32, ptr %uglygep1112.cast, align 4, !tbaa !2119    %66 = add nsw i32 %65, %52120    switch i32 %0, label %72 [121      i32 1, label %69122      i32 3, label %67123    ]124 125  67:                                               ; preds = %60126    %68 = add nuw nsw i32 %lsr19, 101127    br label %74128 129  69:                                               ; preds = %60130    %70 = trunc i64 %63 to i32131    %71 = shl i32 %70, 1132    br label %74133 134  72:                                               ; preds = %60135    %73 = add i64 %39, %50136    %tmp = trunc i64 %73 to i32137    br label %74138 139  74:                                               ; preds = %72, %69, %67140    %75 = phi i32 [ %tmp, %72 ], [ %68, %67 ], [ %71, %69 ]141    %76 = add nsw i32 %75, %66142    %77 = getelementptr i8, ptr %43, i64 4143    %uglygep78.cast = bitcast ptr %77 to ptr144    store i32 %76, ptr %uglygep78.cast, align 4, !tbaa !2145    %78 = add nuw nsw i64 %39, 2146    %79 = add i64 %78, -2147    %tmp18 = trunc i64 %79 to i32148    %80 = call i1 @llvm.loop.decrement.i64(i64 1)149    br i1 %80, label %38, label %15150  }151 152  ; Function Attrs: noduplicate nounwind153  declare void @llvm.set.loop.iterations.i64(i64) #1154 155  ; Function Attrs: noduplicate nounwind156  declare i1 @llvm.loop.decrement.i64(i64) #1157 158  attributes #0 = { nofree norecurse nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="ppc64le" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+htm,+power8-vector,+vsx,-power9-vector,-spe" "use-soft-float"="false" }159  attributes #1 = { noduplicate nounwind }160 161  !llvm.module.flags = !{!0}162  !llvm.ident = !{!1}163 164  !0 = !{i32 1, !"wchar_size", i32 4}165  !1 = !{!"clang version 12.0.0"}166  !2 = !{!3, !3, i64 0}167  !3 = !{!"int", !4, i64 0}168  !4 = !{!"omnipotent char", !5, i64 0}169  !5 = !{!"Simple C/C++ TBAA"}170 171...172---173name:            foo174alignment:       16175tracksRegLiveness: true176registers:177  - { id: 0, class: g8rc }178  - { id: 1, class: g8rc }179  - { id: 2, class: g8rc }180  - { id: 3, class: gprc }181  - { id: 4, class: g8rc }182  - { id: 5, class: gprc }183  - { id: 6, class: gprc }184  - { id: 7, class: gprc }185  - { id: 8, class: gprc_and_gprc_nor0 }186  - { id: 9, class: gprc }187  - { id: 10, class: gprc }188  - { id: 11, class: g8rc_and_g8rc_nox0 }189  - { id: 12, class: gprc }190  - { id: 13, class: g8rc_and_g8rc_nox0 }191  - { id: 14, class: g8rc_and_g8rc_nox0 }192  - { id: 15, class: g8rc_and_g8rc_nox0 }193  - { id: 16, class: g8rc_and_g8rc_nox0 }194  - { id: 17, class: g8rc_and_g8rc_nox0 }195  - { id: 18, class: gprc_and_gprc_nor0 }196  - { id: 19, class: g8rc }197  - { id: 20, class: g8rc }198  - { id: 21, class: gprc }199  - { id: 22, class: gprc_and_gprc_nor0 }200  - { id: 23, class: gprc }201  - { id: 24, class: gprc }202  - { id: 25, class: gprc }203  - { id: 26, class: g8rc }204  - { id: 27, class: gprc }205  - { id: 28, class: gprc }206  - { id: 29, class: gprc }207  - { id: 30, class: gprc }208  - { id: 31, class: gprc }209  - { id: 32, class: g8rc }210  - { id: 33, class: gprc_and_gprc_nor0 }211  - { id: 34, class: g8rc }212  - { id: 35, class: g8rc }213  - { id: 36, class: g8rc_and_g8rc_nox0 }214  - { id: 37, class: g8rc_and_g8rc_nox0 }215  - { id: 38, class: g8rc }216  - { id: 39, class: gprc }217  - { id: 40, class: gprc }218  - { id: 41, class: crrc }219  - { id: 42, class: g8rc }220  - { id: 43, class: gprc }221  - { id: 44, class: gprc }222  - { id: 45, class: g8rc }223  - { id: 46, class: g8rc }224  - { id: 47, class: crrc }225  - { id: 48, class: g8rc }226  - { id: 49, class: gprc }227  - { id: 50, class: g8rc_and_g8rc_nox0 }228  - { id: 51, class: g8rc }229  - { id: 52, class: g8rc_and_g8rc_nox0 }230  - { id: 53, class: g8rc }231  - { id: 54, class: gprc }232  - { id: 55, class: g8rc_and_g8rc_nox0 }233  - { id: 56, class: gprc }234  - { id: 57, class: gprc }235  - { id: 58, class: gprc }236  - { id: 59, class: gprc }237  - { id: 60, class: gprc }238  - { id: 61, class: g8rc }239  - { id: 62, class: g8rc }240  - { id: 63, class: crrc }241  - { id: 64, class: crrc }242  - { id: 65, class: gprc }243  - { id: 66, class: g8rc }244  - { id: 67, class: gprc }245  - { id: 68, class: gprc }246  - { id: 69, class: crrc }247  - { id: 70, class: crrc }248  - { id: 71, class: gprc }249  - { id: 72, class: g8rc }250  - { id: 73, class: gprc }251  - { id: 74, class: gprc_and_gprc_nor0 }252  - { id: 75, class: crbitrc }253  - { id: 76, class: g8rc }254  - { id: 77, class: gprc }255  - { id: 78, class: crrc }256  - { id: 79, class: crrc }257  - { id: 80, class: gprc }258  - { id: 81, class: gprc }259  - { id: 82, class: gprc }260  - { id: 83, class: gprc }261  - { id: 84, class: gprc }262  - { id: 85, class: gprc }263  - { id: 86, class: gprc }264  - { id: 87, class: gprc }265  - { id: 88, class: g8rc }266  - { id: 89, class: g8rc }267  - { id: 90, class: g8rc }268  - { id: 91, class: gprc }269  - { id: 92, class: gprc_nor0 }270  - { id: 93, class: gprc }271  - { id: 94, class: gprc_nor0 }272  - { id: 95, class: crrc }273liveins:274  - { reg: '$x3', virtual-reg: '%34' }275  - { reg: '$x5', virtual-reg: '%36' }276  - { reg: '$x6', virtual-reg: '%37' }277  - { reg: '$x7', virtual-reg: '%38' }278frameInfo:279  maxAlignment:    1280machineFunctionInfo: {}281body:             |282  ; CHECK-LABEL: name: foo283  ; CHECK: bb.0 (%ir-block.5):284  ; CHECK:   successors: %bb.1(0x50000000), %bb.8(0x30000000)285  ; CHECK:   liveins: $x3, $x5, $x6, $x7286  ; CHECK:   [[COPY:%[0-9]+]]:g8rc = COPY $x7287  ; CHECK:   [[COPY1:%[0-9]+]]:g8rc_and_g8rc_nox0 = COPY $x6288  ; CHECK:   [[COPY2:%[0-9]+]]:g8rc_and_g8rc_nox0 = COPY $x5289  ; CHECK:   [[COPY3:%[0-9]+]]:g8rc = COPY $x3290  ; CHECK:   [[COPY4:%[0-9]+]]:gprc = COPY [[COPY]].sub_32291  ; CHECK:   [[CMPWI:%[0-9]+]]:crrc = CMPWI [[COPY4]], 1292  ; CHECK:   BCC 12, killed [[CMPWI]], %bb.8293  ; CHECK:   B %bb.1294  ; CHECK: bb.1 (%ir-block.7):295  ; CHECK:   successors: %bb.18(0x40000000), %bb.2(0x40000000)296  ; CHECK:   [[COPY5:%[0-9]+]]:gprc = COPY [[COPY3]].sub_32297  ; CHECK:   [[DEF:%[0-9]+]]:g8rc = IMPLICIT_DEF298  ; CHECK:   [[INSERT_SUBREG:%[0-9]+]]:g8rc = INSERT_SUBREG [[DEF]], [[COPY4]], %subreg.sub_32299  ; CHECK:   [[RLDICL:%[0-9]+]]:g8rc = RLDICL killed [[INSERT_SUBREG]], 0, 32300  ; CHECK:   [[CMPLWI:%[0-9]+]]:crrc = CMPLWI [[COPY4]], 1301  ; CHECK:   [[CMPLWI1:%[0-9]+]]:crrc = CMPLWI [[COPY5]], 3302  ; CHECK:   BCC 68, killed [[CMPLWI]], %bb.2303  ; CHECK: bb.18:304  ; CHECK:   successors: %bb.4(0x80000000)305  ; CHECK:   [[LI:%[0-9]+]]:gprc = LI 0306  ; CHECK:   [[LI1:%[0-9]+]]:gprc = LI 100307  ; CHECK:   [[LI8_:%[0-9]+]]:g8rc = LI8 0308  ; CHECK:   B %bb.4309  ; CHECK: bb.2 (%ir-block.10):310  ; CHECK:   successors: %bb.9(0x80000000)311  ; CHECK:   [[RLWINM8_:%[0-9]+]]:g8rc_and_g8rc_nox0 = RLWINM8 [[RLDICL]], 0, 0, 30312  ; CHECK:   [[ADDI8_:%[0-9]+]]:g8rc = ADDI8 [[COPY2]], -8313  ; CHECK:   [[ADDI8_1:%[0-9]+]]:g8rc = ADDI8 [[COPY1]], -8314  ; CHECK:   [[ADDI8_2:%[0-9]+]]:g8rc = nsw ADDI8 killed [[RLWINM8_]], -2315  ; CHECK:   [[RLDICL1:%[0-9]+]]:g8rc_and_g8rc_nox0 = RLDICL [[ADDI8_2]], 63, 1316  ; CHECK:   [[ADDI8_3:%[0-9]+]]:g8rc = nuw ADDI8 killed [[RLDICL1]], 1317  ; CHECK:   MTCTR8loop killed [[ADDI8_3]], implicit-def dead $ctr8318  ; CHECK:   [[LI2:%[0-9]+]]:gprc = LI 0319  ; CHECK:   [[LI8_1:%[0-9]+]]:g8rc = LI8 0320  ; CHECK:   [[LIS:%[0-9]+]]:gprc = LIS 34952321  ; CHECK:   [[ORI:%[0-9]+]]:gprc = ORI [[LIS]], 34953322  ; CHECK:   [[DEF1:%[0-9]+]]:g8rc = IMPLICIT_DEF323  ; CHECK:   [[CMPLWI2:%[0-9]+]]:crrc = CMPLWI [[COPY5]], 1324  ; CHECK:   B %bb.9325  ; CHECK: bb.3 (%ir-block.15):326  ; CHECK:   successors: %bb.4(0x80000000)327  ; CHECK:   [[COPY6:%[0-9]+]]:gprc_and_gprc_nor0 = COPY %32.sub_32328  ; CHECK:   [[ADDI:%[0-9]+]]:gprc_and_gprc_nor0 = ADDI [[COPY6]], -2329  ; CHECK:   [[ADDI1:%[0-9]+]]:gprc = nuw ADDI [[ADDI]], 102330  ; CHECK: bb.4 (%ir-block.17):331  ; CHECK:   successors: %bb.8(0x40000000), %bb.5(0x40000000)332  ; CHECK:   [[PHI:%[0-9]+]]:g8rc = PHI [[LI8_]], %bb.18, %32, %bb.3333  ; CHECK:   [[PHI1:%[0-9]+]]:gprc = PHI [[LI1]], %bb.18, [[ADDI1]], %bb.3334  ; CHECK:   [[PHI2:%[0-9]+]]:gprc = PHI [[LI]], %bb.18, %27, %bb.3335  ; CHECK:   [[ANDI8_rec:%[0-9]+]]:g8rc = ANDI8_rec [[RLDICL]], 1, implicit-def $cr0336  ; CHECK:   [[COPY7:%[0-9]+]]:crbitrc = COPY $cr0gt337  ; CHECK:   BCn killed [[COPY7]], %bb.8338  ; CHECK:   B %bb.5339  ; CHECK: bb.5 (%ir-block.23):340  ; CHECK:   successors: %bb.7(0x2aaaaaab), %bb.6(0x55555555)341  ; CHECK:   [[RLDICR:%[0-9]+]]:g8rc = RLDICR [[PHI]], 2, 61342  ; CHECK:   [[LWZX:%[0-9]+]]:gprc = LWZX [[COPY2]], [[RLDICR]] :: (load (s32) from %ir.24, !tbaa !2)343  ; CHECK:   [[ADD4_:%[0-9]+]]:gprc = nsw ADD4 killed [[LWZX]], [[PHI2]]344  ; CHECK:   BCC 76, [[CMPLWI1]], %bb.7345  ; CHECK:   B %bb.6346  ; CHECK: bb.6 (%ir-block.23):347  ; CHECK:   successors: %bb.7(0x80000000)348  ; CHECK:   [[CMPLWI3:%[0-9]+]]:crrc = CMPLWI [[COPY5]], 1349  ; CHECK:   [[COPY8:%[0-9]+]]:gprc = COPY [[PHI]].sub_32350  ; CHECK:   [[LIS1:%[0-9]+]]:gprc = LIS 34952351  ; CHECK:   [[ORI1:%[0-9]+]]:gprc = ORI killed [[LIS1]], 34953352  ; CHECK:   [[MULHWU:%[0-9]+]]:gprc = MULHWU [[COPY8]], killed [[ORI1]]353  ; CHECK:   [[RLWINM:%[0-9]+]]:gprc = RLWINM [[MULHWU]], 28, 4, 31354  ; CHECK:   [[MULLI:%[0-9]+]]:gprc = MULLI killed [[RLWINM]], 30355  ; CHECK:   [[SUBF:%[0-9]+]]:gprc = SUBF killed [[MULLI]], [[COPY8]]356  ; CHECK:   [[COPY9:%[0-9]+]]:gprc = COPY [[PHI]].sub_32357  ; CHECK:   [[RLWINM1:%[0-9]+]]:gprc_and_gprc_nor0 = RLWINM [[COPY9]], 1, 0, 30358  ; CHECK:   [[ISEL:%[0-9]+]]:gprc = ISEL [[RLWINM1]], [[SUBF]], [[CMPLWI3]].sub_eq359  ; CHECK:   B %bb.7360  ; CHECK: bb.7 (%ir-block.33):361  ; CHECK:   successors: %bb.8(0x80000000)362  ; CHECK:   [[PHI3:%[0-9]+]]:gprc = PHI [[PHI1]], %bb.5, [[ISEL]], %bb.6363  ; CHECK:   [[ADD4_1:%[0-9]+]]:gprc = nsw ADD4 [[PHI3]], [[ADD4_]]364  ; CHECK:   STWX killed [[ADD4_1]], [[COPY1]], [[RLDICR]] :: (store (s32) into %ir.36, !tbaa !2)365  ; CHECK: bb.8 (%ir-block.37):366  ; CHECK:   [[LI8_2:%[0-9]+]]:g8rc = LI8 0367  ; CHECK:   $x3 = COPY [[LI8_2]]368  ; CHECK:   BLR8 implicit $lr8, implicit $rm, implicit $x3369  ; CHECK: bb.9 (%ir-block.38):370  ; CHECK:   successors: %bb.11(0x2aaaaaab), %bb.10(0x55555555)371  ; CHECK:   [[PHI4:%[0-9]+]]:g8rc_and_g8rc_nox0 = PHI [[LI8_1]], %bb.2, %32, %bb.17372  ; CHECK:   [[PHI5:%[0-9]+]]:gprc = PHI [[LI2]], %bb.2, %27, %bb.17373  ; CHECK:   [[PHI6:%[0-9]+]]:g8rc_and_g8rc_nox0 = PHI [[ADDI8_]], %bb.2, %55, %bb.17374  ; CHECK:   [[PHI7:%[0-9]+]]:g8rc_and_g8rc_nox0 = PHI [[ADDI8_1]], %bb.2, %15, %bb.17375  ; CHECK:   [[COPY10:%[0-9]+]]:gprc_and_gprc_nor0 = COPY [[PHI4]].sub_32376  ; CHECK:   [[MULHWU1:%[0-9]+]]:gprc = MULHWU [[COPY10]], [[ORI]]377  ; CHECK:   [[RLWINM2:%[0-9]+]]:gprc = RLWINM [[MULHWU1]], 28, 4, 31378  ; CHECK:   [[MULLI1:%[0-9]+]]:gprc = nsw MULLI killed [[RLWINM2]], -30379  ; CHECK:   [[INSERT_SUBREG1:%[0-9]+]]:g8rc = INSERT_SUBREG [[DEF1]], killed [[MULLI1]], %subreg.sub_32380  ; CHECK:   [[RLDICL2:%[0-9]+]]:g8rc = RLDICL killed [[INSERT_SUBREG1]], 0, 32381  ; CHECK:   BCC 76, [[CMPLWI1]], %bb.11382  ; CHECK:   B %bb.10383  ; CHECK: bb.10 (%ir-block.38):384  ; CHECK:   successors: %bb.12(0x80000000)385  ; CHECK:   [[ADD8_:%[0-9]+]]:g8rc = ADD8 [[PHI4]], [[RLDICL2]]386  ; CHECK:   [[COPY11:%[0-9]+]]:gprc = COPY [[ADD8_]].sub_32387  ; CHECK:   [[COPY12:%[0-9]+]]:gprc = COPY [[PHI4]].sub_32388  ; CHECK:   [[RLWINM3:%[0-9]+]]:gprc_and_gprc_nor0 = RLWINM [[COPY12]], 1, 0, 30389  ; CHECK:   [[ISEL1:%[0-9]+]]:gprc = ISEL [[RLWINM3]], [[COPY11]], [[CMPLWI2]].sub_eq390  ; CHECK:   B %bb.12391  ; CHECK: bb.11 (%ir-block.56):392  ; CHECK:   successors: %bb.12(0x80000000)393  ; CHECK:   [[ADDI2:%[0-9]+]]:gprc = nuw nsw ADDI [[COPY10]], 100394  ; CHECK:   B %bb.12395  ; CHECK: bb.12 (%ir-block.60):396  ; CHECK:   successors: %bb.15(0x2aaaaaab), %bb.13(0x55555555)397  ; CHECK:   [[PHI8:%[0-9]+]]:gprc = PHI [[ADDI2]], %bb.11, [[ISEL1]], %bb.10398  ; CHECK:   [[ADDI8_4:%[0-9]+]]:g8rc_and_g8rc_nox0 = ADDI8 [[PHI7]], 8399  ; CHECK:   [[LWZU:%[0-9]+]]:gprc, [[LWZU1:%[0-9]+]]:g8rc_and_g8rc_nox0 = LWZU 8, [[PHI6]] :: (load (s32) from %ir.46, !tbaa !2)400  ; CHECK:   [[ADD4_2:%[0-9]+]]:gprc = nsw ADD4 [[LWZU]], [[PHI5]]401  ; CHECK:   [[ADD4_3:%[0-9]+]]:gprc = nsw ADD4 [[PHI8]], [[ADD4_2]]402  ; CHECK:   STW killed [[ADD4_3]], 0, [[ADDI8_4]] :: (store (s32) into %ir.44, !tbaa !2)403  ; CHECK:   BCC 76, [[CMPLWI2]], %bb.15404  ; CHECK:   B %bb.13405  ; CHECK: bb.13 (%ir-block.60):406  ; CHECK:   successors: %bb.14(0x40000001), %bb.16(0x3fffffff)407  ; CHECK:   BCC 68, [[CMPLWI1]], %bb.16408  ; CHECK:   B %bb.14409  ; CHECK: bb.14 (%ir-block.67):410  ; CHECK:   successors: %bb.17(0x80000000)411  ; CHECK:   [[ADDI3:%[0-9]+]]:gprc = nuw nsw ADDI [[COPY10]], 101412  ; CHECK:   B %bb.17413  ; CHECK: bb.15 (%ir-block.69):414  ; CHECK:   successors: %bb.17(0x80000000)415  ; CHECK:   [[ORI8_:%[0-9]+]]:g8rc = ORI8 [[PHI4]], 1416  ; CHECK:   [[COPY13:%[0-9]+]]:gprc = COPY [[ORI8_]].sub_32417  ; CHECK:   [[RLWINM4:%[0-9]+]]:gprc = RLWINM [[COPY13]], 1, 0, 30418  ; CHECK:   B %bb.17419  ; CHECK: bb.16 (%ir-block.72):420  ; CHECK:   successors: %bb.17(0x80000000)421  ; CHECK:   [[ORI8_1:%[0-9]+]]:g8rc = ORI8 [[RLDICL2]], 1422  ; CHECK:   [[ADD8_1:%[0-9]+]]:g8rc = ADD8 [[PHI4]], [[ORI8_1]]423  ; CHECK:   [[COPY14:%[0-9]+]]:gprc = COPY [[ADD8_1]].sub_32424  ; CHECK: bb.17 (%ir-block.74):425  ; CHECK:   successors: %bb.9(0x7c000000), %bb.3(0x04000000)426  ; CHECK:   [[PHI9:%[0-9]+]]:gprc = PHI [[ADDI3]], %bb.14, [[RLWINM4]], %bb.15, [[COPY14]], %bb.16427  ; CHECK:   [[COPY15:%[0-9]+]]:g8rc_and_g8rc_nox0 = COPY [[ADDI8_4]]428  ; CHECK:   [[LWZ:%[0-9]+]]:gprc = LWZ 4, [[LWZU1]] :: (load (s32) from %ir.uglygep1112.cast, !tbaa !2)429  ; CHECK:   [[ADD4_4:%[0-9]+]]:gprc = nsw ADD4 [[LWZ]], [[ADD4_2]]430  ; CHECK:   [[ADD4_5:%[0-9]+]]:gprc = nsw ADD4 [[PHI9]], [[ADD4_4]]431  ; CHECK:   STW killed [[ADD4_5]], 4, [[COPY15]] :: (store (s32) into %ir.uglygep78.cast, !tbaa !2)432  ; CHECK:   [[ADDI8_5:%[0-9]+]]:g8rc = nuw nsw ADDI8 [[PHI4]], 2433  ; CHECK:   BDNZ8 %bb.9, implicit-def dead $ctr8, implicit $ctr8434  ; CHECK:   B %bb.3435  bb.0 (%ir-block.5):436    successors: %bb.1(0x50000000), %bb.9(0x30000000)437    liveins: $x3, $x5, $x6, $x7438 439    %38:g8rc = COPY $x7440    %37:g8rc_and_g8rc_nox0 = COPY $x6441    %36:g8rc_and_g8rc_nox0 = COPY $x5442    %34:g8rc = COPY $x3443    %39:gprc = COPY %34.sub_32444    %40:gprc = COPY %38.sub_32445    %41:crrc = CMPWI %40, 1446    BCC 12, killed %41, %bb.9447    B %bb.1448 449  bb.1 (%ir-block.7):450    %46:g8rc = IMPLICIT_DEF451    %45:g8rc = INSERT_SUBREG %46, %40, %subreg.sub_32452    %0:g8rc = RLDICL killed %45, 0, 32453    %44:gprc = LI 0454    %43:gprc = LI 100455    %42:g8rc = LI8 0456    %47:crrc = CMPLWI %40, 1457    %95:crrc = CMPLWI %39, 3458    BCC 76, killed %47, %bb.4459    B %bb.2460 461  bb.2 (%ir-block.10):462    %50:g8rc_and_g8rc_nox0 = RLWINM8 %0, 0, 0, 30463    %1:g8rc = ADDI8 %36, -8464    %2:g8rc = ADDI8 %37, -8465    %51:g8rc = nsw ADDI8 killed %50, -2466    %52:g8rc_and_g8rc_nox0 = RLDICL %51, 63, 1467    %53:g8rc = nuw ADDI8 killed %52, 1468    MTCTR8loop killed %53, implicit-def dead $ctr8469    %49:gprc = LI 0470    %48:g8rc = LI8 0471    %56:gprc = LIS 34952472    %57:gprc = ORI %56, 34953473    %62:g8rc = IMPLICIT_DEF474    %69:crrc = CMPLWI %39, 1475    B %bb.10476 477  bb.3 (%ir-block.15):478    %3:gprc = nuw ADDI %33, 102479 480  bb.4 (%ir-block.17):481    %4:g8rc = PHI %42, %bb.1, %32, %bb.3482    %5:gprc = PHI %43, %bb.1, %3, %bb.3483    %6:gprc = PHI %44, %bb.1, %27, %bb.3484    %90:g8rc = ANDI8_rec %0, 1, implicit-def $cr0485    %75:crbitrc = COPY $cr0gt486    BCn killed %75, %bb.9487    B %bb.5488 489  bb.5 (%ir-block.23):490    successors: %bb.8(0x2aaaaaab), %bb.21(0x55555555)491 492    %76:g8rc = RLDICR %4, 2, 61493    %77:gprc = LWZX %36, %76 :: (load (s32) from %ir.24, !tbaa !2)494    %7:gprc = nsw ADD4 killed %77, %6495    BCC 76, %95, %bb.8496    B %bb.21497 498  bb.21 (%ir-block.23):499    %79:crrc = CMPLWI %39, 1500    %81:gprc = COPY %4.sub_32501    %82:gprc = LIS 34952502    %83:gprc = ORI killed %82, 34953503    %84:gprc = MULHWU %81, killed %83504    %85:gprc = RLWINM %84, 28, 4, 31505    %86:gprc = MULLI killed %85, 30506    %9:gprc = SUBF killed %86, %81507    %80:gprc = COPY %4.sub_32508    %8:gprc_and_gprc_nor0 = RLWINM %80, 1, 0, 30509    %91:gprc = ISEL %8, %9, %79.sub_eq510    B %bb.8511 512  bb.8 (%ir-block.33):513    %10:gprc = PHI %5, %bb.5, %91, %bb.21514    %87:gprc = nsw ADD4 %10, %7515    STWX killed %87, %37, %76 :: (store (s32) into %ir.36, !tbaa !2)516 517  bb.9 (%ir-block.37):518    %89:g8rc = LI8 0519    $x3 = COPY %89520    BLR8 implicit $lr8, implicit $rm, implicit $x3521 522  bb.10 (%ir-block.38):523    successors: %bb.12(0x2aaaaaab), %bb.19(0x55555555)524 525    %11:g8rc_and_g8rc_nox0 = PHI %48, %bb.2, %32, %bb.18526    %12:gprc = PHI %49, %bb.2, %27, %bb.18527    %13:g8rc_and_g8rc_nox0 = PHI %1, %bb.2, %17, %bb.18528    %14:g8rc_and_g8rc_nox0 = PHI %2, %bb.2, %15, %bb.18529    %16:g8rc_and_g8rc_nox0 = ADDI8 %14, 8530    %15:g8rc_and_g8rc_nox0 = COPY %16531    %54:gprc, %55:g8rc_and_g8rc_nox0 = LWZU 8, %13 :: (load (s32) from %ir.46, !tbaa !2)532    %17:g8rc_and_g8rc_nox0 = COPY %55533    %18:gprc_and_gprc_nor0 = COPY %11.sub_32534    %58:gprc = MULHWU %18, %57535    %59:gprc = RLWINM %58, 28, 4, 31536    %60:gprc = nsw MULLI killed %59, -30537    %61:g8rc = INSERT_SUBREG %62, killed %60, %subreg.sub_32538    %19:g8rc = RLDICL killed %61, 0, 32539    %20:g8rc = ORI8 %19, 1540    %21:gprc = nsw ADD4 killed %54, %12541    BCC 76, %95, %bb.12542    B %bb.19543 544  bb.19 (%ir-block.38):545    %66:g8rc = ADD8 %11, %19546    %24:gprc = COPY %66.sub_32547    %65:gprc = COPY %11.sub_32548    %22:gprc_and_gprc_nor0 = RLWINM %65, 1, 0, 30549    %93:gprc = ISEL %22, %24, %69.sub_eq550    B %bb.14551 552  bb.12 (%ir-block.56):553    %23:gprc = nuw nsw ADDI %18, 100554    B %bb.14555 556  bb.14 (%ir-block.60):557    successors: %bb.16(0x2aaaaaab), %bb.20(0x55555555)558 559    %25:gprc = PHI %23, %bb.12, %93, %bb.19560    %67:gprc = nsw ADD4 %25, %21561    STW killed %67, 0, %16 :: (store (s32) into %ir.44, !tbaa !2)562    %26:g8rc = ORI8 %11, 1563    %68:gprc = LWZ 4, %17 :: (load (s32) from %ir.uglygep1112.cast, !tbaa !2)564    %27:gprc = nsw ADD4 killed %68, %21565    BCC 76, %69, %bb.16566    B %bb.20567 568  bb.20 (%ir-block.60):569    successors: %bb.15(0x40000001), %bb.17(0x3fffffff)570 571    BCC 68, %95, %bb.17572    B %bb.15573 574  bb.15 (%ir-block.67):575    %28:gprc = nuw nsw ADDI %18, 101576    B %bb.18577 578  bb.16 (%ir-block.69):579    %71:gprc = COPY %26.sub_32580    %29:gprc = RLWINM %71, 1, 0, 30581    B %bb.18582 583  bb.17 (%ir-block.72):584    %72:g8rc = ADD8 %11, %20585    %30:gprc = COPY %72.sub_32586 587  bb.18 (%ir-block.74):588    successors: %bb.10(0x7c000000), %bb.3(0x04000000)589 590    %31:gprc = PHI %28, %bb.15, %29, %bb.16, %30, %bb.17591    %73:gprc = nsw ADD4 %31, %27592    STW killed %73, 4, %15 :: (store (s32) into %ir.uglygep78.cast, !tbaa !2)593    %32:g8rc = nuw nsw ADDI8 %11, 2594    %74:gprc_and_gprc_nor0 = COPY %32.sub_32595    %33:gprc_and_gprc_nor0 = ADDI killed %74, -2596    BDNZ8 %bb.10, implicit-def dead $ctr8, implicit $ctr8597    B %bb.3598 599...600