# 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.
...