brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.6 KiB · 2a19fc4 Raw
235 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 22; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=-altivec -mtriple powerpc-ibm-aix-xcoff \3; RUN: -ppc-min-jump-table-entries=4 -code-model=small -stop-after=machine-cp < %s | FileCheck \4; RUN: --check-prefix=32SMALL-MIR %s5 6; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=-altivec -mtriple powerpc-ibm-aix-xcoff \7; RUN: -ppc-min-jump-table-entries=4 -code-model=large -stop-after=machine-cp < %s | FileCheck \8; RUN: --check-prefix=32LARGE-MIR %s9 10; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \11; RUN: -ppc-min-jump-table-entries=4 -code-model=small -stop-after=machine-cp < %s | FileCheck \12; RUN: --check-prefix=64SMALL-MIR %s13 14; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=-altivec -mtriple powerpc64-ibm-aix-xcoff \15; RUN: -ppc-min-jump-table-entries=4 -code-model=large -stop-after=machine-cp < %s | FileCheck \16; RUN: --check-prefix=64LARGE-MIR %s17 18define i32 @jump_table(i32 %a) {19  ; 32SMALL-MIR-LABEL: name: jump_table20  ; 32SMALL-MIR: bb.0.entry:21  ; 32SMALL-MIR-NEXT:   successors: %bb.6(0x19999998), %bb.1(0x66666668)22  ; 32SMALL-MIR-NEXT:   liveins: $r323  ; 32SMALL-MIR-NEXT: {{  $}}24  ; 32SMALL-MIR-NEXT:   renamable $r3 = ADDI killed renamable $r3, -125  ; 32SMALL-MIR-NEXT:   renamable $cr0 = CMPLWI renamable $r3, 326  ; 32SMALL-MIR-NEXT:   BCC 44, killed renamable $cr0, %bb.627  ; 32SMALL-MIR-NEXT: {{  $}}28  ; 32SMALL-MIR-NEXT: bb.1.entry:29  ; 32SMALL-MIR-NEXT:   successors: %bb.2(0x20000000), %bb.3(0x20000000), %bb.4(0x20000000), %bb.5(0x20000000)30  ; 32SMALL-MIR-NEXT:   liveins: $r331  ; 32SMALL-MIR-NEXT: {{  $}}32  ; 32SMALL-MIR-NEXT:   renamable $r3 = RLWINM killed renamable $r3, 2, 0, 2933  ; 32SMALL-MIR-NEXT:   renamable $r4 = LWZtoc %jump-table.0, $r2 :: (load (s32) from got)34  ; 32SMALL-MIR-NEXT:   renamable $r3 = LWZX renamable $r4, killed renamable $r3 :: (load (s32) from jump-table)35  ; 32SMALL-MIR-NEXT:   renamable $r3 = ADD4 killed renamable $r4, killed renamable $r336  ; 32SMALL-MIR-NEXT:   MTCTR killed renamable $r3, implicit-def $ctr37  ; 32SMALL-MIR-NEXT:   BCTR implicit $ctr38  ; 32SMALL-MIR-NEXT: {{  $}}39  ; 32SMALL-MIR-NEXT: bb.2.sw.bb:40  ; 32SMALL-MIR-NEXT:   successors: %bb.6(0x80000000)41  ; 32SMALL-MIR-NEXT: {{  $}}42  ; 32SMALL-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */43  ; 32SMALL-MIR-NEXT:   B %bb.644  ; 32SMALL-MIR-NEXT: {{  $}}45  ; 32SMALL-MIR-NEXT: bb.3.sw.bb1:46  ; 32SMALL-MIR-NEXT:   successors: %bb.6(0x80000000)47  ; 32SMALL-MIR-NEXT: {{  $}}48  ; 32SMALL-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */49  ; 32SMALL-MIR-NEXT:   B %bb.650  ; 32SMALL-MIR-NEXT: {{  $}}51  ; 32SMALL-MIR-NEXT: bb.4.sw.bb2:52  ; 32SMALL-MIR-NEXT:   successors: %bb.6(0x80000000)53  ; 32SMALL-MIR-NEXT: {{  $}}54  ; 32SMALL-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */55  ; 32SMALL-MIR-NEXT:   B %bb.656  ; 32SMALL-MIR-NEXT: {{  $}}57  ; 32SMALL-MIR-NEXT: bb.5.sw.bb3:58  ; 32SMALL-MIR-NEXT:   successors: %bb.6(0x80000000)59  ; 32SMALL-MIR-NEXT: {{  $}}60  ; 32SMALL-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */61  ; 32SMALL-MIR-NEXT: {{  $}}62  ; 32SMALL-MIR-NEXT: bb.6.sw.epilog:63  ; 32SMALL-MIR-NEXT:   $r3 = LI 064  ; 32SMALL-MIR-NEXT:   BLR implicit $lr, implicit $rm, implicit $r365  ;66  ; 32LARGE-MIR-LABEL: name: jump_table67  ; 32LARGE-MIR: bb.0.entry:68  ; 32LARGE-MIR-NEXT:   successors: %bb.6(0x19999998), %bb.1(0x66666668)69  ; 32LARGE-MIR-NEXT:   liveins: $r370  ; 32LARGE-MIR-NEXT: {{  $}}71  ; 32LARGE-MIR-NEXT:   renamable $r3 = ADDI killed renamable $r3, -172  ; 32LARGE-MIR-NEXT:   renamable $cr0 = CMPLWI renamable $r3, 373  ; 32LARGE-MIR-NEXT:   BCC 44, killed renamable $cr0, %bb.674  ; 32LARGE-MIR-NEXT: {{  $}}75  ; 32LARGE-MIR-NEXT: bb.1.entry:76  ; 32LARGE-MIR-NEXT:   successors: %bb.2(0x20000000), %bb.3(0x20000000), %bb.4(0x20000000), %bb.5(0x20000000)77  ; 32LARGE-MIR-NEXT:   liveins: $r378  ; 32LARGE-MIR-NEXT: {{  $}}79  ; 32LARGE-MIR-NEXT:   renamable $r3 = RLWINM killed renamable $r3, 2, 0, 2980  ; 32LARGE-MIR-NEXT:   renamable $r4 = ADDIStocHA $r2, %jump-table.081  ; 32LARGE-MIR-NEXT:   renamable $r4 = LWZtocL %jump-table.0, killed renamable $r4, implicit $r2 :: (load (s32) from got)82  ; 32LARGE-MIR-NEXT:   renamable $r3 = LWZX renamable $r4, killed renamable $r3 :: (load (s32) from jump-table)83  ; 32LARGE-MIR-NEXT:   renamable $r3 = ADD4 killed renamable $r4, killed renamable $r384  ; 32LARGE-MIR-NEXT:   MTCTR killed renamable $r3, implicit-def $ctr85  ; 32LARGE-MIR-NEXT:   BCTR implicit $ctr86  ; 32LARGE-MIR-NEXT: {{  $}}87  ; 32LARGE-MIR-NEXT: bb.2.sw.bb:88  ; 32LARGE-MIR-NEXT:   successors: %bb.6(0x80000000)89  ; 32LARGE-MIR-NEXT: {{  $}}90  ; 32LARGE-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */91  ; 32LARGE-MIR-NEXT:   B %bb.692  ; 32LARGE-MIR-NEXT: {{  $}}93  ; 32LARGE-MIR-NEXT: bb.3.sw.bb1:94  ; 32LARGE-MIR-NEXT:   successors: %bb.6(0x80000000)95  ; 32LARGE-MIR-NEXT: {{  $}}96  ; 32LARGE-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */97  ; 32LARGE-MIR-NEXT:   B %bb.698  ; 32LARGE-MIR-NEXT: {{  $}}99  ; 32LARGE-MIR-NEXT: bb.4.sw.bb2:100  ; 32LARGE-MIR-NEXT:   successors: %bb.6(0x80000000)101  ; 32LARGE-MIR-NEXT: {{  $}}102  ; 32LARGE-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */103  ; 32LARGE-MIR-NEXT:   B %bb.6104  ; 32LARGE-MIR-NEXT: {{  $}}105  ; 32LARGE-MIR-NEXT: bb.5.sw.bb3:106  ; 32LARGE-MIR-NEXT:   successors: %bb.6(0x80000000)107  ; 32LARGE-MIR-NEXT: {{  $}}108  ; 32LARGE-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */109  ; 32LARGE-MIR-NEXT: {{  $}}110  ; 32LARGE-MIR-NEXT: bb.6.sw.epilog:111  ; 32LARGE-MIR-NEXT:   $r3 = LI 0112  ; 32LARGE-MIR-NEXT:   BLR implicit $lr, implicit $rm, implicit $r3113  ;114  ; 64SMALL-MIR-LABEL: name: jump_table115  ; 64SMALL-MIR: bb.0.entry:116  ; 64SMALL-MIR-NEXT:   successors: %bb.6(0x19999998), %bb.1(0x66666668)117  ; 64SMALL-MIR-NEXT:   liveins: $x3118  ; 64SMALL-MIR-NEXT: {{  $}}119  ; 64SMALL-MIR-NEXT:   renamable $r3 = ADDI renamable $r3, -1, implicit killed $x3, implicit-def $x3120  ; 64SMALL-MIR-NEXT:   renamable $cr0 = CMPLWI renamable $r3, 3121  ; 64SMALL-MIR-NEXT:   BCC 44, killed renamable $cr0, %bb.6122  ; 64SMALL-MIR-NEXT: {{  $}}123  ; 64SMALL-MIR-NEXT: bb.1.entry:124  ; 64SMALL-MIR-NEXT:   successors: %bb.2(0x20000000), %bb.3(0x20000000), %bb.4(0x20000000), %bb.5(0x20000000)125  ; 64SMALL-MIR-NEXT:   liveins: $x3126  ; 64SMALL-MIR-NEXT: {{  $}}127  ; 64SMALL-MIR-NEXT:   renamable $x3 = RLDIC killed renamable $x3, 2, 30128  ; 64SMALL-MIR-NEXT:   renamable $x4 = LDtocJTI %jump-table.0, $x2 :: (load (s64) from got)129  ; 64SMALL-MIR-NEXT:   renamable $x3 = LWAX renamable $x4, killed renamable $x3 :: (load (s32) from jump-table)130  ; 64SMALL-MIR-NEXT:   renamable $x3 = ADD8 killed renamable $x4, killed renamable $x3131  ; 64SMALL-MIR-NEXT:   MTCTR8 killed renamable $x3, implicit-def $ctr8132  ; 64SMALL-MIR-NEXT:   BCTR8 implicit $ctr8133  ; 64SMALL-MIR-NEXT: {{  $}}134  ; 64SMALL-MIR-NEXT: bb.2.sw.bb:135  ; 64SMALL-MIR-NEXT:   successors: %bb.6(0x80000000)136  ; 64SMALL-MIR-NEXT: {{  $}}137  ; 64SMALL-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */138  ; 64SMALL-MIR-NEXT:   B %bb.6139  ; 64SMALL-MIR-NEXT: {{  $}}140  ; 64SMALL-MIR-NEXT: bb.3.sw.bb1:141  ; 64SMALL-MIR-NEXT:   successors: %bb.6(0x80000000)142  ; 64SMALL-MIR-NEXT: {{  $}}143  ; 64SMALL-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */144  ; 64SMALL-MIR-NEXT:   B %bb.6145  ; 64SMALL-MIR-NEXT: {{  $}}146  ; 64SMALL-MIR-NEXT: bb.4.sw.bb2:147  ; 64SMALL-MIR-NEXT:   successors: %bb.6(0x80000000)148  ; 64SMALL-MIR-NEXT: {{  $}}149  ; 64SMALL-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */150  ; 64SMALL-MIR-NEXT:   B %bb.6151  ; 64SMALL-MIR-NEXT: {{  $}}152  ; 64SMALL-MIR-NEXT: bb.5.sw.bb3:153  ; 64SMALL-MIR-NEXT:   successors: %bb.6(0x80000000)154  ; 64SMALL-MIR-NEXT: {{  $}}155  ; 64SMALL-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */156  ; 64SMALL-MIR-NEXT: {{  $}}157  ; 64SMALL-MIR-NEXT: bb.6.sw.epilog:158  ; 64SMALL-MIR-NEXT:   $x3 = LI8 0159  ; 64SMALL-MIR-NEXT:   BLR8 implicit $lr8, implicit $rm, implicit $x3160  ;161  ; 64LARGE-MIR-LABEL: name: jump_table162  ; 64LARGE-MIR: bb.0.entry:163  ; 64LARGE-MIR-NEXT:   successors: %bb.6(0x19999998), %bb.1(0x66666668)164  ; 64LARGE-MIR-NEXT:   liveins: $x3165  ; 64LARGE-MIR-NEXT: {{  $}}166  ; 64LARGE-MIR-NEXT:   renamable $r3 = ADDI renamable $r3, -1, implicit killed $x3, implicit-def $x3167  ; 64LARGE-MIR-NEXT:   renamable $cr0 = CMPLWI renamable $r3, 3168  ; 64LARGE-MIR-NEXT:   BCC 44, killed renamable $cr0, %bb.6169  ; 64LARGE-MIR-NEXT: {{  $}}170  ; 64LARGE-MIR-NEXT: bb.1.entry:171  ; 64LARGE-MIR-NEXT:   successors: %bb.2(0x20000000), %bb.3(0x20000000), %bb.4(0x20000000), %bb.5(0x20000000)172  ; 64LARGE-MIR-NEXT:   liveins: $x3173  ; 64LARGE-MIR-NEXT: {{  $}}174  ; 64LARGE-MIR-NEXT:   renamable $x3 = RLDIC killed renamable $x3, 2, 30175  ; 64LARGE-MIR-NEXT:   renamable $x4 = ADDIStocHA8 $x2, %jump-table.0176  ; 64LARGE-MIR-NEXT:   renamable $x4 = LDtocL %jump-table.0, killed renamable $x4, implicit $x2 :: (load (s64) from got)177  ; 64LARGE-MIR-NEXT:   renamable $x3 = LWAX renamable $x4, killed renamable $x3 :: (load (s32) from jump-table)178  ; 64LARGE-MIR-NEXT:   renamable $x3 = ADD8 killed renamable $x4, killed renamable $x3179  ; 64LARGE-MIR-NEXT:   MTCTR8 killed renamable $x3, implicit-def $ctr8180  ; 64LARGE-MIR-NEXT:   BCTR8 implicit $ctr8181  ; 64LARGE-MIR-NEXT: {{  $}}182  ; 64LARGE-MIR-NEXT: bb.2.sw.bb:183  ; 64LARGE-MIR-NEXT:   successors: %bb.6(0x80000000)184  ; 64LARGE-MIR-NEXT: {{  $}}185  ; 64LARGE-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */186  ; 64LARGE-MIR-NEXT:   B %bb.6187  ; 64LARGE-MIR-NEXT: {{  $}}188  ; 64LARGE-MIR-NEXT: bb.3.sw.bb1:189  ; 64LARGE-MIR-NEXT:   successors: %bb.6(0x80000000)190  ; 64LARGE-MIR-NEXT: {{  $}}191  ; 64LARGE-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */192  ; 64LARGE-MIR-NEXT:   B %bb.6193  ; 64LARGE-MIR-NEXT: {{  $}}194  ; 64LARGE-MIR-NEXT: bb.4.sw.bb2:195  ; 64LARGE-MIR-NEXT:   successors: %bb.6(0x80000000)196  ; 64LARGE-MIR-NEXT: {{  $}}197  ; 64LARGE-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */198  ; 64LARGE-MIR-NEXT:   B %bb.6199  ; 64LARGE-MIR-NEXT: {{  $}}200  ; 64LARGE-MIR-NEXT: bb.5.sw.bb3:201  ; 64LARGE-MIR-NEXT:   successors: %bb.6(0x80000000)202  ; 64LARGE-MIR-NEXT: {{  $}}203  ; 64LARGE-MIR-NEXT:   INLINEASM &"", 1 /* sideeffect attdialect */204  ; 64LARGE-MIR-NEXT: {{  $}}205  ; 64LARGE-MIR-NEXT: bb.6.sw.epilog:206  ; 64LARGE-MIR-NEXT:   $x3 = LI8 0207  ; 64LARGE-MIR-NEXT:   BLR8 implicit $lr8, implicit $rm, implicit $x3208entry:209  switch i32 %a, label %sw.epilog [210    i32 1, label %sw.bb211    i32 2, label %sw.bb1212    i32 3, label %sw.bb2213    i32 4, label %sw.bb3214  ]215 216sw.bb:217  tail call void asm sideeffect "", ""()218  br label %sw.epilog219 220sw.bb1:221  tail call void asm sideeffect "", ""()222  br label %sw.epilog223 224sw.bb2:225  tail call void asm sideeffect "", ""()226  br label %sw.epilog227 228sw.bb3:229  tail call void asm sideeffect "", ""()230  br label %sw.epilog231 232sw.epilog:233  ret i32 0234}235