| # RUN: llc -mtriple=s390x-linux-gnu -mcpu=z16 -start-before=peephole-opt \ |
| # RUN: -stop-after=peephole-opt %s -o - | FileCheck %s |
| |
| --- | |
| define double @f1(ptr %x, i32 %a, i32 %b, i32 %limit, ptr %dst) #0 { |
| %arrayidx1 = getelementptr inbounds double, ptr %x, i64 1 |
| ret double 0.0 |
| } |
| define double @f2(ptr %x, i32 %a, i32 %b, i32 %limit, ptr %dst) #0 { |
| %arrayidx1 = getelementptr inbounds double, ptr %x, i64 1 |
| ret double 0.0 |
| } |
| |
| ... |
| |
| # Do not fold where CC is live. |
| # CHECK: name: f1 |
| # CHECK: {{.*}} WFADB |
| --- |
| name: f1 |
| alignment: 16 |
| tracksRegLiveness: true |
| registers: |
| - { id: 0, class: addr64bit } |
| - { id: 1, class: gr32bit } |
| - { id: 2, class: gr32bit } |
| - { id: 3, class: gr32bit } |
| - { id: 4, class: addr64bit } |
| - { id: 5, class: vr64bit } |
| - { id: 6, class: vr64bit } |
| - { id: 7, class: vr64bit } |
| - { id: 8, class: grx32bit } |
| liveins: |
| - { reg: '$r2d', virtual-reg: '%0' } |
| - { reg: '$r3l', virtual-reg: '%1' } |
| - { reg: '$r4l', virtual-reg: '%2' } |
| - { reg: '$r5l', virtual-reg: '%3' } |
| - { reg: '$r6d', virtual-reg: '%4' } |
| frameInfo: |
| maxAlignment: 1 |
| machineFunctionInfo: {} |
| body: | |
| bb.0: |
| liveins: $r2d, $r3l, $r4l, $r5l, $r6d |
| |
| %4:addr64bit = COPY $r6d |
| %3:gr32bit = COPY $r5l |
| %2:gr32bit = COPY $r4l |
| %1:gr32bit = COPY $r3l |
| %0:addr64bit = COPY $r2d |
| CLFIMux %3, 42, implicit-def $cc |
| %5:vr64bit = VL64 %0, 0, $noreg :: (load (s64) from %ir.x) |
| %6:vr64bit = VL64 %0, 8, $noreg :: (load (s64) from %ir.arrayidx1) |
| %7:vr64bit = nsz arcp contract afn reassoc nofpexcept WFADB killed %6, killed %5, implicit $fpc |
| %8:grx32bit = SELRMux %2, %1, 14, 4, implicit $cc |
| STMux killed %8, %4, 0, $noreg :: (store (s32) into %ir.dst) |
| $f0d = COPY %7 |
| Return implicit $f0d |
| |
| ... |
| |
| # Do not fold where CC is live in. |
| # CHECK: name: f2 |
| # CHECK: {{.*}} WFADB |
| --- |
| name: f2 |
| alignment: 16 |
| tracksRegLiveness: true |
| registers: |
| - { id: 0, class: addr64bit } |
| - { id: 1, class: gr32bit } |
| - { id: 2, class: gr32bit } |
| - { id: 3, class: gr32bit } |
| - { id: 4, class: addr64bit } |
| - { id: 5, class: vr64bit } |
| - { id: 6, class: vr64bit } |
| - { id: 7, class: vr64bit } |
| - { id: 8, class: grx32bit } |
| liveins: |
| - { reg: '$r2d', virtual-reg: '%0' } |
| - { reg: '$r3l', virtual-reg: '%1' } |
| - { reg: '$r4l', virtual-reg: '%2' } |
| - { reg: '$r5l', virtual-reg: '%3' } |
| - { reg: '$r6d', virtual-reg: '%4' } |
| frameInfo: |
| maxAlignment: 1 |
| machineFunctionInfo: {} |
| body: | |
| bb.0: |
| liveins: $r2d, $r3l, $r4l, $r5l, $r6d, $cc |
| |
| %4:addr64bit = COPY $r6d |
| %3:gr32bit = COPY $r5l |
| %2:gr32bit = COPY $r4l |
| %1:gr32bit = COPY $r3l |
| %0:addr64bit = COPY $r2d |
| %5:vr64bit = VL64 %0, 0, $noreg :: (load (s64) from %ir.x) |
| %6:vr64bit = VL64 %0, 8, $noreg :: (load (s64) from %ir.arrayidx1) |
| %7:vr64bit = nsz arcp contract afn reassoc nofpexcept WFADB killed %6, killed %5, implicit $fpc |
| %8:grx32bit = SELRMux %2, %1, 14, 4, implicit $cc |
| STMux killed %8, %4, 0, $noreg :: (store (s32) into %ir.dst) |
| $f0d = COPY %7 |
| Return implicit $f0d |
| |
| ... |