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