brintos

brintos / llvm-project-archived public Read only

0
0
Text · 36.5 KiB · 2f1ff76 Raw
762 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 42# RUN: llc -mtriple=x86_64-unknown-linux-gnu -run-pass=early-tailduplication -tail-dup-pred-size=3 -tail-dup-succ-size=3 %s -o - | FileCheck %s -check-prefix=LIMIT3# RUN: llc -mtriple=x86_64-unknown-linux-gnu -run-pass=early-tailduplication -tail-dup-pred-size=4 -tail-dup-succ-size=4 %s -o - | FileCheck %s -check-prefix=NOLIMIT4 5---6name:            foo7tracksRegLiveness: true8jumpTable:9  kind:            block-address10  entries:11    - id:              012      blocks:          [ '%bb.2', '%bb.3', '%bb.4', '%bb.5' ]13    - id:              114      blocks:          [ '%bb.9', '%bb.10', '%bb.11', '%bb.12' ]15body:             |16  ; LIMIT-LABEL: name: foo17  ; LIMIT: bb.0:18  ; LIMIT-NEXT:   successors: %bb.2(0x20000000), %bb.3(0x20000000), %bb.4(0x20000000), %bb.5(0x20000000)19  ; LIMIT-NEXT:   liveins: $rdi, $esi20  ; LIMIT-NEXT: {{  $}}21  ; LIMIT-NEXT:   [[COPY:%[0-9]+]]:gr32 = COPY $esi22  ; LIMIT-NEXT:   [[COPY1:%[0-9]+]]:gr64 = COPY $rdi23  ; LIMIT-NEXT:   [[SHR32ri:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 1, implicit-def dead $eflags24  ; LIMIT-NEXT:   [[AND32ri:%[0-9]+]]:gr32 = AND32ri [[SHR32ri]], 7, implicit-def dead $eflags25  ; LIMIT-NEXT:   [[SUBREG_TO_REG:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, killed [[AND32ri]], %subreg.sub_32bit26  ; LIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG]], %jump-table.0, $noreg27  ; LIMIT-NEXT: {{  $}}28  ; LIMIT-NEXT: bb.2:29  ; LIMIT-NEXT:   successors: %bb.7(0x80000000)30  ; LIMIT-NEXT: {{  $}}31  ; LIMIT-NEXT:   [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg32  ; LIMIT-NEXT:   JMP_1 %bb.733  ; LIMIT-NEXT: {{  $}}34  ; LIMIT-NEXT: bb.3:35  ; LIMIT-NEXT:   successors: %bb.7(0x80000000)36  ; LIMIT-NEXT: {{  $}}37  ; LIMIT-NEXT:   [[MOV32rm1:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg38  ; LIMIT-NEXT:   [[SHR32ri1:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm1]], 1, implicit-def dead $eflags39  ; LIMIT-NEXT:   JMP_1 %bb.740  ; LIMIT-NEXT: {{  $}}41  ; LIMIT-NEXT: bb.4:42  ; LIMIT-NEXT:   successors: %bb.7(0x80000000)43  ; LIMIT-NEXT: {{  $}}44  ; LIMIT-NEXT:   [[MOV32rm2:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg45  ; LIMIT-NEXT:   [[SHR32ri2:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm2]], 2, implicit-def dead $eflags46  ; LIMIT-NEXT:   JMP_1 %bb.747  ; LIMIT-NEXT: {{  $}}48  ; LIMIT-NEXT: bb.5:49  ; LIMIT-NEXT:   successors: %bb.7(0x80000000)50  ; LIMIT-NEXT: {{  $}}51  ; LIMIT-NEXT:   [[MOV32rm3:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg52  ; LIMIT-NEXT:   [[SHR32ri3:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm3]], 3, implicit-def dead $eflags53  ; LIMIT-NEXT:   JMP_1 %bb.754  ; LIMIT-NEXT: {{  $}}55  ; LIMIT-NEXT: bb.6:56  ; LIMIT-NEXT:   successors:57  ; LIMIT-NEXT: {{  $}}58  ; LIMIT-NEXT: bb.7:59  ; LIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)60  ; LIMIT-NEXT: {{  $}}61  ; LIMIT-NEXT:   [[PHI:%[0-9]+]]:gr32 = PHI [[SHR32ri3]], %bb.5, [[SHR32ri2]], %bb.4, [[SHR32ri1]], %bb.3, [[MOV32rm]], %bb.262  ; LIMIT-NEXT:   [[SHR32ri4:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags63  ; LIMIT-NEXT:   [[AND32ri1:%[0-9]+]]:gr32 = AND32ri [[SHR32ri4]], 7, implicit-def dead $eflags64  ; LIMIT-NEXT:   [[SUBREG_TO_REG1:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, killed [[AND32ri1]], %subreg.sub_32bit65  ; LIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG1]], %jump-table.1, $noreg66  ; LIMIT-NEXT: {{  $}}67  ; LIMIT-NEXT: bb.9:68  ; LIMIT-NEXT:   successors: %bb.13(0x80000000)69  ; LIMIT-NEXT: {{  $}}70  ; LIMIT-NEXT:   [[MOV32rm4:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg71  ; LIMIT-NEXT:   JMP_1 %bb.1372  ; LIMIT-NEXT: {{  $}}73  ; LIMIT-NEXT: bb.10:74  ; LIMIT-NEXT:   successors: %bb.13(0x80000000)75  ; LIMIT-NEXT: {{  $}}76  ; LIMIT-NEXT:   [[MOV32rm5:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg77  ; LIMIT-NEXT:   [[SHR32ri5:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm5]], 1, implicit-def dead $eflags78  ; LIMIT-NEXT:   JMP_1 %bb.1379  ; LIMIT-NEXT: {{  $}}80  ; LIMIT-NEXT: bb.11:81  ; LIMIT-NEXT:   successors: %bb.13(0x80000000)82  ; LIMIT-NEXT: {{  $}}83  ; LIMIT-NEXT:   [[MOV32rm6:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg84  ; LIMIT-NEXT:   [[SHR32ri6:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm6]], 2, implicit-def dead $eflags85  ; LIMIT-NEXT:   JMP_1 %bb.1386  ; LIMIT-NEXT: {{  $}}87  ; LIMIT-NEXT: bb.12:88  ; LIMIT-NEXT:   successors: %bb.13(0x80000000)89  ; LIMIT-NEXT: {{  $}}90  ; LIMIT-NEXT:   [[MOV32rm7:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg91  ; LIMIT-NEXT:   [[SHR32ri7:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm7]], 6, implicit-def dead $eflags92  ; LIMIT-NEXT: {{  $}}93  ; LIMIT-NEXT: bb.13:94  ; LIMIT-NEXT:   [[PHI1:%[0-9]+]]:gr32 = PHI [[SHR32ri7]], %bb.12, [[SHR32ri6]], %bb.11, [[SHR32ri5]], %bb.10, [[MOV32rm4]], %bb.995  ; LIMIT-NEXT:   [[OR32rr:%[0-9]+]]:gr32 = OR32rr [[PHI1]], [[PHI]], implicit-def dead $eflags96  ; LIMIT-NEXT:   $eax = COPY [[OR32rr]]97  ; LIMIT-NEXT:   RET 0, $eax98  ;99  ; NOLIMIT-LABEL: name: foo100  ; NOLIMIT: bb.0:101  ; NOLIMIT-NEXT:   successors: %bb.2(0x20000000), %bb.3(0x20000000), %bb.4(0x20000000), %bb.5(0x20000000)102  ; NOLIMIT-NEXT:   liveins: $rdi, $esi103  ; NOLIMIT-NEXT: {{  $}}104  ; NOLIMIT-NEXT:   [[COPY:%[0-9]+]]:gr32 = COPY $esi105  ; NOLIMIT-NEXT:   [[COPY1:%[0-9]+]]:gr64 = COPY $rdi106  ; NOLIMIT-NEXT:   [[SHR32ri:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 1, implicit-def dead $eflags107  ; NOLIMIT-NEXT:   [[AND32ri:%[0-9]+]]:gr32 = AND32ri [[SHR32ri]], 7, implicit-def dead $eflags108  ; NOLIMIT-NEXT:   [[SUBREG_TO_REG:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, killed [[AND32ri]], %subreg.sub_32bit109  ; NOLIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG]], %jump-table.0, $noreg110  ; NOLIMIT-NEXT: {{  $}}111  ; NOLIMIT-NEXT: bb.2:112  ; NOLIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)113  ; NOLIMIT-NEXT: {{  $}}114  ; NOLIMIT-NEXT:   [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg115  ; NOLIMIT-NEXT:   [[SHR32ri1:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags116  ; NOLIMIT-NEXT:   [[AND32ri1:%[0-9]+]]:gr32 = AND32ri [[SHR32ri1]], 7, implicit-def dead $eflags117  ; NOLIMIT-NEXT:   [[SUBREG_TO_REG1:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri1]], %subreg.sub_32bit118  ; NOLIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG1]], %jump-table.1, $noreg119  ; NOLIMIT-NEXT: {{  $}}120  ; NOLIMIT-NEXT: bb.3:121  ; NOLIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)122  ; NOLIMIT-NEXT: {{  $}}123  ; NOLIMIT-NEXT:   [[MOV32rm1:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg124  ; NOLIMIT-NEXT:   [[SHR32ri2:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm1]], 1, implicit-def dead $eflags125  ; NOLIMIT-NEXT:   [[SHR32ri3:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags126  ; NOLIMIT-NEXT:   [[AND32ri2:%[0-9]+]]:gr32 = AND32ri [[SHR32ri3]], 7, implicit-def dead $eflags127  ; NOLIMIT-NEXT:   [[SUBREG_TO_REG2:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri2]], %subreg.sub_32bit128  ; NOLIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG2]], %jump-table.1, $noreg129  ; NOLIMIT-NEXT: {{  $}}130  ; NOLIMIT-NEXT: bb.4:131  ; NOLIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)132  ; NOLIMIT-NEXT: {{  $}}133  ; NOLIMIT-NEXT:   [[MOV32rm2:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg134  ; NOLIMIT-NEXT:   [[SHR32ri4:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm2]], 2, implicit-def dead $eflags135  ; NOLIMIT-NEXT:   [[SHR32ri5:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags136  ; NOLIMIT-NEXT:   [[AND32ri3:%[0-9]+]]:gr32 = AND32ri [[SHR32ri5]], 7, implicit-def dead $eflags137  ; NOLIMIT-NEXT:   [[SUBREG_TO_REG3:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri3]], %subreg.sub_32bit138  ; NOLIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG3]], %jump-table.1, $noreg139  ; NOLIMIT-NEXT: {{  $}}140  ; NOLIMIT-NEXT: bb.5:141  ; NOLIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)142  ; NOLIMIT-NEXT: {{  $}}143  ; NOLIMIT-NEXT:   [[MOV32rm3:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg144  ; NOLIMIT-NEXT:   [[SHR32ri6:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm3]], 3, implicit-def dead $eflags145  ; NOLIMIT-NEXT:   [[SHR32ri7:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags146  ; NOLIMIT-NEXT:   [[AND32ri4:%[0-9]+]]:gr32 = AND32ri [[SHR32ri7]], 7, implicit-def dead $eflags147  ; NOLIMIT-NEXT:   [[SUBREG_TO_REG4:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri4]], %subreg.sub_32bit148  ; NOLIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG4]], %jump-table.1, $noreg149  ; NOLIMIT-NEXT: {{  $}}150  ; NOLIMIT-NEXT: bb.6:151  ; NOLIMIT-NEXT:   successors:152  ; NOLIMIT-NEXT: {{  $}}153  ; NOLIMIT-NEXT: bb.9:154  ; NOLIMIT-NEXT:   successors: %bb.13(0x80000000)155  ; NOLIMIT-NEXT: {{  $}}156  ; NOLIMIT-NEXT:   [[PHI:%[0-9]+]]:gr32 = PHI [[MOV32rm]], %bb.2, [[SHR32ri2]], %bb.3, [[SHR32ri4]], %bb.4, [[SHR32ri6]], %bb.5157  ; NOLIMIT-NEXT:   [[MOV32rm4:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg158  ; NOLIMIT-NEXT:   JMP_1 %bb.13159  ; NOLIMIT-NEXT: {{  $}}160  ; NOLIMIT-NEXT: bb.10:161  ; NOLIMIT-NEXT:   successors: %bb.13(0x80000000)162  ; NOLIMIT-NEXT: {{  $}}163  ; NOLIMIT-NEXT:   [[PHI1:%[0-9]+]]:gr32 = PHI [[MOV32rm]], %bb.2, [[SHR32ri2]], %bb.3, [[SHR32ri4]], %bb.4, [[SHR32ri6]], %bb.5164  ; NOLIMIT-NEXT:   [[MOV32rm5:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg165  ; NOLIMIT-NEXT:   [[SHR32ri8:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm5]], 1, implicit-def dead $eflags166  ; NOLIMIT-NEXT:   JMP_1 %bb.13167  ; NOLIMIT-NEXT: {{  $}}168  ; NOLIMIT-NEXT: bb.11:169  ; NOLIMIT-NEXT:   successors: %bb.13(0x80000000)170  ; NOLIMIT-NEXT: {{  $}}171  ; NOLIMIT-NEXT:   [[PHI2:%[0-9]+]]:gr32 = PHI [[MOV32rm]], %bb.2, [[SHR32ri2]], %bb.3, [[SHR32ri4]], %bb.4, [[SHR32ri6]], %bb.5172  ; NOLIMIT-NEXT:   [[MOV32rm6:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg173  ; NOLIMIT-NEXT:   [[SHR32ri9:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm6]], 2, implicit-def dead $eflags174  ; NOLIMIT-NEXT:   JMP_1 %bb.13175  ; NOLIMIT-NEXT: {{  $}}176  ; NOLIMIT-NEXT: bb.12:177  ; NOLIMIT-NEXT:   successors: %bb.13(0x80000000)178  ; NOLIMIT-NEXT: {{  $}}179  ; NOLIMIT-NEXT:   [[PHI3:%[0-9]+]]:gr32 = PHI [[MOV32rm]], %bb.2, [[SHR32ri2]], %bb.3, [[SHR32ri4]], %bb.4, [[SHR32ri6]], %bb.5180  ; NOLIMIT-NEXT:   [[MOV32rm7:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg181  ; NOLIMIT-NEXT:   [[SHR32ri10:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm7]], 6, implicit-def dead $eflags182  ; NOLIMIT-NEXT: {{  $}}183  ; NOLIMIT-NEXT: bb.13:184  ; NOLIMIT-NEXT:   [[PHI4:%[0-9]+]]:gr32 = PHI [[PHI]], %bb.9, [[PHI1]], %bb.10, [[PHI2]], %bb.11, [[PHI3]], %bb.12185  ; NOLIMIT-NEXT:   [[PHI5:%[0-9]+]]:gr32 = PHI [[SHR32ri10]], %bb.12, [[SHR32ri9]], %bb.11, [[SHR32ri8]], %bb.10, [[MOV32rm4]], %bb.9186  ; NOLIMIT-NEXT:   [[OR32rr:%[0-9]+]]:gr32 = OR32rr [[PHI5]], [[PHI4]], implicit-def dead $eflags187  ; NOLIMIT-NEXT:   $eax = COPY [[OR32rr]]188  ; NOLIMIT-NEXT:   RET 0, $eax189  bb.0:190    liveins: $rdi, $esi191 192    %11:gr32 = COPY $esi193    %10:gr64 = COPY $rdi194    %13:gr32 = SHR32ri %11, 1, implicit-def dead $eflags195    %14:gr32 = AND32ri %13, 7, implicit-def dead $eflags196    %12:gr64_nosp = SUBREG_TO_REG 0, killed %14, %subreg.sub_32bit197 198  bb.1:199    successors: %bb.2, %bb.3, %bb.4, %bb.5200 201    JMP64m $noreg, 8, %12, %jump-table.0, $noreg202 203  bb.2:204    %0:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg205    JMP_1 %bb.7206 207  bb.3:208    %17:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg209    %1:gr32 = SHR32ri %17, 1, implicit-def dead $eflags210    JMP_1 %bb.7211 212  bb.4:213    %16:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg214    %2:gr32 = SHR32ri %16, 2, implicit-def dead $eflags215    JMP_1 %bb.7216 217  bb.5:218    %15:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg219    %3:gr32 = SHR32ri %15, 3, implicit-def dead $eflags220    JMP_1 %bb.7221 222  bb.6:223    successors:224 225  bb.7:226    %4:gr32 = PHI %3, %bb.5, %2, %bb.4, %1, %bb.3, %0, %bb.2227    %19:gr32 = SHR32ri %11, 2, implicit-def dead $eflags228    %20:gr32 = AND32ri %19, 7, implicit-def dead $eflags229    %18:gr64_nosp = SUBREG_TO_REG 0, killed %20, %subreg.sub_32bit230 231  bb.8:232    successors: %bb.9, %bb.10, %bb.11, %bb.12233 234    JMP64m $noreg, 8, %18, %jump-table.1, $noreg235 236  bb.9:237    %5:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg238    JMP_1 %bb.13239 240  bb.10:241    %23:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg242    %6:gr32 = SHR32ri %23, 1, implicit-def dead $eflags243    JMP_1 %bb.13244 245  bb.11:246    %22:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg247    %7:gr32 = SHR32ri %22, 2, implicit-def dead $eflags248    JMP_1 %bb.13249 250  bb.12:251    %21:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg252    %8:gr32 = SHR32ri %21, 6, implicit-def dead $eflags253 254  bb.13:255    %9:gr32 = PHI %8, %bb.12, %7, %bb.11, %6, %bb.10, %5, %bb.9256    %24:gr32 = OR32rr %9, %4, implicit-def dead $eflags257    $eax = COPY %24258    RET 0, $eax259 260...261# Based on foo, but with a phi node in a successor of %bb.7 instead of %bb.7.262---263name:            foo_phi_in_tailbb_successor264tracksRegLiveness: true265jumpTable:266  kind:            block-address267  entries:268    - id:              0269      blocks:          [ '%bb.2', '%bb.3', '%bb.4', '%bb.5', '%bb.9' ]270    - id:              1271      blocks:          [ '%bb.9', '%bb.10', '%bb.11', '%bb.12' ]272body:             |273  ; LIMIT-LABEL: name: foo_phi_in_tailbb_successor274  ; LIMIT: bb.0:275  ; LIMIT-NEXT:   successors: %bb.2(0x1999999a), %bb.3(0x1999999a), %bb.4(0x1999999a), %bb.5(0x1999999a), %bb.9(0x1999999a)276  ; LIMIT-NEXT:   liveins: $rdi, $esi277  ; LIMIT-NEXT: {{  $}}278  ; LIMIT-NEXT:   [[COPY:%[0-9]+]]:gr32 = COPY $esi279  ; LIMIT-NEXT:   [[COPY1:%[0-9]+]]:gr64 = COPY $rdi280  ; LIMIT-NEXT:   [[SHR32ri:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 1, implicit-def dead $eflags281  ; LIMIT-NEXT:   [[AND32ri:%[0-9]+]]:gr32 = AND32ri [[SHR32ri]], 7, implicit-def dead $eflags282  ; LIMIT-NEXT:   [[SUBREG_TO_REG:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri]], %subreg.sub_32bit283  ; LIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG]], %jump-table.0, $noreg284  ; LIMIT-NEXT: {{  $}}285  ; LIMIT-NEXT: bb.2:286  ; LIMIT-NEXT:   successors: %bb.7(0x80000000)287  ; LIMIT-NEXT: {{  $}}288  ; LIMIT-NEXT:   [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg289  ; LIMIT-NEXT:   JMP_1 %bb.7290  ; LIMIT-NEXT: {{  $}}291  ; LIMIT-NEXT: bb.3:292  ; LIMIT-NEXT:   successors: %bb.7(0x80000000)293  ; LIMIT-NEXT: {{  $}}294  ; LIMIT-NEXT:   [[MOV32rm1:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg295  ; LIMIT-NEXT:   [[SHR32ri1:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm1]], 1, implicit-def dead $eflags296  ; LIMIT-NEXT:   JMP_1 %bb.7297  ; LIMIT-NEXT: {{  $}}298  ; LIMIT-NEXT: bb.4:299  ; LIMIT-NEXT:   successors: %bb.7(0x80000000)300  ; LIMIT-NEXT: {{  $}}301  ; LIMIT-NEXT:   [[MOV32rm2:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg302  ; LIMIT-NEXT:   [[SHR32ri2:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm2]], 2, implicit-def dead $eflags303  ; LIMIT-NEXT:   JMP_1 %bb.7304  ; LIMIT-NEXT: {{  $}}305  ; LIMIT-NEXT: bb.5:306  ; LIMIT-NEXT:   successors: %bb.7(0x80000000)307  ; LIMIT-NEXT: {{  $}}308  ; LIMIT-NEXT:   [[MOV32rm3:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg309  ; LIMIT-NEXT:   [[SHR32ri3:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm3]], 3, implicit-def dead $eflags310  ; LIMIT-NEXT:   JMP_1 %bb.7311  ; LIMIT-NEXT: {{  $}}312  ; LIMIT-NEXT: bb.6:313  ; LIMIT-NEXT:   successors:314  ; LIMIT-NEXT: {{  $}}315  ; LIMIT-NEXT: bb.7:316  ; LIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)317  ; LIMIT-NEXT: {{  $}}318  ; LIMIT-NEXT:   [[SHR32ri4:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags319  ; LIMIT-NEXT:   [[AND32ri1:%[0-9]+]]:gr32 = AND32ri [[SHR32ri4]], 7, implicit-def dead $eflags320  ; LIMIT-NEXT:   [[SUBREG_TO_REG1:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri1]], %subreg.sub_32bit321  ; LIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG1]], %jump-table.1, $noreg322  ; LIMIT-NEXT: {{  $}}323  ; LIMIT-NEXT: bb.9:324  ; LIMIT-NEXT:   successors: %bb.13(0x80000000)325  ; LIMIT-NEXT: {{  $}}326  ; LIMIT-NEXT:   [[PHI:%[0-9]+]]:gr32 = PHI [[AND32ri]], %bb.0, [[AND32ri1]], %bb.7327  ; LIMIT-NEXT:   [[MOV32rm4:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg328  ; LIMIT-NEXT:   JMP_1 %bb.13329  ; LIMIT-NEXT: {{  $}}330  ; LIMIT-NEXT: bb.10:331  ; LIMIT-NEXT:   successors: %bb.13(0x80000000)332  ; LIMIT-NEXT: {{  $}}333  ; LIMIT-NEXT:   [[MOV32rm5:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg334  ; LIMIT-NEXT:   [[SHR32ri5:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm5]], 1, implicit-def dead $eflags335  ; LIMIT-NEXT:   JMP_1 %bb.13336  ; LIMIT-NEXT: {{  $}}337  ; LIMIT-NEXT: bb.11:338  ; LIMIT-NEXT:   successors: %bb.13(0x80000000)339  ; LIMIT-NEXT: {{  $}}340  ; LIMIT-NEXT:   [[MOV32rm6:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg341  ; LIMIT-NEXT:   [[SHR32ri6:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm6]], 2, implicit-def dead $eflags342  ; LIMIT-NEXT:   JMP_1 %bb.13343  ; LIMIT-NEXT: {{  $}}344  ; LIMIT-NEXT: bb.12:345  ; LIMIT-NEXT:   successors: %bb.13(0x80000000)346  ; LIMIT-NEXT: {{  $}}347  ; LIMIT-NEXT:   [[MOV32rm7:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg348  ; LIMIT-NEXT:   [[SHR32ri7:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm7]], 6, implicit-def dead $eflags349  ; LIMIT-NEXT: {{  $}}350  ; LIMIT-NEXT: bb.13:351  ; LIMIT-NEXT:   [[PHI:%[0-9]+]]:gr32 = PHI [[SHR32ri7]], %bb.12, [[SHR32ri6]], %bb.11, [[SHR32ri5]], %bb.10, [[MOV32rm4]], %bb.9352  ; LIMIT-NEXT:   [[OR32ri:%[0-9]+]]:gr32 = OR32ri [[PHI]], 1, implicit-def dead $eflags353  ; LIMIT-NEXT:   $eax = COPY [[OR32ri]]354  ; LIMIT-NEXT:   RET 0, $eax355  ;356  ; NOLIMIT-LABEL: name: foo_phi_in_tailbb_successor357  ; NOLIMIT: bb.0:358  ; NOLIMIT-NEXT:   successors: %bb.2(0x1999999a), %bb.3(0x1999999a), %bb.4(0x1999999a), %bb.5(0x1999999a), %bb.9(0x1999999a)359  ; NOLIMIT-NEXT:   liveins: $rdi, $esi360  ; NOLIMIT-NEXT: {{  $}}361  ; NOLIMIT-NEXT:   [[COPY:%[0-9]+]]:gr32 = COPY $esi362  ; NOLIMIT-NEXT:   [[COPY1:%[0-9]+]]:gr64 = COPY $rdi363  ; NOLIMIT-NEXT:   [[SHR32ri:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 1, implicit-def dead $eflags364  ; NOLIMIT-NEXT:   [[AND32ri:%[0-9]+]]:gr32 = AND32ri [[SHR32ri]], 7, implicit-def dead $eflags365  ; NOLIMIT-NEXT:   [[SUBREG_TO_REG:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri]], %subreg.sub_32bit366  ; NOLIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG]], %jump-table.0, $noreg367  ; NOLIMIT-NEXT: {{  $}}368  ; NOLIMIT-NEXT: bb.2:369  ; NOLIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)370  ; NOLIMIT-NEXT: {{  $}}371  ; NOLIMIT-NEXT:   [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg372  ; NOLIMIT-NEXT:   [[SHR32ri1:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags373  ; NOLIMIT-NEXT:   [[AND32ri1:%[0-9]+]]:gr32 = AND32ri [[SHR32ri1]], 7, implicit-def dead $eflags374  ; NOLIMIT-NEXT:   [[SUBREG_TO_REG1:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri1]], %subreg.sub_32bit375  ; NOLIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG1]], %jump-table.1, $noreg376  ; NOLIMIT-NEXT: {{  $}}377  ; NOLIMIT-NEXT: bb.3:378  ; NOLIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)379  ; NOLIMIT-NEXT: {{  $}}380  ; NOLIMIT-NEXT:   [[MOV32rm1:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg381  ; NOLIMIT-NEXT:   [[SHR32ri2:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm1]], 1, implicit-def dead $eflags382  ; NOLIMIT-NEXT:   [[SHR32ri3:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags383  ; NOLIMIT-NEXT:   [[AND32ri2:%[0-9]+]]:gr32 = AND32ri [[SHR32ri3]], 7, implicit-def dead $eflags384  ; NOLIMIT-NEXT:   [[SUBREG_TO_REG2:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri2]], %subreg.sub_32bit385  ; NOLIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG2]], %jump-table.1, $noreg386  ; NOLIMIT-NEXT: {{  $}}387  ; NOLIMIT-NEXT: bb.4:388  ; NOLIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)389  ; NOLIMIT-NEXT: {{  $}}390  ; NOLIMIT-NEXT:   [[MOV32rm2:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg391  ; NOLIMIT-NEXT:   [[SHR32ri4:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm2]], 2, implicit-def dead $eflags392  ; NOLIMIT-NEXT:   [[SHR32ri5:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags393  ; NOLIMIT-NEXT:   [[AND32ri3:%[0-9]+]]:gr32 = AND32ri [[SHR32ri5]], 7, implicit-def dead $eflags394  ; NOLIMIT-NEXT:   [[SUBREG_TO_REG3:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri3]], %subreg.sub_32bit395  ; NOLIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG3]], %jump-table.1, $noreg396  ; NOLIMIT-NEXT: {{  $}}397  ; NOLIMIT-NEXT: bb.5:398  ; NOLIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)399  ; NOLIMIT-NEXT: {{  $}}400  ; NOLIMIT-NEXT:   [[MOV32rm3:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg401  ; NOLIMIT-NEXT:   [[SHR32ri6:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm3]], 3, implicit-def dead $eflags402  ; NOLIMIT-NEXT:   [[SHR32ri7:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags403  ; NOLIMIT-NEXT:   [[AND32ri4:%[0-9]+]]:gr32 = AND32ri [[SHR32ri7]], 7, implicit-def dead $eflags404  ; NOLIMIT-NEXT:   [[SUBREG_TO_REG4:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri4]], %subreg.sub_32bit405  ; NOLIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG4]], %jump-table.1, $noreg406  ; NOLIMIT-NEXT: {{  $}}407  ; NOLIMIT-NEXT: bb.6:408  ; NOLIMIT-NEXT:   successors:409  ; NOLIMIT-NEXT: {{  $}}410  ; NOLIMIT-NEXT: bb.9:411  ; NOLIMIT-NEXT:   successors: %bb.13(0x80000000)412  ; NOLIMIT-NEXT: {{  $}}413  ; NOLIMIT-NEXT:   [[PHI:%[0-9]+]]:gr32 = PHI [[AND32ri]], %bb.0, [[AND32ri1]], %bb.2, [[AND32ri2]], %bb.3, [[AND32ri3]], %bb.4, [[AND32ri4]], %bb.5414  ; NOLIMIT-NEXT:   [[MOV32rm4:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg415  ; NOLIMIT-NEXT:   JMP_1 %bb.13416  ; NOLIMIT-NEXT: {{  $}}417  ; NOLIMIT-NEXT: bb.10:418  ; NOLIMIT-NEXT:   successors: %bb.13(0x80000000)419  ; NOLIMIT-NEXT: {{  $}}420  ; NOLIMIT-NEXT:   [[MOV32rm5:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg421  ; NOLIMIT-NEXT:   [[SHR32ri8:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm5]], 1, implicit-def dead $eflags422  ; NOLIMIT-NEXT:   JMP_1 %bb.13423  ; NOLIMIT-NEXT: {{  $}}424  ; NOLIMIT-NEXT: bb.11:425  ; NOLIMIT-NEXT:   successors: %bb.13(0x80000000)426  ; NOLIMIT-NEXT: {{  $}}427  ; NOLIMIT-NEXT:   [[MOV32rm6:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg428  ; NOLIMIT-NEXT:   [[SHR32ri9:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm6]], 2, implicit-def dead $eflags429  ; NOLIMIT-NEXT:   JMP_1 %bb.13430  ; NOLIMIT-NEXT: {{  $}}431  ; NOLIMIT-NEXT: bb.12:432  ; NOLIMIT-NEXT:   successors: %bb.13(0x80000000)433  ; NOLIMIT-NEXT: {{  $}}434  ; NOLIMIT-NEXT:   [[MOV32rm7:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg435  ; NOLIMIT-NEXT:   [[SHR32ri10:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm7]], 6, implicit-def dead $eflags436  ; NOLIMIT-NEXT: {{  $}}437  ; NOLIMIT-NEXT: bb.13:438  ; NOLIMIT-NEXT:   [[PHI:%[0-9]+]]:gr32 = PHI [[SHR32ri10]], %bb.12, [[SHR32ri9]], %bb.11, [[SHR32ri8]], %bb.10, [[MOV32rm4]], %bb.9439  ; NOLIMIT-NEXT:   [[OR32ri:%[0-9]+]]:gr32 = OR32ri [[PHI]], 1, implicit-def dead $eflags440  ; NOLIMIT-NEXT:   $eax = COPY [[OR32ri]]441  ; NOLIMIT-NEXT:   RET 0, $eax442  bb.0:443    liveins: $rdi, $esi444 445    %11:gr32 = COPY $esi446    %10:gr64 = COPY $rdi447    %13:gr32 = SHR32ri %11, 1, implicit-def dead $eflags448    %14:gr32 = AND32ri %13, 7, implicit-def dead $eflags449    %12:gr64_nosp = SUBREG_TO_REG 0, %14, %subreg.sub_32bit450 451  bb.1:452    successors: %bb.2, %bb.3, %bb.4, %bb.5, %bb.9453 454    JMP64m $noreg, 8, %12, %jump-table.0, $noreg455 456  bb.2:457    %0:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg458    JMP_1 %bb.7459 460  bb.3:461    %17:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg462    %1:gr32 = SHR32ri %17, 1, implicit-def dead $eflags463    JMP_1 %bb.7464 465  bb.4:466    %16:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg467    %2:gr32 = SHR32ri %16, 2, implicit-def dead $eflags468    JMP_1 %bb.7469 470  bb.5:471    %15:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg472    %3:gr32 = SHR32ri %15, 3, implicit-def dead $eflags473    JMP_1 %bb.7474 475  bb.6:476    successors:477 478  bb.7:479    %19:gr32 = SHR32ri %11, 2, implicit-def dead $eflags480    %20:gr32 = AND32ri %19, 7, implicit-def dead $eflags481    %18:gr64_nosp = SUBREG_TO_REG 0, %20, %subreg.sub_32bit482 483  bb.8:484    successors: %bb.9, %bb.10, %bb.11, %bb.12485 486    JMP64m $noreg, 8, %18, %jump-table.1, $noreg487 488  bb.9:489    %9:gr32 = PHI %14, %bb.1, %20, %bb.8490    %5:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg491    JMP_1 %bb.13492 493  bb.10:494    %23:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg495    %6:gr32 = SHR32ri %23, 1, implicit-def dead $eflags496    JMP_1 %bb.13497 498  bb.11:499    %22:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg500    %7:gr32 = SHR32ri %22, 2, implicit-def dead $eflags501    JMP_1 %bb.13502 503  bb.12:504    %21:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg505    %8:gr32 = SHR32ri %21, 6, implicit-def dead $eflags506 507  bb.13:508    %9:gr32 = PHI %8, %bb.12, %7, %bb.11, %6, %bb.10, %5, %bb.9509    %24:gr32 = OR32ri %9, 1, implicit-def dead $eflags510    $eax = COPY %24511    RET 0, $eax512 513...514 515 516# Based on foo, but without any phi nodes.517---518name:            foo_no_phis519tracksRegLiveness: true520jumpTable:521  kind:            block-address522  entries:523    - id:              0524      blocks:          [ '%bb.2', '%bb.3', '%bb.4', '%bb.5' ]525    - id:              1526      blocks:          [ '%bb.9', '%bb.10', '%bb.11', '%bb.12' ]527body:             |528  ; LIMIT-LABEL: name: foo_no_phis529  ; LIMIT: bb.0:530  ; LIMIT-NEXT:   successors: %bb.2(0x20000000), %bb.3(0x20000000), %bb.4(0x20000000), %bb.5(0x20000000)531  ; LIMIT-NEXT:   liveins: $rdi, $esi532  ; LIMIT-NEXT: {{  $}}533  ; LIMIT-NEXT:   [[COPY:%[0-9]+]]:gr32 = COPY $esi534  ; LIMIT-NEXT:   [[COPY1:%[0-9]+]]:gr64 = COPY $rdi535  ; LIMIT-NEXT:   [[SHR32ri:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 1, implicit-def dead $eflags536  ; LIMIT-NEXT:   [[AND32ri:%[0-9]+]]:gr32 = AND32ri [[SHR32ri]], 7, implicit-def dead $eflags537  ; LIMIT-NEXT:   [[SUBREG_TO_REG:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, killed [[AND32ri]], %subreg.sub_32bit538  ; LIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG]], %jump-table.0, $noreg539  ; LIMIT-NEXT: {{  $}}540  ; LIMIT-NEXT: bb.2:541  ; LIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)542  ; LIMIT-NEXT: {{  $}}543  ; LIMIT-NEXT:   [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg544  ; LIMIT-NEXT:   [[SHR32ri1:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags545  ; LIMIT-NEXT:   [[AND32ri1:%[0-9]+]]:gr32 = AND32ri [[SHR32ri1]], 7, implicit-def dead $eflags546  ; LIMIT-NEXT:   [[SUBREG_TO_REG1:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri1]], %subreg.sub_32bit547  ; LIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG1]], %jump-table.1, $noreg548  ; LIMIT-NEXT: {{  $}}549  ; LIMIT-NEXT: bb.3:550  ; LIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)551  ; LIMIT-NEXT: {{  $}}552  ; LIMIT-NEXT:   [[MOV32rm1:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg553  ; LIMIT-NEXT:   [[SHR32ri2:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm1]], 1, implicit-def dead $eflags554  ; LIMIT-NEXT:   [[SHR32ri3:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags555  ; LIMIT-NEXT:   [[AND32ri2:%[0-9]+]]:gr32 = AND32ri [[SHR32ri3]], 7, implicit-def dead $eflags556  ; LIMIT-NEXT:   [[SUBREG_TO_REG2:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri2]], %subreg.sub_32bit557  ; LIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG2]], %jump-table.1, $noreg558  ; LIMIT-NEXT: {{  $}}559  ; LIMIT-NEXT: bb.4:560  ; LIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)561  ; LIMIT-NEXT: {{  $}}562  ; LIMIT-NEXT:   [[MOV32rm2:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg563  ; LIMIT-NEXT:   [[SHR32ri4:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm2]], 2, implicit-def dead $eflags564  ; LIMIT-NEXT:   [[SHR32ri5:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags565  ; LIMIT-NEXT:   [[AND32ri3:%[0-9]+]]:gr32 = AND32ri [[SHR32ri5]], 7, implicit-def dead $eflags566  ; LIMIT-NEXT:   [[SUBREG_TO_REG3:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri3]], %subreg.sub_32bit567  ; LIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG3]], %jump-table.1, $noreg568  ; LIMIT-NEXT: {{  $}}569  ; LIMIT-NEXT: bb.5:570  ; LIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)571  ; LIMIT-NEXT: {{  $}}572  ; LIMIT-NEXT:   [[MOV32rm3:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg573  ; LIMIT-NEXT:   [[SHR32ri6:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm3]], 3, implicit-def dead $eflags574  ; LIMIT-NEXT:   [[SHR32ri7:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags575  ; LIMIT-NEXT:   [[AND32ri4:%[0-9]+]]:gr32 = AND32ri [[SHR32ri7]], 7, implicit-def dead $eflags576  ; LIMIT-NEXT:   [[SUBREG_TO_REG4:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri4]], %subreg.sub_32bit577  ; LIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG4]], %jump-table.1, $noreg578  ; LIMIT-NEXT: {{  $}}579  ; LIMIT-NEXT: bb.6:580  ; LIMIT-NEXT:   successors:581  ; LIMIT-NEXT: {{  $}}582  ; LIMIT-NEXT: bb.9:583  ; LIMIT-NEXT:   [[MOV32rm4:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg584  ; LIMIT-NEXT:   MOV32mr [[COPY1]], 1, $noreg, 0, $noreg, [[MOV32rm4]] :: (store (s32))585  ; LIMIT-NEXT:   $eax = COPY [[MOV32rm4]]586  ; LIMIT-NEXT:   RET 0, $eax587  ; LIMIT-NEXT: {{  $}}588  ; LIMIT-NEXT: bb.10:589  ; LIMIT-NEXT:   [[MOV32rm5:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg590  ; LIMIT-NEXT:   [[SHR32ri8:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm5]], 1, implicit-def dead $eflags591  ; LIMIT-NEXT:   MOV32mr [[COPY1]], 1, $noreg, 0, $noreg, [[SHR32ri8]] :: (store (s32))592  ; LIMIT-NEXT:   $eax = COPY [[SHR32ri8]]593  ; LIMIT-NEXT:   RET 0, $eax594  ; LIMIT-NEXT: {{  $}}595  ; LIMIT-NEXT: bb.11:596  ; LIMIT-NEXT:   [[MOV32rm6:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg597  ; LIMIT-NEXT:   [[SHR32ri9:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm6]], 2, implicit-def dead $eflags598  ; LIMIT-NEXT:   MOV32mr [[COPY1]], 1, $noreg, 0, $noreg, [[SHR32ri9]] :: (store (s32))599  ; LIMIT-NEXT:   $eax = COPY [[SHR32ri9]]600  ; LIMIT-NEXT:   RET 0, $eax601  ; LIMIT-NEXT: {{  $}}602  ; LIMIT-NEXT: bb.12:603  ; LIMIT-NEXT:   [[MOV32rm7:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg604  ; LIMIT-NEXT:   [[SHR32ri10:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm7]], 6, implicit-def dead $eflags605  ; LIMIT-NEXT:   MOV32mr [[COPY1]], 1, $noreg, 0, $noreg, [[SHR32ri10]] :: (store (s32))606  ; LIMIT-NEXT:   $eax = COPY [[SHR32ri10]]607  ; LIMIT-NEXT:   RET 0, $eax608  ;609  ; NOLIMIT-LABEL: name: foo_no_phis610  ; NOLIMIT: bb.0:611  ; NOLIMIT-NEXT:   successors: %bb.2(0x20000000), %bb.3(0x20000000), %bb.4(0x20000000), %bb.5(0x20000000)612  ; NOLIMIT-NEXT:   liveins: $rdi, $esi613  ; NOLIMIT-NEXT: {{  $}}614  ; NOLIMIT-NEXT:   [[COPY:%[0-9]+]]:gr32 = COPY $esi615  ; NOLIMIT-NEXT:   [[COPY1:%[0-9]+]]:gr64 = COPY $rdi616  ; NOLIMIT-NEXT:   [[SHR32ri:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 1, implicit-def dead $eflags617  ; NOLIMIT-NEXT:   [[AND32ri:%[0-9]+]]:gr32 = AND32ri [[SHR32ri]], 7, implicit-def dead $eflags618  ; NOLIMIT-NEXT:   [[SUBREG_TO_REG:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, killed [[AND32ri]], %subreg.sub_32bit619  ; NOLIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG]], %jump-table.0, $noreg620  ; NOLIMIT-NEXT: {{  $}}621  ; NOLIMIT-NEXT: bb.2:622  ; NOLIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)623  ; NOLIMIT-NEXT: {{  $}}624  ; NOLIMIT-NEXT:   [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg625  ; NOLIMIT-NEXT:   [[SHR32ri1:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags626  ; NOLIMIT-NEXT:   [[AND32ri1:%[0-9]+]]:gr32 = AND32ri [[SHR32ri1]], 7, implicit-def dead $eflags627  ; NOLIMIT-NEXT:   [[SUBREG_TO_REG1:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri1]], %subreg.sub_32bit628  ; NOLIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG1]], %jump-table.1, $noreg629  ; NOLIMIT-NEXT: {{  $}}630  ; NOLIMIT-NEXT: bb.3:631  ; NOLIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)632  ; NOLIMIT-NEXT: {{  $}}633  ; NOLIMIT-NEXT:   [[MOV32rm1:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg634  ; NOLIMIT-NEXT:   [[SHR32ri2:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm1]], 1, implicit-def dead $eflags635  ; NOLIMIT-NEXT:   [[SHR32ri3:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags636  ; NOLIMIT-NEXT:   [[AND32ri2:%[0-9]+]]:gr32 = AND32ri [[SHR32ri3]], 7, implicit-def dead $eflags637  ; NOLIMIT-NEXT:   [[SUBREG_TO_REG2:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri2]], %subreg.sub_32bit638  ; NOLIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG2]], %jump-table.1, $noreg639  ; NOLIMIT-NEXT: {{  $}}640  ; NOLIMIT-NEXT: bb.4:641  ; NOLIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)642  ; NOLIMIT-NEXT: {{  $}}643  ; NOLIMIT-NEXT:   [[MOV32rm2:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg644  ; NOLIMIT-NEXT:   [[SHR32ri4:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm2]], 2, implicit-def dead $eflags645  ; NOLIMIT-NEXT:   [[SHR32ri5:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags646  ; NOLIMIT-NEXT:   [[AND32ri3:%[0-9]+]]:gr32 = AND32ri [[SHR32ri5]], 7, implicit-def dead $eflags647  ; NOLIMIT-NEXT:   [[SUBREG_TO_REG3:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri3]], %subreg.sub_32bit648  ; NOLIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG3]], %jump-table.1, $noreg649  ; NOLIMIT-NEXT: {{  $}}650  ; NOLIMIT-NEXT: bb.5:651  ; NOLIMIT-NEXT:   successors: %bb.9(0x20000000), %bb.10(0x20000000), %bb.11(0x20000000), %bb.12(0x20000000)652  ; NOLIMIT-NEXT: {{  $}}653  ; NOLIMIT-NEXT:   [[MOV32rm3:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg654  ; NOLIMIT-NEXT:   [[SHR32ri6:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm3]], 3, implicit-def dead $eflags655  ; NOLIMIT-NEXT:   [[SHR32ri7:%[0-9]+]]:gr32 = SHR32ri [[COPY]], 2, implicit-def dead $eflags656  ; NOLIMIT-NEXT:   [[AND32ri4:%[0-9]+]]:gr32 = AND32ri [[SHR32ri7]], 7, implicit-def dead $eflags657  ; NOLIMIT-NEXT:   [[SUBREG_TO_REG4:%[0-9]+]]:gr64_nosp = SUBREG_TO_REG 0, [[AND32ri4]], %subreg.sub_32bit658  ; NOLIMIT-NEXT:   JMP64m $noreg, 8, [[SUBREG_TO_REG4]], %jump-table.1, $noreg659  ; NOLIMIT-NEXT: {{  $}}660  ; NOLIMIT-NEXT: bb.6:661  ; NOLIMIT-NEXT:   successors:662  ; NOLIMIT-NEXT: {{  $}}663  ; NOLIMIT-NEXT: bb.9:664  ; NOLIMIT-NEXT:   [[MOV32rm4:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg665  ; NOLIMIT-NEXT:   MOV32mr [[COPY1]], 1, $noreg, 0, $noreg, [[MOV32rm4]] :: (store (s32))666  ; NOLIMIT-NEXT:   $eax = COPY [[MOV32rm4]]667  ; NOLIMIT-NEXT:   RET 0, $eax668  ; NOLIMIT-NEXT: {{  $}}669  ; NOLIMIT-NEXT: bb.10:670  ; NOLIMIT-NEXT:   [[MOV32rm5:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg671  ; NOLIMIT-NEXT:   [[SHR32ri8:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm5]], 1, implicit-def dead $eflags672  ; NOLIMIT-NEXT:   MOV32mr [[COPY1]], 1, $noreg, 0, $noreg, [[SHR32ri8]] :: (store (s32))673  ; NOLIMIT-NEXT:   $eax = COPY [[SHR32ri8]]674  ; NOLIMIT-NEXT:   RET 0, $eax675  ; NOLIMIT-NEXT: {{  $}}676  ; NOLIMIT-NEXT: bb.11:677  ; NOLIMIT-NEXT:   [[MOV32rm6:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg678  ; NOLIMIT-NEXT:   [[SHR32ri9:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm6]], 2, implicit-def dead $eflags679  ; NOLIMIT-NEXT:   MOV32mr [[COPY1]], 1, $noreg, 0, $noreg, [[SHR32ri9]] :: (store (s32))680  ; NOLIMIT-NEXT:   $eax = COPY [[SHR32ri9]]681  ; NOLIMIT-NEXT:   RET 0, $eax682  ; NOLIMIT-NEXT: {{  $}}683  ; NOLIMIT-NEXT: bb.12:684  ; NOLIMIT-NEXT:   [[MOV32rm7:%[0-9]+]]:gr32 = MOV32rm [[COPY1]], 1, $noreg, 0, $noreg685  ; NOLIMIT-NEXT:   [[SHR32ri10:%[0-9]+]]:gr32 = SHR32ri [[MOV32rm7]], 6, implicit-def dead $eflags686  ; NOLIMIT-NEXT:   MOV32mr [[COPY1]], 1, $noreg, 0, $noreg, [[SHR32ri10]] :: (store (s32))687  ; NOLIMIT-NEXT:   $eax = COPY [[SHR32ri10]]688  ; NOLIMIT-NEXT:   RET 0, $eax689  bb.0:690    liveins: $rdi, $esi691 692    %11:gr32 = COPY $esi693    %10:gr64 = COPY $rdi694    %13:gr32 = SHR32ri %11, 1, implicit-def dead $eflags695    %14:gr32 = AND32ri %13, 7, implicit-def dead $eflags696    %12:gr64_nosp = SUBREG_TO_REG 0, killed %14, %subreg.sub_32bit697 698  bb.1:699    successors: %bb.2, %bb.3, %bb.4, %bb.5700 701    JMP64m $noreg, 8, %12, %jump-table.0, $noreg702 703  bb.2:704    %0:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg705    JMP_1 %bb.7706 707  bb.3:708    %17:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg709    %1:gr32 = SHR32ri %17, 1, implicit-def dead $eflags710    JMP_1 %bb.7711 712  bb.4:713    %16:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg714    %2:gr32 = SHR32ri %16, 2, implicit-def dead $eflags715    JMP_1 %bb.7716 717  bb.5:718    %15:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg719    %3:gr32 = SHR32ri %15, 3, implicit-def dead $eflags720    JMP_1 %bb.7721 722  bb.6:723    successors:724 725  bb.7:726    %19:gr32 = SHR32ri %11, 2, implicit-def dead $eflags727    %20:gr32 = AND32ri %19, 7, implicit-def dead $eflags728    %18:gr64_nosp = SUBREG_TO_REG 0, killed %20, %subreg.sub_32bit729 730  bb.8:731    successors: %bb.9, %bb.10, %bb.11, %bb.12732 733    JMP64m $noreg, 8, %18, %jump-table.1, $noreg734 735  bb.9:736    %5:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg737    MOV32mr %10, 1, $noreg, 0, $noreg, %5 :: (store (s32))738    $eax = COPY %5739    RET 0, $eax740 741  bb.10:742    %23:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg743    %6:gr32 = SHR32ri %23, 1, implicit-def dead $eflags744    MOV32mr %10, 1, $noreg, 0, $noreg, %6 :: (store (s32))745    $eax = COPY %6746    RET 0, $eax747 748  bb.11:749    %22:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg750    %7:gr32 = SHR32ri %22, 2, implicit-def dead $eflags751    MOV32mr %10, 1, $noreg, 0, $noreg, %7 :: (store (s32))752    $eax = COPY %7753    RET 0, $eax754 755  bb.12:756    %21:gr32 = MOV32rm %10, 1, $noreg, 0, $noreg757    %8:gr32 = SHR32ri %21, 6, implicit-def dead $eflags758    MOV32mr %10, 1, $noreg, 0, $noreg, %8 :: (store (s32))759    $eax = COPY %8760    RET 0, $eax761...762