xref: /llvm-project/llvm/test/CodeGen/PowerPC/frame_index_scavenging.mir (revision 6215f49b8f2fa479535ec27a0f029081ac394100)
1# REQUIRES: asserts
2# RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 \
3# RUN:     -start-before=prologepilog -debug-only=reginfo --filetype=null \
4# RUN:     -verify-machineinstrs %s 2>&1 >/dev/null | FileCheck %s --check-prefix=P8
5# RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr9 \
6# RUN:     -start-before=prologepilog -debug-only=reginfo --filetype=null \
7# RUN:     -verify-machineinstrs %s 2>&1 >/dev/null | FileCheck %s --check-prefix=P9
8# RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr9 \
9# RUN:     -start-before=prologepilog -debug-only=reginfo \
10# RUN:     --filetype=null -ppc-enable-pe-vector-spills \
11# RUN:     -verify-machineinstrs %s 2>&1 >/dev/null | FileCheck %s --check-prefix=P9-REGSPILL
12# RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr10 \
13# RUN:     -start-before=prologepilog -debug-only=reginfo --filetype=null \
14# RUN:     -verify-machineinstrs %s 2>&1 >/dev/null | FileCheck %s -check-prefix=P10
15
16---
17name:            SpillGPR
18alignment:       16
19tracksRegLiveness: true
20liveins:
21body:             |
22  bb.0.entry:
23    $r14 = IMPLICIT_DEF
24    $r15 = IMPLICIT_DEF
25    $r16 = IMPLICIT_DEF
26    $r17 = IMPLICIT_DEF
27    $lr8 = IMPLICIT_DEF
28    BLR8 implicit undef $lr8, implicit undef $rm
29## TODO: Calling requiresFrameIndexScavenging from PEI::runOnMachineFunction
30##       always returns TRUE because MFI.isCalleeSavedInfoValid() always
31##       indicates that the callee saved info is invalid at that point. The
32##       info becomes valid for later calls. Can we do better?
33# P8: requiresFrameIndexScavenging for SpillGPR.
34# P8: TRUE - Invalid callee saved info.
35# P8: requiresFrameIndexScavenging for SpillGPR.
36# P8: FALSE - Scavenging is not required.
37# P9: requiresFrameIndexScavenging for SpillGPR.
38# P9: TRUE - Invalid callee saved info.
39# P9: requiresFrameIndexScavenging for SpillGPR.
40# P9: FALSE - Scavenging is not required.
41# P9-REGSPILL: requiresFrameIndexScavenging for SpillGPR.
42# P9-REGSPILL: TRUE - Invalid callee saved info.
43# P9-REGSPILL: requiresFrameIndexScavenging for SpillGPR.
44# P9-REGSPILL: FALSE - Scavenging is not required.
45# P10: requiresFrameIndexScavenging for SpillGPR.
46# P10: TRUE - Invalid callee saved info.
47# P10: requiresFrameIndexScavenging for SpillGPR.
48# P10: FALSE - Scavenging is not required.
49...
50
51---
52name:            SpillFPR
53alignment:       16
54tracksRegLiveness: true
55liveins:
56body:             |
57  bb.0.entry:
58    $f14 = IMPLICIT_DEF
59    $f15 = IMPLICIT_DEF
60    $f16 = IMPLICIT_DEF
61    $f17 = IMPLICIT_DEF
62    $lr8 = IMPLICIT_DEF
63    BLR8 implicit undef $lr8, implicit undef $rm
64
65# P8: requiresFrameIndexScavenging for SpillFPR.
66# P8: TRUE - Invalid callee saved info.
67# P8: requiresFrameIndexScavenging for SpillFPR.
68# P8: FALSE - Scavenging is not required.
69# P9: requiresFrameIndexScavenging for SpillFPR.
70# P9: TRUE - Invalid callee saved info.
71# P9: requiresFrameIndexScavenging for SpillFPR.
72# P9: FALSE - Scavenging is not required.
73# P9-REGSPILL: requiresFrameIndexScavenging for SpillFPR.
74# P9-REGSPILL: TRUE - Invalid callee saved info.
75# P9-REGSPILL: requiresFrameIndexScavenging for SpillFPR.
76# P9-REGSPILL: FALSE - Scavenging is not required.
77# P10: requiresFrameIndexScavenging for SpillFPR.
78# P10: TRUE - Invalid callee saved info.
79# P10: requiresFrameIndexScavenging for SpillFPR.
80# P10: FALSE - Scavenging is not required.
81...
82
83---
84name:            SpillVR
85alignment:       16
86tracksRegLiveness: true
87liveins:
88body:             |
89  bb.0.entry:
90    $v20 = IMPLICIT_DEF
91    $v21 = IMPLICIT_DEF
92    $v22 = IMPLICIT_DEF
93    $v23 = IMPLICIT_DEF
94    $lr8 = IMPLICIT_DEF
95    BLR8 implicit undef $lr8, implicit undef $rm
96
97# P8: requiresFrameIndexScavenging for SpillVR.
98# P8: TRUE - Invalid callee saved info.
99# P8: requiresFrameIndexScavenging for SpillVR.
100# P8: Memory Operand: STVX for register $v20.
101# P8: TRUE - Memory operand is X-Form.
102# P9: requiresFrameIndexScavenging for SpillVR.
103# P9: TRUE - Invalid callee saved info.
104# P9: requiresFrameIndexScavenging for SpillVR.
105# P9: Memory Operand: STVX for register $v20.
106# P9: TRUE - Memory operand is X-Form.
107# P9-REGSPILL: requiresFrameIndexScavenging for SpillVR.
108# P9-REGSPILL: TRUE - Invalid callee saved info.
109# P9-REGSPILL: requiresFrameIndexScavenging for SpillVR.
110# P9-REGSPILL: Memory Operand: STVX for register $v20.
111# P9-REGSPILL: TRUE - Memory operand is X-Form.
112# P10: requiresFrameIndexScavenging for SpillVR.
113# P10: TRUE - Invalid callee saved info.
114# P10: requiresFrameIndexScavenging for SpillVR.
115# P10: Memory Operand: STVX for register $v20.
116# P10: TRUE - Memory operand is X-Form.
117...
118
119---
120name:            SpillMixed
121alignment:       16
122tracksRegLiveness: true
123liveins:
124body:             |
125  bb.0.entry:
126    $r14 = IMPLICIT_DEF
127    $r15 = IMPLICIT_DEF
128    $f16 = IMPLICIT_DEF
129    $f17 = IMPLICIT_DEF
130    $v20 = IMPLICIT_DEF
131    $v21 = IMPLICIT_DEF
132    $lr8 = IMPLICIT_DEF
133    BLR8 implicit undef $lr8, implicit undef $rm
134
135# P8: requiresFrameIndexScavenging for SpillMixed.
136# P8: TRUE - Invalid callee saved info.
137# P9: requiresFrameIndexScavenging for SpillMixed.
138# P9: TRUE - Invalid callee saved info.
139# P9-REGSPILL: requiresFrameIndexScavenging for SpillMixed.
140# P9-REGSPILL: TRUE - Invalid callee saved info.
141# P10: requiresFrameIndexScavenging for SpillMixed.
142# P10: TRUE - Invalid callee saved info.
143...
144