| # REQUIRES: asserts |
| # RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 \ |
| # RUN: -start-before=prologepilog -debug-only=reginfo --filetype=null \ |
| # RUN: -verify-machineinstrs %s 2>&1 >/dev/null | FileCheck %s --check-prefix=P8 |
| # RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr9 \ |
| # RUN: -start-before=prologepilog -debug-only=reginfo --filetype=null \ |
| # RUN: -verify-machineinstrs %s 2>&1 >/dev/null | FileCheck %s --check-prefix=P9 |
| # RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr9 \ |
| # RUN: -start-before=prologepilog -debug-only=reginfo \ |
| # RUN: --filetype=null -ppc-enable-pe-vector-spills \ |
| # RUN: -verify-machineinstrs %s 2>&1 >/dev/null | FileCheck %s --check-prefix=P9-REGSPILL |
| # RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr10 \ |
| # RUN: -start-before=prologepilog -debug-only=reginfo --filetype=null \ |
| # RUN: -verify-machineinstrs %s 2>&1 >/dev/null | FileCheck %s -check-prefix=P10 |
| |
| --- |
| name: SpillGPR |
| alignment: 16 |
| tracksRegLiveness: true |
| liveins: |
| body: | |
| bb.0.entry: |
| $r14 = IMPLICIT_DEF |
| $r15 = IMPLICIT_DEF |
| $r16 = IMPLICIT_DEF |
| $r17 = IMPLICIT_DEF |
| $lr8 = IMPLICIT_DEF |
| BLR8 implicit undef $lr8, implicit undef $rm |
| ## TODO: Calling requiresFrameIndexScavenging from PEI::runOnMachineFunction |
| ## always returns TRUE because MFI.isCalleeSavedInfoValid() always |
| ## indicates that the callee saved info is invalid at that point. The |
| ## info becomes valid for later calls. Can we do better? |
| # P8: requiresFrameIndexScavenging for SpillGPR. |
| # P8: TRUE - Invalid callee saved info. |
| # P8: requiresFrameIndexScavenging for SpillGPR. |
| # P8: FALSE - Scavenging is not required. |
| # P9: requiresFrameIndexScavenging for SpillGPR. |
| # P9: TRUE - Invalid callee saved info. |
| # P9: requiresFrameIndexScavenging for SpillGPR. |
| # P9: FALSE - Scavenging is not required. |
| # P9-REGSPILL: requiresFrameIndexScavenging for SpillGPR. |
| # P9-REGSPILL: TRUE - Invalid callee saved info. |
| # P9-REGSPILL: requiresFrameIndexScavenging for SpillGPR. |
| # P9-REGSPILL: FALSE - Scavenging is not required. |
| # P10: requiresFrameIndexScavenging for SpillGPR. |
| # P10: TRUE - Invalid callee saved info. |
| # P10: requiresFrameIndexScavenging for SpillGPR. |
| # P10: FALSE - Scavenging is not required. |
| ... |
| |
| --- |
| name: SpillFPR |
| alignment: 16 |
| tracksRegLiveness: true |
| liveins: |
| body: | |
| bb.0.entry: |
| $f14 = IMPLICIT_DEF |
| $f15 = IMPLICIT_DEF |
| $f16 = IMPLICIT_DEF |
| $f17 = IMPLICIT_DEF |
| $lr8 = IMPLICIT_DEF |
| BLR8 implicit undef $lr8, implicit undef $rm |
| |
| # P8: requiresFrameIndexScavenging for SpillFPR. |
| # P8: TRUE - Invalid callee saved info. |
| # P8: requiresFrameIndexScavenging for SpillFPR. |
| # P8: FALSE - Scavenging is not required. |
| # P9: requiresFrameIndexScavenging for SpillFPR. |
| # P9: TRUE - Invalid callee saved info. |
| # P9: requiresFrameIndexScavenging for SpillFPR. |
| # P9: FALSE - Scavenging is not required. |
| # P9-REGSPILL: requiresFrameIndexScavenging for SpillFPR. |
| # P9-REGSPILL: TRUE - Invalid callee saved info. |
| # P9-REGSPILL: requiresFrameIndexScavenging for SpillFPR. |
| # P9-REGSPILL: FALSE - Scavenging is not required. |
| # P10: requiresFrameIndexScavenging for SpillFPR. |
| # P10: TRUE - Invalid callee saved info. |
| # P10: requiresFrameIndexScavenging for SpillFPR. |
| # P10: FALSE - Scavenging is not required. |
| ... |
| |
| --- |
| name: SpillVR |
| alignment: 16 |
| tracksRegLiveness: true |
| liveins: |
| body: | |
| bb.0.entry: |
| $v20 = IMPLICIT_DEF |
| $v21 = IMPLICIT_DEF |
| $v22 = IMPLICIT_DEF |
| $v23 = IMPLICIT_DEF |
| $lr8 = IMPLICIT_DEF |
| BLR8 implicit undef $lr8, implicit undef $rm |
| |
| # P8: requiresFrameIndexScavenging for SpillVR. |
| # P8: TRUE - Invalid callee saved info. |
| # P8: requiresFrameIndexScavenging for SpillVR. |
| # P8: Memory Operand: STVX for register $v20. |
| # P8: TRUE - Memory operand is X-Form. |
| # P9: requiresFrameIndexScavenging for SpillVR. |
| # P9: TRUE - Invalid callee saved info. |
| # P9: requiresFrameIndexScavenging for SpillVR. |
| # P9: Memory Operand: STVX for register $v20. |
| # P9: TRUE - Memory operand is X-Form. |
| # P9-REGSPILL: requiresFrameIndexScavenging for SpillVR. |
| # P9-REGSPILL: TRUE - Invalid callee saved info. |
| # P9-REGSPILL: requiresFrameIndexScavenging for SpillVR. |
| # P9-REGSPILL: Memory Operand: STVX for register $v20. |
| # P9-REGSPILL: TRUE - Memory operand is X-Form. |
| # P10: requiresFrameIndexScavenging for SpillVR. |
| # P10: TRUE - Invalid callee saved info. |
| # P10: requiresFrameIndexScavenging for SpillVR. |
| # P10: Memory Operand: STVX for register $v20. |
| # P10: TRUE - Memory operand is X-Form. |
| ... |
| |
| --- |
| name: SpillMixed |
| alignment: 16 |
| tracksRegLiveness: true |
| liveins: |
| body: | |
| bb.0.entry: |
| $r14 = IMPLICIT_DEF |
| $r15 = IMPLICIT_DEF |
| $f16 = IMPLICIT_DEF |
| $f17 = IMPLICIT_DEF |
| $v20 = IMPLICIT_DEF |
| $v21 = IMPLICIT_DEF |
| $lr8 = IMPLICIT_DEF |
| BLR8 implicit undef $lr8, implicit undef $rm |
| |
| # P8: requiresFrameIndexScavenging for SpillMixed. |
| # P8: TRUE - Invalid callee saved info. |
| # P9: requiresFrameIndexScavenging for SpillMixed. |
| # P9: TRUE - Invalid callee saved info. |
| # P9-REGSPILL: requiresFrameIndexScavenging for SpillMixed. |
| # P9-REGSPILL: TRUE - Invalid callee saved info. |
| # P10: requiresFrameIndexScavenging for SpillMixed. |
| # P10: TRUE - Invalid callee saved info. |
| ... |