brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.7 KiB · 65429c5 Raw
220 lines · plain
1# RUN: llc -mtriple=s390x-linux-gnu -mcpu=z14 -start-before=greedy %s -o - \2# RUN:   | FileCheck %s3#4# Test folding of a memory operand into logical compare with an immediate.5 6--- |7  define i32 @fun0(ptr %src, i32 %arg) { ret i32 0 }8  define i64 @fun1(ptr %src, i64 %arg) { ret i64 0 }9  define i32 @fun2(ptr %src, i32 %arg) { ret i32 0 }10  define i64 @fun3(ptr %src, i64 %arg) { ret i64 0 }11...12 13 14# CHECK-LABEL: fun0:15# CHECK-LABEL: .LBB0_2:16# CHECK:	msc     %r0, 160(%r15)                  # 4-byte Folded Reload17---18name:            fun019alignment:       1620tracksRegLiveness: true21registers:22  - { id: 0, class: grx32bit }23  - { id: 1, class: grx32bit }24  - { id: 2, class: addr64bit }25  - { id: 3, class: gr32bit }26  - { id: 4, class: grx32bit }27  - { id: 5, class: grx32bit }28  - { id: 6, class: gr32bit }29  - { id: 7, class: gr32bit }30  - { id: 8, class: gr32bit }31liveins:32  - { reg: '$r2d', virtual-reg: '%2' }33  - { reg: '$r3l', virtual-reg: '%3' }34frameInfo:35  maxAlignment:    136  hasOpaqueSPAdjustment: true37machineFunctionInfo: {}38body:             |39  bb.0:40    successors: %bb.1(0x30000000), %bb.2(0x50000000)41    liveins: $r2d, $r3l42  43    %3:gr32bit = COPY $r3l44    %2:addr64bit = COPY $r2d45    %6:gr32bit = LHIMux 046    CHIMux %3, 0, implicit-def $cc47    %8:gr32bit = LHIMux 048    BRC 14, 6, %bb.2, implicit killed $cc49    J %bb.150  51  bb.1:52    %8:gr32bit = LMux %2, 0, $noreg :: (load (s32) from %ir.src)53    INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def early-clobber $r15d54  55  bb.2:56    INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def early-clobber $r15d57    %6:gr32bit = MSRKC %8, %6, implicit-def $cc58    %6:gr32bit = LOCHIMux %6, 1, 14, 6, implicit killed $cc59    %7:gr32bit = NRK %3, %6, implicit-def dead $cc60    $r2l = COPY %761    Return implicit $r2l62 63...64 65 66# CHECK-LABEL: fun1:67# CHECK-LABEL: .LBB1_2:68# CHECK:	msc     %r0, 160(%r15)                  # 4-byte Folded Reload69---70name:            fun171alignment:       1672tracksRegLiveness: true73registers:74  - { id: 0, class: grx32bit }75  - { id: 1, class: grx32bit }76  - { id: 2, class: addr64bit }77  - { id: 3, class: gr32bit }78  - { id: 4, class: grx32bit }79  - { id: 5, class: grx32bit }80  - { id: 6, class: gr32bit }81  - { id: 7, class: gr32bit }82  - { id: 8, class: gr32bit }83liveins:84  - { reg: '$r2d', virtual-reg: '%2' }85  - { reg: '$r3l', virtual-reg: '%3' }86frameInfo:87  maxAlignment:    188  hasOpaqueSPAdjustment: true89machineFunctionInfo: {}90body:             |91  bb.0:92    successors: %bb.1(0x30000000), %bb.2(0x50000000)93    liveins: $r2d, $r3l94  95    %3:gr32bit = COPY $r3l96    %2:addr64bit = COPY $r2d97    %6:gr32bit = LHIMux 098    CHIMux %3, 0, implicit-def $cc99    %8:gr32bit = LHIMux 0100    BRC 14, 6, %bb.2, implicit killed $cc101    J %bb.1102  103  bb.1:104    %8:gr32bit = LMux %2, 0, $noreg :: (load (s32) from %ir.src)105    INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def early-clobber $r15d106  107  bb.2:108    INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def early-clobber $r15d109    %6:gr32bit = MSRKC %6, %8, implicit-def $cc110    %6:gr32bit = LOCHIMux %6, 1, 14, 6, implicit killed $cc111    %7:gr32bit = NRK %3, %6, implicit-def dead $cc112    $r2l = COPY %7113    Return implicit $r2l114 115...116 117 118# CHECK-LABEL: fun2:119# CHECK-LABEL: .LBB2_2:120# CHECK:	msgc    %r0, 160(%r15)                  # 8-byte Folded Reload121---122name:            fun2123alignment:       16124tracksRegLiveness: true125registers:126  - { id: 0, class: gr64bit }127  - { id: 1, class: gr64bit }128  - { id: 2, class: addr64bit }129  - { id: 3, class: gr64bit }130  - { id: 4, class: gr64bit }131  - { id: 5, class: gr64bit }132  - { id: 6, class: gr64bit }133  - { id: 7, class: gr64bit }134  - { id: 8, class: gr64bit }135liveins:136  - { reg: '$r2d', virtual-reg: '%2' }137  - { reg: '$r3d', virtual-reg: '%3' }138frameInfo:139  maxAlignment:    1140  hasOpaqueSPAdjustment: true141machineFunctionInfo: {}142body:             |143  bb.0:144    successors: %bb.1(0x30000000), %bb.2(0x50000000)145    liveins: $r2d, $r3d146  147    %3:gr64bit = COPY $r3d148    %2:addr64bit = COPY $r2d149    %6:gr64bit = LGHI 0150    CGHI %3, 0, implicit-def $cc151    %8:gr64bit = LGHI 0152    BRC 14, 6, %bb.2, implicit killed $cc153    J %bb.1154  155  bb.1:156    %8:gr64bit = LG %2, 0, $noreg :: (load (s64) from %ir.src)157    INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def early-clobber $r15d158  159  bb.2:160    INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def early-clobber $r15d161    %6:gr64bit = MSGRKC %8, %6, implicit-def $cc162    %6:gr64bit = LOCGHI %6, 1, 14, 6, implicit killed $cc163    %7:gr64bit = NGRK %3, %6, implicit-def dead $cc164    $r2d = COPY %7165    Return implicit $r2d166 167...168 169 170# CHECK-LABEL: fun3:171# CHECK-LABEL: .LBB3_2:172# CHECK:	msgc    %r0, 160(%r15)                  # 8-byte Folded Reload173---174name:            fun3175alignment:       16176tracksRegLiveness: true177registers:178  - { id: 0, class: gr64bit }179  - { id: 1, class: gr64bit }180  - { id: 2, class: addr64bit }181  - { id: 3, class: gr64bit }182  - { id: 4, class: gr64bit }183  - { id: 5, class: gr64bit }184  - { id: 6, class: gr64bit }185  - { id: 7, class: gr64bit }186  - { id: 8, class: gr64bit }187liveins:188  - { reg: '$r2d', virtual-reg: '%2' }189  - { reg: '$r3d', virtual-reg: '%3' }190frameInfo:191  maxAlignment:    1192  hasOpaqueSPAdjustment: true193machineFunctionInfo: {}194body:             |195  bb.0:196    successors: %bb.1(0x30000000), %bb.2(0x50000000)197    liveins: $r2d, $r3d198  199    %3:gr64bit = COPY $r3d200    %2:addr64bit = COPY $r2d201    %6:gr64bit = LGHI 0202    CGHI %3, 0, implicit-def $cc203    %8:gr64bit = LGHI 0204    BRC 14, 6, %bb.2, implicit killed $cc205    J %bb.1206  207  bb.1:208    %8:gr64bit = LG %2, 0, $noreg :: (load (s64) from %ir.src)209    INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def early-clobber $r15d210  211  bb.2:212    INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def early-clobber $r15d213    %6:gr64bit = MSGRKC %6, %8, implicit-def $cc214    %6:gr64bit = LOCGHI %6, 1, 14, 6, implicit killed $cc215    %7:gr64bit = NGRK %3, %6, implicit-def dead $cc216    $r2d = COPY %7217    Return implicit $r2d218 219...220