1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
# 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.
...
|