diff --git a/llvm/lib/Target/PowerPC/P9InstrResources.td b/llvm/lib/Target/PowerPC/P9InstrResources.td --- a/llvm/lib/Target/PowerPC/P9InstrResources.td +++ b/llvm/lib/Target/PowerPC/P9InstrResources.td @@ -1411,7 +1411,7 @@ (instregex "NOP_GT_PWR(6|7)$"), (instregex "TLB(IA|IVAX|SX|SX2|SX2D|LD|LI|RE|RE2|WE|WE2)$"), (instregex "WRTEE(I)?$"), - (instregex "HASH(ST|STP|CHK|CHKP)$"), + (instregex "HASH(ST|STP|CHK|CHKP)(8)?$"), ATTN, CLRBHRB, MFBHRBE, diff --git a/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp b/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp --- a/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp +++ b/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp @@ -675,7 +675,8 @@ : PPC::MFCR); const MCInstrDesc &StoreWordInst = TII.get(isPPC64 ? PPC::STW8 : PPC::STW); const MCInstrDesc &HashST = - TII.get(HasPrivileged ? PPC::HASHSTP : PPC::HASHST); + TII.get(isPPC64 ? (HasPrivileged ? PPC::HASHSTP8 : PPC::HASHST8) + : (HasPrivileged ? PPC::HASHSTP : PPC::HASHST)); // Regarding this assert: Even though LR is saved in the caller's frame (i.e., // LROffset is positive), that slot is callee-owned. Because PPC32 SVR4 has no @@ -1591,7 +1592,8 @@ const MCInstrDesc& MoveToCRInst = TII.get( isPPC64 ? PPC::MTOCRF8 : PPC::MTOCRF); const MCInstrDesc &HashChk = - TII.get(HasPrivileged ? PPC::HASHCHKP : PPC::HASHCHK); + TII.get(isPPC64 ? (HasPrivileged ? PPC::HASHCHKP8 : PPC::HASHCHK8) + : (HasPrivileged ? PPC::HASHCHKP : PPC::HASHCHK)); int64_t LROffset = getReturnSaveOffset(); int64_t FPOffset = 0; diff --git a/llvm/lib/Target/PowerPC/PPCInstr64Bit.td b/llvm/lib/Target/PowerPC/PPCInstr64Bit.td --- a/llvm/lib/Target/PowerPC/PPCInstr64Bit.td +++ b/llvm/lib/Target/PowerPC/PPCInstr64Bit.td @@ -1686,12 +1686,12 @@ // These instructions store a hash computed from the value of the link register // and the value of the stack pointer. let mayStore = 1 in { -def HASHST : XForm_XD6_RA5_RB5<31, 722, (outs), - (ins g8rc:$RB, memrihash:$D_RA_XD), - "hashst $RB, $D_RA_XD", IIC_IntGeneral, []>; -def HASHSTP : XForm_XD6_RA5_RB5<31, 658, (outs), +def HASHST8 : XForm_XD6_RA5_RB5<31, 722, (outs), (ins g8rc:$RB, memrihash:$D_RA_XD), - "hashstp $RB, $D_RA_XD", IIC_IntGeneral, []>; + "hashst $RB, $D_RA_XD", IIC_IntGeneral, []>; +def HASHSTP8 : XForm_XD6_RA5_RB5<31, 658, (outs), + (ins g8rc:$RB, memrihash:$D_RA_XD), + "hashstp $RB, $D_RA_XD", IIC_IntGeneral, []>; } // These instructions check a hash computed from the value of the link register @@ -1699,12 +1699,12 @@ // instruction may TRAP if the hash does not match the hash stored at the // specified address. let mayLoad = 1, hasSideEffects = 1 in { -def HASHCHK : XForm_XD6_RA5_RB5<31, 754, (outs), - (ins g8rc:$RB, memrihash:$D_RA_XD), - "hashchk $RB, $D_RA_XD", IIC_IntGeneral, []>; -def HASHCHKP : XForm_XD6_RA5_RB5<31, 690, (outs), +def HASHCHK8 : XForm_XD6_RA5_RB5<31, 754, (outs), (ins g8rc:$RB, memrihash:$D_RA_XD), - "hashchkp $RB, $D_RA_XD", IIC_IntGeneral, []>; + "hashchk $RB, $D_RA_XD", IIC_IntGeneral, []>; +def HASHCHKP8 : XForm_XD6_RA5_RB5<31, 690, (outs), + (ins g8rc:$RB, memrihash:$D_RA_XD), + "hashchkp $RB, $D_RA_XD", IIC_IntGeneral, []>; } let Interpretation64Bit = 1, isCodeGenOnly = 1, hasSideEffects = 1 in diff --git a/llvm/lib/Target/PowerPC/PPCInstrInfo.td b/llvm/lib/Target/PowerPC/PPCInstrInfo.td --- a/llvm/lib/Target/PowerPC/PPCInstrInfo.td +++ b/llvm/lib/Target/PowerPC/PPCInstrInfo.td @@ -5468,6 +5468,30 @@ (i64 (INSERT_SUBREG (i64 (IMPLICIT_DEF)), Word, sub_32)); } +// These instructions store a hash computed from the value of the link register +// and the value of the stack pointer. +let mayStore = 1, isCodeGenOnly = 1 in { +def HASHST : XForm_XD6_RA5_RB5<31, 722, (outs), + (ins gprc:$RB, memrihash:$D_RA_XD), + "hashst $RB, $D_RA_XD", IIC_IntGeneral, []>; +def HASHSTP : XForm_XD6_RA5_RB5<31, 658, (outs), + (ins gprc:$RB, memrihash:$D_RA_XD), + "hashstp $RB, $D_RA_XD", IIC_IntGeneral, []>; +} + +// These instructions check a hash computed from the value of the link register +// and the value of the stack pointer. The hasSideEffects flag is needed as the +// instruction may TRAP if the hash does not match the hash stored at the +// specified address. +let mayLoad = 1, hasSideEffects = 1, isCodeGenOnly = 1 in { +def HASHCHK : XForm_XD6_RA5_RB5<31, 754, (outs), + (ins gprc:$RB, memrihash:$D_RA_XD), + "hashchk $RB, $D_RA_XD", IIC_IntGeneral, []>; +def HASHCHKP : XForm_XD6_RA5_RB5<31, 690, (outs), + (ins gprc:$RB, memrihash:$D_RA_XD), + "hashchkp $RB, $D_RA_XD", IIC_IntGeneral, []>; +} + // Now both high word and low word are reversed, next // swap the high word and low word. def : Pat<(i64 (bitreverse i64:$A)), diff --git a/llvm/test/CodeGen/PowerPC/ppc64-rop-protection-aix.ll b/llvm/test/CodeGen/PowerPC/ppc64-rop-protection-aix.ll new file mode 100644 --- /dev/null +++ b/llvm/test/CodeGen/PowerPC/ppc64-rop-protection-aix.ll @@ -0,0 +1,2842 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \ +; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -vec-extabi \ +; RUN: -mattr=+rop-protect < %s | FileCheck %s --check-prefix BE-P10 +; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \ +; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -vec-extabi \ +; RUN: -mattr=+rop-protect < %s | FileCheck %s --check-prefix BE-P9 +; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \ +; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -vec-extabi \ +; RUN: -mattr=+rop-protect < %s | FileCheck %s --check-prefix BE-P8 +; RUN: llc -verify-machineinstrs -mtriple=powerpc-ibm-aix-xcoff \ +; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -vec-extabi \ +; RUN: -mattr=+rop-protect < %s | FileCheck %s --check-prefix BE-32BIT-P10 +; RUN: llc -verify-machineinstrs -mtriple=powerpc-ibm-aix-xcoff \ +; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -vec-extabi \ +; RUN: -mattr=+rop-protect < %s | FileCheck %s --check-prefix BE-32BIT-P9 +; RUN: llc -verify-machineinstrs -mtriple=powerpc-ibm-aix-xcoff \ +; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -vec-extabi \ +; RUN: -mattr=+rop-protect < %s | FileCheck %s --check-prefix BE-32BIT-P8 +; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \ +; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -vec-extabi \ +; RUN: -mattr=+rop-protect -mattr=+privileged < %s | FileCheck %s --check-prefix BE-P10-PRIV +; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \ +; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -vec-extabi \ +; RUN: -mattr=+rop-protect -mattr=+privileged < %s | FileCheck %s --check-prefix BE-P9-PRIV +; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix-xcoff \ +; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -vec-extabi \ +; RUN: -mattr=+rop-protect -mattr=+privileged < %s | FileCheck %s --check-prefix BE-P8-PRIV +; RUN: llc -verify-machineinstrs -mtriple=powerpc-ibm-aix-xcoff \ +; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -vec-extabi \ +; RUN: -mattr=+rop-protect -mattr=+privileged < %s | FileCheck %s --check-prefix BE-32BIT-P10-PRIV +; RUN: llc -verify-machineinstrs -mtriple=powerpc-ibm-aix-xcoff \ +; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -vec-extabi \ +; RUN: -mattr=+rop-protect -mattr=+privileged < %s | FileCheck %s --check-prefix BE-32BIT-P9-PRIV +; RUN: llc -verify-machineinstrs -mtriple=powerpc-ibm-aix-xcoff \ +; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -vec-extabi \ +; RUN: -mattr=+rop-protect -mattr=+privileged < %s | FileCheck %s --check-prefix BE-32BIT-P8-PRIV + + + +;; This test checks that the ROP protect instructions have been correctly +;; added when the ROP protect option has been specified. The hashst +;; instruction should be added to the prologue and the hashchk should be added +;; to the epilogue. + +define dso_local zeroext i32 @caller(i32 zeroext %in, i32 zeroext %add_after) #0 { +; BE-P10-LABEL: caller: +; BE-P10: # %bb.0: # %entry +; BE-P10-NEXT: mflr 0 +; BE-P10-NEXT: std 0, 16(1) +; BE-P10-NEXT: hashst 0, -16(1) +; BE-P10-NEXT: stdu 1, -128(1) +; BE-P10-NEXT: std 31, 120(1) # 8-byte Folded Spill +; BE-P10-NEXT: mr 31, 4 +; BE-P10-NEXT: bl .callee[PR] +; BE-P10-NEXT: nop +; BE-P10-NEXT: add 3, 3, 31 +; BE-P10-NEXT: ld 31, 120(1) # 8-byte Folded Reload +; BE-P10-NEXT: clrldi 3, 3, 32 +; BE-P10-NEXT: addi 1, 1, 128 +; BE-P10-NEXT: ld 0, 16(1) +; BE-P10-NEXT: mtlr 0 +; BE-P10-NEXT: hashchk 0, -16(1) +; BE-P10-NEXT: blr +; +; BE-P9-LABEL: caller: +; BE-P9: # %bb.0: # %entry +; BE-P9-NEXT: mflr 0 +; BE-P9-NEXT: std 0, 16(1) +; BE-P9-NEXT: hashst 0, -16(1) +; BE-P9-NEXT: stdu 1, -128(1) +; BE-P9-NEXT: std 31, 120(1) # 8-byte Folded Spill +; BE-P9-NEXT: mr 31, 4 +; BE-P9-NEXT: bl .callee[PR] +; BE-P9-NEXT: nop +; BE-P9-NEXT: add 3, 3, 31 +; BE-P9-NEXT: ld 31, 120(1) # 8-byte Folded Reload +; BE-P9-NEXT: clrldi 3, 3, 32 +; BE-P9-NEXT: addi 1, 1, 128 +; BE-P9-NEXT: ld 0, 16(1) +; BE-P9-NEXT: mtlr 0 +; BE-P9-NEXT: hashchk 0, -16(1) +; BE-P9-NEXT: blr +; +; BE-P8-LABEL: caller: +; BE-P8: # %bb.0: # %entry +; BE-P8-NEXT: mflr 0 +; BE-P8-NEXT: std 0, 16(1) +; BE-P8-NEXT: hashst 0, -16(1) +; BE-P8-NEXT: stdu 1, -128(1) +; BE-P8-NEXT: std 31, 120(1) # 8-byte Folded Spill +; BE-P8-NEXT: mr 31, 4 +; BE-P8-NEXT: bl .callee[PR] +; BE-P8-NEXT: nop +; BE-P8-NEXT: add 3, 3, 31 +; BE-P8-NEXT: ld 31, 120(1) # 8-byte Folded Reload +; BE-P8-NEXT: clrldi 3, 3, 32 +; BE-P8-NEXT: addi 1, 1, 128 +; BE-P8-NEXT: ld 0, 16(1) +; BE-P8-NEXT: hashchk 0, -16(1) +; BE-P8-NEXT: mtlr 0 +; BE-P8-NEXT: blr +; +; BE-32BIT-P10-LABEL: caller: +; BE-32BIT-P10: # %bb.0: # %entry +; BE-32BIT-P10-NEXT: mflr 0 +; BE-32BIT-P10-NEXT: stw 0, 8(1) +; BE-32BIT-P10-NEXT: hashst 0, -16(1) +; BE-32BIT-P10-NEXT: stwu 1, -80(1) +; BE-32BIT-P10-NEXT: stw 31, 76(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: mr 31, 4 +; BE-32BIT-P10-NEXT: bl .callee[PR] +; BE-32BIT-P10-NEXT: nop +; BE-32BIT-P10-NEXT: add 3, 3, 31 +; BE-32BIT-P10-NEXT: lwz 31, 76(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: addi 1, 1, 80 +; BE-32BIT-P10-NEXT: lwz 0, 8(1) +; BE-32BIT-P10-NEXT: mtlr 0 +; BE-32BIT-P10-NEXT: hashchk 0, -16(1) +; BE-32BIT-P10-NEXT: blr +; +; BE-32BIT-P9-LABEL: caller: +; BE-32BIT-P9: # %bb.0: # %entry +; BE-32BIT-P9-NEXT: mflr 0 +; BE-32BIT-P9-NEXT: stw 0, 8(1) +; BE-32BIT-P9-NEXT: hashst 0, -16(1) +; BE-32BIT-P9-NEXT: stwu 1, -80(1) +; BE-32BIT-P9-NEXT: stw 31, 76(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: mr 31, 4 +; BE-32BIT-P9-NEXT: bl .callee[PR] +; BE-32BIT-P9-NEXT: nop +; BE-32BIT-P9-NEXT: add 3, 3, 31 +; BE-32BIT-P9-NEXT: lwz 31, 76(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: addi 1, 1, 80 +; BE-32BIT-P9-NEXT: lwz 0, 8(1) +; BE-32BIT-P9-NEXT: mtlr 0 +; BE-32BIT-P9-NEXT: hashchk 0, -16(1) +; BE-32BIT-P9-NEXT: blr +; +; BE-32BIT-P8-LABEL: caller: +; BE-32BIT-P8: # %bb.0: # %entry +; BE-32BIT-P8-NEXT: mflr 0 +; BE-32BIT-P8-NEXT: stw 0, 8(1) +; BE-32BIT-P8-NEXT: hashst 0, -16(1) +; BE-32BIT-P8-NEXT: stwu 1, -80(1) +; BE-32BIT-P8-NEXT: stw 31, 76(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: mr 31, 4 +; BE-32BIT-P8-NEXT: bl .callee[PR] +; BE-32BIT-P8-NEXT: nop +; BE-32BIT-P8-NEXT: add 3, 3, 31 +; BE-32BIT-P8-NEXT: lwz 31, 76(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: addi 1, 1, 80 +; BE-32BIT-P8-NEXT: lwz 0, 8(1) +; BE-32BIT-P8-NEXT: hashchk 0, -16(1) +; BE-32BIT-P8-NEXT: mtlr 0 +; BE-32BIT-P8-NEXT: blr +; +; BE-P10-PRIV-LABEL: caller: +; BE-P10-PRIV: # %bb.0: # %entry +; BE-P10-PRIV-NEXT: mflr 0 +; BE-P10-PRIV-NEXT: std 0, 16(1) +; BE-P10-PRIV-NEXT: hashstp 0, -16(1) +; BE-P10-PRIV-NEXT: stdu 1, -128(1) +; BE-P10-PRIV-NEXT: std 31, 120(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: mr 31, 4 +; BE-P10-PRIV-NEXT: bl .callee[PR] +; BE-P10-PRIV-NEXT: nop +; BE-P10-PRIV-NEXT: add 3, 3, 31 +; BE-P10-PRIV-NEXT: ld 31, 120(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: clrldi 3, 3, 32 +; BE-P10-PRIV-NEXT: addi 1, 1, 128 +; BE-P10-PRIV-NEXT: ld 0, 16(1) +; BE-P10-PRIV-NEXT: mtlr 0 +; BE-P10-PRIV-NEXT: hashchkp 0, -16(1) +; BE-P10-PRIV-NEXT: blr +; +; BE-P9-PRIV-LABEL: caller: +; BE-P9-PRIV: # %bb.0: # %entry +; BE-P9-PRIV-NEXT: mflr 0 +; BE-P9-PRIV-NEXT: std 0, 16(1) +; BE-P9-PRIV-NEXT: hashstp 0, -16(1) +; BE-P9-PRIV-NEXT: stdu 1, -128(1) +; BE-P9-PRIV-NEXT: std 31, 120(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: mr 31, 4 +; BE-P9-PRIV-NEXT: bl .callee[PR] +; BE-P9-PRIV-NEXT: nop +; BE-P9-PRIV-NEXT: add 3, 3, 31 +; BE-P9-PRIV-NEXT: ld 31, 120(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: clrldi 3, 3, 32 +; BE-P9-PRIV-NEXT: addi 1, 1, 128 +; BE-P9-PRIV-NEXT: ld 0, 16(1) +; BE-P9-PRIV-NEXT: mtlr 0 +; BE-P9-PRIV-NEXT: hashchkp 0, -16(1) +; BE-P9-PRIV-NEXT: blr +; +; BE-P8-PRIV-LABEL: caller: +; BE-P8-PRIV: # %bb.0: # %entry +; BE-P8-PRIV-NEXT: mflr 0 +; BE-P8-PRIV-NEXT: std 0, 16(1) +; BE-P8-PRIV-NEXT: hashstp 0, -16(1) +; BE-P8-PRIV-NEXT: stdu 1, -128(1) +; BE-P8-PRIV-NEXT: std 31, 120(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: mr 31, 4 +; BE-P8-PRIV-NEXT: bl .callee[PR] +; BE-P8-PRIV-NEXT: nop +; BE-P8-PRIV-NEXT: add 3, 3, 31 +; BE-P8-PRIV-NEXT: ld 31, 120(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: clrldi 3, 3, 32 +; BE-P8-PRIV-NEXT: addi 1, 1, 128 +; BE-P8-PRIV-NEXT: ld 0, 16(1) +; BE-P8-PRIV-NEXT: hashchkp 0, -16(1) +; BE-P8-PRIV-NEXT: mtlr 0 +; BE-P8-PRIV-NEXT: blr +; +; BE-32BIT-P10-PRIV-LABEL: caller: +; BE-32BIT-P10-PRIV: # %bb.0: # %entry +; BE-32BIT-P10-PRIV-NEXT: mflr 0 +; BE-32BIT-P10-PRIV-NEXT: stw 0, 8(1) +; BE-32BIT-P10-PRIV-NEXT: hashstp 0, -16(1) +; BE-32BIT-P10-PRIV-NEXT: stwu 1, -80(1) +; BE-32BIT-P10-PRIV-NEXT: stw 31, 76(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: mr 31, 4 +; BE-32BIT-P10-PRIV-NEXT: bl .callee[PR] +; BE-32BIT-P10-PRIV-NEXT: nop +; BE-32BIT-P10-PRIV-NEXT: add 3, 3, 31 +; BE-32BIT-P10-PRIV-NEXT: lwz 31, 76(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: addi 1, 1, 80 +; BE-32BIT-P10-PRIV-NEXT: lwz 0, 8(1) +; BE-32BIT-P10-PRIV-NEXT: mtlr 0 +; BE-32BIT-P10-PRIV-NEXT: hashchkp 0, -16(1) +; BE-32BIT-P10-PRIV-NEXT: blr +; +; BE-32BIT-P9-PRIV-LABEL: caller: +; BE-32BIT-P9-PRIV: # %bb.0: # %entry +; BE-32BIT-P9-PRIV-NEXT: mflr 0 +; BE-32BIT-P9-PRIV-NEXT: stw 0, 8(1) +; BE-32BIT-P9-PRIV-NEXT: hashstp 0, -16(1) +; BE-32BIT-P9-PRIV-NEXT: stwu 1, -80(1) +; BE-32BIT-P9-PRIV-NEXT: stw 31, 76(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: mr 31, 4 +; BE-32BIT-P9-PRIV-NEXT: bl .callee[PR] +; BE-32BIT-P9-PRIV-NEXT: nop +; BE-32BIT-P9-PRIV-NEXT: add 3, 3, 31 +; BE-32BIT-P9-PRIV-NEXT: lwz 31, 76(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: addi 1, 1, 80 +; BE-32BIT-P9-PRIV-NEXT: lwz 0, 8(1) +; BE-32BIT-P9-PRIV-NEXT: mtlr 0 +; BE-32BIT-P9-PRIV-NEXT: hashchkp 0, -16(1) +; BE-32BIT-P9-PRIV-NEXT: blr +; +; BE-32BIT-P8-PRIV-LABEL: caller: +; BE-32BIT-P8-PRIV: # %bb.0: # %entry +; BE-32BIT-P8-PRIV-NEXT: mflr 0 +; BE-32BIT-P8-PRIV-NEXT: stw 0, 8(1) +; BE-32BIT-P8-PRIV-NEXT: hashstp 0, -16(1) +; BE-32BIT-P8-PRIV-NEXT: stwu 1, -80(1) +; BE-32BIT-P8-PRIV-NEXT: stw 31, 76(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: mr 31, 4 +; BE-32BIT-P8-PRIV-NEXT: bl .callee[PR] +; BE-32BIT-P8-PRIV-NEXT: nop +; BE-32BIT-P8-PRIV-NEXT: add 3, 3, 31 +; BE-32BIT-P8-PRIV-NEXT: lwz 31, 76(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: addi 1, 1, 80 +; BE-32BIT-P8-PRIV-NEXT: lwz 0, 8(1) +; BE-32BIT-P8-PRIV-NEXT: hashchkp 0, -16(1) +; BE-32BIT-P8-PRIV-NEXT: mtlr 0 +; BE-32BIT-P8-PRIV-NEXT: blr +entry: + %call = tail call zeroext i32 @callee(i32 zeroext %in) + %add = add i32 %call, %add_after + ret i32 %add +} + +;; NOTE: This test is technically a violation of the ABI. The hash is saved +;; outside of the initial 288 byte volatile program storage region in the +;; Protected Zone. However, this restriction will be removed in an upcoming +;; revision of the ABI. +define dso_local zeroext i32 @spill(i32* nocapture readonly %in) #0 { +; BE-P10-LABEL: spill: +; BE-P10: # %bb.0: # %entry +; BE-P10-NEXT: mflr 0 +; BE-P10-NEXT: mfcr 12 +; BE-P10-NEXT: std 0, 16(1) +; BE-P10-NEXT: hashst 0, -488(1) +; BE-P10-NEXT: stw 12, 8(1) +; BE-P10-NEXT: stdu 1, -624(1) +; BE-P10-NEXT: lwz 4, 12(3) +; BE-P10-NEXT: std 14, 336(1) # 8-byte Folded Spill +; BE-P10-NEXT: std 15, 344(1) # 8-byte Folded Spill +; BE-P10-NEXT: stxv 20, 144(1) # 16-byte Folded Spill +; BE-P10-NEXT: stxv 21, 160(1) # 16-byte Folded Spill +; BE-P10-NEXT: stxv 22, 176(1) # 16-byte Folded Spill +; BE-P10-NEXT: std 16, 352(1) # 8-byte Folded Spill +; BE-P10-NEXT: std 17, 360(1) # 8-byte Folded Spill +; BE-P10-NEXT: stxv 23, 192(1) # 16-byte Folded Spill +; BE-P10-NEXT: std 18, 368(1) # 8-byte Folded Spill +; BE-P10-NEXT: std 19, 376(1) # 8-byte Folded Spill +; BE-P10-NEXT: stxv 24, 208(1) # 16-byte Folded Spill +; BE-P10-NEXT: stxv 25, 224(1) # 16-byte Folded Spill +; BE-P10-NEXT: std 20, 384(1) # 8-byte Folded Spill +; BE-P10-NEXT: std 21, 392(1) # 8-byte Folded Spill +; BE-P10-NEXT: stxv 26, 240(1) # 16-byte Folded Spill +; BE-P10-NEXT: std 22, 400(1) # 8-byte Folded Spill +; BE-P10-NEXT: std 23, 408(1) # 8-byte Folded Spill +; BE-P10-NEXT: stxv 27, 256(1) # 16-byte Folded Spill +; BE-P10-NEXT: stxv 28, 272(1) # 16-byte Folded Spill +; BE-P10-NEXT: std 24, 416(1) # 8-byte Folded Spill +; BE-P10-NEXT: std 25, 424(1) # 8-byte Folded Spill +; BE-P10-NEXT: stxv 29, 288(1) # 16-byte Folded Spill +; BE-P10-NEXT: std 26, 432(1) # 8-byte Folded Spill +; BE-P10-NEXT: std 27, 440(1) # 8-byte Folded Spill +; BE-P10-NEXT: stxv 30, 304(1) # 16-byte Folded Spill +; BE-P10-NEXT: stxv 31, 320(1) # 16-byte Folded Spill +; BE-P10-NEXT: std 28, 448(1) # 8-byte Folded Spill +; BE-P10-NEXT: std 29, 456(1) # 8-byte Folded Spill +; BE-P10-NEXT: std 30, 464(1) # 8-byte Folded Spill +; BE-P10-NEXT: std 31, 472(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 14, 480(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 15, 488(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 16, 496(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 17, 504(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 18, 512(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 19, 520(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 20, 528(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 21, 536(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 22, 544(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 23, 552(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 24, 560(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 25, 568(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 26, 576(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 27, 584(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 28, 592(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 29, 600(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 30, 608(1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd 31, 616(1) # 8-byte Folded Spill +; BE-P10-NEXT: std 3, 120(1) # 8-byte Folded Spill +; BE-P10-NEXT: stw 4, 132(1) +; BE-P10-NEXT: #APP +; BE-P10-NEXT: nop +; BE-P10-NEXT: #NO_APP +; BE-P10-NEXT: addi 3, 1, 132 +; BE-P10-NEXT: bl .callee2[PR] +; BE-P10-NEXT: nop +; BE-P10-NEXT: ld 4, 120(1) # 8-byte Folded Reload +; BE-P10-NEXT: lxv 31, 320(1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv 30, 304(1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv 29, 288(1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv 28, 272(1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv 27, 256(1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv 26, 240(1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv 25, 224(1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv 24, 208(1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv 23, 192(1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv 22, 176(1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv 21, 160(1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv 20, 144(1) # 16-byte Folded Reload +; BE-P10-NEXT: lfd 31, 616(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 30, 608(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 29, 600(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 28, 592(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 27, 584(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 31, 472(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 30, 464(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 29, 456(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 26, 576(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 28, 448(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 27, 440(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 26, 432(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 25, 568(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 25, 424(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 24, 416(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 23, 408(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 24, 560(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 22, 400(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 21, 392(1) # 8-byte Folded Reload +; BE-P10-NEXT: lwz 4, 16(4) +; BE-P10-NEXT: add 3, 4, 3 +; BE-P10-NEXT: lfd 23, 552(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 22, 544(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 20, 384(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 19, 376(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 18, 368(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 17, 360(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 16, 352(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 15, 344(1) # 8-byte Folded Reload +; BE-P10-NEXT: ld 14, 336(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 21, 536(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 20, 528(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 19, 520(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 18, 512(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 17, 504(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 16, 496(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 15, 488(1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd 14, 480(1) # 8-byte Folded Reload +; BE-P10-NEXT: clrldi 3, 3, 32 +; BE-P10-NEXT: addi 1, 1, 624 +; BE-P10-NEXT: ld 0, 16(1) +; BE-P10-NEXT: lwz 12, 8(1) +; BE-P10-NEXT: mtlr 0 +; BE-P10-NEXT: hashchk 0, -488(1) +; BE-P10-NEXT: mtocrf 32, 12 +; BE-P10-NEXT: mtocrf 16, 12 +; BE-P10-NEXT: mtocrf 8, 12 +; BE-P10-NEXT: blr +; +; BE-P9-LABEL: spill: +; BE-P9: # %bb.0: # %entry +; BE-P9-NEXT: mflr 0 +; BE-P9-NEXT: mfcr 12 +; BE-P9-NEXT: std 0, 16(1) +; BE-P9-NEXT: hashst 0, -488(1) +; BE-P9-NEXT: stw 12, 8(1) +; BE-P9-NEXT: stdu 1, -624(1) +; BE-P9-NEXT: lwz 4, 12(3) +; BE-P9-NEXT: std 14, 336(1) # 8-byte Folded Spill +; BE-P9-NEXT: std 15, 344(1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv 20, 144(1) # 16-byte Folded Spill +; BE-P9-NEXT: stxv 21, 160(1) # 16-byte Folded Spill +; BE-P9-NEXT: stxv 22, 176(1) # 16-byte Folded Spill +; BE-P9-NEXT: std 16, 352(1) # 8-byte Folded Spill +; BE-P9-NEXT: std 17, 360(1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv 23, 192(1) # 16-byte Folded Spill +; BE-P9-NEXT: std 18, 368(1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv 24, 208(1) # 16-byte Folded Spill +; BE-P9-NEXT: std 19, 376(1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv 25, 224(1) # 16-byte Folded Spill +; BE-P9-NEXT: std 20, 384(1) # 8-byte Folded Spill +; BE-P9-NEXT: std 21, 392(1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv 26, 240(1) # 16-byte Folded Spill +; BE-P9-NEXT: std 22, 400(1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv 27, 256(1) # 16-byte Folded Spill +; BE-P9-NEXT: std 23, 408(1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv 28, 272(1) # 16-byte Folded Spill +; BE-P9-NEXT: std 24, 416(1) # 8-byte Folded Spill +; BE-P9-NEXT: std 25, 424(1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv 29, 288(1) # 16-byte Folded Spill +; BE-P9-NEXT: std 26, 432(1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv 30, 304(1) # 16-byte Folded Spill +; BE-P9-NEXT: std 27, 440(1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv 31, 320(1) # 16-byte Folded Spill +; BE-P9-NEXT: std 28, 448(1) # 8-byte Folded Spill +; BE-P9-NEXT: std 29, 456(1) # 8-byte Folded Spill +; BE-P9-NEXT: std 30, 464(1) # 8-byte Folded Spill +; BE-P9-NEXT: std 31, 472(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 14, 480(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 15, 488(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 16, 496(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 17, 504(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 18, 512(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 19, 520(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 20, 528(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 21, 536(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 22, 544(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 23, 552(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 24, 560(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 25, 568(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 26, 576(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 27, 584(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 28, 592(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 29, 600(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 30, 608(1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd 31, 616(1) # 8-byte Folded Spill +; BE-P9-NEXT: std 3, 120(1) # 8-byte Folded Spill +; BE-P9-NEXT: stw 4, 132(1) +; BE-P9-NEXT: #APP +; BE-P9-NEXT: nop +; BE-P9-NEXT: #NO_APP +; BE-P9-NEXT: addi 3, 1, 132 +; BE-P9-NEXT: bl .callee2[PR] +; BE-P9-NEXT: nop +; BE-P9-NEXT: ld 4, 120(1) # 8-byte Folded Reload +; BE-P9-NEXT: lxv 31, 320(1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv 30, 304(1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv 29, 288(1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv 28, 272(1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv 27, 256(1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv 26, 240(1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv 25, 224(1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv 24, 208(1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv 23, 192(1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv 22, 176(1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv 21, 160(1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv 20, 144(1) # 16-byte Folded Reload +; BE-P9-NEXT: lfd 31, 616(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 30, 608(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 29, 600(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 28, 592(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 27, 584(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 31, 472(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 30, 464(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 29, 456(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 26, 576(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 28, 448(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 27, 440(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 26, 432(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 25, 568(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 25, 424(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 24, 416(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 23, 408(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 24, 560(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 22, 400(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 21, 392(1) # 8-byte Folded Reload +; BE-P9-NEXT: lwz 4, 16(4) +; BE-P9-NEXT: add 3, 4, 3 +; BE-P9-NEXT: lfd 23, 552(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 22, 544(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 20, 384(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 19, 376(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 18, 368(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 17, 360(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 16, 352(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 15, 344(1) # 8-byte Folded Reload +; BE-P9-NEXT: ld 14, 336(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 21, 536(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 20, 528(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 19, 520(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 18, 512(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 17, 504(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 16, 496(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 15, 488(1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd 14, 480(1) # 8-byte Folded Reload +; BE-P9-NEXT: clrldi 3, 3, 32 +; BE-P9-NEXT: addi 1, 1, 624 +; BE-P9-NEXT: ld 0, 16(1) +; BE-P9-NEXT: lwz 12, 8(1) +; BE-P9-NEXT: mtlr 0 +; BE-P9-NEXT: hashchk 0, -488(1) +; BE-P9-NEXT: mtocrf 32, 12 +; BE-P9-NEXT: mtocrf 16, 12 +; BE-P9-NEXT: mtocrf 8, 12 +; BE-P9-NEXT: blr +; +; BE-P8-LABEL: spill: +; BE-P8: # %bb.0: # %entry +; BE-P8-NEXT: mfcr 12 +; BE-P8-NEXT: mflr 0 +; BE-P8-NEXT: std 0, 16(1) +; BE-P8-NEXT: hashst 0, -488(1) +; BE-P8-NEXT: stw 12, 8(1) +; BE-P8-NEXT: stdu 1, -624(1) +; BE-P8-NEXT: li 4, 144 +; BE-P8-NEXT: std 14, 336(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 15, 344(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 16, 352(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 17, 360(1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x 20, 1, 4 # 16-byte Folded Spill +; BE-P8-NEXT: li 4, 160 +; BE-P8-NEXT: std 18, 368(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 19, 376(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 20, 384(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 21, 392(1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x 21, 1, 4 # 16-byte Folded Spill +; BE-P8-NEXT: li 4, 176 +; BE-P8-NEXT: std 22, 400(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 23, 408(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 24, 416(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 25, 424(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 26, 432(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 27, 440(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 28, 448(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 29, 456(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 30, 464(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 31, 472(1) # 8-byte Folded Spill +; BE-P8-NEXT: std 3, 120(1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x 22, 1, 4 # 16-byte Folded Spill +; BE-P8-NEXT: li 4, 192 +; BE-P8-NEXT: stxvd2x 23, 1, 4 # 16-byte Folded Spill +; BE-P8-NEXT: li 4, 208 +; BE-P8-NEXT: stfd 14, 480(1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x 24, 1, 4 # 16-byte Folded Spill +; BE-P8-NEXT: li 4, 224 +; BE-P8-NEXT: stfd 15, 488(1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x 25, 1, 4 # 16-byte Folded Spill +; BE-P8-NEXT: li 4, 240 +; BE-P8-NEXT: stfd 16, 496(1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x 26, 1, 4 # 16-byte Folded Spill +; BE-P8-NEXT: li 4, 256 +; BE-P8-NEXT: stfd 17, 504(1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x 27, 1, 4 # 16-byte Folded Spill +; BE-P8-NEXT: li 4, 272 +; BE-P8-NEXT: stfd 18, 512(1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x 28, 1, 4 # 16-byte Folded Spill +; BE-P8-NEXT: li 4, 288 +; BE-P8-NEXT: stfd 19, 520(1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x 29, 1, 4 # 16-byte Folded Spill +; BE-P8-NEXT: li 4, 304 +; BE-P8-NEXT: stfd 20, 528(1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x 30, 1, 4 # 16-byte Folded Spill +; BE-P8-NEXT: li 4, 320 +; BE-P8-NEXT: stfd 21, 536(1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x 31, 1, 4 # 16-byte Folded Spill +; BE-P8-NEXT: lwz 4, 12(3) +; BE-P8-NEXT: stfd 22, 544(1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd 23, 552(1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd 24, 560(1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd 25, 568(1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd 26, 576(1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd 27, 584(1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd 28, 592(1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd 29, 600(1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd 30, 608(1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd 31, 616(1) # 8-byte Folded Spill +; BE-P8-NEXT: stw 4, 132(1) +; BE-P8-NEXT: #APP +; BE-P8-NEXT: nop +; BE-P8-NEXT: #NO_APP +; BE-P8-NEXT: addi 3, 1, 132 +; BE-P8-NEXT: bl .callee2[PR] +; BE-P8-NEXT: nop +; BE-P8-NEXT: ld 4, 120(1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd 31, 616(1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd 30, 608(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 31, 472(1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd 29, 600(1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd 28, 592(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 30, 464(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 29, 456(1) # 8-byte Folded Reload +; BE-P8-NEXT: lwz 4, 16(4) +; BE-P8-NEXT: lfd 27, 584(1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd 26, 576(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 28, 448(1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd 25, 568(1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd 24, 560(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 27, 440(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 26, 432(1) # 8-byte Folded Reload +; BE-P8-NEXT: add 3, 4, 3 +; BE-P8-NEXT: li 4, 320 +; BE-P8-NEXT: lfd 23, 552(1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd 22, 544(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 25, 424(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 24, 416(1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x 31, 1, 4 # 16-byte Folded Reload +; BE-P8-NEXT: li 4, 304 +; BE-P8-NEXT: lfd 21, 536(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 23, 408(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 22, 400(1) # 8-byte Folded Reload +; BE-P8-NEXT: clrldi 3, 3, 32 +; BE-P8-NEXT: lxvd2x 30, 1, 4 # 16-byte Folded Reload +; BE-P8-NEXT: li 4, 288 +; BE-P8-NEXT: lfd 20, 528(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 21, 392(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 20, 384(1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x 29, 1, 4 # 16-byte Folded Reload +; BE-P8-NEXT: li 4, 272 +; BE-P8-NEXT: lfd 19, 520(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 19, 376(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 18, 368(1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x 28, 1, 4 # 16-byte Folded Reload +; BE-P8-NEXT: li 4, 256 +; BE-P8-NEXT: lfd 18, 512(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 17, 360(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 16, 352(1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x 27, 1, 4 # 16-byte Folded Reload +; BE-P8-NEXT: li 4, 240 +; BE-P8-NEXT: lfd 17, 504(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 15, 344(1) # 8-byte Folded Reload +; BE-P8-NEXT: ld 14, 336(1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x 26, 1, 4 # 16-byte Folded Reload +; BE-P8-NEXT: li 4, 224 +; BE-P8-NEXT: lfd 16, 496(1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x 25, 1, 4 # 16-byte Folded Reload +; BE-P8-NEXT: li 4, 208 +; BE-P8-NEXT: lfd 15, 488(1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x 24, 1, 4 # 16-byte Folded Reload +; BE-P8-NEXT: li 4, 192 +; BE-P8-NEXT: lfd 14, 480(1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x 23, 1, 4 # 16-byte Folded Reload +; BE-P8-NEXT: li 4, 176 +; BE-P8-NEXT: lxvd2x 22, 1, 4 # 16-byte Folded Reload +; BE-P8-NEXT: li 4, 160 +; BE-P8-NEXT: lxvd2x 21, 1, 4 # 16-byte Folded Reload +; BE-P8-NEXT: li 4, 144 +; BE-P8-NEXT: lxvd2x 20, 1, 4 # 16-byte Folded Reload +; BE-P8-NEXT: addi 1, 1, 624 +; BE-P8-NEXT: ld 0, 16(1) +; BE-P8-NEXT: lwz 12, 8(1) +; BE-P8-NEXT: mtocrf 32, 12 +; BE-P8-NEXT: hashchk 0, -488(1) +; BE-P8-NEXT: mtlr 0 +; BE-P8-NEXT: mtocrf 16, 12 +; BE-P8-NEXT: mtocrf 8, 12 +; BE-P8-NEXT: blr +; +; BE-32BIT-P10-LABEL: spill: +; BE-32BIT-P10: # %bb.0: # %entry +; BE-32BIT-P10-NEXT: mflr 0 +; BE-32BIT-P10-NEXT: mfcr 12 +; BE-32BIT-P10-NEXT: stw 0, 8(1) +; BE-32BIT-P10-NEXT: hashst 0, -424(1) +; BE-32BIT-P10-NEXT: stw 12, 4(1) +; BE-32BIT-P10-NEXT: stwu 1, -496(1) +; BE-32BIT-P10-NEXT: lwz 4, 12(3) +; BE-32BIT-P10-NEXT: stw 13, 276(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 14, 280(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv 20, 80(1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv 21, 96(1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv 22, 112(1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 15, 284(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 16, 288(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv 23, 128(1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 17, 292(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 18, 296(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv 24, 144(1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv 25, 160(1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 19, 300(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 20, 304(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv 26, 176(1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 21, 308(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 22, 312(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv 27, 192(1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv 28, 208(1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 23, 316(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 24, 320(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv 29, 224(1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 25, 324(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 26, 328(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv 30, 240(1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv 31, 256(1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 27, 332(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 28, 336(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 29, 340(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 30, 344(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 31, 348(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 14, 352(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 15, 360(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 16, 368(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 17, 376(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 18, 384(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 19, 392(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 20, 400(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 21, 408(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 22, 416(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 23, 424(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 24, 432(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 25, 440(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 26, 448(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 27, 456(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 28, 464(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 29, 472(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 30, 480(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd 31, 488(1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 3, 64(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw 4, 68(1) +; BE-32BIT-P10-NEXT: #APP +; BE-32BIT-P10-NEXT: nop +; BE-32BIT-P10-NEXT: #NO_APP +; BE-32BIT-P10-NEXT: addi 3, 1, 68 +; BE-32BIT-P10-NEXT: bl .callee2[PR] +; BE-32BIT-P10-NEXT: nop +; BE-32BIT-P10-NEXT: lwz 4, 64(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv 31, 256(1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv 30, 240(1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv 29, 224(1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv 28, 208(1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv 27, 192(1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv 26, 176(1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv 25, 160(1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv 24, 144(1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv 23, 128(1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv 22, 112(1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv 21, 96(1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv 20, 80(1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 31, 488(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 30, 480(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 29, 472(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 28, 464(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 27, 456(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 31, 348(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 30, 344(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 29, 340(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 26, 448(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 28, 336(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 27, 332(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 26, 328(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 25, 440(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 25, 324(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 24, 320(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 23, 316(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 24, 432(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 22, 312(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 21, 308(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 4, 16(4) +; BE-32BIT-P10-NEXT: add 3, 4, 3 +; BE-32BIT-P10-NEXT: lfd 23, 424(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 22, 416(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 20, 304(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 19, 300(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 18, 296(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 17, 292(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 16, 288(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 15, 284(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 14, 280(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz 13, 276(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 21, 408(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 20, 400(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 19, 392(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 18, 384(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 17, 376(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 16, 368(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 15, 360(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd 14, 352(1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: addi 1, 1, 496 +; BE-32BIT-P10-NEXT: lwz 0, 8(1) +; BE-32BIT-P10-NEXT: lwz 12, 4(1) +; BE-32BIT-P10-NEXT: mtlr 0 +; BE-32BIT-P10-NEXT: hashchk 0, -424(1) +; BE-32BIT-P10-NEXT: mtocrf 32, 12 +; BE-32BIT-P10-NEXT: mtocrf 16, 12 +; BE-32BIT-P10-NEXT: mtocrf 8, 12 +; BE-32BIT-P10-NEXT: blr +; +; BE-32BIT-P9-LABEL: spill: +; BE-32BIT-P9: # %bb.0: # %entry +; BE-32BIT-P9-NEXT: mflr 0 +; BE-32BIT-P9-NEXT: mfcr 12 +; BE-32BIT-P9-NEXT: stw 0, 8(1) +; BE-32BIT-P9-NEXT: hashst 0, -424(1) +; BE-32BIT-P9-NEXT: stw 12, 4(1) +; BE-32BIT-P9-NEXT: stwu 1, -496(1) +; BE-32BIT-P9-NEXT: lwz 4, 12(3) +; BE-32BIT-P9-NEXT: stw 13, 276(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 14, 280(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv 20, 80(1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv 21, 96(1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv 22, 112(1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 15, 284(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 16, 288(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv 23, 128(1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 17, 292(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv 24, 144(1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 18, 296(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv 25, 160(1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 19, 300(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 20, 304(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv 26, 176(1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 21, 308(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv 27, 192(1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 22, 312(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv 28, 208(1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 23, 316(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 24, 320(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv 29, 224(1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 25, 324(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv 30, 240(1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 26, 328(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv 31, 256(1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 27, 332(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 28, 336(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 29, 340(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 30, 344(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 31, 348(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 14, 352(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 15, 360(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 16, 368(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 17, 376(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 18, 384(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 19, 392(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 20, 400(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 21, 408(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 22, 416(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 23, 424(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 24, 432(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 25, 440(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 26, 448(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 27, 456(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 28, 464(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 29, 472(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 30, 480(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd 31, 488(1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 3, 64(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw 4, 68(1) +; BE-32BIT-P9-NEXT: #APP +; BE-32BIT-P9-NEXT: nop +; BE-32BIT-P9-NEXT: #NO_APP +; BE-32BIT-P9-NEXT: addi 3, 1, 68 +; BE-32BIT-P9-NEXT: bl .callee2[PR] +; BE-32BIT-P9-NEXT: nop +; BE-32BIT-P9-NEXT: lwz 4, 64(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv 31, 256(1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv 30, 240(1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv 29, 224(1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv 28, 208(1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv 27, 192(1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv 26, 176(1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv 25, 160(1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv 24, 144(1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv 23, 128(1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv 22, 112(1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv 21, 96(1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv 20, 80(1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 31, 488(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 30, 480(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 29, 472(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 28, 464(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 27, 456(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 31, 348(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 30, 344(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 29, 340(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 26, 448(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 28, 336(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 27, 332(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 26, 328(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 25, 440(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 25, 324(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 24, 320(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 23, 316(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 24, 432(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 22, 312(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 21, 308(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 4, 16(4) +; BE-32BIT-P9-NEXT: add 3, 4, 3 +; BE-32BIT-P9-NEXT: lfd 23, 424(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 22, 416(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 20, 304(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 19, 300(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 18, 296(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 17, 292(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 16, 288(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 15, 284(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 14, 280(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz 13, 276(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 21, 408(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 20, 400(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 19, 392(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 18, 384(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 17, 376(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 16, 368(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 15, 360(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd 14, 352(1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: addi 1, 1, 496 +; BE-32BIT-P9-NEXT: lwz 0, 8(1) +; BE-32BIT-P9-NEXT: lwz 12, 4(1) +; BE-32BIT-P9-NEXT: mtlr 0 +; BE-32BIT-P9-NEXT: hashchk 0, -424(1) +; BE-32BIT-P9-NEXT: mtocrf 32, 12 +; BE-32BIT-P9-NEXT: mtocrf 16, 12 +; BE-32BIT-P9-NEXT: mtocrf 8, 12 +; BE-32BIT-P9-NEXT: blr +; +; BE-32BIT-P8-LABEL: spill: +; BE-32BIT-P8: # %bb.0: # %entry +; BE-32BIT-P8-NEXT: mfcr 12 +; BE-32BIT-P8-NEXT: mflr 0 +; BE-32BIT-P8-NEXT: stw 0, 8(1) +; BE-32BIT-P8-NEXT: hashst 0, -424(1) +; BE-32BIT-P8-NEXT: stw 12, 4(1) +; BE-32BIT-P8-NEXT: stwu 1, -496(1) +; BE-32BIT-P8-NEXT: li 4, 80 +; BE-32BIT-P8-NEXT: stw 13, 276(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw 14, 280(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x 20, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li 4, 96 +; BE-32BIT-P8-NEXT: stw 15, 284(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x 21, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li 4, 112 +; BE-32BIT-P8-NEXT: stw 16, 288(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x 22, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li 4, 128 +; BE-32BIT-P8-NEXT: stw 17, 292(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x 23, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li 4, 144 +; BE-32BIT-P8-NEXT: stw 18, 296(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x 24, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li 4, 160 +; BE-32BIT-P8-NEXT: stw 19, 300(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x 25, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li 4, 176 +; BE-32BIT-P8-NEXT: stw 20, 304(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x 26, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li 4, 192 +; BE-32BIT-P8-NEXT: stw 21, 308(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x 27, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li 4, 208 +; BE-32BIT-P8-NEXT: stw 22, 312(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x 28, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li 4, 224 +; BE-32BIT-P8-NEXT: stw 23, 316(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x 29, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li 4, 240 +; BE-32BIT-P8-NEXT: stw 24, 320(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x 30, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li 4, 256 +; BE-32BIT-P8-NEXT: stw 25, 324(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x 31, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: lwz 4, 12(3) +; BE-32BIT-P8-NEXT: stw 26, 328(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw 27, 332(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw 28, 336(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw 29, 340(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw 30, 344(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw 31, 348(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 14, 352(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 15, 360(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 16, 368(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 17, 376(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 18, 384(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 19, 392(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 20, 400(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 21, 408(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 22, 416(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 23, 424(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 24, 432(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 25, 440(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 26, 448(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 27, 456(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 28, 464(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 29, 472(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 30, 480(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd 31, 488(1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stw 3, 64(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw 4, 68(1) +; BE-32BIT-P8-NEXT: #APP +; BE-32BIT-P8-NEXT: nop +; BE-32BIT-P8-NEXT: #NO_APP +; BE-32BIT-P8-NEXT: addi 3, 1, 68 +; BE-32BIT-P8-NEXT: bl .callee2[PR] +; BE-32BIT-P8-NEXT: nop +; BE-32BIT-P8-NEXT: lwz 4, 64(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd 31, 488(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd 30, 480(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 31, 348(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd 29, 472(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd 28, 464(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 30, 344(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 29, 340(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 4, 16(4) +; BE-32BIT-P8-NEXT: lfd 27, 456(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd 26, 448(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 28, 336(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd 25, 440(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd 24, 432(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 27, 332(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 26, 328(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: add 3, 4, 3 +; BE-32BIT-P8-NEXT: li 4, 256 +; BE-32BIT-P8-NEXT: lfd 23, 424(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd 22, 416(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 25, 324(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 24, 320(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x 31, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li 4, 240 +; BE-32BIT-P8-NEXT: lfd 21, 408(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 23, 316(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 22, 312(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x 30, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li 4, 224 +; BE-32BIT-P8-NEXT: lfd 20, 400(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 21, 308(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 20, 304(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x 29, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li 4, 208 +; BE-32BIT-P8-NEXT: lfd 19, 392(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 19, 300(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 18, 296(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x 28, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li 4, 192 +; BE-32BIT-P8-NEXT: lfd 18, 384(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 17, 292(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 16, 288(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x 27, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li 4, 176 +; BE-32BIT-P8-NEXT: lfd 17, 376(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 15, 284(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 14, 280(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x 26, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li 4, 160 +; BE-32BIT-P8-NEXT: lfd 16, 368(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz 13, 276(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x 25, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li 4, 144 +; BE-32BIT-P8-NEXT: lfd 15, 360(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x 24, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li 4, 128 +; BE-32BIT-P8-NEXT: lfd 14, 352(1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x 23, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li 4, 112 +; BE-32BIT-P8-NEXT: lxvd2x 22, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li 4, 96 +; BE-32BIT-P8-NEXT: lxvd2x 21, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li 4, 80 +; BE-32BIT-P8-NEXT: lxvd2x 20, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: addi 1, 1, 496 +; BE-32BIT-P8-NEXT: lwz 0, 8(1) +; BE-32BIT-P8-NEXT: lwz 12, 4(1) +; BE-32BIT-P8-NEXT: mtocrf 32, 12 +; BE-32BIT-P8-NEXT: hashchk 0, -424(1) +; BE-32BIT-P8-NEXT: mtlr 0 +; BE-32BIT-P8-NEXT: mtocrf 16, 12 +; BE-32BIT-P8-NEXT: mtocrf 8, 12 +; BE-32BIT-P8-NEXT: blr +; +; BE-P10-PRIV-LABEL: spill: +; BE-P10-PRIV: # %bb.0: # %entry +; BE-P10-PRIV-NEXT: mflr 0 +; BE-P10-PRIV-NEXT: mfcr 12 +; BE-P10-PRIV-NEXT: std 0, 16(1) +; BE-P10-PRIV-NEXT: hashstp 0, -488(1) +; BE-P10-PRIV-NEXT: stw 12, 8(1) +; BE-P10-PRIV-NEXT: stdu 1, -624(1) +; BE-P10-PRIV-NEXT: lwz 4, 12(3) +; BE-P10-PRIV-NEXT: std 14, 336(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std 15, 344(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv 20, 144(1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv 21, 160(1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv 22, 176(1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: std 16, 352(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std 17, 360(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv 23, 192(1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: std 18, 368(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std 19, 376(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv 24, 208(1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv 25, 224(1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: std 20, 384(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std 21, 392(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv 26, 240(1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: std 22, 400(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std 23, 408(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv 27, 256(1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv 28, 272(1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: std 24, 416(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std 25, 424(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv 29, 288(1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: std 26, 432(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std 27, 440(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv 30, 304(1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv 31, 320(1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: std 28, 448(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std 29, 456(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std 30, 464(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std 31, 472(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 14, 480(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 15, 488(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 16, 496(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 17, 504(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 18, 512(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 19, 520(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 20, 528(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 21, 536(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 22, 544(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 23, 552(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 24, 560(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 25, 568(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 26, 576(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 27, 584(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 28, 592(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 29, 600(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 30, 608(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd 31, 616(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std 3, 120(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stw 4, 132(1) +; BE-P10-PRIV-NEXT: #APP +; BE-P10-PRIV-NEXT: nop +; BE-P10-PRIV-NEXT: #NO_APP +; BE-P10-PRIV-NEXT: addi 3, 1, 132 +; BE-P10-PRIV-NEXT: bl .callee2[PR] +; BE-P10-PRIV-NEXT: nop +; BE-P10-PRIV-NEXT: ld 4, 120(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv 31, 320(1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv 30, 304(1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv 29, 288(1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv 28, 272(1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv 27, 256(1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv 26, 240(1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv 25, 224(1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv 24, 208(1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv 23, 192(1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv 22, 176(1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv 21, 160(1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv 20, 144(1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 31, 616(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 30, 608(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 29, 600(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 28, 592(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 27, 584(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 31, 472(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 30, 464(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 29, 456(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 26, 576(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 28, 448(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 27, 440(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 26, 432(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 25, 568(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 25, 424(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 24, 416(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 23, 408(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 24, 560(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 22, 400(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 21, 392(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lwz 4, 16(4) +; BE-P10-PRIV-NEXT: add 3, 4, 3 +; BE-P10-PRIV-NEXT: lfd 23, 552(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 22, 544(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 20, 384(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 19, 376(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 18, 368(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 17, 360(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 16, 352(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 15, 344(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld 14, 336(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 21, 536(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 20, 528(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 19, 520(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 18, 512(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 17, 504(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 16, 496(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 15, 488(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd 14, 480(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: clrldi 3, 3, 32 +; BE-P10-PRIV-NEXT: addi 1, 1, 624 +; BE-P10-PRIV-NEXT: ld 0, 16(1) +; BE-P10-PRIV-NEXT: lwz 12, 8(1) +; BE-P10-PRIV-NEXT: mtlr 0 +; BE-P10-PRIV-NEXT: hashchkp 0, -488(1) +; BE-P10-PRIV-NEXT: mtocrf 32, 12 +; BE-P10-PRIV-NEXT: mtocrf 16, 12 +; BE-P10-PRIV-NEXT: mtocrf 8, 12 +; BE-P10-PRIV-NEXT: blr +; +; BE-P9-PRIV-LABEL: spill: +; BE-P9-PRIV: # %bb.0: # %entry +; BE-P9-PRIV-NEXT: mflr 0 +; BE-P9-PRIV-NEXT: mfcr 12 +; BE-P9-PRIV-NEXT: std 0, 16(1) +; BE-P9-PRIV-NEXT: hashstp 0, -488(1) +; BE-P9-PRIV-NEXT: stw 12, 8(1) +; BE-P9-PRIV-NEXT: stdu 1, -624(1) +; BE-P9-PRIV-NEXT: lwz 4, 12(3) +; BE-P9-PRIV-NEXT: std 14, 336(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std 15, 344(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv 20, 144(1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv 21, 160(1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv 22, 176(1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std 16, 352(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std 17, 360(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv 23, 192(1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std 18, 368(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv 24, 208(1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std 19, 376(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv 25, 224(1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std 20, 384(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std 21, 392(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv 26, 240(1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std 22, 400(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv 27, 256(1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std 23, 408(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv 28, 272(1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std 24, 416(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std 25, 424(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv 29, 288(1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std 26, 432(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv 30, 304(1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std 27, 440(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv 31, 320(1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std 28, 448(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std 29, 456(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std 30, 464(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std 31, 472(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 14, 480(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 15, 488(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 16, 496(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 17, 504(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 18, 512(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 19, 520(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 20, 528(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 21, 536(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 22, 544(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 23, 552(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 24, 560(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 25, 568(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 26, 576(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 27, 584(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 28, 592(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 29, 600(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 30, 608(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd 31, 616(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std 3, 120(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stw 4, 132(1) +; BE-P9-PRIV-NEXT: #APP +; BE-P9-PRIV-NEXT: nop +; BE-P9-PRIV-NEXT: #NO_APP +; BE-P9-PRIV-NEXT: addi 3, 1, 132 +; BE-P9-PRIV-NEXT: bl .callee2[PR] +; BE-P9-PRIV-NEXT: nop +; BE-P9-PRIV-NEXT: ld 4, 120(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv 31, 320(1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv 30, 304(1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv 29, 288(1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv 28, 272(1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv 27, 256(1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv 26, 240(1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv 25, 224(1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv 24, 208(1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv 23, 192(1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv 22, 176(1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv 21, 160(1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv 20, 144(1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 31, 616(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 30, 608(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 29, 600(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 28, 592(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 27, 584(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 31, 472(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 30, 464(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 29, 456(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 26, 576(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 28, 448(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 27, 440(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 26, 432(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 25, 568(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 25, 424(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 24, 416(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 23, 408(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 24, 560(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 22, 400(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 21, 392(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lwz 4, 16(4) +; BE-P9-PRIV-NEXT: add 3, 4, 3 +; BE-P9-PRIV-NEXT: lfd 23, 552(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 22, 544(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 20, 384(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 19, 376(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 18, 368(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 17, 360(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 16, 352(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 15, 344(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld 14, 336(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 21, 536(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 20, 528(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 19, 520(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 18, 512(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 17, 504(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 16, 496(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 15, 488(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd 14, 480(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: clrldi 3, 3, 32 +; BE-P9-PRIV-NEXT: addi 1, 1, 624 +; BE-P9-PRIV-NEXT: ld 0, 16(1) +; BE-P9-PRIV-NEXT: lwz 12, 8(1) +; BE-P9-PRIV-NEXT: mtlr 0 +; BE-P9-PRIV-NEXT: hashchkp 0, -488(1) +; BE-P9-PRIV-NEXT: mtocrf 32, 12 +; BE-P9-PRIV-NEXT: mtocrf 16, 12 +; BE-P9-PRIV-NEXT: mtocrf 8, 12 +; BE-P9-PRIV-NEXT: blr +; +; BE-P8-PRIV-LABEL: spill: +; BE-P8-PRIV: # %bb.0: # %entry +; BE-P8-PRIV-NEXT: mfcr 12 +; BE-P8-PRIV-NEXT: mflr 0 +; BE-P8-PRIV-NEXT: std 0, 16(1) +; BE-P8-PRIV-NEXT: hashstp 0, -488(1) +; BE-P8-PRIV-NEXT: stw 12, 8(1) +; BE-P8-PRIV-NEXT: stdu 1, -624(1) +; BE-P8-PRIV-NEXT: li 4, 144 +; BE-P8-PRIV-NEXT: std 14, 336(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 15, 344(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 16, 352(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 17, 360(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x 20, 1, 4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li 4, 160 +; BE-P8-PRIV-NEXT: std 18, 368(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 19, 376(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 20, 384(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 21, 392(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x 21, 1, 4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li 4, 176 +; BE-P8-PRIV-NEXT: std 22, 400(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 23, 408(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 24, 416(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 25, 424(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 26, 432(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 27, 440(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 28, 448(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 29, 456(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 30, 464(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 31, 472(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std 3, 120(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x 22, 1, 4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li 4, 192 +; BE-P8-PRIV-NEXT: stxvd2x 23, 1, 4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li 4, 208 +; BE-P8-PRIV-NEXT: stfd 14, 480(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x 24, 1, 4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li 4, 224 +; BE-P8-PRIV-NEXT: stfd 15, 488(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x 25, 1, 4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li 4, 240 +; BE-P8-PRIV-NEXT: stfd 16, 496(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x 26, 1, 4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li 4, 256 +; BE-P8-PRIV-NEXT: stfd 17, 504(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x 27, 1, 4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li 4, 272 +; BE-P8-PRIV-NEXT: stfd 18, 512(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x 28, 1, 4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li 4, 288 +; BE-P8-PRIV-NEXT: stfd 19, 520(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x 29, 1, 4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li 4, 304 +; BE-P8-PRIV-NEXT: stfd 20, 528(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x 30, 1, 4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li 4, 320 +; BE-P8-PRIV-NEXT: stfd 21, 536(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x 31, 1, 4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: lwz 4, 12(3) +; BE-P8-PRIV-NEXT: stfd 22, 544(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd 23, 552(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd 24, 560(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd 25, 568(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd 26, 576(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd 27, 584(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd 28, 592(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd 29, 600(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd 30, 608(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd 31, 616(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stw 4, 132(1) +; BE-P8-PRIV-NEXT: #APP +; BE-P8-PRIV-NEXT: nop +; BE-P8-PRIV-NEXT: #NO_APP +; BE-P8-PRIV-NEXT: addi 3, 1, 132 +; BE-P8-PRIV-NEXT: bl .callee2[PR] +; BE-P8-PRIV-NEXT: nop +; BE-P8-PRIV-NEXT: ld 4, 120(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd 31, 616(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd 30, 608(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 31, 472(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd 29, 600(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd 28, 592(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 30, 464(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 29, 456(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lwz 4, 16(4) +; BE-P8-PRIV-NEXT: lfd 27, 584(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd 26, 576(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 28, 448(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd 25, 568(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd 24, 560(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 27, 440(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 26, 432(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: add 3, 4, 3 +; BE-P8-PRIV-NEXT: li 4, 320 +; BE-P8-PRIV-NEXT: lfd 23, 552(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd 22, 544(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 25, 424(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 24, 416(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x 31, 1, 4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li 4, 304 +; BE-P8-PRIV-NEXT: lfd 21, 536(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 23, 408(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 22, 400(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: clrldi 3, 3, 32 +; BE-P8-PRIV-NEXT: lxvd2x 30, 1, 4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li 4, 288 +; BE-P8-PRIV-NEXT: lfd 20, 528(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 21, 392(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 20, 384(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x 29, 1, 4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li 4, 272 +; BE-P8-PRIV-NEXT: lfd 19, 520(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 19, 376(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 18, 368(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x 28, 1, 4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li 4, 256 +; BE-P8-PRIV-NEXT: lfd 18, 512(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 17, 360(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 16, 352(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x 27, 1, 4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li 4, 240 +; BE-P8-PRIV-NEXT: lfd 17, 504(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 15, 344(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld 14, 336(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x 26, 1, 4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li 4, 224 +; BE-P8-PRIV-NEXT: lfd 16, 496(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x 25, 1, 4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li 4, 208 +; BE-P8-PRIV-NEXT: lfd 15, 488(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x 24, 1, 4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li 4, 192 +; BE-P8-PRIV-NEXT: lfd 14, 480(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x 23, 1, 4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li 4, 176 +; BE-P8-PRIV-NEXT: lxvd2x 22, 1, 4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li 4, 160 +; BE-P8-PRIV-NEXT: lxvd2x 21, 1, 4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li 4, 144 +; BE-P8-PRIV-NEXT: lxvd2x 20, 1, 4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: addi 1, 1, 624 +; BE-P8-PRIV-NEXT: ld 0, 16(1) +; BE-P8-PRIV-NEXT: lwz 12, 8(1) +; BE-P8-PRIV-NEXT: mtocrf 32, 12 +; BE-P8-PRIV-NEXT: hashchkp 0, -488(1) +; BE-P8-PRIV-NEXT: mtlr 0 +; BE-P8-PRIV-NEXT: mtocrf 16, 12 +; BE-P8-PRIV-NEXT: mtocrf 8, 12 +; BE-P8-PRIV-NEXT: blr +; +; BE-32BIT-P10-PRIV-LABEL: spill: +; BE-32BIT-P10-PRIV: # %bb.0: # %entry +; BE-32BIT-P10-PRIV-NEXT: mflr 0 +; BE-32BIT-P10-PRIV-NEXT: mfcr 12 +; BE-32BIT-P10-PRIV-NEXT: stw 0, 8(1) +; BE-32BIT-P10-PRIV-NEXT: hashstp 0, -424(1) +; BE-32BIT-P10-PRIV-NEXT: stw 12, 4(1) +; BE-32BIT-P10-PRIV-NEXT: stwu 1, -496(1) +; BE-32BIT-P10-PRIV-NEXT: lwz 4, 12(3) +; BE-32BIT-P10-PRIV-NEXT: stw 13, 276(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 14, 280(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stxv 20, 80(1) # 16-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stxv 21, 96(1) # 16-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stxv 22, 112(1) # 16-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 15, 284(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 16, 288(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stxv 23, 128(1) # 16-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 17, 292(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 18, 296(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stxv 24, 144(1) # 16-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stxv 25, 160(1) # 16-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 19, 300(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 20, 304(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stxv 26, 176(1) # 16-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 21, 308(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 22, 312(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stxv 27, 192(1) # 16-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stxv 28, 208(1) # 16-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 23, 316(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 24, 320(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stxv 29, 224(1) # 16-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 25, 324(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 26, 328(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stxv 30, 240(1) # 16-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stxv 31, 256(1) # 16-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 27, 332(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 28, 336(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 29, 340(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 30, 344(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 31, 348(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 14, 352(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 15, 360(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 16, 368(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 17, 376(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 18, 384(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 19, 392(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 20, 400(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 21, 408(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 22, 416(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 23, 424(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 24, 432(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 25, 440(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 26, 448(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 27, 456(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 28, 464(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 29, 472(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 30, 480(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stfd 31, 488(1) # 8-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 3, 64(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: stw 4, 68(1) +; BE-32BIT-P10-PRIV-NEXT: #APP +; BE-32BIT-P10-PRIV-NEXT: nop +; BE-32BIT-P10-PRIV-NEXT: #NO_APP +; BE-32BIT-P10-PRIV-NEXT: addi 3, 1, 68 +; BE-32BIT-P10-PRIV-NEXT: bl .callee2[PR] +; BE-32BIT-P10-PRIV-NEXT: nop +; BE-32BIT-P10-PRIV-NEXT: lwz 4, 64(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lxv 31, 256(1) # 16-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lxv 30, 240(1) # 16-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lxv 29, 224(1) # 16-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lxv 28, 208(1) # 16-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lxv 27, 192(1) # 16-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lxv 26, 176(1) # 16-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lxv 25, 160(1) # 16-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lxv 24, 144(1) # 16-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lxv 23, 128(1) # 16-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lxv 22, 112(1) # 16-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lxv 21, 96(1) # 16-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lxv 20, 80(1) # 16-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 31, 488(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 30, 480(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 29, 472(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 28, 464(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 27, 456(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 31, 348(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 30, 344(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 29, 340(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 26, 448(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 28, 336(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 27, 332(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 26, 328(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 25, 440(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 25, 324(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 24, 320(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 23, 316(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 24, 432(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 22, 312(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 21, 308(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 4, 16(4) +; BE-32BIT-P10-PRIV-NEXT: add 3, 4, 3 +; BE-32BIT-P10-PRIV-NEXT: lfd 23, 424(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 22, 416(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 20, 304(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 19, 300(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 18, 296(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 17, 292(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 16, 288(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 15, 284(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 14, 280(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lwz 13, 276(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 21, 408(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 20, 400(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 19, 392(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 18, 384(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 17, 376(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 16, 368(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 15, 360(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: lfd 14, 352(1) # 8-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: addi 1, 1, 496 +; BE-32BIT-P10-PRIV-NEXT: lwz 0, 8(1) +; BE-32BIT-P10-PRIV-NEXT: lwz 12, 4(1) +; BE-32BIT-P10-PRIV-NEXT: mtlr 0 +; BE-32BIT-P10-PRIV-NEXT: hashchkp 0, -424(1) +; BE-32BIT-P10-PRIV-NEXT: mtocrf 32, 12 +; BE-32BIT-P10-PRIV-NEXT: mtocrf 16, 12 +; BE-32BIT-P10-PRIV-NEXT: mtocrf 8, 12 +; BE-32BIT-P10-PRIV-NEXT: blr +; +; BE-32BIT-P9-PRIV-LABEL: spill: +; BE-32BIT-P9-PRIV: # %bb.0: # %entry +; BE-32BIT-P9-PRIV-NEXT: mflr 0 +; BE-32BIT-P9-PRIV-NEXT: mfcr 12 +; BE-32BIT-P9-PRIV-NEXT: stw 0, 8(1) +; BE-32BIT-P9-PRIV-NEXT: hashstp 0, -424(1) +; BE-32BIT-P9-PRIV-NEXT: stw 12, 4(1) +; BE-32BIT-P9-PRIV-NEXT: stwu 1, -496(1) +; BE-32BIT-P9-PRIV-NEXT: lwz 4, 12(3) +; BE-32BIT-P9-PRIV-NEXT: stw 13, 276(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 14, 280(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stxv 20, 80(1) # 16-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stxv 21, 96(1) # 16-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stxv 22, 112(1) # 16-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 15, 284(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 16, 288(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stxv 23, 128(1) # 16-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 17, 292(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stxv 24, 144(1) # 16-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 18, 296(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stxv 25, 160(1) # 16-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 19, 300(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 20, 304(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stxv 26, 176(1) # 16-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 21, 308(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stxv 27, 192(1) # 16-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 22, 312(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stxv 28, 208(1) # 16-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 23, 316(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 24, 320(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stxv 29, 224(1) # 16-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 25, 324(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stxv 30, 240(1) # 16-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 26, 328(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stxv 31, 256(1) # 16-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 27, 332(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 28, 336(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 29, 340(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 30, 344(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 31, 348(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 14, 352(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 15, 360(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 16, 368(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 17, 376(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 18, 384(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 19, 392(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 20, 400(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 21, 408(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 22, 416(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 23, 424(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 24, 432(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 25, 440(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 26, 448(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 27, 456(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 28, 464(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 29, 472(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 30, 480(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stfd 31, 488(1) # 8-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 3, 64(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: stw 4, 68(1) +; BE-32BIT-P9-PRIV-NEXT: #APP +; BE-32BIT-P9-PRIV-NEXT: nop +; BE-32BIT-P9-PRIV-NEXT: #NO_APP +; BE-32BIT-P9-PRIV-NEXT: addi 3, 1, 68 +; BE-32BIT-P9-PRIV-NEXT: bl .callee2[PR] +; BE-32BIT-P9-PRIV-NEXT: nop +; BE-32BIT-P9-PRIV-NEXT: lwz 4, 64(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lxv 31, 256(1) # 16-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lxv 30, 240(1) # 16-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lxv 29, 224(1) # 16-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lxv 28, 208(1) # 16-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lxv 27, 192(1) # 16-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lxv 26, 176(1) # 16-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lxv 25, 160(1) # 16-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lxv 24, 144(1) # 16-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lxv 23, 128(1) # 16-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lxv 22, 112(1) # 16-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lxv 21, 96(1) # 16-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lxv 20, 80(1) # 16-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 31, 488(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 30, 480(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 29, 472(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 28, 464(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 27, 456(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 31, 348(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 30, 344(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 29, 340(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 26, 448(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 28, 336(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 27, 332(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 26, 328(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 25, 440(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 25, 324(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 24, 320(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 23, 316(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 24, 432(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 22, 312(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 21, 308(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 4, 16(4) +; BE-32BIT-P9-PRIV-NEXT: add 3, 4, 3 +; BE-32BIT-P9-PRIV-NEXT: lfd 23, 424(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 22, 416(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 20, 304(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 19, 300(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 18, 296(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 17, 292(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 16, 288(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 15, 284(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 14, 280(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lwz 13, 276(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 21, 408(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 20, 400(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 19, 392(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 18, 384(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 17, 376(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 16, 368(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 15, 360(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: lfd 14, 352(1) # 8-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: addi 1, 1, 496 +; BE-32BIT-P9-PRIV-NEXT: lwz 0, 8(1) +; BE-32BIT-P9-PRIV-NEXT: lwz 12, 4(1) +; BE-32BIT-P9-PRIV-NEXT: mtlr 0 +; BE-32BIT-P9-PRIV-NEXT: hashchkp 0, -424(1) +; BE-32BIT-P9-PRIV-NEXT: mtocrf 32, 12 +; BE-32BIT-P9-PRIV-NEXT: mtocrf 16, 12 +; BE-32BIT-P9-PRIV-NEXT: mtocrf 8, 12 +; BE-32BIT-P9-PRIV-NEXT: blr +; +; BE-32BIT-P8-PRIV-LABEL: spill: +; BE-32BIT-P8-PRIV: # %bb.0: # %entry +; BE-32BIT-P8-PRIV-NEXT: mfcr 12 +; BE-32BIT-P8-PRIV-NEXT: mflr 0 +; BE-32BIT-P8-PRIV-NEXT: stw 0, 8(1) +; BE-32BIT-P8-PRIV-NEXT: hashstp 0, -424(1) +; BE-32BIT-P8-PRIV-NEXT: stw 12, 4(1) +; BE-32BIT-P8-PRIV-NEXT: stwu 1, -496(1) +; BE-32BIT-P8-PRIV-NEXT: li 4, 80 +; BE-32BIT-P8-PRIV-NEXT: stw 13, 276(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stw 14, 280(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stxvd2x 20, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: li 4, 96 +; BE-32BIT-P8-PRIV-NEXT: stw 15, 284(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stxvd2x 21, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: li 4, 112 +; BE-32BIT-P8-PRIV-NEXT: stw 16, 288(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stxvd2x 22, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: li 4, 128 +; BE-32BIT-P8-PRIV-NEXT: stw 17, 292(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stxvd2x 23, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: li 4, 144 +; BE-32BIT-P8-PRIV-NEXT: stw 18, 296(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stxvd2x 24, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: li 4, 160 +; BE-32BIT-P8-PRIV-NEXT: stw 19, 300(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stxvd2x 25, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: li 4, 176 +; BE-32BIT-P8-PRIV-NEXT: stw 20, 304(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stxvd2x 26, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: li 4, 192 +; BE-32BIT-P8-PRIV-NEXT: stw 21, 308(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stxvd2x 27, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: li 4, 208 +; BE-32BIT-P8-PRIV-NEXT: stw 22, 312(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stxvd2x 28, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: li 4, 224 +; BE-32BIT-P8-PRIV-NEXT: stw 23, 316(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stxvd2x 29, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: li 4, 240 +; BE-32BIT-P8-PRIV-NEXT: stw 24, 320(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stxvd2x 30, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: li 4, 256 +; BE-32BIT-P8-PRIV-NEXT: stw 25, 324(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stxvd2x 31, 1, 4 # 16-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: lwz 4, 12(3) +; BE-32BIT-P8-PRIV-NEXT: stw 26, 328(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stw 27, 332(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stw 28, 336(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stw 29, 340(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stw 30, 344(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stw 31, 348(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 14, 352(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 15, 360(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 16, 368(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 17, 376(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 18, 384(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 19, 392(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 20, 400(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 21, 408(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 22, 416(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 23, 424(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 24, 432(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 25, 440(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 26, 448(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 27, 456(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 28, 464(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 29, 472(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 30, 480(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stfd 31, 488(1) # 8-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stw 3, 64(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: stw 4, 68(1) +; BE-32BIT-P8-PRIV-NEXT: #APP +; BE-32BIT-P8-PRIV-NEXT: nop +; BE-32BIT-P8-PRIV-NEXT: #NO_APP +; BE-32BIT-P8-PRIV-NEXT: addi 3, 1, 68 +; BE-32BIT-P8-PRIV-NEXT: bl .callee2[PR] +; BE-32BIT-P8-PRIV-NEXT: nop +; BE-32BIT-P8-PRIV-NEXT: lwz 4, 64(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lfd 31, 488(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lfd 30, 480(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 31, 348(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lfd 29, 472(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lfd 28, 464(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 30, 344(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 29, 340(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 4, 16(4) +; BE-32BIT-P8-PRIV-NEXT: lfd 27, 456(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lfd 26, 448(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 28, 336(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lfd 25, 440(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lfd 24, 432(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 27, 332(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 26, 328(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: add 3, 4, 3 +; BE-32BIT-P8-PRIV-NEXT: li 4, 256 +; BE-32BIT-P8-PRIV-NEXT: lfd 23, 424(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lfd 22, 416(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 25, 324(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 24, 320(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lxvd2x 31, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: li 4, 240 +; BE-32BIT-P8-PRIV-NEXT: lfd 21, 408(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 23, 316(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 22, 312(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lxvd2x 30, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: li 4, 224 +; BE-32BIT-P8-PRIV-NEXT: lfd 20, 400(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 21, 308(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 20, 304(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lxvd2x 29, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: li 4, 208 +; BE-32BIT-P8-PRIV-NEXT: lfd 19, 392(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 19, 300(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 18, 296(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lxvd2x 28, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: li 4, 192 +; BE-32BIT-P8-PRIV-NEXT: lfd 18, 384(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 17, 292(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 16, 288(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lxvd2x 27, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: li 4, 176 +; BE-32BIT-P8-PRIV-NEXT: lfd 17, 376(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 15, 284(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 14, 280(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lxvd2x 26, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: li 4, 160 +; BE-32BIT-P8-PRIV-NEXT: lfd 16, 368(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lwz 13, 276(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lxvd2x 25, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: li 4, 144 +; BE-32BIT-P8-PRIV-NEXT: lfd 15, 360(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lxvd2x 24, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: li 4, 128 +; BE-32BIT-P8-PRIV-NEXT: lfd 14, 352(1) # 8-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: lxvd2x 23, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: li 4, 112 +; BE-32BIT-P8-PRIV-NEXT: lxvd2x 22, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: li 4, 96 +; BE-32BIT-P8-PRIV-NEXT: lxvd2x 21, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: li 4, 80 +; BE-32BIT-P8-PRIV-NEXT: lxvd2x 20, 1, 4 # 16-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: addi 1, 1, 496 +; BE-32BIT-P8-PRIV-NEXT: lwz 0, 8(1) +; BE-32BIT-P8-PRIV-NEXT: lwz 12, 4(1) +; BE-32BIT-P8-PRIV-NEXT: mtocrf 32, 12 +; BE-32BIT-P8-PRIV-NEXT: hashchkp 0, -424(1) +; BE-32BIT-P8-PRIV-NEXT: mtlr 0 +; BE-32BIT-P8-PRIV-NEXT: mtocrf 16, 12 +; BE-32BIT-P8-PRIV-NEXT: mtocrf 8, 12 +; BE-32BIT-P8-PRIV-NEXT: blr +entry: + %local = alloca i32, align 4 + %0 = bitcast i32* %local to i8* + call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %0) + %arrayidx = getelementptr inbounds i32, i32* %in, i64 3 + %1 = load i32, i32* %arrayidx, align 4 + store i32 %1, i32* %local, align 4 + tail call void asm sideeffect "nop", "~{cr2},~{cr3},~{cr4},~{r0},~{r1},~{r2},~{r3},~{r4},~{r5},~{r6},~{r7},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15},~{r16},~{r17},~{r18},~{r19},~{r20},~{r21},~{r22},~{r23},~{r24},~{r25},~{r26},~{r27},~{r28},~{r29},~{r30},~{r31},~{f14},~{f15},~{f16},~{f17},~{f18},~{f19},~{f20},~{f21},~{f22},~{f23},~{f24},~{f25},~{f26},~{f27},~{f28},~{f29},~{f30},~{f31},~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"() + %call = call zeroext i32 @callee2(i32* nonnull %local) + %arrayidx1 = getelementptr inbounds i32, i32* %in, i64 4 + %2 = load i32, i32* %arrayidx1, align 4 + %add = add i32 %2, %call + call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %0) + ret i32 %add +} + +define dso_local zeroext i32 @shrinkwrap(i32* readonly %in) #0 { +; BE-P10-LABEL: shrinkwrap: +; BE-P10: # %bb.0: # %entry +; BE-P10-NEXT: cmpldi 3, 0 +; BE-P10-NEXT: beq 0, L..BB2_2 +; BE-P10-NEXT: # %bb.1: # %if.end +; BE-P10-NEXT: mflr 0 +; BE-P10-NEXT: std 0, 16(1) +; BE-P10-NEXT: hashst 0, -16(1) +; BE-P10-NEXT: stdu 1, -144(1) +; BE-P10-NEXT: std 31, 136(1) # 8-byte Folded Spill +; BE-P10-NEXT: mr 31, 3 +; BE-P10-NEXT: lwz 3, 12(3) +; BE-P10-NEXT: stw 3, 124(1) +; BE-P10-NEXT: addi 3, 1, 124 +; BE-P10-NEXT: bl .callee2[PR] +; BE-P10-NEXT: nop +; BE-P10-NEXT: lwz 4, 16(31) +; BE-P10-NEXT: ld 31, 136(1) # 8-byte Folded Reload +; BE-P10-NEXT: add 3, 4, 3 +; BE-P10-NEXT: addi 1, 1, 144 +; BE-P10-NEXT: ld 0, 16(1) +; BE-P10-NEXT: clrldi 3, 3, 32 +; BE-P10-NEXT: mtlr 0 +; BE-P10-NEXT: hashchk 0, -16(1) +; BE-P10-NEXT: blr +; BE-P10-NEXT: L..BB2_2: +; BE-P10-NEXT: li 3, 0 +; BE-P10-NEXT: blr +; +; BE-P9-LABEL: shrinkwrap: +; BE-P9: # %bb.0: # %entry +; BE-P9-NEXT: cmpldi 3, 0 +; BE-P9-NEXT: beq 0, L..BB2_2 +; BE-P9-NEXT: # %bb.1: # %if.end +; BE-P9-NEXT: mflr 0 +; BE-P9-NEXT: std 0, 16(1) +; BE-P9-NEXT: hashst 0, -16(1) +; BE-P9-NEXT: stdu 1, -144(1) +; BE-P9-NEXT: std 31, 136(1) # 8-byte Folded Spill +; BE-P9-NEXT: mr 31, 3 +; BE-P9-NEXT: lwz 3, 12(3) +; BE-P9-NEXT: stw 3, 124(1) +; BE-P9-NEXT: addi 3, 1, 124 +; BE-P9-NEXT: bl .callee2[PR] +; BE-P9-NEXT: nop +; BE-P9-NEXT: lwz 4, 16(31) +; BE-P9-NEXT: ld 31, 136(1) # 8-byte Folded Reload +; BE-P9-NEXT: add 3, 4, 3 +; BE-P9-NEXT: addi 1, 1, 144 +; BE-P9-NEXT: ld 0, 16(1) +; BE-P9-NEXT: clrldi 3, 3, 32 +; BE-P9-NEXT: mtlr 0 +; BE-P9-NEXT: hashchk 0, -16(1) +; BE-P9-NEXT: blr +; BE-P9-NEXT: L..BB2_2: +; BE-P9-NEXT: li 3, 0 +; BE-P9-NEXT: blr +; +; BE-P8-LABEL: shrinkwrap: +; BE-P8: # %bb.0: # %entry +; BE-P8-NEXT: cmpldi 3, 0 +; BE-P8-NEXT: beq 0, L..BB2_2 +; BE-P8-NEXT: # %bb.1: # %if.end +; BE-P8-NEXT: mflr 0 +; BE-P8-NEXT: std 0, 16(1) +; BE-P8-NEXT: hashst 0, -16(1) +; BE-P8-NEXT: stdu 1, -144(1) +; BE-P8-NEXT: std 31, 136(1) # 8-byte Folded Spill +; BE-P8-NEXT: mr 31, 3 +; BE-P8-NEXT: lwz 3, 12(3) +; BE-P8-NEXT: stw 3, 124(1) +; BE-P8-NEXT: addi 3, 1, 124 +; BE-P8-NEXT: bl .callee2[PR] +; BE-P8-NEXT: nop +; BE-P8-NEXT: lwz 4, 16(31) +; BE-P8-NEXT: ld 31, 136(1) # 8-byte Folded Reload +; BE-P8-NEXT: add 3, 4, 3 +; BE-P8-NEXT: addi 1, 1, 144 +; BE-P8-NEXT: ld 0, 16(1) +; BE-P8-NEXT: clrldi 3, 3, 32 +; BE-P8-NEXT: hashchk 0, -16(1) +; BE-P8-NEXT: mtlr 0 +; BE-P8-NEXT: blr +; BE-P8-NEXT: L..BB2_2: +; BE-P8-NEXT: li 3, 0 +; BE-P8-NEXT: blr +; +; BE-32BIT-P10-LABEL: shrinkwrap: +; BE-32BIT-P10: # %bb.0: # %entry +; BE-32BIT-P10-NEXT: cmplwi 3, 0 +; BE-32BIT-P10-NEXT: beq 0, L..BB2_2 +; BE-32BIT-P10-NEXT: # %bb.1: # %if.end +; BE-32BIT-P10-NEXT: mflr 0 +; BE-32BIT-P10-NEXT: stw 0, 8(1) +; BE-32BIT-P10-NEXT: hashst 0, -16(1) +; BE-32BIT-P10-NEXT: stwu 1, -80(1) +; BE-32BIT-P10-NEXT: stw 31, 76(1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: mr 31, 3 +; BE-32BIT-P10-NEXT: lwz 3, 12(3) +; BE-32BIT-P10-NEXT: stw 3, 60(1) +; BE-32BIT-P10-NEXT: addi 3, 1, 60 +; BE-32BIT-P10-NEXT: bl .callee2[PR] +; BE-32BIT-P10-NEXT: nop +; BE-32BIT-P10-NEXT: lwz 4, 16(31) +; BE-32BIT-P10-NEXT: lwz 31, 76(1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: add 3, 4, 3 +; BE-32BIT-P10-NEXT: addi 1, 1, 80 +; BE-32BIT-P10-NEXT: lwz 0, 8(1) +; BE-32BIT-P10-NEXT: mtlr 0 +; BE-32BIT-P10-NEXT: hashchk 0, -16(1) +; BE-32BIT-P10-NEXT: blr +; BE-32BIT-P10-NEXT: L..BB2_2: +; BE-32BIT-P10-NEXT: li 3, 0 +; BE-32BIT-P10-NEXT: blr +; +; BE-32BIT-P9-LABEL: shrinkwrap: +; BE-32BIT-P9: # %bb.0: # %entry +; BE-32BIT-P9-NEXT: cmplwi 3, 0 +; BE-32BIT-P9-NEXT: beq 0, L..BB2_2 +; BE-32BIT-P9-NEXT: # %bb.1: # %if.end +; BE-32BIT-P9-NEXT: mflr 0 +; BE-32BIT-P9-NEXT: stw 0, 8(1) +; BE-32BIT-P9-NEXT: hashst 0, -16(1) +; BE-32BIT-P9-NEXT: stwu 1, -80(1) +; BE-32BIT-P9-NEXT: stw 31, 76(1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: mr 31, 3 +; BE-32BIT-P9-NEXT: lwz 3, 12(3) +; BE-32BIT-P9-NEXT: stw 3, 60(1) +; BE-32BIT-P9-NEXT: addi 3, 1, 60 +; BE-32BIT-P9-NEXT: bl .callee2[PR] +; BE-32BIT-P9-NEXT: nop +; BE-32BIT-P9-NEXT: lwz 4, 16(31) +; BE-32BIT-P9-NEXT: lwz 31, 76(1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: add 3, 4, 3 +; BE-32BIT-P9-NEXT: addi 1, 1, 80 +; BE-32BIT-P9-NEXT: lwz 0, 8(1) +; BE-32BIT-P9-NEXT: mtlr 0 +; BE-32BIT-P9-NEXT: hashchk 0, -16(1) +; BE-32BIT-P9-NEXT: blr +; BE-32BIT-P9-NEXT: L..BB2_2: +; BE-32BIT-P9-NEXT: li 3, 0 +; BE-32BIT-P9-NEXT: blr +; +; BE-32BIT-P8-LABEL: shrinkwrap: +; BE-32BIT-P8: # %bb.0: # %entry +; BE-32BIT-P8-NEXT: cmplwi 3, 0 +; BE-32BIT-P8-NEXT: beq 0, L..BB2_2 +; BE-32BIT-P8-NEXT: # %bb.1: # %if.end +; BE-32BIT-P8-NEXT: mflr 0 +; BE-32BIT-P8-NEXT: stw 0, 8(1) +; BE-32BIT-P8-NEXT: hashst 0, -16(1) +; BE-32BIT-P8-NEXT: stwu 1, -80(1) +; BE-32BIT-P8-NEXT: stw 31, 76(1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: mr 31, 3 +; BE-32BIT-P8-NEXT: lwz 3, 12(3) +; BE-32BIT-P8-NEXT: stw 3, 60(1) +; BE-32BIT-P8-NEXT: addi 3, 1, 60 +; BE-32BIT-P8-NEXT: bl .callee2[PR] +; BE-32BIT-P8-NEXT: nop +; BE-32BIT-P8-NEXT: lwz 4, 16(31) +; BE-32BIT-P8-NEXT: lwz 31, 76(1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: add 3, 4, 3 +; BE-32BIT-P8-NEXT: addi 1, 1, 80 +; BE-32BIT-P8-NEXT: lwz 0, 8(1) +; BE-32BIT-P8-NEXT: hashchk 0, -16(1) +; BE-32BIT-P8-NEXT: mtlr 0 +; BE-32BIT-P8-NEXT: blr +; BE-32BIT-P8-NEXT: L..BB2_2: +; BE-32BIT-P8-NEXT: li 3, 0 +; BE-32BIT-P8-NEXT: blr +; +; BE-P10-PRIV-LABEL: shrinkwrap: +; BE-P10-PRIV: # %bb.0: # %entry +; BE-P10-PRIV-NEXT: cmpldi 3, 0 +; BE-P10-PRIV-NEXT: beq 0, L..BB2_2 +; BE-P10-PRIV-NEXT: # %bb.1: # %if.end +; BE-P10-PRIV-NEXT: mflr 0 +; BE-P10-PRIV-NEXT: std 0, 16(1) +; BE-P10-PRIV-NEXT: hashstp 0, -16(1) +; BE-P10-PRIV-NEXT: stdu 1, -144(1) +; BE-P10-PRIV-NEXT: std 31, 136(1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: mr 31, 3 +; BE-P10-PRIV-NEXT: lwz 3, 12(3) +; BE-P10-PRIV-NEXT: stw 3, 124(1) +; BE-P10-PRIV-NEXT: addi 3, 1, 124 +; BE-P10-PRIV-NEXT: bl .callee2[PR] +; BE-P10-PRIV-NEXT: nop +; BE-P10-PRIV-NEXT: lwz 4, 16(31) +; BE-P10-PRIV-NEXT: ld 31, 136(1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: add 3, 4, 3 +; BE-P10-PRIV-NEXT: addi 1, 1, 144 +; BE-P10-PRIV-NEXT: ld 0, 16(1) +; BE-P10-PRIV-NEXT: clrldi 3, 3, 32 +; BE-P10-PRIV-NEXT: mtlr 0 +; BE-P10-PRIV-NEXT: hashchkp 0, -16(1) +; BE-P10-PRIV-NEXT: blr +; BE-P10-PRIV-NEXT: L..BB2_2: +; BE-P10-PRIV-NEXT: li 3, 0 +; BE-P10-PRIV-NEXT: blr +; +; BE-P9-PRIV-LABEL: shrinkwrap: +; BE-P9-PRIV: # %bb.0: # %entry +; BE-P9-PRIV-NEXT: cmpldi 3, 0 +; BE-P9-PRIV-NEXT: beq 0, L..BB2_2 +; BE-P9-PRIV-NEXT: # %bb.1: # %if.end +; BE-P9-PRIV-NEXT: mflr 0 +; BE-P9-PRIV-NEXT: std 0, 16(1) +; BE-P9-PRIV-NEXT: hashstp 0, -16(1) +; BE-P9-PRIV-NEXT: stdu 1, -144(1) +; BE-P9-PRIV-NEXT: std 31, 136(1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: mr 31, 3 +; BE-P9-PRIV-NEXT: lwz 3, 12(3) +; BE-P9-PRIV-NEXT: stw 3, 124(1) +; BE-P9-PRIV-NEXT: addi 3, 1, 124 +; BE-P9-PRIV-NEXT: bl .callee2[PR] +; BE-P9-PRIV-NEXT: nop +; BE-P9-PRIV-NEXT: lwz 4, 16(31) +; BE-P9-PRIV-NEXT: ld 31, 136(1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: add 3, 4, 3 +; BE-P9-PRIV-NEXT: addi 1, 1, 144 +; BE-P9-PRIV-NEXT: ld 0, 16(1) +; BE-P9-PRIV-NEXT: clrldi 3, 3, 32 +; BE-P9-PRIV-NEXT: mtlr 0 +; BE-P9-PRIV-NEXT: hashchkp 0, -16(1) +; BE-P9-PRIV-NEXT: blr +; BE-P9-PRIV-NEXT: L..BB2_2: +; BE-P9-PRIV-NEXT: li 3, 0 +; BE-P9-PRIV-NEXT: blr +; +; BE-P8-PRIV-LABEL: shrinkwrap: +; BE-P8-PRIV: # %bb.0: # %entry +; BE-P8-PRIV-NEXT: cmpldi 3, 0 +; BE-P8-PRIV-NEXT: beq 0, L..BB2_2 +; BE-P8-PRIV-NEXT: # %bb.1: # %if.end +; BE-P8-PRIV-NEXT: mflr 0 +; BE-P8-PRIV-NEXT: std 0, 16(1) +; BE-P8-PRIV-NEXT: hashstp 0, -16(1) +; BE-P8-PRIV-NEXT: stdu 1, -144(1) +; BE-P8-PRIV-NEXT: std 31, 136(1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: mr 31, 3 +; BE-P8-PRIV-NEXT: lwz 3, 12(3) +; BE-P8-PRIV-NEXT: stw 3, 124(1) +; BE-P8-PRIV-NEXT: addi 3, 1, 124 +; BE-P8-PRIV-NEXT: bl .callee2[PR] +; BE-P8-PRIV-NEXT: nop +; BE-P8-PRIV-NEXT: lwz 4, 16(31) +; BE-P8-PRIV-NEXT: ld 31, 136(1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: add 3, 4, 3 +; BE-P8-PRIV-NEXT: addi 1, 1, 144 +; BE-P8-PRIV-NEXT: ld 0, 16(1) +; BE-P8-PRIV-NEXT: clrldi 3, 3, 32 +; BE-P8-PRIV-NEXT: hashchkp 0, -16(1) +; BE-P8-PRIV-NEXT: mtlr 0 +; BE-P8-PRIV-NEXT: blr +; BE-P8-PRIV-NEXT: L..BB2_2: +; BE-P8-PRIV-NEXT: li 3, 0 +; BE-P8-PRIV-NEXT: blr +; +; BE-32BIT-P10-PRIV-LABEL: shrinkwrap: +; BE-32BIT-P10-PRIV: # %bb.0: # %entry +; BE-32BIT-P10-PRIV-NEXT: cmplwi 3, 0 +; BE-32BIT-P10-PRIV-NEXT: beq 0, L..BB2_2 +; BE-32BIT-P10-PRIV-NEXT: # %bb.1: # %if.end +; BE-32BIT-P10-PRIV-NEXT: mflr 0 +; BE-32BIT-P10-PRIV-NEXT: stw 0, 8(1) +; BE-32BIT-P10-PRIV-NEXT: hashstp 0, -16(1) +; BE-32BIT-P10-PRIV-NEXT: stwu 1, -80(1) +; BE-32BIT-P10-PRIV-NEXT: stw 31, 76(1) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: mr 31, 3 +; BE-32BIT-P10-PRIV-NEXT: lwz 3, 12(3) +; BE-32BIT-P10-PRIV-NEXT: stw 3, 60(1) +; BE-32BIT-P10-PRIV-NEXT: addi 3, 1, 60 +; BE-32BIT-P10-PRIV-NEXT: bl .callee2[PR] +; BE-32BIT-P10-PRIV-NEXT: nop +; BE-32BIT-P10-PRIV-NEXT: lwz 4, 16(31) +; BE-32BIT-P10-PRIV-NEXT: lwz 31, 76(1) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: add 3, 4, 3 +; BE-32BIT-P10-PRIV-NEXT: addi 1, 1, 80 +; BE-32BIT-P10-PRIV-NEXT: lwz 0, 8(1) +; BE-32BIT-P10-PRIV-NEXT: mtlr 0 +; BE-32BIT-P10-PRIV-NEXT: hashchkp 0, -16(1) +; BE-32BIT-P10-PRIV-NEXT: blr +; BE-32BIT-P10-PRIV-NEXT: L..BB2_2: +; BE-32BIT-P10-PRIV-NEXT: li 3, 0 +; BE-32BIT-P10-PRIV-NEXT: blr +; +; BE-32BIT-P9-PRIV-LABEL: shrinkwrap: +; BE-32BIT-P9-PRIV: # %bb.0: # %entry +; BE-32BIT-P9-PRIV-NEXT: cmplwi 3, 0 +; BE-32BIT-P9-PRIV-NEXT: beq 0, L..BB2_2 +; BE-32BIT-P9-PRIV-NEXT: # %bb.1: # %if.end +; BE-32BIT-P9-PRIV-NEXT: mflr 0 +; BE-32BIT-P9-PRIV-NEXT: stw 0, 8(1) +; BE-32BIT-P9-PRIV-NEXT: hashstp 0, -16(1) +; BE-32BIT-P9-PRIV-NEXT: stwu 1, -80(1) +; BE-32BIT-P9-PRIV-NEXT: stw 31, 76(1) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: mr 31, 3 +; BE-32BIT-P9-PRIV-NEXT: lwz 3, 12(3) +; BE-32BIT-P9-PRIV-NEXT: stw 3, 60(1) +; BE-32BIT-P9-PRIV-NEXT: addi 3, 1, 60 +; BE-32BIT-P9-PRIV-NEXT: bl .callee2[PR] +; BE-32BIT-P9-PRIV-NEXT: nop +; BE-32BIT-P9-PRIV-NEXT: lwz 4, 16(31) +; BE-32BIT-P9-PRIV-NEXT: lwz 31, 76(1) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: add 3, 4, 3 +; BE-32BIT-P9-PRIV-NEXT: addi 1, 1, 80 +; BE-32BIT-P9-PRIV-NEXT: lwz 0, 8(1) +; BE-32BIT-P9-PRIV-NEXT: mtlr 0 +; BE-32BIT-P9-PRIV-NEXT: hashchkp 0, -16(1) +; BE-32BIT-P9-PRIV-NEXT: blr +; BE-32BIT-P9-PRIV-NEXT: L..BB2_2: +; BE-32BIT-P9-PRIV-NEXT: li 3, 0 +; BE-32BIT-P9-PRIV-NEXT: blr +; +; BE-32BIT-P8-PRIV-LABEL: shrinkwrap: +; BE-32BIT-P8-PRIV: # %bb.0: # %entry +; BE-32BIT-P8-PRIV-NEXT: cmplwi 3, 0 +; BE-32BIT-P8-PRIV-NEXT: beq 0, L..BB2_2 +; BE-32BIT-P8-PRIV-NEXT: # %bb.1: # %if.end +; BE-32BIT-P8-PRIV-NEXT: mflr 0 +; BE-32BIT-P8-PRIV-NEXT: stw 0, 8(1) +; BE-32BIT-P8-PRIV-NEXT: hashstp 0, -16(1) +; BE-32BIT-P8-PRIV-NEXT: stwu 1, -80(1) +; BE-32BIT-P8-PRIV-NEXT: stw 31, 76(1) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: mr 31, 3 +; BE-32BIT-P8-PRIV-NEXT: lwz 3, 12(3) +; BE-32BIT-P8-PRIV-NEXT: stw 3, 60(1) +; BE-32BIT-P8-PRIV-NEXT: addi 3, 1, 60 +; BE-32BIT-P8-PRIV-NEXT: bl .callee2[PR] +; BE-32BIT-P8-PRIV-NEXT: nop +; BE-32BIT-P8-PRIV-NEXT: lwz 4, 16(31) +; BE-32BIT-P8-PRIV-NEXT: lwz 31, 76(1) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: add 3, 4, 3 +; BE-32BIT-P8-PRIV-NEXT: addi 1, 1, 80 +; BE-32BIT-P8-PRIV-NEXT: lwz 0, 8(1) +; BE-32BIT-P8-PRIV-NEXT: hashchkp 0, -16(1) +; BE-32BIT-P8-PRIV-NEXT: mtlr 0 +; BE-32BIT-P8-PRIV-NEXT: blr +; BE-32BIT-P8-PRIV-NEXT: L..BB2_2: +; BE-32BIT-P8-PRIV-NEXT: li 3, 0 +; BE-32BIT-P8-PRIV-NEXT: blr +entry: + %local = alloca i32, align 4 + %tobool.not = icmp eq i32* %in, null + br i1 %tobool.not, label %return, label %if.end + +if.end: ; preds = %entry + %0 = bitcast i32* %local to i8* + call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %0) + %arrayidx = getelementptr inbounds i32, i32* %in, i64 3 + %1 = load i32, i32* %arrayidx, align 4 + store i32 %1, i32* %local, align 4 + %call = call zeroext i32 @callee2(i32* nonnull %local) + %arrayidx1 = getelementptr inbounds i32, i32* %in, i64 4 + %2 = load i32, i32* %arrayidx1, align 4 + %add = add i32 %2, %call + call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %0) + br label %return + +return: ; preds = %entry, %if.end + %retval.0 = phi i32 [ %add, %if.end ], [ 0, %entry ] + ret i32 %retval.0 +} + +define dso_local zeroext i32 @aligned(i32* nocapture readonly %in) #0 { +; BE-P10-LABEL: aligned: +; BE-P10: # %bb.0: # %entry +; BE-P10-NEXT: mflr 0 +; BE-P10-NEXT: lis 12, -1 +; BE-P10-NEXT: std 30, -16(1) +; BE-P10-NEXT: mr 30, 1 +; BE-P10-NEXT: ori 12, 12, 0 +; BE-P10-NEXT: std 0, 16(1) +; BE-P10-NEXT: hashst 0, -24(1) +; BE-P10-NEXT: clrldi 0, 1, 49 +; BE-P10-NEXT: subc 0, 12, 0 +; BE-P10-NEXT: stdux 1, 1, 0 +; BE-P10-NEXT: std 31, -8(30) # 8-byte Folded Spill +; BE-P10-NEXT: mr 31, 3 +; BE-P10-NEXT: lwz 3, 4(3) +; BE-P10-NEXT: lis 4, 0 +; BE-P10-NEXT: addi 5, 1, 32764 +; BE-P10-NEXT: ori 4, 4, 65508 +; BE-P10-NEXT: stwx 3, 1, 4 +; BE-P10-NEXT: lwz 3, 12(31) +; BE-P10-NEXT: lis 4, 0 +; BE-P10-NEXT: ori 4, 4, 32768 +; BE-P10-NEXT: stwx 3, 1, 4 +; BE-P10-NEXT: lwz 3, 20(31) +; BE-P10-NEXT: lis 4, 0 +; BE-P10-NEXT: ori 4, 4, 65508 +; BE-P10-NEXT: stw 3, 32764(1) +; BE-P10-NEXT: lis 3, 0 +; BE-P10-NEXT: add 4, 1, 4 +; BE-P10-NEXT: ori 3, 3, 32768 +; BE-P10-NEXT: add 3, 1, 3 +; BE-P10-NEXT: bl .callee3[PR] +; BE-P10-NEXT: nop +; BE-P10-NEXT: lwz 4, 16(31) +; BE-P10-NEXT: ld 31, -8(30) # 8-byte Folded Reload +; BE-P10-NEXT: add 3, 4, 3 +; BE-P10-NEXT: clrldi 3, 3, 32 +; BE-P10-NEXT: mr 1, 30 +; BE-P10-NEXT: ld 0, 16(1) +; BE-P10-NEXT: ld 30, -16(1) +; BE-P10-NEXT: mtlr 0 +; BE-P10-NEXT: hashchk 0, -24(1) +; BE-P10-NEXT: blr +; +; BE-P9-LABEL: aligned: +; BE-P9: # %bb.0: # %entry +; BE-P9-NEXT: mflr 0 +; BE-P9-NEXT: lis 12, -1 +; BE-P9-NEXT: std 30, -16(1) +; BE-P9-NEXT: mr 30, 1 +; BE-P9-NEXT: ori 12, 12, 0 +; BE-P9-NEXT: std 0, 16(1) +; BE-P9-NEXT: hashst 0, -24(1) +; BE-P9-NEXT: clrldi 0, 1, 49 +; BE-P9-NEXT: subc 0, 12, 0 +; BE-P9-NEXT: stdux 1, 1, 0 +; BE-P9-NEXT: std 31, -8(30) # 8-byte Folded Spill +; BE-P9-NEXT: mr 31, 3 +; BE-P9-NEXT: lwz 3, 4(3) +; BE-P9-NEXT: lis 4, 0 +; BE-P9-NEXT: addi 5, 1, 32764 +; BE-P9-NEXT: ori 4, 4, 65508 +; BE-P9-NEXT: stwx 3, 1, 4 +; BE-P9-NEXT: lwz 3, 12(31) +; BE-P9-NEXT: lis 4, 0 +; BE-P9-NEXT: ori 4, 4, 32768 +; BE-P9-NEXT: stwx 3, 1, 4 +; BE-P9-NEXT: lwz 3, 20(31) +; BE-P9-NEXT: lis 4, 0 +; BE-P9-NEXT: ori 4, 4, 65508 +; BE-P9-NEXT: stw 3, 32764(1) +; BE-P9-NEXT: lis 3, 0 +; BE-P9-NEXT: add 4, 1, 4 +; BE-P9-NEXT: ori 3, 3, 32768 +; BE-P9-NEXT: add 3, 1, 3 +; BE-P9-NEXT: bl .callee3[PR] +; BE-P9-NEXT: nop +; BE-P9-NEXT: lwz 4, 16(31) +; BE-P9-NEXT: ld 31, -8(30) # 8-byte Folded Reload +; BE-P9-NEXT: add 3, 4, 3 +; BE-P9-NEXT: clrldi 3, 3, 32 +; BE-P9-NEXT: mr 1, 30 +; BE-P9-NEXT: ld 0, 16(1) +; BE-P9-NEXT: ld 30, -16(1) +; BE-P9-NEXT: mtlr 0 +; BE-P9-NEXT: hashchk 0, -24(1) +; BE-P9-NEXT: blr +; +; BE-P8-LABEL: aligned: +; BE-P8: # %bb.0: # %entry +; BE-P8-NEXT: mflr 0 +; BE-P8-NEXT: lis 12, -1 +; BE-P8-NEXT: std 30, -16(1) +; BE-P8-NEXT: mr 30, 1 +; BE-P8-NEXT: std 0, 16(1) +; BE-P8-NEXT: hashst 0, -24(1) +; BE-P8-NEXT: clrldi 0, 1, 49 +; BE-P8-NEXT: ori 12, 12, 0 +; BE-P8-NEXT: subc 0, 12, 0 +; BE-P8-NEXT: stdux 1, 1, 0 +; BE-P8-NEXT: std 31, -8(30) # 8-byte Folded Spill +; BE-P8-NEXT: mr 31, 3 +; BE-P8-NEXT: lwz 3, 4(3) +; BE-P8-NEXT: lis 6, 0 +; BE-P8-NEXT: ori 6, 6, 65508 +; BE-P8-NEXT: lwz 4, 12(31) +; BE-P8-NEXT: lwz 5, 20(31) +; BE-P8-NEXT: stwx 3, 1, 6 +; BE-P8-NEXT: lis 3, 0 +; BE-P8-NEXT: ori 3, 3, 32768 +; BE-P8-NEXT: stw 5, 32764(1) +; BE-P8-NEXT: addi 5, 1, 32764 +; BE-P8-NEXT: stwx 4, 1, 3 +; BE-P8-NEXT: lis 3, 0 +; BE-P8-NEXT: lis 4, 0 +; BE-P8-NEXT: ori 3, 3, 32768 +; BE-P8-NEXT: ori 4, 4, 65508 +; BE-P8-NEXT: add 3, 1, 3 +; BE-P8-NEXT: add 4, 1, 4 +; BE-P8-NEXT: bl .callee3[PR] +; BE-P8-NEXT: nop +; BE-P8-NEXT: lwz 4, 16(31) +; BE-P8-NEXT: ld 31, -8(30) # 8-byte Folded Reload +; BE-P8-NEXT: add 3, 4, 3 +; BE-P8-NEXT: clrldi 3, 3, 32 +; BE-P8-NEXT: mr 1, 30 +; BE-P8-NEXT: ld 0, 16(1) +; BE-P8-NEXT: ld 30, -16(1) +; BE-P8-NEXT: hashchk 0, -24(1) +; BE-P8-NEXT: mtlr 0 +; BE-P8-NEXT: blr +; +; BE-32BIT-P10-LABEL: aligned: +; BE-32BIT-P10: # %bb.0: # %entry +; BE-32BIT-P10-NEXT: mflr 0 +; BE-32BIT-P10-NEXT: lis 12, -1 +; BE-32BIT-P10-NEXT: stw 30, -8(1) +; BE-32BIT-P10-NEXT: mr 30, 1 +; BE-32BIT-P10-NEXT: ori 12, 12, 0 +; BE-32BIT-P10-NEXT: stw 0, 8(1) +; BE-32BIT-P10-NEXT: hashst 0, -16(1) +; BE-32BIT-P10-NEXT: clrlwi 0, 1, 17 +; BE-32BIT-P10-NEXT: subc 0, 12, 0 +; BE-32BIT-P10-NEXT: stwux 1, 1, 0 +; BE-32BIT-P10-NEXT: stw 31, -4(30) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: mr 31, 3 +; BE-32BIT-P10-NEXT: lwz 3, 4(3) +; BE-32BIT-P10-NEXT: lis 4, 0 +; BE-32BIT-P10-NEXT: addi 5, 1, 32764 +; BE-32BIT-P10-NEXT: ori 4, 4, 65516 +; BE-32BIT-P10-NEXT: stwx 3, 1, 4 +; BE-32BIT-P10-NEXT: lwz 3, 12(31) +; BE-32BIT-P10-NEXT: lis 4, 0 +; BE-32BIT-P10-NEXT: ori 4, 4, 32768 +; BE-32BIT-P10-NEXT: stwx 3, 1, 4 +; BE-32BIT-P10-NEXT: lwz 3, 20(31) +; BE-32BIT-P10-NEXT: lis 4, 0 +; BE-32BIT-P10-NEXT: ori 4, 4, 65516 +; BE-32BIT-P10-NEXT: stw 3, 32764(1) +; BE-32BIT-P10-NEXT: lis 3, 0 +; BE-32BIT-P10-NEXT: add 4, 1, 4 +; BE-32BIT-P10-NEXT: ori 3, 3, 32768 +; BE-32BIT-P10-NEXT: add 3, 1, 3 +; BE-32BIT-P10-NEXT: bl .callee3[PR] +; BE-32BIT-P10-NEXT: nop +; BE-32BIT-P10-NEXT: lwz 4, 16(31) +; BE-32BIT-P10-NEXT: lwz 31, -4(30) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: add 3, 4, 3 +; BE-32BIT-P10-NEXT: mr 1, 30 +; BE-32BIT-P10-NEXT: lwz 0, 8(1) +; BE-32BIT-P10-NEXT: lwz 30, -8(1) +; BE-32BIT-P10-NEXT: mtlr 0 +; BE-32BIT-P10-NEXT: hashchk 0, -16(1) +; BE-32BIT-P10-NEXT: blr +; +; BE-32BIT-P9-LABEL: aligned: +; BE-32BIT-P9: # %bb.0: # %entry +; BE-32BIT-P9-NEXT: mflr 0 +; BE-32BIT-P9-NEXT: lis 12, -1 +; BE-32BIT-P9-NEXT: stw 30, -8(1) +; BE-32BIT-P9-NEXT: mr 30, 1 +; BE-32BIT-P9-NEXT: ori 12, 12, 0 +; BE-32BIT-P9-NEXT: stw 0, 8(1) +; BE-32BIT-P9-NEXT: hashst 0, -16(1) +; BE-32BIT-P9-NEXT: clrlwi 0, 1, 17 +; BE-32BIT-P9-NEXT: subc 0, 12, 0 +; BE-32BIT-P9-NEXT: stwux 1, 1, 0 +; BE-32BIT-P9-NEXT: stw 31, -4(30) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: mr 31, 3 +; BE-32BIT-P9-NEXT: lwz 3, 4(3) +; BE-32BIT-P9-NEXT: lis 4, 0 +; BE-32BIT-P9-NEXT: addi 5, 1, 32764 +; BE-32BIT-P9-NEXT: ori 4, 4, 65516 +; BE-32BIT-P9-NEXT: stwx 3, 1, 4 +; BE-32BIT-P9-NEXT: lwz 3, 12(31) +; BE-32BIT-P9-NEXT: lis 4, 0 +; BE-32BIT-P9-NEXT: ori 4, 4, 32768 +; BE-32BIT-P9-NEXT: stwx 3, 1, 4 +; BE-32BIT-P9-NEXT: lwz 3, 20(31) +; BE-32BIT-P9-NEXT: lis 4, 0 +; BE-32BIT-P9-NEXT: ori 4, 4, 65516 +; BE-32BIT-P9-NEXT: stw 3, 32764(1) +; BE-32BIT-P9-NEXT: lis 3, 0 +; BE-32BIT-P9-NEXT: add 4, 1, 4 +; BE-32BIT-P9-NEXT: ori 3, 3, 32768 +; BE-32BIT-P9-NEXT: add 3, 1, 3 +; BE-32BIT-P9-NEXT: bl .callee3[PR] +; BE-32BIT-P9-NEXT: nop +; BE-32BIT-P9-NEXT: lwz 4, 16(31) +; BE-32BIT-P9-NEXT: lwz 31, -4(30) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: add 3, 4, 3 +; BE-32BIT-P9-NEXT: mr 1, 30 +; BE-32BIT-P9-NEXT: lwz 0, 8(1) +; BE-32BIT-P9-NEXT: lwz 30, -8(1) +; BE-32BIT-P9-NEXT: mtlr 0 +; BE-32BIT-P9-NEXT: hashchk 0, -16(1) +; BE-32BIT-P9-NEXT: blr +; +; BE-32BIT-P8-LABEL: aligned: +; BE-32BIT-P8: # %bb.0: # %entry +; BE-32BIT-P8-NEXT: mflr 0 +; BE-32BIT-P8-NEXT: lis 12, -1 +; BE-32BIT-P8-NEXT: stw 30, -8(1) +; BE-32BIT-P8-NEXT: mr 30, 1 +; BE-32BIT-P8-NEXT: stw 0, 8(1) +; BE-32BIT-P8-NEXT: hashst 0, -16(1) +; BE-32BIT-P8-NEXT: clrlwi 0, 1, 17 +; BE-32BIT-P8-NEXT: ori 12, 12, 0 +; BE-32BIT-P8-NEXT: subc 0, 12, 0 +; BE-32BIT-P8-NEXT: stwux 1, 1, 0 +; BE-32BIT-P8-NEXT: stw 31, -4(30) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: mr 31, 3 +; BE-32BIT-P8-NEXT: lwz 3, 4(3) +; BE-32BIT-P8-NEXT: lis 6, 0 +; BE-32BIT-P8-NEXT: ori 6, 6, 65516 +; BE-32BIT-P8-NEXT: lwz 4, 12(31) +; BE-32BIT-P8-NEXT: lwz 5, 20(31) +; BE-32BIT-P8-NEXT: stwx 3, 1, 6 +; BE-32BIT-P8-NEXT: lis 3, 0 +; BE-32BIT-P8-NEXT: ori 3, 3, 32768 +; BE-32BIT-P8-NEXT: stw 5, 32764(1) +; BE-32BIT-P8-NEXT: addi 5, 1, 32764 +; BE-32BIT-P8-NEXT: stwx 4, 1, 3 +; BE-32BIT-P8-NEXT: lis 3, 0 +; BE-32BIT-P8-NEXT: lis 4, 0 +; BE-32BIT-P8-NEXT: ori 3, 3, 32768 +; BE-32BIT-P8-NEXT: ori 4, 4, 65516 +; BE-32BIT-P8-NEXT: add 3, 1, 3 +; BE-32BIT-P8-NEXT: add 4, 1, 4 +; BE-32BIT-P8-NEXT: bl .callee3[PR] +; BE-32BIT-P8-NEXT: nop +; BE-32BIT-P8-NEXT: lwz 4, 16(31) +; BE-32BIT-P8-NEXT: lwz 31, -4(30) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: add 3, 4, 3 +; BE-32BIT-P8-NEXT: mr 1, 30 +; BE-32BIT-P8-NEXT: lwz 0, 8(1) +; BE-32BIT-P8-NEXT: lwz 30, -8(1) +; BE-32BIT-P8-NEXT: hashchk 0, -16(1) +; BE-32BIT-P8-NEXT: mtlr 0 +; BE-32BIT-P8-NEXT: blr +; +; BE-P10-PRIV-LABEL: aligned: +; BE-P10-PRIV: # %bb.0: # %entry +; BE-P10-PRIV-NEXT: mflr 0 +; BE-P10-PRIV-NEXT: lis 12, -1 +; BE-P10-PRIV-NEXT: std 30, -16(1) +; BE-P10-PRIV-NEXT: mr 30, 1 +; BE-P10-PRIV-NEXT: ori 12, 12, 0 +; BE-P10-PRIV-NEXT: std 0, 16(1) +; BE-P10-PRIV-NEXT: hashstp 0, -24(1) +; BE-P10-PRIV-NEXT: clrldi 0, 1, 49 +; BE-P10-PRIV-NEXT: subc 0, 12, 0 +; BE-P10-PRIV-NEXT: stdux 1, 1, 0 +; BE-P10-PRIV-NEXT: std 31, -8(30) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: mr 31, 3 +; BE-P10-PRIV-NEXT: lwz 3, 4(3) +; BE-P10-PRIV-NEXT: lis 4, 0 +; BE-P10-PRIV-NEXT: addi 5, 1, 32764 +; BE-P10-PRIV-NEXT: ori 4, 4, 65508 +; BE-P10-PRIV-NEXT: stwx 3, 1, 4 +; BE-P10-PRIV-NEXT: lwz 3, 12(31) +; BE-P10-PRIV-NEXT: lis 4, 0 +; BE-P10-PRIV-NEXT: ori 4, 4, 32768 +; BE-P10-PRIV-NEXT: stwx 3, 1, 4 +; BE-P10-PRIV-NEXT: lwz 3, 20(31) +; BE-P10-PRIV-NEXT: lis 4, 0 +; BE-P10-PRIV-NEXT: ori 4, 4, 65508 +; BE-P10-PRIV-NEXT: stw 3, 32764(1) +; BE-P10-PRIV-NEXT: lis 3, 0 +; BE-P10-PRIV-NEXT: add 4, 1, 4 +; BE-P10-PRIV-NEXT: ori 3, 3, 32768 +; BE-P10-PRIV-NEXT: add 3, 1, 3 +; BE-P10-PRIV-NEXT: bl .callee3[PR] +; BE-P10-PRIV-NEXT: nop +; BE-P10-PRIV-NEXT: lwz 4, 16(31) +; BE-P10-PRIV-NEXT: ld 31, -8(30) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: add 3, 4, 3 +; BE-P10-PRIV-NEXT: clrldi 3, 3, 32 +; BE-P10-PRIV-NEXT: mr 1, 30 +; BE-P10-PRIV-NEXT: ld 0, 16(1) +; BE-P10-PRIV-NEXT: ld 30, -16(1) +; BE-P10-PRIV-NEXT: mtlr 0 +; BE-P10-PRIV-NEXT: hashchkp 0, -24(1) +; BE-P10-PRIV-NEXT: blr +; +; BE-P9-PRIV-LABEL: aligned: +; BE-P9-PRIV: # %bb.0: # %entry +; BE-P9-PRIV-NEXT: mflr 0 +; BE-P9-PRIV-NEXT: lis 12, -1 +; BE-P9-PRIV-NEXT: std 30, -16(1) +; BE-P9-PRIV-NEXT: mr 30, 1 +; BE-P9-PRIV-NEXT: ori 12, 12, 0 +; BE-P9-PRIV-NEXT: std 0, 16(1) +; BE-P9-PRIV-NEXT: hashstp 0, -24(1) +; BE-P9-PRIV-NEXT: clrldi 0, 1, 49 +; BE-P9-PRIV-NEXT: subc 0, 12, 0 +; BE-P9-PRIV-NEXT: stdux 1, 1, 0 +; BE-P9-PRIV-NEXT: std 31, -8(30) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: mr 31, 3 +; BE-P9-PRIV-NEXT: lwz 3, 4(3) +; BE-P9-PRIV-NEXT: lis 4, 0 +; BE-P9-PRIV-NEXT: addi 5, 1, 32764 +; BE-P9-PRIV-NEXT: ori 4, 4, 65508 +; BE-P9-PRIV-NEXT: stwx 3, 1, 4 +; BE-P9-PRIV-NEXT: lwz 3, 12(31) +; BE-P9-PRIV-NEXT: lis 4, 0 +; BE-P9-PRIV-NEXT: ori 4, 4, 32768 +; BE-P9-PRIV-NEXT: stwx 3, 1, 4 +; BE-P9-PRIV-NEXT: lwz 3, 20(31) +; BE-P9-PRIV-NEXT: lis 4, 0 +; BE-P9-PRIV-NEXT: ori 4, 4, 65508 +; BE-P9-PRIV-NEXT: stw 3, 32764(1) +; BE-P9-PRIV-NEXT: lis 3, 0 +; BE-P9-PRIV-NEXT: add 4, 1, 4 +; BE-P9-PRIV-NEXT: ori 3, 3, 32768 +; BE-P9-PRIV-NEXT: add 3, 1, 3 +; BE-P9-PRIV-NEXT: bl .callee3[PR] +; BE-P9-PRIV-NEXT: nop +; BE-P9-PRIV-NEXT: lwz 4, 16(31) +; BE-P9-PRIV-NEXT: ld 31, -8(30) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: add 3, 4, 3 +; BE-P9-PRIV-NEXT: clrldi 3, 3, 32 +; BE-P9-PRIV-NEXT: mr 1, 30 +; BE-P9-PRIV-NEXT: ld 0, 16(1) +; BE-P9-PRIV-NEXT: ld 30, -16(1) +; BE-P9-PRIV-NEXT: mtlr 0 +; BE-P9-PRIV-NEXT: hashchkp 0, -24(1) +; BE-P9-PRIV-NEXT: blr +; +; BE-P8-PRIV-LABEL: aligned: +; BE-P8-PRIV: # %bb.0: # %entry +; BE-P8-PRIV-NEXT: mflr 0 +; BE-P8-PRIV-NEXT: lis 12, -1 +; BE-P8-PRIV-NEXT: std 30, -16(1) +; BE-P8-PRIV-NEXT: mr 30, 1 +; BE-P8-PRIV-NEXT: std 0, 16(1) +; BE-P8-PRIV-NEXT: hashstp 0, -24(1) +; BE-P8-PRIV-NEXT: clrldi 0, 1, 49 +; BE-P8-PRIV-NEXT: ori 12, 12, 0 +; BE-P8-PRIV-NEXT: subc 0, 12, 0 +; BE-P8-PRIV-NEXT: stdux 1, 1, 0 +; BE-P8-PRIV-NEXT: std 31, -8(30) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: mr 31, 3 +; BE-P8-PRIV-NEXT: lwz 3, 4(3) +; BE-P8-PRIV-NEXT: lis 6, 0 +; BE-P8-PRIV-NEXT: ori 6, 6, 65508 +; BE-P8-PRIV-NEXT: lwz 4, 12(31) +; BE-P8-PRIV-NEXT: lwz 5, 20(31) +; BE-P8-PRIV-NEXT: stwx 3, 1, 6 +; BE-P8-PRIV-NEXT: lis 3, 0 +; BE-P8-PRIV-NEXT: ori 3, 3, 32768 +; BE-P8-PRIV-NEXT: stw 5, 32764(1) +; BE-P8-PRIV-NEXT: addi 5, 1, 32764 +; BE-P8-PRIV-NEXT: stwx 4, 1, 3 +; BE-P8-PRIV-NEXT: lis 3, 0 +; BE-P8-PRIV-NEXT: lis 4, 0 +; BE-P8-PRIV-NEXT: ori 3, 3, 32768 +; BE-P8-PRIV-NEXT: ori 4, 4, 65508 +; BE-P8-PRIV-NEXT: add 3, 1, 3 +; BE-P8-PRIV-NEXT: add 4, 1, 4 +; BE-P8-PRIV-NEXT: bl .callee3[PR] +; BE-P8-PRIV-NEXT: nop +; BE-P8-PRIV-NEXT: lwz 4, 16(31) +; BE-P8-PRIV-NEXT: ld 31, -8(30) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: add 3, 4, 3 +; BE-P8-PRIV-NEXT: clrldi 3, 3, 32 +; BE-P8-PRIV-NEXT: mr 1, 30 +; BE-P8-PRIV-NEXT: ld 0, 16(1) +; BE-P8-PRIV-NEXT: ld 30, -16(1) +; BE-P8-PRIV-NEXT: hashchkp 0, -24(1) +; BE-P8-PRIV-NEXT: mtlr 0 +; BE-P8-PRIV-NEXT: blr +; +; BE-32BIT-P10-PRIV-LABEL: aligned: +; BE-32BIT-P10-PRIV: # %bb.0: # %entry +; BE-32BIT-P10-PRIV-NEXT: mflr 0 +; BE-32BIT-P10-PRIV-NEXT: lis 12, -1 +; BE-32BIT-P10-PRIV-NEXT: stw 30, -8(1) +; BE-32BIT-P10-PRIV-NEXT: mr 30, 1 +; BE-32BIT-P10-PRIV-NEXT: ori 12, 12, 0 +; BE-32BIT-P10-PRIV-NEXT: stw 0, 8(1) +; BE-32BIT-P10-PRIV-NEXT: hashstp 0, -16(1) +; BE-32BIT-P10-PRIV-NEXT: clrlwi 0, 1, 17 +; BE-32BIT-P10-PRIV-NEXT: subc 0, 12, 0 +; BE-32BIT-P10-PRIV-NEXT: stwux 1, 1, 0 +; BE-32BIT-P10-PRIV-NEXT: stw 31, -4(30) # 4-byte Folded Spill +; BE-32BIT-P10-PRIV-NEXT: mr 31, 3 +; BE-32BIT-P10-PRIV-NEXT: lwz 3, 4(3) +; BE-32BIT-P10-PRIV-NEXT: lis 4, 0 +; BE-32BIT-P10-PRIV-NEXT: addi 5, 1, 32764 +; BE-32BIT-P10-PRIV-NEXT: ori 4, 4, 65516 +; BE-32BIT-P10-PRIV-NEXT: stwx 3, 1, 4 +; BE-32BIT-P10-PRIV-NEXT: lwz 3, 12(31) +; BE-32BIT-P10-PRIV-NEXT: lis 4, 0 +; BE-32BIT-P10-PRIV-NEXT: ori 4, 4, 32768 +; BE-32BIT-P10-PRIV-NEXT: stwx 3, 1, 4 +; BE-32BIT-P10-PRIV-NEXT: lwz 3, 20(31) +; BE-32BIT-P10-PRIV-NEXT: lis 4, 0 +; BE-32BIT-P10-PRIV-NEXT: ori 4, 4, 65516 +; BE-32BIT-P10-PRIV-NEXT: stw 3, 32764(1) +; BE-32BIT-P10-PRIV-NEXT: lis 3, 0 +; BE-32BIT-P10-PRIV-NEXT: add 4, 1, 4 +; BE-32BIT-P10-PRIV-NEXT: ori 3, 3, 32768 +; BE-32BIT-P10-PRIV-NEXT: add 3, 1, 3 +; BE-32BIT-P10-PRIV-NEXT: bl .callee3[PR] +; BE-32BIT-P10-PRIV-NEXT: nop +; BE-32BIT-P10-PRIV-NEXT: lwz 4, 16(31) +; BE-32BIT-P10-PRIV-NEXT: lwz 31, -4(30) # 4-byte Folded Reload +; BE-32BIT-P10-PRIV-NEXT: add 3, 4, 3 +; BE-32BIT-P10-PRIV-NEXT: mr 1, 30 +; BE-32BIT-P10-PRIV-NEXT: lwz 0, 8(1) +; BE-32BIT-P10-PRIV-NEXT: lwz 30, -8(1) +; BE-32BIT-P10-PRIV-NEXT: mtlr 0 +; BE-32BIT-P10-PRIV-NEXT: hashchkp 0, -16(1) +; BE-32BIT-P10-PRIV-NEXT: blr +; +; BE-32BIT-P9-PRIV-LABEL: aligned: +; BE-32BIT-P9-PRIV: # %bb.0: # %entry +; BE-32BIT-P9-PRIV-NEXT: mflr 0 +; BE-32BIT-P9-PRIV-NEXT: lis 12, -1 +; BE-32BIT-P9-PRIV-NEXT: stw 30, -8(1) +; BE-32BIT-P9-PRIV-NEXT: mr 30, 1 +; BE-32BIT-P9-PRIV-NEXT: ori 12, 12, 0 +; BE-32BIT-P9-PRIV-NEXT: stw 0, 8(1) +; BE-32BIT-P9-PRIV-NEXT: hashstp 0, -16(1) +; BE-32BIT-P9-PRIV-NEXT: clrlwi 0, 1, 17 +; BE-32BIT-P9-PRIV-NEXT: subc 0, 12, 0 +; BE-32BIT-P9-PRIV-NEXT: stwux 1, 1, 0 +; BE-32BIT-P9-PRIV-NEXT: stw 31, -4(30) # 4-byte Folded Spill +; BE-32BIT-P9-PRIV-NEXT: mr 31, 3 +; BE-32BIT-P9-PRIV-NEXT: lwz 3, 4(3) +; BE-32BIT-P9-PRIV-NEXT: lis 4, 0 +; BE-32BIT-P9-PRIV-NEXT: addi 5, 1, 32764 +; BE-32BIT-P9-PRIV-NEXT: ori 4, 4, 65516 +; BE-32BIT-P9-PRIV-NEXT: stwx 3, 1, 4 +; BE-32BIT-P9-PRIV-NEXT: lwz 3, 12(31) +; BE-32BIT-P9-PRIV-NEXT: lis 4, 0 +; BE-32BIT-P9-PRIV-NEXT: ori 4, 4, 32768 +; BE-32BIT-P9-PRIV-NEXT: stwx 3, 1, 4 +; BE-32BIT-P9-PRIV-NEXT: lwz 3, 20(31) +; BE-32BIT-P9-PRIV-NEXT: lis 4, 0 +; BE-32BIT-P9-PRIV-NEXT: ori 4, 4, 65516 +; BE-32BIT-P9-PRIV-NEXT: stw 3, 32764(1) +; BE-32BIT-P9-PRIV-NEXT: lis 3, 0 +; BE-32BIT-P9-PRIV-NEXT: add 4, 1, 4 +; BE-32BIT-P9-PRIV-NEXT: ori 3, 3, 32768 +; BE-32BIT-P9-PRIV-NEXT: add 3, 1, 3 +; BE-32BIT-P9-PRIV-NEXT: bl .callee3[PR] +; BE-32BIT-P9-PRIV-NEXT: nop +; BE-32BIT-P9-PRIV-NEXT: lwz 4, 16(31) +; BE-32BIT-P9-PRIV-NEXT: lwz 31, -4(30) # 4-byte Folded Reload +; BE-32BIT-P9-PRIV-NEXT: add 3, 4, 3 +; BE-32BIT-P9-PRIV-NEXT: mr 1, 30 +; BE-32BIT-P9-PRIV-NEXT: lwz 0, 8(1) +; BE-32BIT-P9-PRIV-NEXT: lwz 30, -8(1) +; BE-32BIT-P9-PRIV-NEXT: mtlr 0 +; BE-32BIT-P9-PRIV-NEXT: hashchkp 0, -16(1) +; BE-32BIT-P9-PRIV-NEXT: blr +; +; BE-32BIT-P8-PRIV-LABEL: aligned: +; BE-32BIT-P8-PRIV: # %bb.0: # %entry +; BE-32BIT-P8-PRIV-NEXT: mflr 0 +; BE-32BIT-P8-PRIV-NEXT: lis 12, -1 +; BE-32BIT-P8-PRIV-NEXT: stw 30, -8(1) +; BE-32BIT-P8-PRIV-NEXT: mr 30, 1 +; BE-32BIT-P8-PRIV-NEXT: stw 0, 8(1) +; BE-32BIT-P8-PRIV-NEXT: hashstp 0, -16(1) +; BE-32BIT-P8-PRIV-NEXT: clrlwi 0, 1, 17 +; BE-32BIT-P8-PRIV-NEXT: ori 12, 12, 0 +; BE-32BIT-P8-PRIV-NEXT: subc 0, 12, 0 +; BE-32BIT-P8-PRIV-NEXT: stwux 1, 1, 0 +; BE-32BIT-P8-PRIV-NEXT: stw 31, -4(30) # 4-byte Folded Spill +; BE-32BIT-P8-PRIV-NEXT: mr 31, 3 +; BE-32BIT-P8-PRIV-NEXT: lwz 3, 4(3) +; BE-32BIT-P8-PRIV-NEXT: lis 6, 0 +; BE-32BIT-P8-PRIV-NEXT: ori 6, 6, 65516 +; BE-32BIT-P8-PRIV-NEXT: lwz 4, 12(31) +; BE-32BIT-P8-PRIV-NEXT: lwz 5, 20(31) +; BE-32BIT-P8-PRIV-NEXT: stwx 3, 1, 6 +; BE-32BIT-P8-PRIV-NEXT: lis 3, 0 +; BE-32BIT-P8-PRIV-NEXT: ori 3, 3, 32768 +; BE-32BIT-P8-PRIV-NEXT: stw 5, 32764(1) +; BE-32BIT-P8-PRIV-NEXT: addi 5, 1, 32764 +; BE-32BIT-P8-PRIV-NEXT: stwx 4, 1, 3 +; BE-32BIT-P8-PRIV-NEXT: lis 3, 0 +; BE-32BIT-P8-PRIV-NEXT: lis 4, 0 +; BE-32BIT-P8-PRIV-NEXT: ori 3, 3, 32768 +; BE-32BIT-P8-PRIV-NEXT: ori 4, 4, 65516 +; BE-32BIT-P8-PRIV-NEXT: add 3, 1, 3 +; BE-32BIT-P8-PRIV-NEXT: add 4, 1, 4 +; BE-32BIT-P8-PRIV-NEXT: bl .callee3[PR] +; BE-32BIT-P8-PRIV-NEXT: nop +; BE-32BIT-P8-PRIV-NEXT: lwz 4, 16(31) +; BE-32BIT-P8-PRIV-NEXT: lwz 31, -4(30) # 4-byte Folded Reload +; BE-32BIT-P8-PRIV-NEXT: add 3, 4, 3 +; BE-32BIT-P8-PRIV-NEXT: mr 1, 30 +; BE-32BIT-P8-PRIV-NEXT: lwz 0, 8(1) +; BE-32BIT-P8-PRIV-NEXT: lwz 30, -8(1) +; BE-32BIT-P8-PRIV-NEXT: hashchkp 0, -16(1) +; BE-32BIT-P8-PRIV-NEXT: mtlr 0 +; BE-32BIT-P8-PRIV-NEXT: blr +entry: + %beforeLocal = alloca i32, align 4 + %local = alloca i32, align 32768 + %afterLocal = alloca i32, align 4 + %0 = bitcast i32* %beforeLocal to i8* + call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %0) + %arrayidx = getelementptr inbounds i32, i32* %in, i64 1 + %1 = load i32, i32* %arrayidx, align 4 + store i32 %1, i32* %beforeLocal, align 4 + %2 = bitcast i32* %local to i8* + call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %2) + %arrayidx1 = getelementptr inbounds i32, i32* %in, i64 3 + %3 = load i32, i32* %arrayidx1, align 4 + store i32 %3, i32* %local, align 32768 + %4 = bitcast i32* %afterLocal to i8* + call void @llvm.lifetime.start.p0i8(i64 4, i8* nonnull %4) + %arrayidx2 = getelementptr inbounds i32, i32* %in, i64 5 + %5 = load i32, i32* %arrayidx2, align 4 + store i32 %5, i32* %afterLocal, align 4 + %call = call zeroext i32 @callee3(i32* nonnull %local, i32* nonnull %beforeLocal, i32* nonnull %afterLocal) + %arrayidx3 = getelementptr inbounds i32, i32* %in, i64 4 + %6 = load i32, i32* %arrayidx3, align 4 + %add = add i32 %6, %call + call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %4) + call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %2) + call void @llvm.lifetime.end.p0i8(i64 4, i8* nonnull %0) + ret i32 %add +} + +declare zeroext i32 @callee(i32 zeroext) local_unnamed_addr +declare zeroext i32 @callee2(i32*) local_unnamed_addr +declare zeroext i32 @callee3(i32*, i32*, i32*) local_unnamed_addr +declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) +declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) + +attributes #0 = { nounwind } diff --git a/llvm/test/CodeGen/PowerPC/ppc64-rop-protection.ll b/llvm/test/CodeGen/PowerPC/ppc64-rop-protection.ll --- a/llvm/test/CodeGen/PowerPC/ppc64-rop-protection.ll +++ b/llvm/test/CodeGen/PowerPC/ppc64-rop-protection.ll @@ -26,6 +26,15 @@ ; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \ ; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ ; RUN: -mattr=+rop-protect < %s | FileCheck %s --check-prefix BE-P8 +; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-linux-gnu \ +; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ +; RUN: -mattr=+rop-protect < %s | FileCheck %s --check-prefix BE-32BIT-P10 +; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-linux-gnu \ +; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ +; RUN: -mattr=+rop-protect < %s | FileCheck %s --check-prefix BE-32BIT-P9 +; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-linux-gnu \ +; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ +; RUN: -mattr=+rop-protect < %s | FileCheck %s --check-prefix BE-32BIT-P8 ; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ ; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ ; RUN: -mattr=+rop-protect -mattr=+privileged < %s | FileCheck %s --check-prefix LE-P10-PRIV @@ -231,6 +240,57 @@ ; BE-P8-NEXT: mtlr r0 ; BE-P8-NEXT: blr ; +; BE-32BIT-P10-LABEL: caller: +; BE-32BIT-P10: # %bb.0: # %entry +; BE-32BIT-P10-NEXT: mflr r0 +; BE-32BIT-P10-NEXT: stw r0, 4(r1) +; BE-32BIT-P10-NEXT: hashst r0, -16(r1) +; BE-32BIT-P10-NEXT: stwu r1, -32(r1) +; BE-32BIT-P10-NEXT: stw r30, 24(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: mr r30, r4 +; BE-32BIT-P10-NEXT: bl callee +; BE-32BIT-P10-NEXT: add r3, r3, r30 +; BE-32BIT-P10-NEXT: lwz r30, 24(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r0, 36(r1) +; BE-32BIT-P10-NEXT: addi r1, r1, 32 +; BE-32BIT-P10-NEXT: mtlr r0 +; BE-32BIT-P10-NEXT: hashchk r0, -16(r1) +; BE-32BIT-P10-NEXT: blr +; +; BE-32BIT-P9-LABEL: caller: +; BE-32BIT-P9: # %bb.0: # %entry +; BE-32BIT-P9-NEXT: mflr r0 +; BE-32BIT-P9-NEXT: stw r0, 4(r1) +; BE-32BIT-P9-NEXT: hashst r0, -16(r1) +; BE-32BIT-P9-NEXT: stwu r1, -32(r1) +; BE-32BIT-P9-NEXT: stw r30, 24(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: mr r30, r4 +; BE-32BIT-P9-NEXT: bl callee +; BE-32BIT-P9-NEXT: add r3, r3, r30 +; BE-32BIT-P9-NEXT: lwz r30, 24(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r0, 36(r1) +; BE-32BIT-P9-NEXT: addi r1, r1, 32 +; BE-32BIT-P9-NEXT: mtlr r0 +; BE-32BIT-P9-NEXT: hashchk r0, -16(r1) +; BE-32BIT-P9-NEXT: blr +; +; BE-32BIT-P8-LABEL: caller: +; BE-32BIT-P8: # %bb.0: # %entry +; BE-32BIT-P8-NEXT: mflr r0 +; BE-32BIT-P8-NEXT: stw r0, 4(r1) +; BE-32BIT-P8-NEXT: hashst r0, -16(r1) +; BE-32BIT-P8-NEXT: stwu r1, -32(r1) +; BE-32BIT-P8-NEXT: stw r30, 24(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: mr r30, r4 +; BE-32BIT-P8-NEXT: bl callee +; BE-32BIT-P8-NEXT: add r3, r3, r30 +; BE-32BIT-P8-NEXT: lwz r30, 24(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r0, 36(r1) +; BE-32BIT-P8-NEXT: addi r1, r1, 32 +; BE-32BIT-P8-NEXT: mtlr r0 +; BE-32BIT-P8-NEXT: hashchk r0, -16(r1) +; BE-32BIT-P8-NEXT: blr +; ; LE-P10-PRIV-LABEL: caller: ; LE-P10-PRIV: # %bb.0: # %entry ; LE-P10-PRIV-NEXT: mflr r0 @@ -1571,6 +1631,405 @@ ; BE-P8-NEXT: mtocrf 8, r12 ; BE-P8-NEXT: blr ; +; BE-32BIT-P10-LABEL: spill: +; BE-32BIT-P10: # %bb.0: # %entry +; BE-32BIT-P10-NEXT: mflr r0 +; BE-32BIT-P10-NEXT: stw r0, 4(r1) +; BE-32BIT-P10-NEXT: hashst r0, -424(r1) +; BE-32BIT-P10-NEXT: stwu r1, -448(r1) +; BE-32BIT-P10-NEXT: mfcr r12 +; BE-32BIT-P10-NEXT: stw r14, 232(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r15, 236(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r16, 240(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r17, 244(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r18, 248(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r19, 252(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r20, 256(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r21, 260(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r22, 264(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r23, 268(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r24, 272(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r25, 276(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r26, 280(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r27, 284(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r28, 288(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r29, 292(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r30, 296(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r31, 300(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r12, 228(r1) +; BE-32BIT-P10-NEXT: stxv v20, 32(r1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv v21, 48(r1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv v22, 64(r1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv v23, 80(r1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv v24, 96(r1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv v25, 112(r1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv v26, 128(r1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv v27, 144(r1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv v28, 160(r1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv v29, 176(r1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv v30, 192(r1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: stxv v31, 208(r1) # 16-byte Folded Spill +; BE-32BIT-P10-NEXT: lwz r4, 12(r3) +; BE-32BIT-P10-NEXT: stfd f14, 304(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f15, 312(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f16, 320(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f17, 328(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f18, 336(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f19, 344(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f20, 352(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f21, 360(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f22, 368(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f23, 376(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f24, 384(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f25, 392(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f26, 400(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f27, 408(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f28, 416(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f29, 424(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f30, 432(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stfd f31, 440(r1) # 8-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r3, 16(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: stw r4, 20(r1) +; BE-32BIT-P10-NEXT: #APP +; BE-32BIT-P10-NEXT: nop +; BE-32BIT-P10-NEXT: #NO_APP +; BE-32BIT-P10-NEXT: addi r3, r1, 20 +; BE-32BIT-P10-NEXT: bl callee2 +; BE-32BIT-P10-NEXT: lwz r4, 16(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv v31, 208(r1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv v30, 192(r1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv v29, 176(r1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv v28, 160(r1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv v27, 144(r1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv v26, 128(r1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv v25, 112(r1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv v24, 96(r1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv v23, 80(r1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv v22, 64(r1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv v21, 48(r1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lxv v20, 32(r1) # 16-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f31, 440(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f30, 432(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f29, 424(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f28, 416(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f27, 408(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r4, 16(r4) +; BE-32BIT-P10-NEXT: lfd f26, 400(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: add r3, r4, r3 +; BE-32BIT-P10-NEXT: lfd f25, 392(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f24, 384(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f23, 376(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f22, 368(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f21, 360(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f20, 352(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f19, 344(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f18, 336(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f17, 328(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f16, 320(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f15, 312(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r12, 228(r1) +; BE-32BIT-P10-NEXT: lwz r31, 300(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r30, 296(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r29, 292(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r28, 288(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r27, 284(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r26, 280(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r25, 276(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r24, 272(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r23, 268(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r22, 264(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r21, 260(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r20, 256(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r19, 252(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r18, 248(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r17, 244(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r16, 240(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r15, 236(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r14, 232(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lfd f14, 304(r1) # 8-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r0, 452(r1) +; BE-32BIT-P10-NEXT: mtocrf 32, r12 +; BE-32BIT-P10-NEXT: mtocrf 16, r12 +; BE-32BIT-P10-NEXT: mtocrf 8, r12 +; BE-32BIT-P10-NEXT: addi r1, r1, 448 +; BE-32BIT-P10-NEXT: mtlr r0 +; BE-32BIT-P10-NEXT: hashchk r0, -424(r1) +; BE-32BIT-P10-NEXT: blr +; +; BE-32BIT-P9-LABEL: spill: +; BE-32BIT-P9: # %bb.0: # %entry +; BE-32BIT-P9-NEXT: mflr r0 +; BE-32BIT-P9-NEXT: stw r0, 4(r1) +; BE-32BIT-P9-NEXT: hashst r0, -424(r1) +; BE-32BIT-P9-NEXT: stwu r1, -448(r1) +; BE-32BIT-P9-NEXT: mfcr r12 +; BE-32BIT-P9-NEXT: stw r14, 232(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r15, 236(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r16, 240(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r17, 244(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r18, 248(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r19, 252(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r20, 256(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r21, 260(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r22, 264(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r23, 268(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r24, 272(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r25, 276(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r26, 280(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r27, 284(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r28, 288(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r29, 292(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r30, 296(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r31, 300(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r12, 228(r1) +; BE-32BIT-P9-NEXT: stxv v20, 32(r1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv v21, 48(r1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv v22, 64(r1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv v23, 80(r1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv v24, 96(r1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv v25, 112(r1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv v26, 128(r1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv v27, 144(r1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv v28, 160(r1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv v29, 176(r1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv v30, 192(r1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: stxv v31, 208(r1) # 16-byte Folded Spill +; BE-32BIT-P9-NEXT: lwz r4, 12(r3) +; BE-32BIT-P9-NEXT: stfd f14, 304(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f15, 312(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f16, 320(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f17, 328(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f18, 336(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f19, 344(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f20, 352(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f21, 360(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f22, 368(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f23, 376(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f24, 384(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f25, 392(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f26, 400(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f27, 408(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f28, 416(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f29, 424(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f30, 432(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stfd f31, 440(r1) # 8-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r3, 16(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: stw r4, 20(r1) +; BE-32BIT-P9-NEXT: #APP +; BE-32BIT-P9-NEXT: nop +; BE-32BIT-P9-NEXT: #NO_APP +; BE-32BIT-P9-NEXT: addi r3, r1, 20 +; BE-32BIT-P9-NEXT: bl callee2 +; BE-32BIT-P9-NEXT: lwz r4, 16(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv v31, 208(r1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv v30, 192(r1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv v29, 176(r1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv v28, 160(r1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv v27, 144(r1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv v26, 128(r1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv v25, 112(r1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv v24, 96(r1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv v23, 80(r1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv v22, 64(r1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv v21, 48(r1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lxv v20, 32(r1) # 16-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f31, 440(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f30, 432(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f29, 424(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f28, 416(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f27, 408(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r4, 16(r4) +; BE-32BIT-P9-NEXT: lfd f26, 400(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: add r3, r4, r3 +; BE-32BIT-P9-NEXT: lfd f25, 392(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f24, 384(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f23, 376(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f22, 368(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f21, 360(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f20, 352(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f19, 344(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f18, 336(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f17, 328(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f16, 320(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f15, 312(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r12, 228(r1) +; BE-32BIT-P9-NEXT: lwz r31, 300(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r30, 296(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r29, 292(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r28, 288(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r27, 284(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r26, 280(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r25, 276(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r24, 272(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r23, 268(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r22, 264(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r21, 260(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r20, 256(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r19, 252(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r18, 248(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r17, 244(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r16, 240(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r15, 236(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r14, 232(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lfd f14, 304(r1) # 8-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r0, 452(r1) +; BE-32BIT-P9-NEXT: mtocrf 32, r12 +; BE-32BIT-P9-NEXT: mtocrf 16, r12 +; BE-32BIT-P9-NEXT: mtocrf 8, r12 +; BE-32BIT-P9-NEXT: addi r1, r1, 448 +; BE-32BIT-P9-NEXT: mtlr r0 +; BE-32BIT-P9-NEXT: hashchk r0, -424(r1) +; BE-32BIT-P9-NEXT: blr +; +; BE-32BIT-P8-LABEL: spill: +; BE-32BIT-P8: # %bb.0: # %entry +; BE-32BIT-P8-NEXT: mflr r0 +; BE-32BIT-P8-NEXT: stw r0, 4(r1) +; BE-32BIT-P8-NEXT: hashst r0, -424(r1) +; BE-32BIT-P8-NEXT: stwu r1, -448(r1) +; BE-32BIT-P8-NEXT: mfcr r12 +; BE-32BIT-P8-NEXT: li r4, 32 +; BE-32BIT-P8-NEXT: stw r14, 232(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r15, 236(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r16, 240(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r17, 244(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r18, 248(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r19, 252(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r20, 256(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r21, 260(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r22, 264(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r23, 268(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r24, 272(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r25, 276(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r26, 280(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r27, 284(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r28, 288(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r29, 292(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r30, 296(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r31, 300(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r12, 228(r1) +; BE-32BIT-P8-NEXT: stxvd2x v20, r1, r4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li r4, 48 +; BE-32BIT-P8-NEXT: stxvd2x v21, r1, r4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li r4, 64 +; BE-32BIT-P8-NEXT: stfd f14, 304(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x v22, r1, r4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li r4, 80 +; BE-32BIT-P8-NEXT: stfd f15, 312(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x v23, r1, r4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li r4, 96 +; BE-32BIT-P8-NEXT: stfd f16, 320(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x v24, r1, r4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li r4, 112 +; BE-32BIT-P8-NEXT: stfd f17, 328(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x v25, r1, r4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li r4, 128 +; BE-32BIT-P8-NEXT: stfd f18, 336(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x v26, r1, r4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li r4, 144 +; BE-32BIT-P8-NEXT: stfd f19, 344(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x v27, r1, r4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li r4, 160 +; BE-32BIT-P8-NEXT: stfd f20, 352(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x v28, r1, r4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li r4, 176 +; BE-32BIT-P8-NEXT: stfd f21, 360(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x v29, r1, r4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li r4, 192 +; BE-32BIT-P8-NEXT: stfd f22, 368(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x v30, r1, r4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: li r4, 208 +; BE-32BIT-P8-NEXT: stfd f23, 376(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stxvd2x v31, r1, r4 # 16-byte Folded Spill +; BE-32BIT-P8-NEXT: lwz r4, 12(r3) +; BE-32BIT-P8-NEXT: stfd f24, 384(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd f25, 392(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd f26, 400(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd f27, 408(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd f28, 416(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd f29, 424(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd f30, 432(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stfd f31, 440(r1) # 8-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r3, 16(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: stw r4, 20(r1) +; BE-32BIT-P8-NEXT: #APP +; BE-32BIT-P8-NEXT: nop +; BE-32BIT-P8-NEXT: #NO_APP +; BE-32BIT-P8-NEXT: addi r3, r1, 20 +; BE-32BIT-P8-NEXT: bl callee2 +; BE-32BIT-P8-NEXT: lwz r4, 16(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd f31, 440(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd f30, 432(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd f29, 424(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd f28, 416(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r4, 16(r4) +; BE-32BIT-P8-NEXT: lfd f27, 408(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd f26, 400(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd f25, 392(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd f24, 384(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: add r3, r4, r3 +; BE-32BIT-P8-NEXT: li r4, 208 +; BE-32BIT-P8-NEXT: lfd f23, 376(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lfd f22, 368(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x v31, r1, r4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li r4, 192 +; BE-32BIT-P8-NEXT: lfd f21, 360(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x v30, r1, r4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li r4, 176 +; BE-32BIT-P8-NEXT: lfd f20, 352(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x v29, r1, r4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li r4, 160 +; BE-32BIT-P8-NEXT: lfd f19, 344(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x v28, r1, r4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li r4, 144 +; BE-32BIT-P8-NEXT: lfd f18, 336(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x v27, r1, r4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li r4, 128 +; BE-32BIT-P8-NEXT: lfd f17, 328(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x v26, r1, r4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li r4, 112 +; BE-32BIT-P8-NEXT: lfd f16, 320(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x v25, r1, r4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li r4, 96 +; BE-32BIT-P8-NEXT: lfd f15, 312(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lxvd2x v24, r1, r4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li r4, 80 +; BE-32BIT-P8-NEXT: lxvd2x v23, r1, r4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li r4, 64 +; BE-32BIT-P8-NEXT: lxvd2x v22, r1, r4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li r4, 48 +; BE-32BIT-P8-NEXT: lxvd2x v21, r1, r4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: li r4, 32 +; BE-32BIT-P8-NEXT: lxvd2x v20, r1, r4 # 16-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r12, 228(r1) +; BE-32BIT-P8-NEXT: lfd f14, 304(r1) # 8-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r31, 300(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r30, 296(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r29, 292(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r28, 288(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r27, 284(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r26, 280(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r25, 276(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r24, 272(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r23, 268(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: mtocrf 32, r12 +; BE-32BIT-P8-NEXT: lwz r22, 264(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r21, 260(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r20, 256(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r19, 252(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: mtocrf 16, r12 +; BE-32BIT-P8-NEXT: lwz r18, 248(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r17, 244(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r16, 240(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r15, 236(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: mtocrf 8, r12 +; BE-32BIT-P8-NEXT: lwz r14, 232(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r0, 452(r1) +; BE-32BIT-P8-NEXT: addi r1, r1, 448 +; BE-32BIT-P8-NEXT: mtlr r0 +; BE-32BIT-P8-NEXT: hashchk r0, -424(r1) +; BE-32BIT-P8-NEXT: blr +; ; LE-P10-PRIV-LABEL: spill: ; LE-P10-PRIV: # %bb.0: # %entry ; LE-P10-PRIV-NEXT: mflr r0 @@ -2668,6 +3127,90 @@ ; BE-P8-NEXT: li r3, 0 ; BE-P8-NEXT: blr ; +; BE-32BIT-P10-LABEL: shrinkwrap: +; BE-32BIT-P10: # %bb.0: # %entry +; BE-32BIT-P10-NEXT: mflr r0 +; BE-32BIT-P10-NEXT: stw r0, 4(r1) +; BE-32BIT-P10-NEXT: hashst r0, -16(r1) +; BE-32BIT-P10-NEXT: stwu r1, -32(r1) +; BE-32BIT-P10-NEXT: cmplwi r3, 0 +; BE-32BIT-P10-NEXT: stw r30, 24(r1) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: beq cr0, .LBB2_2 +; BE-32BIT-P10-NEXT: # %bb.1: # %if.end +; BE-32BIT-P10-NEXT: mr r30, r3 +; BE-32BIT-P10-NEXT: lwz r3, 12(r3) +; BE-32BIT-P10-NEXT: stw r3, 12(r1) +; BE-32BIT-P10-NEXT: addi r3, r1, 12 +; BE-32BIT-P10-NEXT: bl callee2 +; BE-32BIT-P10-NEXT: lwz r4, 16(r30) +; BE-32BIT-P10-NEXT: add r3, r4, r3 +; BE-32BIT-P10-NEXT: b .LBB2_3 +; BE-32BIT-P10-NEXT: .LBB2_2: +; BE-32BIT-P10-NEXT: li r3, 0 +; BE-32BIT-P10-NEXT: .LBB2_3: # %return +; BE-32BIT-P10-NEXT: lwz r30, 24(r1) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: lwz r0, 36(r1) +; BE-32BIT-P10-NEXT: addi r1, r1, 32 +; BE-32BIT-P10-NEXT: mtlr r0 +; BE-32BIT-P10-NEXT: hashchk r0, -16(r1) +; BE-32BIT-P10-NEXT: blr +; +; BE-32BIT-P9-LABEL: shrinkwrap: +; BE-32BIT-P9: # %bb.0: # %entry +; BE-32BIT-P9-NEXT: mflr r0 +; BE-32BIT-P9-NEXT: stw r0, 4(r1) +; BE-32BIT-P9-NEXT: hashst r0, -16(r1) +; BE-32BIT-P9-NEXT: stwu r1, -32(r1) +; BE-32BIT-P9-NEXT: cmplwi r3, 0 +; BE-32BIT-P9-NEXT: stw r30, 24(r1) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: beq cr0, .LBB2_2 +; BE-32BIT-P9-NEXT: # %bb.1: # %if.end +; BE-32BIT-P9-NEXT: mr r30, r3 +; BE-32BIT-P9-NEXT: lwz r3, 12(r3) +; BE-32BIT-P9-NEXT: stw r3, 12(r1) +; BE-32BIT-P9-NEXT: addi r3, r1, 12 +; BE-32BIT-P9-NEXT: bl callee2 +; BE-32BIT-P9-NEXT: lwz r4, 16(r30) +; BE-32BIT-P9-NEXT: add r3, r4, r3 +; BE-32BIT-P9-NEXT: b .LBB2_3 +; BE-32BIT-P9-NEXT: .LBB2_2: +; BE-32BIT-P9-NEXT: li r3, 0 +; BE-32BIT-P9-NEXT: .LBB2_3: # %return +; BE-32BIT-P9-NEXT: lwz r30, 24(r1) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: lwz r0, 36(r1) +; BE-32BIT-P9-NEXT: addi r1, r1, 32 +; BE-32BIT-P9-NEXT: mtlr r0 +; BE-32BIT-P9-NEXT: hashchk r0, -16(r1) +; BE-32BIT-P9-NEXT: blr +; +; BE-32BIT-P8-LABEL: shrinkwrap: +; BE-32BIT-P8: # %bb.0: # %entry +; BE-32BIT-P8-NEXT: mflr r0 +; BE-32BIT-P8-NEXT: stw r0, 4(r1) +; BE-32BIT-P8-NEXT: hashst r0, -16(r1) +; BE-32BIT-P8-NEXT: stwu r1, -32(r1) +; BE-32BIT-P8-NEXT: cmplwi r3, 0 +; BE-32BIT-P8-NEXT: stw r30, 24(r1) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: beq cr0, .LBB2_2 +; BE-32BIT-P8-NEXT: # %bb.1: # %if.end +; BE-32BIT-P8-NEXT: mr r30, r3 +; BE-32BIT-P8-NEXT: lwz r3, 12(r3) +; BE-32BIT-P8-NEXT: stw r3, 12(r1) +; BE-32BIT-P8-NEXT: addi r3, r1, 12 +; BE-32BIT-P8-NEXT: bl callee2 +; BE-32BIT-P8-NEXT: lwz r4, 16(r30) +; BE-32BIT-P8-NEXT: add r3, r4, r3 +; BE-32BIT-P8-NEXT: b .LBB2_3 +; BE-32BIT-P8-NEXT: .LBB2_2: +; BE-32BIT-P8-NEXT: li r3, 0 +; BE-32BIT-P8-NEXT: .LBB2_3: # %return +; BE-32BIT-P8-NEXT: lwz r30, 24(r1) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: lwz r0, 36(r1) +; BE-32BIT-P8-NEXT: addi r1, r1, 32 +; BE-32BIT-P8-NEXT: mtlr r0 +; BE-32BIT-P8-NEXT: hashchk r0, -16(r1) +; BE-32BIT-P8-NEXT: blr +; ; LE-P10-PRIV-LABEL: shrinkwrap: ; LE-P10-PRIV: # %bb.0: # %entry ; LE-P10-PRIV-NEXT: cmpldi r3, 0 @@ -3259,6 +3802,147 @@ ; BE-P8-NEXT: mtlr r0 ; BE-P8-NEXT: blr ; +; BE-32BIT-P10-LABEL: aligned: +; BE-32BIT-P10: # %bb.0: # %entry +; BE-32BIT-P10-NEXT: mflr r0 +; BE-32BIT-P10-NEXT: lis r12, -1 +; BE-32BIT-P10-NEXT: ori r12, r12, 0 +; BE-32BIT-P10-NEXT: stw r0, 4(r1) +; BE-32BIT-P10-NEXT: hashst r0, -24(r1) +; BE-32BIT-P10-NEXT: clrlwi r0, r1, 17 +; BE-32BIT-P10-NEXT: subc r0, r12, r0 +; BE-32BIT-P10-NEXT: stwux r1, r1, r0 +; BE-32BIT-P10-NEXT: sub r0, r1, r0 +; BE-32BIT-P10-NEXT: lis r4, 0 +; BE-32BIT-P10-NEXT: addi r5, r1, 32764 +; BE-32BIT-P10-NEXT: addic r0, r0, -8 +; BE-32BIT-P10-NEXT: ori r4, r4, 65508 +; BE-32BIT-P10-NEXT: stwx r30, 0, r0 +; BE-32BIT-P10-NEXT: addic r30, r0, 8 +; BE-32BIT-P10-NEXT: stw r29, -12(r30) # 4-byte Folded Spill +; BE-32BIT-P10-NEXT: mr r29, r3 +; BE-32BIT-P10-NEXT: lwz r3, 4(r3) +; BE-32BIT-P10-NEXT: stwx r3, r1, r4 +; BE-32BIT-P10-NEXT: lwz r3, 12(r29) +; BE-32BIT-P10-NEXT: lis r4, 0 +; BE-32BIT-P10-NEXT: ori r4, r4, 32768 +; BE-32BIT-P10-NEXT: stwx r3, r1, r4 +; BE-32BIT-P10-NEXT: lwz r3, 20(r29) +; BE-32BIT-P10-NEXT: lis r4, 0 +; BE-32BIT-P10-NEXT: ori r4, r4, 65508 +; BE-32BIT-P10-NEXT: stw r3, 32764(r1) +; BE-32BIT-P10-NEXT: lis r3, 0 +; BE-32BIT-P10-NEXT: add r4, r1, r4 +; BE-32BIT-P10-NEXT: ori r3, r3, 32768 +; BE-32BIT-P10-NEXT: add r3, r1, r3 +; BE-32BIT-P10-NEXT: bl callee3 +; BE-32BIT-P10-NEXT: lwz r4, 16(r29) +; BE-32BIT-P10-NEXT: lwz r29, -12(r30) # 4-byte Folded Reload +; BE-32BIT-P10-NEXT: mr r0, r31 +; BE-32BIT-P10-NEXT: lwz r31, 0(r1) +; BE-32BIT-P10-NEXT: lwz r30, -8(r31) +; BE-32BIT-P10-NEXT: add r3, r4, r3 +; BE-32BIT-P10-NEXT: mr r1, r31 +; BE-32BIT-P10-NEXT: mr r31, r0 +; BE-32BIT-P10-NEXT: lwz r0, 4(r1) +; BE-32BIT-P10-NEXT: mtlr r0 +; BE-32BIT-P10-NEXT: hashchk r0, -24(r1) +; BE-32BIT-P10-NEXT: blr +; +; BE-32BIT-P9-LABEL: aligned: +; BE-32BIT-P9: # %bb.0: # %entry +; BE-32BIT-P9-NEXT: mflr r0 +; BE-32BIT-P9-NEXT: lis r12, -1 +; BE-32BIT-P9-NEXT: ori r12, r12, 0 +; BE-32BIT-P9-NEXT: stw r0, 4(r1) +; BE-32BIT-P9-NEXT: hashst r0, -24(r1) +; BE-32BIT-P9-NEXT: clrlwi r0, r1, 17 +; BE-32BIT-P9-NEXT: subc r0, r12, r0 +; BE-32BIT-P9-NEXT: stwux r1, r1, r0 +; BE-32BIT-P9-NEXT: sub r0, r1, r0 +; BE-32BIT-P9-NEXT: lis r4, 0 +; BE-32BIT-P9-NEXT: addi r5, r1, 32764 +; BE-32BIT-P9-NEXT: addic r0, r0, -8 +; BE-32BIT-P9-NEXT: ori r4, r4, 65508 +; BE-32BIT-P9-NEXT: stwx r30, 0, r0 +; BE-32BIT-P9-NEXT: addic r30, r0, 8 +; BE-32BIT-P9-NEXT: stw r29, -12(r30) # 4-byte Folded Spill +; BE-32BIT-P9-NEXT: mr r29, r3 +; BE-32BIT-P9-NEXT: lwz r3, 4(r3) +; BE-32BIT-P9-NEXT: stwx r3, r1, r4 +; BE-32BIT-P9-NEXT: lwz r3, 12(r29) +; BE-32BIT-P9-NEXT: lis r4, 0 +; BE-32BIT-P9-NEXT: ori r4, r4, 32768 +; BE-32BIT-P9-NEXT: stwx r3, r1, r4 +; BE-32BIT-P9-NEXT: lwz r3, 20(r29) +; BE-32BIT-P9-NEXT: lis r4, 0 +; BE-32BIT-P9-NEXT: ori r4, r4, 65508 +; BE-32BIT-P9-NEXT: stw r3, 32764(r1) +; BE-32BIT-P9-NEXT: lis r3, 0 +; BE-32BIT-P9-NEXT: add r4, r1, r4 +; BE-32BIT-P9-NEXT: ori r3, r3, 32768 +; BE-32BIT-P9-NEXT: add r3, r1, r3 +; BE-32BIT-P9-NEXT: bl callee3 +; BE-32BIT-P9-NEXT: lwz r4, 16(r29) +; BE-32BIT-P9-NEXT: lwz r29, -12(r30) # 4-byte Folded Reload +; BE-32BIT-P9-NEXT: mr r0, r31 +; BE-32BIT-P9-NEXT: lwz r31, 0(r1) +; BE-32BIT-P9-NEXT: lwz r30, -8(r31) +; BE-32BIT-P9-NEXT: add r3, r4, r3 +; BE-32BIT-P9-NEXT: mr r1, r31 +; BE-32BIT-P9-NEXT: mr r31, r0 +; BE-32BIT-P9-NEXT: lwz r0, 4(r1) +; BE-32BIT-P9-NEXT: mtlr r0 +; BE-32BIT-P9-NEXT: hashchk r0, -24(r1) +; BE-32BIT-P9-NEXT: blr +; +; BE-32BIT-P8-LABEL: aligned: +; BE-32BIT-P8: # %bb.0: # %entry +; BE-32BIT-P8-NEXT: mflr r0 +; BE-32BIT-P8-NEXT: lis r12, -1 +; BE-32BIT-P8-NEXT: stw r0, 4(r1) +; BE-32BIT-P8-NEXT: hashst r0, -24(r1) +; BE-32BIT-P8-NEXT: clrlwi r0, r1, 17 +; BE-32BIT-P8-NEXT: ori r12, r12, 0 +; BE-32BIT-P8-NEXT: subc r0, r12, r0 +; BE-32BIT-P8-NEXT: stwux r1, r1, r0 +; BE-32BIT-P8-NEXT: sub r0, r1, r0 +; BE-32BIT-P8-NEXT: lis r6, 0 +; BE-32BIT-P8-NEXT: addic r0, r0, -8 +; BE-32BIT-P8-NEXT: ori r6, r6, 65508 +; BE-32BIT-P8-NEXT: stwx r30, 0, r0 +; BE-32BIT-P8-NEXT: addic r30, r0, 8 +; BE-32BIT-P8-NEXT: stw r29, -12(r30) # 4-byte Folded Spill +; BE-32BIT-P8-NEXT: mr r29, r3 +; BE-32BIT-P8-NEXT: lwz r3, 4(r3) +; BE-32BIT-P8-NEXT: lwz r4, 12(r29) +; BE-32BIT-P8-NEXT: lwz r5, 20(r29) +; BE-32BIT-P8-NEXT: stwx r3, r1, r6 +; BE-32BIT-P8-NEXT: lis r3, 0 +; BE-32BIT-P8-NEXT: ori r3, r3, 32768 +; BE-32BIT-P8-NEXT: stw r5, 32764(r1) +; BE-32BIT-P8-NEXT: addi r5, r1, 32764 +; BE-32BIT-P8-NEXT: stwx r4, r1, r3 +; BE-32BIT-P8-NEXT: lis r3, 0 +; BE-32BIT-P8-NEXT: lis r4, 0 +; BE-32BIT-P8-NEXT: ori r3, r3, 32768 +; BE-32BIT-P8-NEXT: ori r4, r4, 65508 +; BE-32BIT-P8-NEXT: add r3, r1, r3 +; BE-32BIT-P8-NEXT: add r4, r1, r4 +; BE-32BIT-P8-NEXT: bl callee3 +; BE-32BIT-P8-NEXT: lwz r4, 16(r29) +; BE-32BIT-P8-NEXT: lwz r29, -12(r30) # 4-byte Folded Reload +; BE-32BIT-P8-NEXT: mr r0, r31 +; BE-32BIT-P8-NEXT: lwz r31, 0(r1) +; BE-32BIT-P8-NEXT: lwz r30, -8(r31) +; BE-32BIT-P8-NEXT: add r3, r4, r3 +; BE-32BIT-P8-NEXT: mr r1, r31 +; BE-32BIT-P8-NEXT: mr r31, r0 +; BE-32BIT-P8-NEXT: lwz r0, 4(r1) +; BE-32BIT-P8-NEXT: hashchk r0, -24(r1) +; BE-32BIT-P8-NEXT: mtlr r0 +; BE-32BIT-P8-NEXT: blr +; ; LE-P10-PRIV-LABEL: aligned: ; LE-P10-PRIV: # %bb.0: # %entry ; LE-P10-PRIV-NEXT: mflr r0