| # RUN: llc -mtriple=s390x-linux-gnu -mcpu=z14 -start-before=postrapseudos %s -o - \ |
| # RUN: | FileCheck %s |
| # |
| # Test shortening of fused fp operations. |
| |
| --- | |
| define double @fun0(double %f1, double %f2, double %acc) { ret double 0.0 } |
| ... |
| |
| # CHECK-LABEL: fun0: |
| # CHECK: madbr %f0, %f4, %f2 |
| # CHECK-NEXT: wfmadb %f0, %f4, %v16, %f0 |
| # CHECK-NEXT: wfmadb %f0, %f4, %f0, %f2 |
| # CHECK-NEXT: maebr %f0, %f4, %f2 |
| # CHECK-NEXT: wfmasb %f0, %f4, %v16, %f0 |
| # CHECK-NEXT: wfmasb %f0, %f4, %f0, %f2 |
| # CHECK-NEXT: msdbr %f0, %f4, %f2 |
| # CHECK-NEXT: wfmsdb %f0, %f4, %v16, %f0 |
| # CHECK-NEXT: wfmsdb %f0, %f4, %f0, %f2 |
| # CHECK-NEXT: msebr %f0, %f4, %f2 |
| # CHECK-NEXT: wfmssb %f0, %f4, %v16, %f0 |
| # CHECK-NEXT: wfmssb %f0, %f4, %f0, %f2 |
| # CHECK-NEXT: br %r14 |
| --- |
| name: fun0 |
| alignment: 16 |
| tracksRegLiveness: true |
| liveins: |
| - { reg: '$f0d' } |
| - { reg: '$f2d' } |
| - { reg: '$f4d' } |
| frameInfo: |
| maxAlignment: 1 |
| maxCallFrameSize: 0 |
| fixedStack: |
| - { id: 0, offset: -160, size: 8, alignment: 8 } |
| machineFunctionInfo: {} |
| body: | |
| bb.0 (%ir-block.0): |
| liveins: $f0d, $f2d, $f4d, $f16d |
| |
| renamable $f0d = nofpexcept WFMADB renamable $f4d, renamable $f2d, renamable $f0d, implicit $fpc |
| renamable $f0d = nofpexcept WFMADB renamable $f4d, renamable $f16d, renamable $f0d, implicit $fpc |
| renamable $f0d = nofpexcept WFMADB renamable $f4d, renamable $f0d, renamable $f2d, implicit $fpc |
| |
| renamable $f0s = nofpexcept WFMASB renamable $f4s, renamable $f2s, renamable $f0s, implicit $fpc |
| renamable $f0s = nofpexcept WFMASB renamable $f4s, renamable $f16s, renamable $f0s, implicit $fpc |
| renamable $f0s = nofpexcept WFMASB renamable $f4s, renamable $f0s, renamable $f2s, implicit $fpc |
| |
| renamable $f0d = nofpexcept WFMSDB renamable $f4d, renamable $f2d, renamable $f0d, implicit $fpc |
| renamable $f0d = nofpexcept WFMSDB renamable $f4d, renamable $f16d, renamable $f0d, implicit $fpc |
| renamable $f0d = nofpexcept WFMSDB renamable $f4d, renamable $f0d, renamable $f2d, implicit $fpc |
| |
| renamable $f0s = nofpexcept WFMSSB renamable $f4s, renamable $f2s, renamable $f0s, implicit $fpc |
| renamable $f0s = nofpexcept WFMSSB renamable $f4s, renamable $f16s, renamable $f0s, implicit $fpc |
| renamable $f0s = nofpexcept WFMSSB renamable $f4s, renamable $f0s, renamable $f2s, implicit $fpc |
| |
| Return implicit $f0d |
| |
| ... |