brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.5 KiB · 3e00b60 Raw
328 lines · plain
1# RUN: llc -mtriple=s390x-linux-gnu -mcpu=z14 -run-pass greedy %s -o - \2# RUN:   | FileCheck %s3#4# Test that a reload can be folded into a compare instruction after swapping5# operands (when the LHS register is spilled).6 7--- |8  declare i64 @foo()9  define i64 @fun1(ptr %ptr0)  { ret i64 0 }10  define i64 @fun2(ptr %ptr0)  { ret i64 0 }11 12  declare i32 @foo32()13  define i32 @fun3(ptr %ptr0)  { ret i32 0 }14  define i32 @fun4(ptr %ptr0)  { ret i32 0 }15...16 17 18# Test CGR -> CG19# CHECK: name:            fun120# CHECK: CG %10, %stack.0, 0, $noreg, implicit-def $cc :: (load (s64) from %stack.0)21# CHECK-NEXT: %12:gr64bit = LOCGHI %12, 8, 14, 12, implicit $cc22---23name:            fun124alignment:       1625tracksRegLiveness: true26registers:27  - { id: 0, class: addr64bit }28  - { id: 1, class: gr64bit }29  - { id: 2, class: gr64bit }30  - { id: 3, class: gr64bit }31  - { id: 4, class: gr64bit }32  - { id: 5, class: gr64bit }33  - { id: 6, class: gr64bit }34  - { id: 7, class: gr64bit }35  - { id: 8, class: gr64bit }36  - { id: 9, class: gr64bit }37  - { id: 10, class: gr64bit }38  - { id: 11, class: gr64bit }39  - { id: 12, class: gr64bit }40  - { id: 13, class: gr64bit }41  - { id: 14, class: gr64bit }42  - { id: 15, class: gr64bit }43  - { id: 16, class: gr64bit }44  - { id: 17, class: gr64bit }45  - { id: 18, class: gr64bit }46  - { id: 19, class: gr64bit }47liveins:48  - { reg: '$r2d', virtual-reg: '%0' }49frameInfo:50  maxAlignment:    151  adjustsStack:    true52  hasCalls:        true53machineFunctionInfo: {}54body:             |55  bb.0:56    liveins: $r2d57 58    %0:addr64bit = COPY $r2d59    %1:gr64bit = LG %0, 0, $noreg60    %2:gr64bit = LG %0, 16, $noreg61    %3:gr64bit = LG %0, 32, $noreg62    %4:gr64bit = LG %0, 48, $noreg63    %5:gr64bit = LG %0, 64, $noreg64    %6:gr64bit = LG %0, 80, $noreg65    %7:gr64bit = LG %0, 96, $noreg66    %8:gr64bit = LG %0, 112, $noreg67    %9:gr64bit = LG %0, 128, $noreg68    ADJCALLSTACKDOWN 0, 069    CallBRASL @foo, csr_systemz_elf, implicit-def dead $r14d, implicit-def dead $cc, implicit $fpc, implicit-def $r2d70    %10:gr64bit = COPY $r2d71    ADJCALLSTACKUP 0, 072    CGR %10, %1, implicit-def $cc73    %12:gr64bit = COPY %1074    %12:gr64bit = LOCGHI %12, 0, 14, 10, implicit killed $cc75    CGR %10, %2, implicit-def $cc76    %12:gr64bit = LOCGHI %12, 1, 14, 10, implicit killed $cc77    CGR %10, %3, implicit-def $cc78    %12:gr64bit = LOCGHI %12, 2, 14, 10, implicit killed $cc79    CGR %10, %4, implicit-def $cc80    %12:gr64bit = LOCGHI %12, 3, 14, 10, implicit killed $cc81    CGR %10, %5, implicit-def $cc82    %12:gr64bit = LOCGHI %12, 4, 14, 10, implicit killed $cc83    CGR %10, %6, implicit-def $cc84    %12:gr64bit = LOCGHI %12, 5, 14, 10, implicit killed $cc85    CGR %10, %7, implicit-def $cc86    %12:gr64bit = LOCGHI %12, 6, 14, 10, implicit killed $cc87    CGR %10, %8, implicit-def $cc88    %12:gr64bit = LOCGHI %12, 7, 14, 10, implicit killed $cc89    CGR %9, %10, implicit-def $cc90    %12:gr64bit = LOCGHI %12, 8, 14, 10, implicit killed $cc91    $r2d = COPY %1292    Return implicit $r2d93...94 95 96# Test CLGR -> CLG97# CHECK: name:            fun298# CHECK: CLG %10, %stack.0, 0, $noreg, implicit-def $cc :: (load (s64) from %stack.0)99# CHECK-NEXT: %12:gr64bit = LOCGHI %12, 8, 14, 12, implicit $cc100---101name:            fun2102alignment:       16103tracksRegLiveness: true104registers:105  - { id: 0, class: addr64bit }106  - { id: 1, class: gr64bit }107  - { id: 2, class: gr64bit }108  - { id: 3, class: gr64bit }109  - { id: 4, class: gr64bit }110  - { id: 5, class: gr64bit }111  - { id: 6, class: gr64bit }112  - { id: 7, class: gr64bit }113  - { id: 8, class: gr64bit }114  - { id: 9, class: gr64bit }115  - { id: 10, class: gr64bit }116  - { id: 11, class: gr64bit }117  - { id: 12, class: gr64bit }118  - { id: 13, class: gr64bit }119  - { id: 14, class: gr64bit }120  - { id: 15, class: gr64bit }121  - { id: 16, class: gr64bit }122  - { id: 17, class: gr64bit }123  - { id: 18, class: gr64bit }124  - { id: 19, class: gr64bit }125liveins:126  - { reg: '$r2d', virtual-reg: '%0' }127frameInfo:128  maxAlignment:    1129  adjustsStack:    true130  hasCalls:        true131machineFunctionInfo: {}132body:             |133  bb.0:134    liveins: $r2d135 136    %0:addr64bit = COPY $r2d137    %1:gr64bit = LG %0, 0, $noreg138    %2:gr64bit = LG %0, 16, $noreg139    %3:gr64bit = LG %0, 32, $noreg140    %4:gr64bit = LG %0, 48, $noreg141    %5:gr64bit = LG %0, 64, $noreg142    %6:gr64bit = LG %0, 80, $noreg143    %7:gr64bit = LG %0, 96, $noreg144    %8:gr64bit = LG %0, 112, $noreg145    %9:gr64bit = LG %0, 128, $noreg146    ADJCALLSTACKDOWN 0, 0147    CallBRASL @foo, csr_systemz_elf, implicit-def dead $r14d, implicit-def dead $cc, implicit $fpc, implicit-def $r2d148    %10:gr64bit = COPY $r2d149    ADJCALLSTACKUP 0, 0150    CGR %10, %1, implicit-def $cc151    %12:gr64bit = COPY %10152    %12:gr64bit = LOCGHI %12, 0, 14, 10, implicit killed $cc153    CGR %10, %2, implicit-def $cc154    %12:gr64bit = LOCGHI %12, 1, 14, 10, implicit killed $cc155    CGR %10, %3, implicit-def $cc156    %12:gr64bit = LOCGHI %12, 2, 14, 10, implicit killed $cc157    CGR %10, %4, implicit-def $cc158    %12:gr64bit = LOCGHI %12, 3, 14, 10, implicit killed $cc159    CGR %10, %5, implicit-def $cc160    %12:gr64bit = LOCGHI %12, 4, 14, 10, implicit killed $cc161    CGR %10, %6, implicit-def $cc162    %12:gr64bit = LOCGHI %12, 5, 14, 10, implicit killed $cc163    CGR %10, %7, implicit-def $cc164    %12:gr64bit = LOCGHI %12, 6, 14, 10, implicit killed $cc165    CGR %10, %8, implicit-def $cc166    %12:gr64bit = LOCGHI %12, 7, 14, 10, implicit killed $cc167    CLGR %9, %10, implicit-def $cc168    %12:gr64bit = LOCGHI %12, 8, 14, 10, implicit killed $cc169    $r2d = COPY %12170    Return implicit $r2d171...172 173 174# Test CR -> C175# CHECK: name:            fun3176# CHECK: C %10, %stack.0, 0, $noreg, implicit-def $cc :: (load (s32) from %stack.0)177# CHECK: %12:gr32bit = LOCHIMux %12, 8, 14, 12, implicit $cc178---179name:            fun3180alignment:       16181tracksRegLiveness: true182registers:183  - { id: 0, class: addr64bit }184  - { id: 1, class: gr32bit }185  - { id: 2, class: gr32bit }186  - { id: 3, class: gr32bit }187  - { id: 4, class: gr32bit }188  - { id: 5, class: gr32bit }189  - { id: 6, class: gr32bit }190  - { id: 7, class: gr32bit }191  - { id: 8, class: gr32bit }192  - { id: 9, class: gr32bit }193  - { id: 10, class: gr32bit }194  - { id: 11, class: gr32bit }195  - { id: 12, class: gr32bit }196  - { id: 13, class: gr32bit }197  - { id: 14, class: gr32bit }198  - { id: 15, class: gr32bit }199  - { id: 16, class: gr32bit }200  - { id: 17, class: gr32bit }201  - { id: 18, class: gr32bit }202  - { id: 19, class: gr32bit }203liveins:204  - { reg: '$r2d', virtual-reg: '%0' }205frameInfo:206  maxAlignment:    1207  adjustsStack:    true208  hasCalls:        true209machineFunctionInfo: {}210body:             |211  bb.0:212    liveins: $r2d213 214    %0:addr64bit = COPY $r2d215    %1:gr32bit = LMux %0, 0, $noreg216    %2:gr32bit = LMux %0, 8, $noreg217    %3:gr32bit = LMux %0, 16, $noreg218    %4:gr32bit = LMux %0, 24, $noreg219    %5:gr32bit = LMux %0, 32, $noreg220    %6:gr32bit = LMux %0, 40, $noreg221    %7:gr32bit = LMux %0, 48, $noreg222    %8:gr32bit = LMux %0, 56, $noreg223    %9:gr32bit = LMux %0, 64, $noreg224    ADJCALLSTACKDOWN 0, 0225    CallBRASL @foo, csr_systemz_elf, implicit-def dead $r14d, implicit-def dead $cc, implicit $fpc, implicit-def $r2l226    %10:gr32bit = COPY $r2l227    ADJCALLSTACKUP 0, 0228    CR %10, %1, implicit-def $cc229    %12:gr32bit = COPY %10230    %12:gr32bit = LOCHIMux %12, 0, 14, 10, implicit killed $cc231    CR %10, %2, implicit-def $cc232    %12:gr32bit = LOCHIMux %12, 1, 14, 10, implicit killed $cc233    CR %10, %3, implicit-def $cc234    %12:gr32bit = LOCHIMux %12, 2, 14, 10, implicit killed $cc235    CR %10, %4, implicit-def $cc236    %12:gr32bit = LOCHIMux %12, 3, 14, 10, implicit killed $cc237    CR %10, %5, implicit-def $cc238    %12:gr32bit = LOCHIMux %12, 4, 14, 10, implicit killed $cc239    CR %10, %6, implicit-def $cc240    %12:gr32bit = LOCHIMux %12, 5, 14, 10, implicit killed $cc241    CR %10, %7, implicit-def $cc242    %12:gr32bit = LOCHIMux %12, 6, 14, 10, implicit killed $cc243    CR %10, %8, implicit-def $cc244    %12:gr32bit = LOCHIMux %12, 7, 14, 10, implicit killed $cc245    CR %9, %10, implicit-def $cc246    %12:gr32bit = LOCHIMux %12, 8, 14, 10, implicit killed $cc247    $r2l = COPY %12248    Return implicit $r2l249...250 251 252# Test CLR -> CL253# CHECK: name:            fun4254# CHECK: CL %10, %stack.0, 0, $noreg, implicit-def $cc :: (load (s32) from %stack.0)255# CHECK: %12:gr32bit = LOCHIMux %12, 8, 14, 12, implicit $cc256---257name:            fun4258alignment:       16259tracksRegLiveness: true260registers:261  - { id: 0, class: addr64bit }262  - { id: 1, class: gr32bit }263  - { id: 2, class: gr32bit }264  - { id: 3, class: gr32bit }265  - { id: 4, class: gr32bit }266  - { id: 5, class: gr32bit }267  - { id: 6, class: gr32bit }268  - { id: 7, class: gr32bit }269  - { id: 8, class: gr32bit }270  - { id: 9, class: gr32bit }271  - { id: 10, class: gr32bit }272  - { id: 11, class: gr32bit }273  - { id: 12, class: gr32bit }274  - { id: 13, class: gr32bit }275  - { id: 14, class: gr32bit }276  - { id: 15, class: gr32bit }277  - { id: 16, class: gr32bit }278  - { id: 17, class: gr32bit }279  - { id: 18, class: gr32bit }280  - { id: 19, class: gr32bit }281liveins:282  - { reg: '$r2d', virtual-reg: '%0' }283frameInfo:284  maxAlignment:    1285  adjustsStack:    true286  hasCalls:        true287machineFunctionInfo: {}288body:             |289  bb.0:290    liveins: $r2d291 292    %0:addr64bit = COPY $r2d293    %1:gr32bit = LMux %0, 0, $noreg294    %2:gr32bit = LMux %0, 8, $noreg295    %3:gr32bit = LMux %0, 16, $noreg296    %4:gr32bit = LMux %0, 24, $noreg297    %5:gr32bit = LMux %0, 32, $noreg298    %6:gr32bit = LMux %0, 40, $noreg299    %7:gr32bit = LMux %0, 48, $noreg300    %8:gr32bit = LMux %0, 56, $noreg301    %9:gr32bit = LMux %0, 64, $noreg302    ADJCALLSTACKDOWN 0, 0303    CallBRASL @foo, csr_systemz_elf, implicit-def dead $r14d, implicit-def dead $cc, implicit $fpc, implicit-def $r2l304    %10:gr32bit = COPY $r2l305    ADJCALLSTACKUP 0, 0306    CR %10, %1, implicit-def $cc307    %12:gr32bit = COPY %10308    %12:gr32bit = LOCHIMux %12, 0, 14, 10, implicit killed $cc309    CR %10, %2, implicit-def $cc310    %12:gr32bit = LOCHIMux %12, 1, 14, 10, implicit killed $cc311    CR %10, %3, implicit-def $cc312    %12:gr32bit = LOCHIMux %12, 2, 14, 10, implicit killed $cc313    CR %10, %4, implicit-def $cc314    %12:gr32bit = LOCHIMux %12, 3, 14, 10, implicit killed $cc315    CR %10, %5, implicit-def $cc316    %12:gr32bit = LOCHIMux %12, 4, 14, 10, implicit killed $cc317    CR %10, %6, implicit-def $cc318    %12:gr32bit = LOCHIMux %12, 5, 14, 10, implicit killed $cc319    CR %10, %7, implicit-def $cc320    %12:gr32bit = LOCHIMux %12, 6, 14, 10, implicit killed $cc321    CR %10, %8, implicit-def $cc322    %12:gr32bit = LOCHIMux %12, 7, 14, 10, implicit killed $cc323    CLR %9, %10, implicit-def $cc324    %12:gr32bit = LOCHIMux %12, 8, 14, 10, implicit killed $cc325    $r2l = COPY %12326    Return implicit $r2l327...328