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 @@ -642,6 +642,8 @@ bool HasFP = hasFP(MF); bool HasBP = RegInfo->hasBasePointer(MF); bool HasRedZone = isPPC64 || !isSVR4ABI; + bool HasROPProtect = Subtarget.hasROPProtect(); + bool HasPrivileged = Subtarget.hasPrivileged(); Register SPReg = isPPC64 ? PPC::X1 : PPC::R1; Register BPReg = RegInfo->getBaseRegister(MF); @@ -672,6 +674,8 @@ const MCInstrDesc &MoveFromCondRegInst = TII.get(isPPC64 ? PPC::MFCR8 : PPC::MFCR); const MCInstrDesc &StoreWordInst = TII.get(isPPC64 ? PPC::STW8 : PPC::STW); + const MCInstrDesc &HashST = + TII.get(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 @@ -833,11 +837,34 @@ .addReg(SPReg); } - if (MustSaveLR) + // Generate the instruction to store the LR. In the case where ROP protection + // is required the register holding the LR should not be killed as it will be + // used by the hash store instruction. + if (MustSaveLR) { BuildMI(MBB, StackUpdateLoc, dl, StoreInst) - .addReg(ScratchReg, getKillRegState(true)) - .addImm(LROffset) - .addReg(SPReg); + .addReg(ScratchReg, getKillRegState(!HasROPProtect)) + .addImm(LROffset) + .addReg(SPReg); + + // Add the ROP protection Hash Store instruction. + // NOTE: This is technically a violation of the ABI. The hash can be saved + // up to 512 bytes into the Protected Zone. This can be 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. + if (HasROPProtect) { + const int SaveIndex = FI->getROPProtectionHashSaveIndex(); + const int ImmOffset = MFI.getObjectOffset(SaveIndex); + assert((ImmOffset <= -8 && ImmOffset >= -512) && + "ROP hash save offset out of range."); + assert(((ImmOffset & 0x7) == 0) && + "ROP hash save offset must be 8 byte aligned."); + BuildMI(MBB, StackUpdateLoc, dl, HashST) + .addReg(ScratchReg, getKillRegState(true)) + .addImm(ImmOffset) + .addReg(SPReg); + } + } if (MustSaveCR && !(SingleScratchReg && MustSaveLR)) { @@ -1528,6 +1555,8 @@ bool HasFP = hasFP(MF); bool HasBP = RegInfo->hasBasePointer(MF); bool HasRedZone = Subtarget.isPPC64() || !Subtarget.isSVR4ABI(); + bool HasROPProtect = Subtarget.hasROPProtect(); + bool HasPrivileged = Subtarget.hasPrivileged(); Register SPReg = isPPC64 ? PPC::X1 : PPC::R1; Register BPReg = RegInfo->getBaseRegister(MF); @@ -1552,6 +1581,8 @@ : PPC::LWZ); const MCInstrDesc& MoveToCRInst = TII.get( isPPC64 ? PPC::MTOCRF8 : PPC::MTOCRF); + const MCInstrDesc &HashChk = + TII.get(HasPrivileged ? PPC::HASHCHKP : PPC::HASHCHK); int LROffset = getReturnSaveOffset(); int FPOffset = 0; @@ -1820,8 +1851,23 @@ BuildMI(MBB, MBBI, dl, MoveToCRInst, MustSaveCRs[i]) .addReg(TempReg, getKillRegState(i == e-1)); - if (MustSaveLR) + if (MustSaveLR) { + // If ROP protection is required, an extra instruction is added to compute a + // hash and then compare it to the hash stored in the prologue. + if (HasROPProtect) { + const int SaveIndex = FI->getROPProtectionHashSaveIndex(); + const int ImmOffset = MFI.getObjectOffset(SaveIndex); + assert((ImmOffset <= -8 && ImmOffset >= -512) && + "ROP hash check location offset out of range."); + assert(((ImmOffset & 0x7) == 0) && + "ROP hash check location offset must be 8 byte aligned."); + BuildMI(MBB, StackUpdateLoc, dl, HashChk) + .addReg(ScratchReg) + .addImm(ImmOffset) + .addReg(SPReg); + } BuildMI(MBB, StackUpdateLoc, dl, MTLRInst).addReg(ScratchReg); + } // Callee pop calling convention. Pop parameter/linkage area. Used for tail // call optimization diff --git a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp --- a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp +++ b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp @@ -152,6 +152,15 @@ GlobalBaseReg = 0; Subtarget = &MF.getSubtarget(); PPCLowering = Subtarget->getTargetLowering(); + if (Subtarget->hasROPProtect()) { + // Create a place on the stack for the ROP Protection Hash. + // The ROP Protection Hash will always be 8 bytes and aligned to 8 + // bytes. + MachineFrameInfo &MFI = MF.getFrameInfo(); + PPCFunctionInfo *FI = MF.getInfo(); + const int Result = MFI.CreateStackObject(8, Align(8), false); + FI->setROPProtectionHashSaveIndex(Result); + } SelectionDAGISel::runOnMachineFunction(MF); return true; diff --git a/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.h b/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.h --- a/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.h +++ b/llvm/lib/Target/PowerPC/PPCMachineFunctionInfo.h @@ -49,6 +49,9 @@ /// Frame index where the old PIC base pointer is stored. int PICBasePointerSaveIndex = 0; + /// Frame index where the ROP Protection Hash is stored. + int ROPProtectionHashSaveIndex = 0; + /// MustSaveLR - Indicates whether LR is defined (or clobbered) in the current /// function. This is only valid after the initial scan of the function by /// PEI. @@ -161,6 +164,13 @@ int getPICBasePointerSaveIndex() const { return PICBasePointerSaveIndex; } void setPICBasePointerSaveIndex(int Idx) { PICBasePointerSaveIndex = Idx; } + int getROPProtectionHashSaveIndex() const { + return ROPProtectionHashSaveIndex; + } + void setROPProtectionHashSaveIndex(int Idx) { + ROPProtectionHashSaveIndex = Idx; + } + unsigned getMinReservedArea() const { return MinReservedArea; } void setMinReservedArea(unsigned size) { MinReservedArea = size; } diff --git a/llvm/lib/Target/PowerPC/PPCRegisterInfo.h b/llvm/lib/Target/PowerPC/PPCRegisterInfo.h --- a/llvm/lib/Target/PowerPC/PPCRegisterInfo.h +++ b/llvm/lib/Target/PowerPC/PPCRegisterInfo.h @@ -101,9 +101,7 @@ bool requiresFrameIndexScavenging(const MachineFunction &MF) const override; - bool requiresVirtualBaseRegisters(const MachineFunction &MF) const override { - return true; - } + bool requiresVirtualBaseRegisters(const MachineFunction &MF) const override; void lowerDynamicAlloc(MachineBasicBlock::iterator II) const; void lowerDynamicAreaOffset(MachineBasicBlock::iterator II) const; diff --git a/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp b/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp --- a/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp +++ b/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp @@ -433,6 +433,16 @@ return false; } +bool PPCRegisterInfo::requiresVirtualBaseRegisters( + const MachineFunction &MF) const { + const PPCSubtarget &Subtarget = MF.getSubtarget(); + // Do not use virtual base registers when ROP protection is turned on. + // Virtual base registers break the layout of the local variable space and may + // push the ROP Hash location past the 512 byte range of the ROP store + // instruction. + return !Subtarget.hasROPProtect(); +} + bool PPCRegisterInfo::isCallerPreservedPhysReg(MCRegister PhysReg, const MachineFunction &MF) const { assert(Register::isPhysicalRegister(PhysReg)); diff --git a/llvm/test/CodeGen/PowerPC/ppc64-rop-protection.ll b/llvm/test/CodeGen/PowerPC/ppc64-rop-protection.ll new file mode 100644 --- /dev/null +++ b/llvm/test/CodeGen/PowerPC/ppc64-rop-protection.ll @@ -0,0 +1,3559 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; 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 < %s | FileCheck %s --check-prefix LE-P10 +; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-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 LE-P9 +; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-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 LE-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 -O0 < %s | FileCheck %s --check-prefix LE-P10-O0 +; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ +; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ +; RUN: -mattr=+rop-protect -O0 < %s | FileCheck %s --check-prefix LE-P9-O0 +; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ +; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ +; RUN: -mattr=+rop-protect -O0 < %s | FileCheck %s --check-prefix LE-P8-O0 +; RUN: llc -verify-machineinstrs -mtriple=powerpc64-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-P10 +; RUN: llc -verify-machineinstrs -mtriple=powerpc64-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-P9 +; 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=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 +; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ +; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ +; RUN: -mattr=+rop-protect -mattr=+privileged < %s | FileCheck %s --check-prefix LE-P9-PRIV +; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ +; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ +; RUN: -mattr=+rop-protect -mattr=+privileged < %s | FileCheck %s --check-prefix LE-P8-PRIV +; RUN: llc -verify-machineinstrs -mtriple=powerpc64-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 BE-P10-PRIV +; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \ +; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ +; RUN: -mattr=+rop-protect -mattr=+privileged < %s | FileCheck %s --check-prefix BE-P9-PRIV +; 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 -mattr=+privileged < %s | FileCheck %s --check-prefix BE-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 { +; LE-P10-LABEL: caller: +; LE-P10: # %bb.0: # %entry +; LE-P10-NEXT: mflr r0 +; LE-P10-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; LE-P10-NEXT: std r0, 16(r1) +; LE-P10-NEXT: hashst r0, -24(r1) +; LE-P10-NEXT: stdu r1, -64(r1) +; LE-P10-NEXT: mr r30, r4 +; LE-P10-NEXT: bl callee@notoc +; LE-P10-NEXT: add r3, r3, r30 +; LE-P10-NEXT: clrldi r3, r3, 32 +; LE-P10-NEXT: addi r1, r1, 64 +; LE-P10-NEXT: ld r0, 16(r1) +; LE-P10-NEXT: mtlr r0 +; LE-P10-NEXT: hashchk r0, -24(r1) +; LE-P10-NEXT: ld r30, -16(r1) # 8-byte Folded Reload +; LE-P10-NEXT: blr +; +; LE-P9-LABEL: caller: +; LE-P9: # %bb.0: # %entry +; LE-P9-NEXT: mflr r0 +; LE-P9-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; LE-P9-NEXT: std r0, 16(r1) +; LE-P9-NEXT: hashst r0, -24(r1) +; LE-P9-NEXT: stdu r1, -64(r1) +; LE-P9-NEXT: mr r30, r4 +; LE-P9-NEXT: bl callee +; LE-P9-NEXT: nop +; LE-P9-NEXT: add r3, r3, r30 +; LE-P9-NEXT: clrldi r3, r3, 32 +; LE-P9-NEXT: addi r1, r1, 64 +; LE-P9-NEXT: ld r0, 16(r1) +; LE-P9-NEXT: mtlr r0 +; LE-P9-NEXT: hashchk r0, -24(r1) +; LE-P9-NEXT: ld r30, -16(r1) # 8-byte Folded Reload +; LE-P9-NEXT: blr +; +; LE-P8-LABEL: caller: +; LE-P8: # %bb.0: # %entry +; LE-P8-NEXT: mflr r0 +; LE-P8-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r0, 16(r1) +; LE-P8-NEXT: hashst r0, -24(r1) +; LE-P8-NEXT: stdu r1, -64(r1) +; LE-P8-NEXT: mr r30, r4 +; LE-P8-NEXT: bl callee +; LE-P8-NEXT: nop +; LE-P8-NEXT: add r3, r3, r30 +; LE-P8-NEXT: clrldi r3, r3, 32 +; LE-P8-NEXT: addi r1, r1, 64 +; LE-P8-NEXT: ld r0, 16(r1) +; LE-P8-NEXT: hashchk r0, -24(r1) +; LE-P8-NEXT: ld r30, -16(r1) # 8-byte Folded Reload +; LE-P8-NEXT: mtlr r0 +; LE-P8-NEXT: blr +; +; LE-P10-O0-LABEL: caller: +; LE-P10-O0: # %bb.0: # %entry +; LE-P10-O0-NEXT: mflr r0 +; LE-P10-O0-NEXT: std r0, 16(r1) +; LE-P10-O0-NEXT: hashst r0, -8(r1) +; LE-P10-O0-NEXT: stdu r1, -48(r1) +; LE-P10-O0-NEXT: # kill: def $r4 killed $r4 killed $x4 +; LE-P10-O0-NEXT: stw r4, 36(r1) # 4-byte Folded Spill +; LE-P10-O0-NEXT: mr r4, r3 +; LE-P10-O0-NEXT: # implicit-def: $x3 +; LE-P10-O0-NEXT: mr r3, r4 +; LE-P10-O0-NEXT: clrldi r3, r3, 32 +; LE-P10-O0-NEXT: bl callee@notoc +; LE-P10-O0-NEXT: lwz r4, 36(r1) # 4-byte Folded Reload +; LE-P10-O0-NEXT: # kill: def $r3 killed $r3 killed $x3 +; LE-P10-O0-NEXT: add r3, r3, r4 +; LE-P10-O0-NEXT: clrldi r3, r3, 32 +; LE-P10-O0-NEXT: addi r1, r1, 48 +; LE-P10-O0-NEXT: ld r0, 16(r1) +; LE-P10-O0-NEXT: hashchk r0, -8(r1) +; LE-P10-O0-NEXT: mtlr r0 +; LE-P10-O0-NEXT: blr +; +; LE-P9-O0-LABEL: caller: +; LE-P9-O0: # %bb.0: # %entry +; LE-P9-O0-NEXT: mflr r0 +; LE-P9-O0-NEXT: std r0, 16(r1) +; LE-P9-O0-NEXT: hashst r0, -8(r1) +; LE-P9-O0-NEXT: stdu r1, -112(r1) +; LE-P9-O0-NEXT: # kill: def $r4 killed $r4 killed $x4 +; LE-P9-O0-NEXT: stw r4, 100(r1) # 4-byte Folded Spill +; LE-P9-O0-NEXT: # kill: def $r3 killed $r3 killed $x3 +; LE-P9-O0-NEXT: clrldi r3, r3, 32 +; LE-P9-O0-NEXT: bl callee +; LE-P9-O0-NEXT: nop +; LE-P9-O0-NEXT: lwz r4, 100(r1) # 4-byte Folded Reload +; LE-P9-O0-NEXT: add r3, r3, r4 +; LE-P9-O0-NEXT: clrldi r3, r3, 32 +; LE-P9-O0-NEXT: addi r1, r1, 112 +; LE-P9-O0-NEXT: ld r0, 16(r1) +; LE-P9-O0-NEXT: hashchk r0, -8(r1) +; LE-P9-O0-NEXT: mtlr r0 +; LE-P9-O0-NEXT: blr +; +; LE-P8-O0-LABEL: caller: +; LE-P8-O0: # %bb.0: # %entry +; LE-P8-O0-NEXT: mflr r0 +; LE-P8-O0-NEXT: std r0, 16(r1) +; LE-P8-O0-NEXT: hashst r0, -8(r1) +; LE-P8-O0-NEXT: stdu r1, -112(r1) +; LE-P8-O0-NEXT: # kill: def $r4 killed $r4 killed $x4 +; LE-P8-O0-NEXT: stw r4, 100(r1) # 4-byte Folded Spill +; LE-P8-O0-NEXT: # kill: def $r3 killed $r3 killed $x3 +; LE-P8-O0-NEXT: clrldi r3, r3, 32 +; LE-P8-O0-NEXT: bl callee +; LE-P8-O0-NEXT: nop +; LE-P8-O0-NEXT: lwz r4, 100(r1) # 4-byte Folded Reload +; LE-P8-O0-NEXT: add r3, r3, r4 +; LE-P8-O0-NEXT: clrldi r3, r3, 32 +; LE-P8-O0-NEXT: addi r1, r1, 112 +; LE-P8-O0-NEXT: ld r0, 16(r1) +; LE-P8-O0-NEXT: hashchk r0, -8(r1) +; LE-P8-O0-NEXT: mtlr r0 +; LE-P8-O0-NEXT: blr +; +; BE-P10-LABEL: caller: +; BE-P10: # %bb.0: # %entry +; BE-P10-NEXT: mflr r0 +; BE-P10-NEXT: std r0, 16(r1) +; BE-P10-NEXT: hashst r0, -24(r1) +; BE-P10-NEXT: stdu r1, -144(r1) +; BE-P10-NEXT: std r30, 128(r1) # 8-byte Folded Spill +; BE-P10-NEXT: mr r30, r4 +; BE-P10-NEXT: bl callee +; BE-P10-NEXT: nop +; BE-P10-NEXT: add r3, r3, r30 +; BE-P10-NEXT: ld r30, 128(r1) # 8-byte Folded Reload +; BE-P10-NEXT: clrldi r3, r3, 32 +; BE-P10-NEXT: addi r1, r1, 144 +; BE-P10-NEXT: ld r0, 16(r1) +; BE-P10-NEXT: mtlr r0 +; BE-P10-NEXT: hashchk r0, -24(r1) +; BE-P10-NEXT: blr +; +; BE-P9-LABEL: caller: +; BE-P9: # %bb.0: # %entry +; BE-P9-NEXT: mflr r0 +; BE-P9-NEXT: std r0, 16(r1) +; BE-P9-NEXT: hashst r0, -24(r1) +; BE-P9-NEXT: stdu r1, -144(r1) +; BE-P9-NEXT: std r30, 128(r1) # 8-byte Folded Spill +; BE-P9-NEXT: mr r30, r4 +; BE-P9-NEXT: bl callee +; BE-P9-NEXT: nop +; BE-P9-NEXT: add r3, r3, r30 +; BE-P9-NEXT: ld r30, 128(r1) # 8-byte Folded Reload +; BE-P9-NEXT: clrldi r3, r3, 32 +; BE-P9-NEXT: addi r1, r1, 144 +; BE-P9-NEXT: ld r0, 16(r1) +; BE-P9-NEXT: mtlr r0 +; BE-P9-NEXT: hashchk r0, -24(r1) +; BE-P9-NEXT: blr +; +; BE-P8-LABEL: caller: +; BE-P8: # %bb.0: # %entry +; BE-P8-NEXT: mflr r0 +; BE-P8-NEXT: std r0, 16(r1) +; BE-P8-NEXT: hashst r0, -24(r1) +; BE-P8-NEXT: stdu r1, -144(r1) +; BE-P8-NEXT: std r30, 128(r1) # 8-byte Folded Spill +; BE-P8-NEXT: mr r30, r4 +; BE-P8-NEXT: bl callee +; BE-P8-NEXT: nop +; BE-P8-NEXT: add r3, r3, r30 +; BE-P8-NEXT: ld r30, 128(r1) # 8-byte Folded Reload +; BE-P8-NEXT: clrldi r3, r3, 32 +; BE-P8-NEXT: addi r1, r1, 144 +; BE-P8-NEXT: ld r0, 16(r1) +; BE-P8-NEXT: hashchk r0, -24(r1) +; BE-P8-NEXT: mtlr r0 +; BE-P8-NEXT: blr +; +; LE-P10-PRIV-LABEL: caller: +; LE-P10-PRIV: # %bb.0: # %entry +; LE-P10-PRIV-NEXT: mflr r0 +; LE-P10-PRIV-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: std r0, 16(r1) +; LE-P10-PRIV-NEXT: hashstp r0, -24(r1) +; LE-P10-PRIV-NEXT: stdu r1, -64(r1) +; LE-P10-PRIV-NEXT: mr r30, r4 +; LE-P10-PRIV-NEXT: bl callee@notoc +; LE-P10-PRIV-NEXT: add r3, r3, r30 +; LE-P10-PRIV-NEXT: clrldi r3, r3, 32 +; LE-P10-PRIV-NEXT: addi r1, r1, 64 +; LE-P10-PRIV-NEXT: ld r0, 16(r1) +; LE-P10-PRIV-NEXT: mtlr r0 +; LE-P10-PRIV-NEXT: hashchkp r0, -24(r1) +; LE-P10-PRIV-NEXT: ld r30, -16(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: blr +; +; LE-P9-PRIV-LABEL: caller: +; LE-P9-PRIV: # %bb.0: # %entry +; LE-P9-PRIV-NEXT: mflr r0 +; LE-P9-PRIV-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: std r0, 16(r1) +; LE-P9-PRIV-NEXT: hashstp r0, -24(r1) +; LE-P9-PRIV-NEXT: stdu r1, -64(r1) +; LE-P9-PRIV-NEXT: mr r30, r4 +; LE-P9-PRIV-NEXT: bl callee +; LE-P9-PRIV-NEXT: nop +; LE-P9-PRIV-NEXT: add r3, r3, r30 +; LE-P9-PRIV-NEXT: clrldi r3, r3, 32 +; LE-P9-PRIV-NEXT: addi r1, r1, 64 +; LE-P9-PRIV-NEXT: ld r0, 16(r1) +; LE-P9-PRIV-NEXT: mtlr r0 +; LE-P9-PRIV-NEXT: hashchkp r0, -24(r1) +; LE-P9-PRIV-NEXT: ld r30, -16(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: blr +; +; LE-P8-PRIV-LABEL: caller: +; LE-P8-PRIV: # %bb.0: # %entry +; LE-P8-PRIV-NEXT: mflr r0 +; LE-P8-PRIV-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r0, 16(r1) +; LE-P8-PRIV-NEXT: hashstp r0, -24(r1) +; LE-P8-PRIV-NEXT: stdu r1, -64(r1) +; LE-P8-PRIV-NEXT: mr r30, r4 +; LE-P8-PRIV-NEXT: bl callee +; LE-P8-PRIV-NEXT: nop +; LE-P8-PRIV-NEXT: add r3, r3, r30 +; LE-P8-PRIV-NEXT: clrldi r3, r3, 32 +; LE-P8-PRIV-NEXT: addi r1, r1, 64 +; LE-P8-PRIV-NEXT: ld r0, 16(r1) +; LE-P8-PRIV-NEXT: hashchkp r0, -24(r1) +; LE-P8-PRIV-NEXT: ld r30, -16(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: mtlr r0 +; LE-P8-PRIV-NEXT: blr +; +; BE-P10-PRIV-LABEL: caller: +; BE-P10-PRIV: # %bb.0: # %entry +; BE-P10-PRIV-NEXT: mflr r0 +; BE-P10-PRIV-NEXT: std r0, 16(r1) +; BE-P10-PRIV-NEXT: hashstp r0, -24(r1) +; BE-P10-PRIV-NEXT: stdu r1, -144(r1) +; BE-P10-PRIV-NEXT: std r30, 128(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: mr r30, r4 +; BE-P10-PRIV-NEXT: bl callee +; BE-P10-PRIV-NEXT: nop +; BE-P10-PRIV-NEXT: add r3, r3, r30 +; BE-P10-PRIV-NEXT: ld r30, 128(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: clrldi r3, r3, 32 +; BE-P10-PRIV-NEXT: addi r1, r1, 144 +; BE-P10-PRIV-NEXT: ld r0, 16(r1) +; BE-P10-PRIV-NEXT: mtlr r0 +; BE-P10-PRIV-NEXT: hashchkp r0, -24(r1) +; BE-P10-PRIV-NEXT: blr +; +; BE-P9-PRIV-LABEL: caller: +; BE-P9-PRIV: # %bb.0: # %entry +; BE-P9-PRIV-NEXT: mflr r0 +; BE-P9-PRIV-NEXT: std r0, 16(r1) +; BE-P9-PRIV-NEXT: hashstp r0, -24(r1) +; BE-P9-PRIV-NEXT: stdu r1, -144(r1) +; BE-P9-PRIV-NEXT: std r30, 128(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: mr r30, r4 +; BE-P9-PRIV-NEXT: bl callee +; BE-P9-PRIV-NEXT: nop +; BE-P9-PRIV-NEXT: add r3, r3, r30 +; BE-P9-PRIV-NEXT: ld r30, 128(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: clrldi r3, r3, 32 +; BE-P9-PRIV-NEXT: addi r1, r1, 144 +; BE-P9-PRIV-NEXT: ld r0, 16(r1) +; BE-P9-PRIV-NEXT: mtlr r0 +; BE-P9-PRIV-NEXT: hashchkp r0, -24(r1) +; BE-P9-PRIV-NEXT: blr +; +; BE-P8-PRIV-LABEL: caller: +; BE-P8-PRIV: # %bb.0: # %entry +; BE-P8-PRIV-NEXT: mflr r0 +; BE-P8-PRIV-NEXT: std r0, 16(r1) +; BE-P8-PRIV-NEXT: hashstp r0, -24(r1) +; BE-P8-PRIV-NEXT: stdu r1, -144(r1) +; BE-P8-PRIV-NEXT: std r30, 128(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: mr r30, r4 +; BE-P8-PRIV-NEXT: bl callee +; BE-P8-PRIV-NEXT: nop +; BE-P8-PRIV-NEXT: add r3, r3, r30 +; BE-P8-PRIV-NEXT: ld r30, 128(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: clrldi r3, r3, 32 +; BE-P8-PRIV-NEXT: addi r1, r1, 144 +; BE-P8-PRIV-NEXT: ld r0, 16(r1) +; BE-P8-PRIV-NEXT: hashchkp r0, -24(r1) +; BE-P8-PRIV-NEXT: mtlr r0 +; BE-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 { +; LE-P10-LABEL: spill: +; LE-P10: # %bb.0: # %entry +; LE-P10-NEXT: mflr r0 +; LE-P10-NEXT: mfcr r12 +; LE-P10-NEXT: std r0, 16(r1) +; LE-P10-NEXT: hashst r0, -488(r1) +; LE-P10-NEXT: stw r12, 8(r1) +; LE-P10-NEXT: stdu r1, -544(r1) +; LE-P10-NEXT: lwz r4, 12(r3) +; LE-P10-NEXT: std r14, 256(r1) # 8-byte Folded Spill +; LE-P10-NEXT: std r15, 264(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stxv v20, 64(r1) # 16-byte Folded Spill +; LE-P10-NEXT: stxv v21, 80(r1) # 16-byte Folded Spill +; LE-P10-NEXT: stxv v22, 96(r1) # 16-byte Folded Spill +; LE-P10-NEXT: std r16, 272(r1) # 8-byte Folded Spill +; LE-P10-NEXT: std r17, 280(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stxv v23, 112(r1) # 16-byte Folded Spill +; LE-P10-NEXT: std r18, 288(r1) # 8-byte Folded Spill +; LE-P10-NEXT: std r19, 296(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stxv v24, 128(r1) # 16-byte Folded Spill +; LE-P10-NEXT: stxv v25, 144(r1) # 16-byte Folded Spill +; LE-P10-NEXT: std r20, 304(r1) # 8-byte Folded Spill +; LE-P10-NEXT: std r21, 312(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stxv v26, 160(r1) # 16-byte Folded Spill +; LE-P10-NEXT: std r22, 320(r1) # 8-byte Folded Spill +; LE-P10-NEXT: std r23, 328(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stxv v27, 176(r1) # 16-byte Folded Spill +; LE-P10-NEXT: stxv v28, 192(r1) # 16-byte Folded Spill +; LE-P10-NEXT: std r24, 336(r1) # 8-byte Folded Spill +; LE-P10-NEXT: std r25, 344(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stxv v29, 208(r1) # 16-byte Folded Spill +; LE-P10-NEXT: std r26, 352(r1) # 8-byte Folded Spill +; LE-P10-NEXT: std r27, 360(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stxv v30, 224(r1) # 16-byte Folded Spill +; LE-P10-NEXT: stxv v31, 240(r1) # 16-byte Folded Spill +; LE-P10-NEXT: std r28, 368(r1) # 8-byte Folded Spill +; LE-P10-NEXT: std r29, 376(r1) # 8-byte Folded Spill +; LE-P10-NEXT: std r30, 384(r1) # 8-byte Folded Spill +; LE-P10-NEXT: std r31, 392(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f14, 400(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f15, 408(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f16, 416(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f17, 424(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f18, 432(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f19, 440(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f20, 448(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f21, 456(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f22, 464(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f23, 472(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f24, 480(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f25, 488(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f26, 496(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f27, 504(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f28, 512(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f29, 520(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f30, 528(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stfd f31, 536(r1) # 8-byte Folded Spill +; LE-P10-NEXT: std r3, 40(r1) # 8-byte Folded Spill +; LE-P10-NEXT: stw r4, 52(r1) +; LE-P10-NEXT: #APP +; LE-P10-NEXT: nop +; LE-P10-NEXT: #NO_APP +; LE-P10-NEXT: addi r3, r1, 52 +; LE-P10-NEXT: bl callee2@notoc +; LE-P10-NEXT: ld r4, 40(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lxv v31, 240(r1) # 16-byte Folded Reload +; LE-P10-NEXT: lxv v30, 224(r1) # 16-byte Folded Reload +; LE-P10-NEXT: lxv v29, 208(r1) # 16-byte Folded Reload +; LE-P10-NEXT: lxv v28, 192(r1) # 16-byte Folded Reload +; LE-P10-NEXT: lxv v27, 176(r1) # 16-byte Folded Reload +; LE-P10-NEXT: lxv v26, 160(r1) # 16-byte Folded Reload +; LE-P10-NEXT: lxv v25, 144(r1) # 16-byte Folded Reload +; LE-P10-NEXT: lxv v24, 128(r1) # 16-byte Folded Reload +; LE-P10-NEXT: lxv v23, 112(r1) # 16-byte Folded Reload +; LE-P10-NEXT: lxv v22, 96(r1) # 16-byte Folded Reload +; LE-P10-NEXT: lxv v21, 80(r1) # 16-byte Folded Reload +; LE-P10-NEXT: lxv v20, 64(r1) # 16-byte Folded Reload +; LE-P10-NEXT: lfd f31, 536(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f30, 528(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f29, 520(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f28, 512(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f27, 504(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r31, 392(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r30, 384(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r29, 376(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f26, 496(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r28, 368(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r27, 360(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r26, 352(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f25, 488(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r25, 344(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r24, 336(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r23, 328(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f24, 480(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r22, 320(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r21, 312(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lwz r4, 16(r4) +; LE-P10-NEXT: add r3, r4, r3 +; LE-P10-NEXT: lfd f23, 472(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f22, 464(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r20, 304(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r19, 296(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r18, 288(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r17, 280(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r16, 272(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r15, 264(r1) # 8-byte Folded Reload +; LE-P10-NEXT: ld r14, 256(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f21, 456(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f20, 448(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f19, 440(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f18, 432(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f17, 424(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f16, 416(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f15, 408(r1) # 8-byte Folded Reload +; LE-P10-NEXT: lfd f14, 400(r1) # 8-byte Folded Reload +; LE-P10-NEXT: clrldi r3, r3, 32 +; LE-P10-NEXT: addi r1, r1, 544 +; LE-P10-NEXT: ld r0, 16(r1) +; LE-P10-NEXT: lwz r12, 8(r1) +; LE-P10-NEXT: mtlr r0 +; LE-P10-NEXT: hashchk r0, -488(r1) +; LE-P10-NEXT: mtocrf 32, r12 +; LE-P10-NEXT: mtocrf 16, r12 +; LE-P10-NEXT: mtocrf 8, r12 +; LE-P10-NEXT: blr +; +; LE-P9-LABEL: spill: +; LE-P9: # %bb.0: # %entry +; LE-P9-NEXT: mflr r0 +; LE-P9-NEXT: mfcr r12 +; LE-P9-NEXT: std r0, 16(r1) +; LE-P9-NEXT: hashst r0, -488(r1) +; LE-P9-NEXT: stw r12, 8(r1) +; LE-P9-NEXT: stdu r1, -544(r1) +; LE-P9-NEXT: lwz r4, 12(r3) +; LE-P9-NEXT: std r14, 256(r1) # 8-byte Folded Spill +; LE-P9-NEXT: std r15, 264(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stxv v20, 64(r1) # 16-byte Folded Spill +; LE-P9-NEXT: stxv v21, 80(r1) # 16-byte Folded Spill +; LE-P9-NEXT: stxv v22, 96(r1) # 16-byte Folded Spill +; LE-P9-NEXT: std r16, 272(r1) # 8-byte Folded Spill +; LE-P9-NEXT: std r17, 280(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stxv v23, 112(r1) # 16-byte Folded Spill +; LE-P9-NEXT: std r18, 288(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stxv v24, 128(r1) # 16-byte Folded Spill +; LE-P9-NEXT: std r19, 296(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stxv v25, 144(r1) # 16-byte Folded Spill +; LE-P9-NEXT: std r20, 304(r1) # 8-byte Folded Spill +; LE-P9-NEXT: std r21, 312(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stxv v26, 160(r1) # 16-byte Folded Spill +; LE-P9-NEXT: std r22, 320(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stxv v27, 176(r1) # 16-byte Folded Spill +; LE-P9-NEXT: std r23, 328(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stxv v28, 192(r1) # 16-byte Folded Spill +; LE-P9-NEXT: std r24, 336(r1) # 8-byte Folded Spill +; LE-P9-NEXT: std r25, 344(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stxv v29, 208(r1) # 16-byte Folded Spill +; LE-P9-NEXT: std r26, 352(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stxv v30, 224(r1) # 16-byte Folded Spill +; LE-P9-NEXT: std r27, 360(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stxv v31, 240(r1) # 16-byte Folded Spill +; LE-P9-NEXT: std r28, 368(r1) # 8-byte Folded Spill +; LE-P9-NEXT: std r29, 376(r1) # 8-byte Folded Spill +; LE-P9-NEXT: std r30, 384(r1) # 8-byte Folded Spill +; LE-P9-NEXT: std r31, 392(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f14, 400(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f15, 408(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f16, 416(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f17, 424(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f18, 432(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f19, 440(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f20, 448(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f21, 456(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f22, 464(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f23, 472(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f24, 480(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f25, 488(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f26, 496(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f27, 504(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f28, 512(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f29, 520(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f30, 528(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stfd f31, 536(r1) # 8-byte Folded Spill +; LE-P9-NEXT: std r3, 40(r1) # 8-byte Folded Spill +; LE-P9-NEXT: stw r4, 52(r1) +; LE-P9-NEXT: #APP +; LE-P9-NEXT: nop +; LE-P9-NEXT: #NO_APP +; LE-P9-NEXT: addi r3, r1, 52 +; LE-P9-NEXT: bl callee2 +; LE-P9-NEXT: nop +; LE-P9-NEXT: ld r4, 40(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lxv v31, 240(r1) # 16-byte Folded Reload +; LE-P9-NEXT: lxv v30, 224(r1) # 16-byte Folded Reload +; LE-P9-NEXT: lxv v29, 208(r1) # 16-byte Folded Reload +; LE-P9-NEXT: lxv v28, 192(r1) # 16-byte Folded Reload +; LE-P9-NEXT: lxv v27, 176(r1) # 16-byte Folded Reload +; LE-P9-NEXT: lxv v26, 160(r1) # 16-byte Folded Reload +; LE-P9-NEXT: lxv v25, 144(r1) # 16-byte Folded Reload +; LE-P9-NEXT: lxv v24, 128(r1) # 16-byte Folded Reload +; LE-P9-NEXT: lxv v23, 112(r1) # 16-byte Folded Reload +; LE-P9-NEXT: lxv v22, 96(r1) # 16-byte Folded Reload +; LE-P9-NEXT: lxv v21, 80(r1) # 16-byte Folded Reload +; LE-P9-NEXT: lxv v20, 64(r1) # 16-byte Folded Reload +; LE-P9-NEXT: lfd f31, 536(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f30, 528(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f29, 520(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f28, 512(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f27, 504(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r31, 392(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r30, 384(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r29, 376(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f26, 496(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r28, 368(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r27, 360(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r26, 352(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f25, 488(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r25, 344(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r24, 336(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r23, 328(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f24, 480(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r22, 320(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r21, 312(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lwz r4, 16(r4) +; LE-P9-NEXT: add r3, r4, r3 +; LE-P9-NEXT: lfd f23, 472(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f22, 464(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r20, 304(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r19, 296(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r18, 288(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r17, 280(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r16, 272(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r15, 264(r1) # 8-byte Folded Reload +; LE-P9-NEXT: ld r14, 256(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f21, 456(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f20, 448(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f19, 440(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f18, 432(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f17, 424(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f16, 416(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f15, 408(r1) # 8-byte Folded Reload +; LE-P9-NEXT: lfd f14, 400(r1) # 8-byte Folded Reload +; LE-P9-NEXT: clrldi r3, r3, 32 +; LE-P9-NEXT: addi r1, r1, 544 +; LE-P9-NEXT: ld r0, 16(r1) +; LE-P9-NEXT: lwz r12, 8(r1) +; LE-P9-NEXT: mtlr r0 +; LE-P9-NEXT: hashchk r0, -488(r1) +; LE-P9-NEXT: mtocrf 32, r12 +; LE-P9-NEXT: mtocrf 16, r12 +; LE-P9-NEXT: mtocrf 8, r12 +; LE-P9-NEXT: blr +; +; LE-P8-LABEL: spill: +; LE-P8: # %bb.0: # %entry +; LE-P8-NEXT: mfcr r12 +; LE-P8-NEXT: mflr r0 +; LE-P8-NEXT: std r0, 16(r1) +; LE-P8-NEXT: hashst r0, -488(r1) +; LE-P8-NEXT: stw r12, 8(r1) +; LE-P8-NEXT: stdu r1, -544(r1) +; LE-P8-NEXT: li r4, 64 +; LE-P8-NEXT: std r14, 256(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r15, 264(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r16, 272(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r17, 280(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stxvd2x v20, r1, r4 # 16-byte Folded Spill +; LE-P8-NEXT: li r4, 80 +; LE-P8-NEXT: std r18, 288(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r19, 296(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r20, 304(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r21, 312(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stxvd2x v21, r1, r4 # 16-byte Folded Spill +; LE-P8-NEXT: li r4, 96 +; LE-P8-NEXT: std r22, 320(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r23, 328(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r24, 336(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r25, 344(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r26, 352(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r27, 360(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r28, 368(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r29, 376(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r30, 384(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r31, 392(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r3, 40(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stxvd2x v22, r1, r4 # 16-byte Folded Spill +; LE-P8-NEXT: li r4, 112 +; LE-P8-NEXT: stxvd2x v23, r1, r4 # 16-byte Folded Spill +; LE-P8-NEXT: li r4, 128 +; LE-P8-NEXT: stfd f14, 400(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stxvd2x v24, r1, r4 # 16-byte Folded Spill +; LE-P8-NEXT: li r4, 144 +; LE-P8-NEXT: stfd f15, 408(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stxvd2x v25, r1, r4 # 16-byte Folded Spill +; LE-P8-NEXT: li r4, 160 +; LE-P8-NEXT: stfd f16, 416(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stxvd2x v26, r1, r4 # 16-byte Folded Spill +; LE-P8-NEXT: li r4, 176 +; LE-P8-NEXT: stfd f17, 424(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stxvd2x v27, r1, r4 # 16-byte Folded Spill +; LE-P8-NEXT: li r4, 192 +; LE-P8-NEXT: stfd f18, 432(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stxvd2x v28, r1, r4 # 16-byte Folded Spill +; LE-P8-NEXT: li r4, 208 +; LE-P8-NEXT: stfd f19, 440(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stxvd2x v29, r1, r4 # 16-byte Folded Spill +; LE-P8-NEXT: li r4, 224 +; LE-P8-NEXT: stfd f20, 448(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stxvd2x v30, r1, r4 # 16-byte Folded Spill +; LE-P8-NEXT: li r4, 240 +; LE-P8-NEXT: stfd f21, 456(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stxvd2x v31, r1, r4 # 16-byte Folded Spill +; LE-P8-NEXT: lwz r4, 12(r3) +; LE-P8-NEXT: stfd f22, 464(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stfd f23, 472(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stfd f24, 480(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stfd f25, 488(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stfd f26, 496(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stfd f27, 504(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stfd f28, 512(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stfd f29, 520(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stfd f30, 528(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stfd f31, 536(r1) # 8-byte Folded Spill +; LE-P8-NEXT: stw r4, 52(r1) +; LE-P8-NEXT: #APP +; LE-P8-NEXT: nop +; LE-P8-NEXT: #NO_APP +; LE-P8-NEXT: addi r3, r1, 52 +; LE-P8-NEXT: bl callee2 +; LE-P8-NEXT: nop +; LE-P8-NEXT: ld r4, 40(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lfd f31, 536(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lfd f30, 528(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r31, 392(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lfd f29, 520(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lfd f28, 512(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r30, 384(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r29, 376(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lwz r4, 16(r4) +; LE-P8-NEXT: lfd f27, 504(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lfd f26, 496(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r28, 368(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lfd f25, 488(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lfd f24, 480(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r27, 360(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r26, 352(r1) # 8-byte Folded Reload +; LE-P8-NEXT: add r3, r4, r3 +; LE-P8-NEXT: li r4, 240 +; LE-P8-NEXT: lfd f23, 472(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lfd f22, 464(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r25, 344(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r24, 336(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lxvd2x v31, r1, r4 # 16-byte Folded Reload +; LE-P8-NEXT: li r4, 224 +; LE-P8-NEXT: lfd f21, 456(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r23, 328(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r22, 320(r1) # 8-byte Folded Reload +; LE-P8-NEXT: clrldi r3, r3, 32 +; LE-P8-NEXT: lxvd2x v30, r1, r4 # 16-byte Folded Reload +; LE-P8-NEXT: li r4, 208 +; LE-P8-NEXT: lfd f20, 448(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r21, 312(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r20, 304(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lxvd2x v29, r1, r4 # 16-byte Folded Reload +; LE-P8-NEXT: li r4, 192 +; LE-P8-NEXT: lfd f19, 440(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r19, 296(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r18, 288(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lxvd2x v28, r1, r4 # 16-byte Folded Reload +; LE-P8-NEXT: li r4, 176 +; LE-P8-NEXT: lfd f18, 432(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r17, 280(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r16, 272(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lxvd2x v27, r1, r4 # 16-byte Folded Reload +; LE-P8-NEXT: li r4, 160 +; LE-P8-NEXT: lfd f17, 424(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r15, 264(r1) # 8-byte Folded Reload +; LE-P8-NEXT: ld r14, 256(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lxvd2x v26, r1, r4 # 16-byte Folded Reload +; LE-P8-NEXT: li r4, 144 +; LE-P8-NEXT: lfd f16, 416(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lxvd2x v25, r1, r4 # 16-byte Folded Reload +; LE-P8-NEXT: li r4, 128 +; LE-P8-NEXT: lfd f15, 408(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lxvd2x v24, r1, r4 # 16-byte Folded Reload +; LE-P8-NEXT: li r4, 112 +; LE-P8-NEXT: lfd f14, 400(r1) # 8-byte Folded Reload +; LE-P8-NEXT: lxvd2x v23, r1, r4 # 16-byte Folded Reload +; LE-P8-NEXT: li r4, 96 +; LE-P8-NEXT: lxvd2x v22, r1, r4 # 16-byte Folded Reload +; LE-P8-NEXT: li r4, 80 +; LE-P8-NEXT: lxvd2x v21, r1, r4 # 16-byte Folded Reload +; LE-P8-NEXT: li r4, 64 +; LE-P8-NEXT: lxvd2x v20, r1, r4 # 16-byte Folded Reload +; LE-P8-NEXT: addi r1, r1, 544 +; LE-P8-NEXT: ld r0, 16(r1) +; LE-P8-NEXT: lwz r12, 8(r1) +; LE-P8-NEXT: mtocrf 32, r12 +; LE-P8-NEXT: hashchk r0, -488(r1) +; LE-P8-NEXT: mtlr r0 +; LE-P8-NEXT: mtocrf 16, r12 +; LE-P8-NEXT: mtocrf 8, r12 +; LE-P8-NEXT: blr +; +; LE-P10-O0-LABEL: spill: +; LE-P10-O0: # %bb.0: # %entry +; LE-P10-O0-NEXT: mflr r0 +; LE-P10-O0-NEXT: mfcr r12 +; LE-P10-O0-NEXT: std r0, 16(r1) +; LE-P10-O0-NEXT: hashst r0, -488(r1) +; LE-P10-O0-NEXT: stw r12, 8(r1) +; LE-P10-O0-NEXT: stdu r1, -544(r1) +; LE-P10-O0-NEXT: std r14, 256(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r15, 264(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r16, 272(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r17, 280(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r18, 288(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r19, 296(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r20, 304(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r21, 312(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r22, 320(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r23, 328(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r24, 336(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r25, 344(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r26, 352(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r27, 360(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r28, 368(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r29, 376(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r30, 384(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: std r31, 392(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f14, 400(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f15, 408(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f16, 416(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f17, 424(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f18, 432(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f19, 440(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f20, 448(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f21, 456(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f22, 464(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f23, 472(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f24, 480(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f25, 488(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f26, 496(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f27, 504(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f28, 512(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f29, 520(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f30, 528(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stfd f31, 536(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: stxv v20, 64(r1) # 16-byte Folded Spill +; LE-P10-O0-NEXT: stxv v21, 80(r1) # 16-byte Folded Spill +; LE-P10-O0-NEXT: stxv v22, 96(r1) # 16-byte Folded Spill +; LE-P10-O0-NEXT: stxv v23, 112(r1) # 16-byte Folded Spill +; LE-P10-O0-NEXT: stxv v24, 128(r1) # 16-byte Folded Spill +; LE-P10-O0-NEXT: stxv v25, 144(r1) # 16-byte Folded Spill +; LE-P10-O0-NEXT: stxv v26, 160(r1) # 16-byte Folded Spill +; LE-P10-O0-NEXT: stxv v27, 176(r1) # 16-byte Folded Spill +; LE-P10-O0-NEXT: stxv v28, 192(r1) # 16-byte Folded Spill +; LE-P10-O0-NEXT: stxv v29, 208(r1) # 16-byte Folded Spill +; LE-P10-O0-NEXT: stxv v30, 224(r1) # 16-byte Folded Spill +; LE-P10-O0-NEXT: stxv v31, 240(r1) # 16-byte Folded Spill +; LE-P10-O0-NEXT: std r3, 40(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: lwz r3, 12(r3) +; LE-P10-O0-NEXT: stw r3, 52(r1) +; LE-P10-O0-NEXT: #APP +; LE-P10-O0-NEXT: nop +; LE-P10-O0-NEXT: #NO_APP +; LE-P10-O0-NEXT: addi r3, r1, 52 +; LE-P10-O0-NEXT: bl callee2@notoc +; LE-P10-O0-NEXT: mr r4, r3 +; LE-P10-O0-NEXT: ld r3, 40(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: # kill: def $r4 killed $r4 killed $x4 +; LE-P10-O0-NEXT: lwz r3, 16(r3) +; LE-P10-O0-NEXT: add r3, r3, r4 +; LE-P10-O0-NEXT: clrldi r3, r3, 32 +; LE-P10-O0-NEXT: lxv v31, 240(r1) # 16-byte Folded Reload +; LE-P10-O0-NEXT: lxv v30, 224(r1) # 16-byte Folded Reload +; LE-P10-O0-NEXT: lxv v29, 208(r1) # 16-byte Folded Reload +; LE-P10-O0-NEXT: lxv v28, 192(r1) # 16-byte Folded Reload +; LE-P10-O0-NEXT: lxv v27, 176(r1) # 16-byte Folded Reload +; LE-P10-O0-NEXT: lxv v26, 160(r1) # 16-byte Folded Reload +; LE-P10-O0-NEXT: lxv v25, 144(r1) # 16-byte Folded Reload +; LE-P10-O0-NEXT: lxv v24, 128(r1) # 16-byte Folded Reload +; LE-P10-O0-NEXT: lxv v23, 112(r1) # 16-byte Folded Reload +; LE-P10-O0-NEXT: lxv v22, 96(r1) # 16-byte Folded Reload +; LE-P10-O0-NEXT: lxv v21, 80(r1) # 16-byte Folded Reload +; LE-P10-O0-NEXT: lxv v20, 64(r1) # 16-byte Folded Reload +; LE-P10-O0-NEXT: lfd f31, 536(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f30, 528(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f29, 520(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f28, 512(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f27, 504(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f26, 496(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f25, 488(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f24, 480(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f23, 472(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f22, 464(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f21, 456(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f20, 448(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f19, 440(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f18, 432(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f17, 424(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f16, 416(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f15, 408(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lfd f14, 400(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r31, 392(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r30, 384(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r29, 376(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r28, 368(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r27, 360(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r26, 352(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r25, 344(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r24, 336(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r23, 328(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r22, 320(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r21, 312(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r20, 304(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r19, 296(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r18, 288(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r17, 280(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r16, 272(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r15, 264(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: ld r14, 256(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: addi r1, r1, 544 +; LE-P10-O0-NEXT: ld r0, 16(r1) +; LE-P10-O0-NEXT: lwz r12, 8(r1) +; LE-P10-O0-NEXT: mtocrf 32, r12 +; LE-P10-O0-NEXT: mtocrf 16, r12 +; LE-P10-O0-NEXT: mtocrf 8, r12 +; LE-P10-O0-NEXT: hashchk r0, -488(r1) +; LE-P10-O0-NEXT: mtlr r0 +; LE-P10-O0-NEXT: blr +; +; LE-P9-O0-LABEL: spill: +; LE-P9-O0: # %bb.0: # %entry +; LE-P9-O0-NEXT: mflr r0 +; LE-P9-O0-NEXT: mfcr r12 +; LE-P9-O0-NEXT: std r0, 16(r1) +; LE-P9-O0-NEXT: hashst r0, -488(r1) +; LE-P9-O0-NEXT: stw r12, 8(r1) +; LE-P9-O0-NEXT: stdu r1, -608(r1) +; LE-P9-O0-NEXT: std r14, 320(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r15, 328(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r16, 336(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r17, 344(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r18, 352(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r19, 360(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r20, 368(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r21, 376(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r22, 384(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r23, 392(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r24, 400(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r25, 408(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r26, 416(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r27, 424(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r28, 432(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r29, 440(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r30, 448(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: std r31, 456(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f14, 464(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f15, 472(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f16, 480(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f17, 488(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f18, 496(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f19, 504(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f20, 512(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f21, 520(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f22, 528(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f23, 536(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f24, 544(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f25, 552(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f26, 560(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f27, 568(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f28, 576(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f29, 584(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f30, 592(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stfd f31, 600(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: stxv v20, 128(r1) # 16-byte Folded Spill +; LE-P9-O0-NEXT: stxv v21, 144(r1) # 16-byte Folded Spill +; LE-P9-O0-NEXT: stxv v22, 160(r1) # 16-byte Folded Spill +; LE-P9-O0-NEXT: stxv v23, 176(r1) # 16-byte Folded Spill +; LE-P9-O0-NEXT: stxv v24, 192(r1) # 16-byte Folded Spill +; LE-P9-O0-NEXT: stxv v25, 208(r1) # 16-byte Folded Spill +; LE-P9-O0-NEXT: stxv v26, 224(r1) # 16-byte Folded Spill +; LE-P9-O0-NEXT: stxv v27, 240(r1) # 16-byte Folded Spill +; LE-P9-O0-NEXT: stxv v28, 256(r1) # 16-byte Folded Spill +; LE-P9-O0-NEXT: stxv v29, 272(r1) # 16-byte Folded Spill +; LE-P9-O0-NEXT: stxv v30, 288(r1) # 16-byte Folded Spill +; LE-P9-O0-NEXT: stxv v31, 304(r1) # 16-byte Folded Spill +; LE-P9-O0-NEXT: std r3, 104(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: lwz r3, 12(r3) +; LE-P9-O0-NEXT: stw r3, 116(r1) +; LE-P9-O0-NEXT: #APP +; LE-P9-O0-NEXT: nop +; LE-P9-O0-NEXT: #NO_APP +; LE-P9-O0-NEXT: addi r3, r1, 116 +; LE-P9-O0-NEXT: bl callee2 +; LE-P9-O0-NEXT: nop +; LE-P9-O0-NEXT: mr r4, r3 +; LE-P9-O0-NEXT: ld r3, 104(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lwz r3, 16(r3) +; LE-P9-O0-NEXT: add r3, r3, r4 +; LE-P9-O0-NEXT: clrldi r3, r3, 32 +; LE-P9-O0-NEXT: lxv v31, 304(r1) # 16-byte Folded Reload +; LE-P9-O0-NEXT: lxv v30, 288(r1) # 16-byte Folded Reload +; LE-P9-O0-NEXT: lxv v29, 272(r1) # 16-byte Folded Reload +; LE-P9-O0-NEXT: lxv v28, 256(r1) # 16-byte Folded Reload +; LE-P9-O0-NEXT: lxv v27, 240(r1) # 16-byte Folded Reload +; LE-P9-O0-NEXT: lxv v26, 224(r1) # 16-byte Folded Reload +; LE-P9-O0-NEXT: lxv v25, 208(r1) # 16-byte Folded Reload +; LE-P9-O0-NEXT: lxv v24, 192(r1) # 16-byte Folded Reload +; LE-P9-O0-NEXT: lxv v23, 176(r1) # 16-byte Folded Reload +; LE-P9-O0-NEXT: lxv v22, 160(r1) # 16-byte Folded Reload +; LE-P9-O0-NEXT: lxv v21, 144(r1) # 16-byte Folded Reload +; LE-P9-O0-NEXT: lxv v20, 128(r1) # 16-byte Folded Reload +; LE-P9-O0-NEXT: lfd f31, 600(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f30, 592(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f29, 584(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f28, 576(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f27, 568(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f26, 560(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f25, 552(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f24, 544(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f23, 536(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f22, 528(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f21, 520(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f20, 512(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f19, 504(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f18, 496(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f17, 488(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f16, 480(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f15, 472(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lfd f14, 464(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r31, 456(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r30, 448(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r29, 440(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r28, 432(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r27, 424(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r26, 416(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r25, 408(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r24, 400(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r23, 392(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r22, 384(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r21, 376(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r20, 368(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r19, 360(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r18, 352(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r17, 344(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r16, 336(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r15, 328(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: ld r14, 320(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: addi r1, r1, 608 +; LE-P9-O0-NEXT: ld r0, 16(r1) +; LE-P9-O0-NEXT: lwz r12, 8(r1) +; LE-P9-O0-NEXT: mtocrf 32, r12 +; LE-P9-O0-NEXT: mtocrf 16, r12 +; LE-P9-O0-NEXT: mtocrf 8, r12 +; LE-P9-O0-NEXT: hashchk r0, -488(r1) +; LE-P9-O0-NEXT: mtlr r0 +; LE-P9-O0-NEXT: blr +; +; LE-P8-O0-LABEL: spill: +; LE-P8-O0: # %bb.0: # %entry +; LE-P8-O0-NEXT: mflr r0 +; LE-P8-O0-NEXT: mfcr r12 +; LE-P8-O0-NEXT: std r0, 16(r1) +; LE-P8-O0-NEXT: hashst r0, -488(r1) +; LE-P8-O0-NEXT: stw r12, 8(r1) +; LE-P8-O0-NEXT: stdu r1, -608(r1) +; LE-P8-O0-NEXT: std r14, 320(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r15, 328(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r16, 336(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r17, 344(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r18, 352(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r19, 360(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r20, 368(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r21, 376(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r22, 384(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r23, 392(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r24, 400(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r25, 408(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r26, 416(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r27, 424(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r28, 432(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r29, 440(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r30, 448(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: std r31, 456(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f14, 464(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f15, 472(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f16, 480(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f17, 488(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f18, 496(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f19, 504(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f20, 512(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f21, 520(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f22, 528(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f23, 536(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f24, 544(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f25, 552(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f26, 560(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f27, 568(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f28, 576(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f29, 584(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f30, 592(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: stfd f31, 600(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: li r4, 128 +; LE-P8-O0-NEXT: stxvd2x v20, r1, r4 # 16-byte Folded Spill +; LE-P8-O0-NEXT: li r4, 144 +; LE-P8-O0-NEXT: stxvd2x v21, r1, r4 # 16-byte Folded Spill +; LE-P8-O0-NEXT: li r4, 160 +; LE-P8-O0-NEXT: stxvd2x v22, r1, r4 # 16-byte Folded Spill +; LE-P8-O0-NEXT: li r4, 176 +; LE-P8-O0-NEXT: stxvd2x v23, r1, r4 # 16-byte Folded Spill +; LE-P8-O0-NEXT: li r4, 192 +; LE-P8-O0-NEXT: stxvd2x v24, r1, r4 # 16-byte Folded Spill +; LE-P8-O0-NEXT: li r4, 208 +; LE-P8-O0-NEXT: stxvd2x v25, r1, r4 # 16-byte Folded Spill +; LE-P8-O0-NEXT: li r4, 224 +; LE-P8-O0-NEXT: stxvd2x v26, r1, r4 # 16-byte Folded Spill +; LE-P8-O0-NEXT: li r4, 240 +; LE-P8-O0-NEXT: stxvd2x v27, r1, r4 # 16-byte Folded Spill +; LE-P8-O0-NEXT: li r4, 256 +; LE-P8-O0-NEXT: stxvd2x v28, r1, r4 # 16-byte Folded Spill +; LE-P8-O0-NEXT: li r4, 272 +; LE-P8-O0-NEXT: stxvd2x v29, r1, r4 # 16-byte Folded Spill +; LE-P8-O0-NEXT: li r4, 288 +; LE-P8-O0-NEXT: stxvd2x v30, r1, r4 # 16-byte Folded Spill +; LE-P8-O0-NEXT: li r4, 304 +; LE-P8-O0-NEXT: stxvd2x v31, r1, r4 # 16-byte Folded Spill +; LE-P8-O0-NEXT: std r3, 104(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: lwz r3, 12(r3) +; LE-P8-O0-NEXT: stw r3, 116(r1) +; LE-P8-O0-NEXT: #APP +; LE-P8-O0-NEXT: nop +; LE-P8-O0-NEXT: #NO_APP +; LE-P8-O0-NEXT: addi r3, r1, 116 +; LE-P8-O0-NEXT: bl callee2 +; LE-P8-O0-NEXT: nop +; LE-P8-O0-NEXT: mr r4, r3 +; LE-P8-O0-NEXT: ld r3, 104(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lwz r3, 16(r3) +; LE-P8-O0-NEXT: add r3, r3, r4 +; LE-P8-O0-NEXT: clrldi r3, r3, 32 +; LE-P8-O0-NEXT: li r4, 304 +; LE-P8-O0-NEXT: lxvd2x v31, r1, r4 # 16-byte Folded Reload +; LE-P8-O0-NEXT: li r4, 288 +; LE-P8-O0-NEXT: lxvd2x v30, r1, r4 # 16-byte Folded Reload +; LE-P8-O0-NEXT: li r4, 272 +; LE-P8-O0-NEXT: lxvd2x v29, r1, r4 # 16-byte Folded Reload +; LE-P8-O0-NEXT: li r4, 256 +; LE-P8-O0-NEXT: lxvd2x v28, r1, r4 # 16-byte Folded Reload +; LE-P8-O0-NEXT: li r4, 240 +; LE-P8-O0-NEXT: lxvd2x v27, r1, r4 # 16-byte Folded Reload +; LE-P8-O0-NEXT: li r4, 224 +; LE-P8-O0-NEXT: lxvd2x v26, r1, r4 # 16-byte Folded Reload +; LE-P8-O0-NEXT: li r4, 208 +; LE-P8-O0-NEXT: lxvd2x v25, r1, r4 # 16-byte Folded Reload +; LE-P8-O0-NEXT: li r4, 192 +; LE-P8-O0-NEXT: lxvd2x v24, r1, r4 # 16-byte Folded Reload +; LE-P8-O0-NEXT: li r4, 176 +; LE-P8-O0-NEXT: lxvd2x v23, r1, r4 # 16-byte Folded Reload +; LE-P8-O0-NEXT: li r4, 160 +; LE-P8-O0-NEXT: lxvd2x v22, r1, r4 # 16-byte Folded Reload +; LE-P8-O0-NEXT: li r4, 144 +; LE-P8-O0-NEXT: lxvd2x v21, r1, r4 # 16-byte Folded Reload +; LE-P8-O0-NEXT: li r4, 128 +; LE-P8-O0-NEXT: lxvd2x v20, r1, r4 # 16-byte Folded Reload +; LE-P8-O0-NEXT: lfd f31, 600(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f30, 592(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f29, 584(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f28, 576(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f27, 568(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f26, 560(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f25, 552(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f24, 544(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f23, 536(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f22, 528(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f21, 520(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f20, 512(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f19, 504(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f18, 496(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f17, 488(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f16, 480(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f15, 472(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lfd f14, 464(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r31, 456(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r30, 448(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r29, 440(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r28, 432(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r27, 424(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r26, 416(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r25, 408(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r24, 400(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r23, 392(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r22, 384(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r21, 376(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r20, 368(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r19, 360(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r18, 352(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r17, 344(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r16, 336(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r15, 328(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: ld r14, 320(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: addi r1, r1, 608 +; LE-P8-O0-NEXT: ld r0, 16(r1) +; LE-P8-O0-NEXT: lwz r12, 8(r1) +; LE-P8-O0-NEXT: mtocrf 32, r12 +; LE-P8-O0-NEXT: mtocrf 16, r12 +; LE-P8-O0-NEXT: mtocrf 8, r12 +; LE-P8-O0-NEXT: hashchk r0, -488(r1) +; LE-P8-O0-NEXT: mtlr r0 +; LE-P8-O0-NEXT: blr +; +; BE-P10-LABEL: spill: +; BE-P10: # %bb.0: # %entry +; BE-P10-NEXT: mflr r0 +; BE-P10-NEXT: mfcr r12 +; BE-P10-NEXT: std r0, 16(r1) +; BE-P10-NEXT: hashst r0, -488(r1) +; BE-P10-NEXT: stw r12, 8(r1) +; BE-P10-NEXT: stdu r1, -624(r1) +; BE-P10-NEXT: lwz r4, 12(r3) +; BE-P10-NEXT: std r14, 336(r1) # 8-byte Folded Spill +; BE-P10-NEXT: std r15, 344(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stxv v20, 144(r1) # 16-byte Folded Spill +; BE-P10-NEXT: stxv v21, 160(r1) # 16-byte Folded Spill +; BE-P10-NEXT: stxv v22, 176(r1) # 16-byte Folded Spill +; BE-P10-NEXT: std r16, 352(r1) # 8-byte Folded Spill +; BE-P10-NEXT: std r17, 360(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stxv v23, 192(r1) # 16-byte Folded Spill +; BE-P10-NEXT: std r18, 368(r1) # 8-byte Folded Spill +; BE-P10-NEXT: std r19, 376(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stxv v24, 208(r1) # 16-byte Folded Spill +; BE-P10-NEXT: stxv v25, 224(r1) # 16-byte Folded Spill +; BE-P10-NEXT: std r20, 384(r1) # 8-byte Folded Spill +; BE-P10-NEXT: std r21, 392(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stxv v26, 240(r1) # 16-byte Folded Spill +; BE-P10-NEXT: std r22, 400(r1) # 8-byte Folded Spill +; BE-P10-NEXT: std r23, 408(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stxv v27, 256(r1) # 16-byte Folded Spill +; BE-P10-NEXT: stxv v28, 272(r1) # 16-byte Folded Spill +; BE-P10-NEXT: std r24, 416(r1) # 8-byte Folded Spill +; BE-P10-NEXT: std r25, 424(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stxv v29, 288(r1) # 16-byte Folded Spill +; BE-P10-NEXT: std r26, 432(r1) # 8-byte Folded Spill +; BE-P10-NEXT: std r27, 440(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stxv v30, 304(r1) # 16-byte Folded Spill +; BE-P10-NEXT: stxv v31, 320(r1) # 16-byte Folded Spill +; BE-P10-NEXT: std r28, 448(r1) # 8-byte Folded Spill +; BE-P10-NEXT: std r29, 456(r1) # 8-byte Folded Spill +; BE-P10-NEXT: std r30, 464(r1) # 8-byte Folded Spill +; BE-P10-NEXT: std r31, 472(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f14, 480(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f15, 488(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f16, 496(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f17, 504(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f18, 512(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f19, 520(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f20, 528(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f21, 536(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f22, 544(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f23, 552(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f24, 560(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f25, 568(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f26, 576(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f27, 584(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f28, 592(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f29, 600(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f30, 608(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stfd f31, 616(r1) # 8-byte Folded Spill +; BE-P10-NEXT: std r3, 120(r1) # 8-byte Folded Spill +; BE-P10-NEXT: stw r4, 132(r1) +; BE-P10-NEXT: #APP +; BE-P10-NEXT: nop +; BE-P10-NEXT: #NO_APP +; BE-P10-NEXT: addi r3, r1, 132 +; BE-P10-NEXT: bl callee2 +; BE-P10-NEXT: nop +; BE-P10-NEXT: ld r4, 120(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lxv v31, 320(r1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv v30, 304(r1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv v29, 288(r1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv v28, 272(r1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv v27, 256(r1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv v26, 240(r1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv v25, 224(r1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv v24, 208(r1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv v23, 192(r1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv v22, 176(r1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv v21, 160(r1) # 16-byte Folded Reload +; BE-P10-NEXT: lxv v20, 144(r1) # 16-byte Folded Reload +; BE-P10-NEXT: lfd f31, 616(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f30, 608(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f29, 600(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f28, 592(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f27, 584(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r31, 472(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r30, 464(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r29, 456(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f26, 576(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r28, 448(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r27, 440(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r26, 432(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f25, 568(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r25, 424(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r24, 416(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r23, 408(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f24, 560(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r22, 400(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r21, 392(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lwz r4, 16(r4) +; BE-P10-NEXT: add r3, r4, r3 +; BE-P10-NEXT: lfd f23, 552(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f22, 544(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r20, 384(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r19, 376(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r18, 368(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r17, 360(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r16, 352(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r15, 344(r1) # 8-byte Folded Reload +; BE-P10-NEXT: ld r14, 336(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f21, 536(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f20, 528(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f19, 520(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f18, 512(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f17, 504(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f16, 496(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f15, 488(r1) # 8-byte Folded Reload +; BE-P10-NEXT: lfd f14, 480(r1) # 8-byte Folded Reload +; BE-P10-NEXT: clrldi r3, r3, 32 +; BE-P10-NEXT: addi r1, r1, 624 +; BE-P10-NEXT: ld r0, 16(r1) +; BE-P10-NEXT: lwz r12, 8(r1) +; BE-P10-NEXT: mtlr r0 +; BE-P10-NEXT: hashchk r0, -488(r1) +; BE-P10-NEXT: mtocrf 32, r12 +; BE-P10-NEXT: mtocrf 16, r12 +; BE-P10-NEXT: mtocrf 8, r12 +; BE-P10-NEXT: blr +; +; BE-P9-LABEL: spill: +; BE-P9: # %bb.0: # %entry +; BE-P9-NEXT: mflr r0 +; BE-P9-NEXT: mfcr r12 +; BE-P9-NEXT: std r0, 16(r1) +; BE-P9-NEXT: hashst r0, -488(r1) +; BE-P9-NEXT: stw r12, 8(r1) +; BE-P9-NEXT: stdu r1, -624(r1) +; BE-P9-NEXT: lwz r4, 12(r3) +; BE-P9-NEXT: std r14, 336(r1) # 8-byte Folded Spill +; BE-P9-NEXT: std r15, 344(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv v20, 144(r1) # 16-byte Folded Spill +; BE-P9-NEXT: stxv v21, 160(r1) # 16-byte Folded Spill +; BE-P9-NEXT: stxv v22, 176(r1) # 16-byte Folded Spill +; BE-P9-NEXT: std r16, 352(r1) # 8-byte Folded Spill +; BE-P9-NEXT: std r17, 360(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv v23, 192(r1) # 16-byte Folded Spill +; BE-P9-NEXT: std r18, 368(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv v24, 208(r1) # 16-byte Folded Spill +; BE-P9-NEXT: std r19, 376(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv v25, 224(r1) # 16-byte Folded Spill +; BE-P9-NEXT: std r20, 384(r1) # 8-byte Folded Spill +; BE-P9-NEXT: std r21, 392(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv v26, 240(r1) # 16-byte Folded Spill +; BE-P9-NEXT: std r22, 400(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv v27, 256(r1) # 16-byte Folded Spill +; BE-P9-NEXT: std r23, 408(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv v28, 272(r1) # 16-byte Folded Spill +; BE-P9-NEXT: std r24, 416(r1) # 8-byte Folded Spill +; BE-P9-NEXT: std r25, 424(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv v29, 288(r1) # 16-byte Folded Spill +; BE-P9-NEXT: std r26, 432(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv v30, 304(r1) # 16-byte Folded Spill +; BE-P9-NEXT: std r27, 440(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stxv v31, 320(r1) # 16-byte Folded Spill +; BE-P9-NEXT: std r28, 448(r1) # 8-byte Folded Spill +; BE-P9-NEXT: std r29, 456(r1) # 8-byte Folded Spill +; BE-P9-NEXT: std r30, 464(r1) # 8-byte Folded Spill +; BE-P9-NEXT: std r31, 472(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f14, 480(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f15, 488(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f16, 496(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f17, 504(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f18, 512(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f19, 520(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f20, 528(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f21, 536(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f22, 544(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f23, 552(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f24, 560(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f25, 568(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f26, 576(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f27, 584(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f28, 592(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f29, 600(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f30, 608(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stfd f31, 616(r1) # 8-byte Folded Spill +; BE-P9-NEXT: std r3, 120(r1) # 8-byte Folded Spill +; BE-P9-NEXT: stw r4, 132(r1) +; BE-P9-NEXT: #APP +; BE-P9-NEXT: nop +; BE-P9-NEXT: #NO_APP +; BE-P9-NEXT: addi r3, r1, 132 +; BE-P9-NEXT: bl callee2 +; BE-P9-NEXT: nop +; BE-P9-NEXT: ld r4, 120(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lxv v31, 320(r1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv v30, 304(r1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv v29, 288(r1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv v28, 272(r1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv v27, 256(r1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv v26, 240(r1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv v25, 224(r1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv v24, 208(r1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv v23, 192(r1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv v22, 176(r1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv v21, 160(r1) # 16-byte Folded Reload +; BE-P9-NEXT: lxv v20, 144(r1) # 16-byte Folded Reload +; BE-P9-NEXT: lfd f31, 616(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f30, 608(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f29, 600(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f28, 592(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f27, 584(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r31, 472(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r30, 464(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r29, 456(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f26, 576(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r28, 448(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r27, 440(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r26, 432(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f25, 568(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r25, 424(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r24, 416(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r23, 408(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f24, 560(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r22, 400(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r21, 392(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lwz r4, 16(r4) +; BE-P9-NEXT: add r3, r4, r3 +; BE-P9-NEXT: lfd f23, 552(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f22, 544(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r20, 384(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r19, 376(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r18, 368(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r17, 360(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r16, 352(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r15, 344(r1) # 8-byte Folded Reload +; BE-P9-NEXT: ld r14, 336(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f21, 536(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f20, 528(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f19, 520(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f18, 512(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f17, 504(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f16, 496(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f15, 488(r1) # 8-byte Folded Reload +; BE-P9-NEXT: lfd f14, 480(r1) # 8-byte Folded Reload +; BE-P9-NEXT: clrldi r3, r3, 32 +; BE-P9-NEXT: addi r1, r1, 624 +; BE-P9-NEXT: ld r0, 16(r1) +; BE-P9-NEXT: lwz r12, 8(r1) +; BE-P9-NEXT: mtlr r0 +; BE-P9-NEXT: hashchk r0, -488(r1) +; BE-P9-NEXT: mtocrf 32, r12 +; BE-P9-NEXT: mtocrf 16, r12 +; BE-P9-NEXT: mtocrf 8, r12 +; BE-P9-NEXT: blr +; +; BE-P8-LABEL: spill: +; BE-P8: # %bb.0: # %entry +; BE-P8-NEXT: mfcr r12 +; BE-P8-NEXT: mflr r0 +; BE-P8-NEXT: std r0, 16(r1) +; BE-P8-NEXT: hashst r0, -488(r1) +; BE-P8-NEXT: stw r12, 8(r1) +; BE-P8-NEXT: stdu r1, -624(r1) +; BE-P8-NEXT: li r4, 144 +; BE-P8-NEXT: std r14, 336(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r15, 344(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r16, 352(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r17, 360(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x v20, r1, r4 # 16-byte Folded Spill +; BE-P8-NEXT: li r4, 160 +; BE-P8-NEXT: std r18, 368(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r19, 376(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r20, 384(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r21, 392(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x v21, r1, r4 # 16-byte Folded Spill +; BE-P8-NEXT: li r4, 176 +; BE-P8-NEXT: std r22, 400(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r23, 408(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r24, 416(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r25, 424(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r26, 432(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r27, 440(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r28, 448(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r29, 456(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r30, 464(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r31, 472(r1) # 8-byte Folded Spill +; BE-P8-NEXT: std r3, 120(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x v22, r1, r4 # 16-byte Folded Spill +; BE-P8-NEXT: li r4, 192 +; BE-P8-NEXT: stxvd2x v23, r1, r4 # 16-byte Folded Spill +; BE-P8-NEXT: li r4, 208 +; BE-P8-NEXT: stfd f14, 480(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x v24, r1, r4 # 16-byte Folded Spill +; BE-P8-NEXT: li r4, 224 +; BE-P8-NEXT: stfd f15, 488(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x v25, r1, r4 # 16-byte Folded Spill +; BE-P8-NEXT: li r4, 240 +; BE-P8-NEXT: stfd f16, 496(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x v26, r1, r4 # 16-byte Folded Spill +; BE-P8-NEXT: li r4, 256 +; BE-P8-NEXT: stfd f17, 504(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x v27, r1, r4 # 16-byte Folded Spill +; BE-P8-NEXT: li r4, 272 +; BE-P8-NEXT: stfd f18, 512(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x v28, r1, r4 # 16-byte Folded Spill +; BE-P8-NEXT: li r4, 288 +; BE-P8-NEXT: stfd f19, 520(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x v29, r1, r4 # 16-byte Folded Spill +; BE-P8-NEXT: li r4, 304 +; BE-P8-NEXT: stfd f20, 528(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x v30, r1, r4 # 16-byte Folded Spill +; BE-P8-NEXT: li r4, 320 +; BE-P8-NEXT: stfd f21, 536(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stxvd2x v31, r1, r4 # 16-byte Folded Spill +; BE-P8-NEXT: lwz r4, 12(r3) +; BE-P8-NEXT: stfd f22, 544(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd f23, 552(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd f24, 560(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd f25, 568(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd f26, 576(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd f27, 584(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd f28, 592(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd f29, 600(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd f30, 608(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stfd f31, 616(r1) # 8-byte Folded Spill +; BE-P8-NEXT: stw r4, 132(r1) +; BE-P8-NEXT: #APP +; BE-P8-NEXT: nop +; BE-P8-NEXT: #NO_APP +; BE-P8-NEXT: addi r3, r1, 132 +; BE-P8-NEXT: bl callee2 +; BE-P8-NEXT: nop +; BE-P8-NEXT: ld r4, 120(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd f31, 616(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd f30, 608(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r31, 472(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd f29, 600(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd f28, 592(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r30, 464(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r29, 456(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lwz r4, 16(r4) +; BE-P8-NEXT: lfd f27, 584(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd f26, 576(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r28, 448(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd f25, 568(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd f24, 560(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r27, 440(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r26, 432(r1) # 8-byte Folded Reload +; BE-P8-NEXT: add r3, r4, r3 +; BE-P8-NEXT: li r4, 320 +; BE-P8-NEXT: lfd f23, 552(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lfd f22, 544(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r25, 424(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r24, 416(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x v31, r1, r4 # 16-byte Folded Reload +; BE-P8-NEXT: li r4, 304 +; BE-P8-NEXT: lfd f21, 536(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r23, 408(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r22, 400(r1) # 8-byte Folded Reload +; BE-P8-NEXT: clrldi r3, r3, 32 +; BE-P8-NEXT: lxvd2x v30, r1, r4 # 16-byte Folded Reload +; BE-P8-NEXT: li r4, 288 +; BE-P8-NEXT: lfd f20, 528(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r21, 392(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r20, 384(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x v29, r1, r4 # 16-byte Folded Reload +; BE-P8-NEXT: li r4, 272 +; BE-P8-NEXT: lfd f19, 520(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r19, 376(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r18, 368(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x v28, r1, r4 # 16-byte Folded Reload +; BE-P8-NEXT: li r4, 256 +; BE-P8-NEXT: lfd f18, 512(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r17, 360(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r16, 352(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x v27, r1, r4 # 16-byte Folded Reload +; BE-P8-NEXT: li r4, 240 +; BE-P8-NEXT: lfd f17, 504(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r15, 344(r1) # 8-byte Folded Reload +; BE-P8-NEXT: ld r14, 336(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x v26, r1, r4 # 16-byte Folded Reload +; BE-P8-NEXT: li r4, 224 +; BE-P8-NEXT: lfd f16, 496(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x v25, r1, r4 # 16-byte Folded Reload +; BE-P8-NEXT: li r4, 208 +; BE-P8-NEXT: lfd f15, 488(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x v24, r1, r4 # 16-byte Folded Reload +; BE-P8-NEXT: li r4, 192 +; BE-P8-NEXT: lfd f14, 480(r1) # 8-byte Folded Reload +; BE-P8-NEXT: lxvd2x v23, r1, r4 # 16-byte Folded Reload +; BE-P8-NEXT: li r4, 176 +; BE-P8-NEXT: lxvd2x v22, r1, r4 # 16-byte Folded Reload +; BE-P8-NEXT: li r4, 160 +; BE-P8-NEXT: lxvd2x v21, r1, r4 # 16-byte Folded Reload +; BE-P8-NEXT: li r4, 144 +; BE-P8-NEXT: lxvd2x v20, r1, r4 # 16-byte Folded Reload +; BE-P8-NEXT: addi r1, r1, 624 +; BE-P8-NEXT: ld r0, 16(r1) +; BE-P8-NEXT: lwz r12, 8(r1) +; BE-P8-NEXT: mtocrf 32, r12 +; BE-P8-NEXT: hashchk r0, -488(r1) +; BE-P8-NEXT: mtlr r0 +; BE-P8-NEXT: mtocrf 16, r12 +; BE-P8-NEXT: mtocrf 8, r12 +; BE-P8-NEXT: blr +; +; LE-P10-PRIV-LABEL: spill: +; LE-P10-PRIV: # %bb.0: # %entry +; LE-P10-PRIV-NEXT: mflr r0 +; LE-P10-PRIV-NEXT: mfcr r12 +; LE-P10-PRIV-NEXT: std r0, 16(r1) +; LE-P10-PRIV-NEXT: hashstp r0, -488(r1) +; LE-P10-PRIV-NEXT: stw r12, 8(r1) +; LE-P10-PRIV-NEXT: stdu r1, -544(r1) +; LE-P10-PRIV-NEXT: lwz r4, 12(r3) +; LE-P10-PRIV-NEXT: std r14, 256(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: std r15, 264(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stxv v20, 64(r1) # 16-byte Folded Spill +; LE-P10-PRIV-NEXT: stxv v21, 80(r1) # 16-byte Folded Spill +; LE-P10-PRIV-NEXT: stxv v22, 96(r1) # 16-byte Folded Spill +; LE-P10-PRIV-NEXT: std r16, 272(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: std r17, 280(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stxv v23, 112(r1) # 16-byte Folded Spill +; LE-P10-PRIV-NEXT: std r18, 288(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: std r19, 296(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stxv v24, 128(r1) # 16-byte Folded Spill +; LE-P10-PRIV-NEXT: stxv v25, 144(r1) # 16-byte Folded Spill +; LE-P10-PRIV-NEXT: std r20, 304(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: std r21, 312(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stxv v26, 160(r1) # 16-byte Folded Spill +; LE-P10-PRIV-NEXT: std r22, 320(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: std r23, 328(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stxv v27, 176(r1) # 16-byte Folded Spill +; LE-P10-PRIV-NEXT: stxv v28, 192(r1) # 16-byte Folded Spill +; LE-P10-PRIV-NEXT: std r24, 336(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: std r25, 344(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stxv v29, 208(r1) # 16-byte Folded Spill +; LE-P10-PRIV-NEXT: std r26, 352(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: std r27, 360(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stxv v30, 224(r1) # 16-byte Folded Spill +; LE-P10-PRIV-NEXT: stxv v31, 240(r1) # 16-byte Folded Spill +; LE-P10-PRIV-NEXT: std r28, 368(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: std r29, 376(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: std r30, 384(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: std r31, 392(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f14, 400(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f15, 408(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f16, 416(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f17, 424(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f18, 432(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f19, 440(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f20, 448(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f21, 456(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f22, 464(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f23, 472(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f24, 480(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f25, 488(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f26, 496(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f27, 504(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f28, 512(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f29, 520(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f30, 528(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stfd f31, 536(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: std r3, 40(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: stw r4, 52(r1) +; LE-P10-PRIV-NEXT: #APP +; LE-P10-PRIV-NEXT: nop +; LE-P10-PRIV-NEXT: #NO_APP +; LE-P10-PRIV-NEXT: addi r3, r1, 52 +; LE-P10-PRIV-NEXT: bl callee2@notoc +; LE-P10-PRIV-NEXT: ld r4, 40(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lxv v31, 240(r1) # 16-byte Folded Reload +; LE-P10-PRIV-NEXT: lxv v30, 224(r1) # 16-byte Folded Reload +; LE-P10-PRIV-NEXT: lxv v29, 208(r1) # 16-byte Folded Reload +; LE-P10-PRIV-NEXT: lxv v28, 192(r1) # 16-byte Folded Reload +; LE-P10-PRIV-NEXT: lxv v27, 176(r1) # 16-byte Folded Reload +; LE-P10-PRIV-NEXT: lxv v26, 160(r1) # 16-byte Folded Reload +; LE-P10-PRIV-NEXT: lxv v25, 144(r1) # 16-byte Folded Reload +; LE-P10-PRIV-NEXT: lxv v24, 128(r1) # 16-byte Folded Reload +; LE-P10-PRIV-NEXT: lxv v23, 112(r1) # 16-byte Folded Reload +; LE-P10-PRIV-NEXT: lxv v22, 96(r1) # 16-byte Folded Reload +; LE-P10-PRIV-NEXT: lxv v21, 80(r1) # 16-byte Folded Reload +; LE-P10-PRIV-NEXT: lxv v20, 64(r1) # 16-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f31, 536(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f30, 528(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f29, 520(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f28, 512(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f27, 504(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r31, 392(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r30, 384(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r29, 376(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f26, 496(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r28, 368(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r27, 360(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r26, 352(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f25, 488(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r25, 344(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r24, 336(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r23, 328(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f24, 480(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r22, 320(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r21, 312(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lwz r4, 16(r4) +; LE-P10-PRIV-NEXT: add r3, r4, r3 +; LE-P10-PRIV-NEXT: lfd f23, 472(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f22, 464(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r20, 304(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r19, 296(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r18, 288(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r17, 280(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r16, 272(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r15, 264(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: ld r14, 256(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f21, 456(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f20, 448(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f19, 440(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f18, 432(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f17, 424(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f16, 416(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f15, 408(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: lfd f14, 400(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: clrldi r3, r3, 32 +; LE-P10-PRIV-NEXT: addi r1, r1, 544 +; LE-P10-PRIV-NEXT: ld r0, 16(r1) +; LE-P10-PRIV-NEXT: lwz r12, 8(r1) +; LE-P10-PRIV-NEXT: mtlr r0 +; LE-P10-PRIV-NEXT: hashchkp r0, -488(r1) +; LE-P10-PRIV-NEXT: mtocrf 32, r12 +; LE-P10-PRIV-NEXT: mtocrf 16, r12 +; LE-P10-PRIV-NEXT: mtocrf 8, r12 +; LE-P10-PRIV-NEXT: blr +; +; LE-P9-PRIV-LABEL: spill: +; LE-P9-PRIV: # %bb.0: # %entry +; LE-P9-PRIV-NEXT: mflr r0 +; LE-P9-PRIV-NEXT: mfcr r12 +; LE-P9-PRIV-NEXT: std r0, 16(r1) +; LE-P9-PRIV-NEXT: hashstp r0, -488(r1) +; LE-P9-PRIV-NEXT: stw r12, 8(r1) +; LE-P9-PRIV-NEXT: stdu r1, -544(r1) +; LE-P9-PRIV-NEXT: lwz r4, 12(r3) +; LE-P9-PRIV-NEXT: std r14, 256(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: std r15, 264(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stxv v20, 64(r1) # 16-byte Folded Spill +; LE-P9-PRIV-NEXT: stxv v21, 80(r1) # 16-byte Folded Spill +; LE-P9-PRIV-NEXT: stxv v22, 96(r1) # 16-byte Folded Spill +; LE-P9-PRIV-NEXT: std r16, 272(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: std r17, 280(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stxv v23, 112(r1) # 16-byte Folded Spill +; LE-P9-PRIV-NEXT: std r18, 288(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stxv v24, 128(r1) # 16-byte Folded Spill +; LE-P9-PRIV-NEXT: std r19, 296(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stxv v25, 144(r1) # 16-byte Folded Spill +; LE-P9-PRIV-NEXT: std r20, 304(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: std r21, 312(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stxv v26, 160(r1) # 16-byte Folded Spill +; LE-P9-PRIV-NEXT: std r22, 320(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stxv v27, 176(r1) # 16-byte Folded Spill +; LE-P9-PRIV-NEXT: std r23, 328(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stxv v28, 192(r1) # 16-byte Folded Spill +; LE-P9-PRIV-NEXT: std r24, 336(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: std r25, 344(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stxv v29, 208(r1) # 16-byte Folded Spill +; LE-P9-PRIV-NEXT: std r26, 352(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stxv v30, 224(r1) # 16-byte Folded Spill +; LE-P9-PRIV-NEXT: std r27, 360(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stxv v31, 240(r1) # 16-byte Folded Spill +; LE-P9-PRIV-NEXT: std r28, 368(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: std r29, 376(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: std r30, 384(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: std r31, 392(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f14, 400(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f15, 408(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f16, 416(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f17, 424(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f18, 432(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f19, 440(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f20, 448(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f21, 456(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f22, 464(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f23, 472(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f24, 480(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f25, 488(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f26, 496(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f27, 504(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f28, 512(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f29, 520(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f30, 528(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stfd f31, 536(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: std r3, 40(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: stw r4, 52(r1) +; LE-P9-PRIV-NEXT: #APP +; LE-P9-PRIV-NEXT: nop +; LE-P9-PRIV-NEXT: #NO_APP +; LE-P9-PRIV-NEXT: addi r3, r1, 52 +; LE-P9-PRIV-NEXT: bl callee2 +; LE-P9-PRIV-NEXT: nop +; LE-P9-PRIV-NEXT: ld r4, 40(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lxv v31, 240(r1) # 16-byte Folded Reload +; LE-P9-PRIV-NEXT: lxv v30, 224(r1) # 16-byte Folded Reload +; LE-P9-PRIV-NEXT: lxv v29, 208(r1) # 16-byte Folded Reload +; LE-P9-PRIV-NEXT: lxv v28, 192(r1) # 16-byte Folded Reload +; LE-P9-PRIV-NEXT: lxv v27, 176(r1) # 16-byte Folded Reload +; LE-P9-PRIV-NEXT: lxv v26, 160(r1) # 16-byte Folded Reload +; LE-P9-PRIV-NEXT: lxv v25, 144(r1) # 16-byte Folded Reload +; LE-P9-PRIV-NEXT: lxv v24, 128(r1) # 16-byte Folded Reload +; LE-P9-PRIV-NEXT: lxv v23, 112(r1) # 16-byte Folded Reload +; LE-P9-PRIV-NEXT: lxv v22, 96(r1) # 16-byte Folded Reload +; LE-P9-PRIV-NEXT: lxv v21, 80(r1) # 16-byte Folded Reload +; LE-P9-PRIV-NEXT: lxv v20, 64(r1) # 16-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f31, 536(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f30, 528(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f29, 520(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f28, 512(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f27, 504(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r31, 392(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r30, 384(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r29, 376(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f26, 496(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r28, 368(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r27, 360(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r26, 352(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f25, 488(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r25, 344(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r24, 336(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r23, 328(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f24, 480(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r22, 320(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r21, 312(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lwz r4, 16(r4) +; LE-P9-PRIV-NEXT: add r3, r4, r3 +; LE-P9-PRIV-NEXT: lfd f23, 472(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f22, 464(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r20, 304(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r19, 296(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r18, 288(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r17, 280(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r16, 272(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r15, 264(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: ld r14, 256(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f21, 456(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f20, 448(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f19, 440(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f18, 432(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f17, 424(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f16, 416(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f15, 408(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: lfd f14, 400(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: clrldi r3, r3, 32 +; LE-P9-PRIV-NEXT: addi r1, r1, 544 +; LE-P9-PRIV-NEXT: ld r0, 16(r1) +; LE-P9-PRIV-NEXT: lwz r12, 8(r1) +; LE-P9-PRIV-NEXT: mtlr r0 +; LE-P9-PRIV-NEXT: hashchkp r0, -488(r1) +; LE-P9-PRIV-NEXT: mtocrf 32, r12 +; LE-P9-PRIV-NEXT: mtocrf 16, r12 +; LE-P9-PRIV-NEXT: mtocrf 8, r12 +; LE-P9-PRIV-NEXT: blr +; +; LE-P8-PRIV-LABEL: spill: +; LE-P8-PRIV: # %bb.0: # %entry +; LE-P8-PRIV-NEXT: mfcr r12 +; LE-P8-PRIV-NEXT: mflr r0 +; LE-P8-PRIV-NEXT: std r0, 16(r1) +; LE-P8-PRIV-NEXT: hashstp r0, -488(r1) +; LE-P8-PRIV-NEXT: stw r12, 8(r1) +; LE-P8-PRIV-NEXT: stdu r1, -544(r1) +; LE-P8-PRIV-NEXT: li r4, 64 +; LE-P8-PRIV-NEXT: std r14, 256(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r15, 264(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r16, 272(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r17, 280(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stxvd2x v20, r1, r4 # 16-byte Folded Spill +; LE-P8-PRIV-NEXT: li r4, 80 +; LE-P8-PRIV-NEXT: std r18, 288(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r19, 296(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r20, 304(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r21, 312(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stxvd2x v21, r1, r4 # 16-byte Folded Spill +; LE-P8-PRIV-NEXT: li r4, 96 +; LE-P8-PRIV-NEXT: std r22, 320(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r23, 328(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r24, 336(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r25, 344(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r26, 352(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r27, 360(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r28, 368(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r29, 376(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r30, 384(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r31, 392(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r3, 40(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stxvd2x v22, r1, r4 # 16-byte Folded Spill +; LE-P8-PRIV-NEXT: li r4, 112 +; LE-P8-PRIV-NEXT: stxvd2x v23, r1, r4 # 16-byte Folded Spill +; LE-P8-PRIV-NEXT: li r4, 128 +; LE-P8-PRIV-NEXT: stfd f14, 400(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stxvd2x v24, r1, r4 # 16-byte Folded Spill +; LE-P8-PRIV-NEXT: li r4, 144 +; LE-P8-PRIV-NEXT: stfd f15, 408(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stxvd2x v25, r1, r4 # 16-byte Folded Spill +; LE-P8-PRIV-NEXT: li r4, 160 +; LE-P8-PRIV-NEXT: stfd f16, 416(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stxvd2x v26, r1, r4 # 16-byte Folded Spill +; LE-P8-PRIV-NEXT: li r4, 176 +; LE-P8-PRIV-NEXT: stfd f17, 424(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stxvd2x v27, r1, r4 # 16-byte Folded Spill +; LE-P8-PRIV-NEXT: li r4, 192 +; LE-P8-PRIV-NEXT: stfd f18, 432(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stxvd2x v28, r1, r4 # 16-byte Folded Spill +; LE-P8-PRIV-NEXT: li r4, 208 +; LE-P8-PRIV-NEXT: stfd f19, 440(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stxvd2x v29, r1, r4 # 16-byte Folded Spill +; LE-P8-PRIV-NEXT: li r4, 224 +; LE-P8-PRIV-NEXT: stfd f20, 448(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stxvd2x v30, r1, r4 # 16-byte Folded Spill +; LE-P8-PRIV-NEXT: li r4, 240 +; LE-P8-PRIV-NEXT: stfd f21, 456(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stxvd2x v31, r1, r4 # 16-byte Folded Spill +; LE-P8-PRIV-NEXT: lwz r4, 12(r3) +; LE-P8-PRIV-NEXT: stfd f22, 464(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stfd f23, 472(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stfd f24, 480(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stfd f25, 488(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stfd f26, 496(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stfd f27, 504(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stfd f28, 512(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stfd f29, 520(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stfd f30, 528(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stfd f31, 536(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: stw r4, 52(r1) +; LE-P8-PRIV-NEXT: #APP +; LE-P8-PRIV-NEXT: nop +; LE-P8-PRIV-NEXT: #NO_APP +; LE-P8-PRIV-NEXT: addi r3, r1, 52 +; LE-P8-PRIV-NEXT: bl callee2 +; LE-P8-PRIV-NEXT: nop +; LE-P8-PRIV-NEXT: ld r4, 40(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lfd f31, 536(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lfd f30, 528(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r31, 392(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lfd f29, 520(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lfd f28, 512(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r30, 384(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r29, 376(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lwz r4, 16(r4) +; LE-P8-PRIV-NEXT: lfd f27, 504(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lfd f26, 496(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r28, 368(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lfd f25, 488(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lfd f24, 480(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r27, 360(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r26, 352(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: add r3, r4, r3 +; LE-P8-PRIV-NEXT: li r4, 240 +; LE-P8-PRIV-NEXT: lfd f23, 472(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lfd f22, 464(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r25, 344(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r24, 336(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lxvd2x v31, r1, r4 # 16-byte Folded Reload +; LE-P8-PRIV-NEXT: li r4, 224 +; LE-P8-PRIV-NEXT: lfd f21, 456(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r23, 328(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r22, 320(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: clrldi r3, r3, 32 +; LE-P8-PRIV-NEXT: lxvd2x v30, r1, r4 # 16-byte Folded Reload +; LE-P8-PRIV-NEXT: li r4, 208 +; LE-P8-PRIV-NEXT: lfd f20, 448(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r21, 312(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r20, 304(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lxvd2x v29, r1, r4 # 16-byte Folded Reload +; LE-P8-PRIV-NEXT: li r4, 192 +; LE-P8-PRIV-NEXT: lfd f19, 440(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r19, 296(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r18, 288(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lxvd2x v28, r1, r4 # 16-byte Folded Reload +; LE-P8-PRIV-NEXT: li r4, 176 +; LE-P8-PRIV-NEXT: lfd f18, 432(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r17, 280(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r16, 272(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lxvd2x v27, r1, r4 # 16-byte Folded Reload +; LE-P8-PRIV-NEXT: li r4, 160 +; LE-P8-PRIV-NEXT: lfd f17, 424(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r15, 264(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: ld r14, 256(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lxvd2x v26, r1, r4 # 16-byte Folded Reload +; LE-P8-PRIV-NEXT: li r4, 144 +; LE-P8-PRIV-NEXT: lfd f16, 416(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lxvd2x v25, r1, r4 # 16-byte Folded Reload +; LE-P8-PRIV-NEXT: li r4, 128 +; LE-P8-PRIV-NEXT: lfd f15, 408(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lxvd2x v24, r1, r4 # 16-byte Folded Reload +; LE-P8-PRIV-NEXT: li r4, 112 +; LE-P8-PRIV-NEXT: lfd f14, 400(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: lxvd2x v23, r1, r4 # 16-byte Folded Reload +; LE-P8-PRIV-NEXT: li r4, 96 +; LE-P8-PRIV-NEXT: lxvd2x v22, r1, r4 # 16-byte Folded Reload +; LE-P8-PRIV-NEXT: li r4, 80 +; LE-P8-PRIV-NEXT: lxvd2x v21, r1, r4 # 16-byte Folded Reload +; LE-P8-PRIV-NEXT: li r4, 64 +; LE-P8-PRIV-NEXT: lxvd2x v20, r1, r4 # 16-byte Folded Reload +; LE-P8-PRIV-NEXT: addi r1, r1, 544 +; LE-P8-PRIV-NEXT: ld r0, 16(r1) +; LE-P8-PRIV-NEXT: lwz r12, 8(r1) +; LE-P8-PRIV-NEXT: mtocrf 32, r12 +; LE-P8-PRIV-NEXT: hashchkp r0, -488(r1) +; LE-P8-PRIV-NEXT: mtlr r0 +; LE-P8-PRIV-NEXT: mtocrf 16, r12 +; LE-P8-PRIV-NEXT: mtocrf 8, r12 +; LE-P8-PRIV-NEXT: blr +; +; BE-P10-PRIV-LABEL: spill: +; BE-P10-PRIV: # %bb.0: # %entry +; BE-P10-PRIV-NEXT: mflr r0 +; BE-P10-PRIV-NEXT: mfcr r12 +; BE-P10-PRIV-NEXT: std r0, 16(r1) +; BE-P10-PRIV-NEXT: hashstp r0, -488(r1) +; BE-P10-PRIV-NEXT: stw r12, 8(r1) +; BE-P10-PRIV-NEXT: stdu r1, -624(r1) +; BE-P10-PRIV-NEXT: lwz r4, 12(r3) +; BE-P10-PRIV-NEXT: std r14, 336(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std r15, 344(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv v20, 144(r1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv v21, 160(r1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv v22, 176(r1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: std r16, 352(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std r17, 360(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv v23, 192(r1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: std r18, 368(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std r19, 376(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv v24, 208(r1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv v25, 224(r1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: std r20, 384(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std r21, 392(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv v26, 240(r1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: std r22, 400(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std r23, 408(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv v27, 256(r1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv v28, 272(r1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: std r24, 416(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std r25, 424(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv v29, 288(r1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: std r26, 432(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std r27, 440(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv v30, 304(r1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: stxv v31, 320(r1) # 16-byte Folded Spill +; BE-P10-PRIV-NEXT: std r28, 448(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std r29, 456(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std r30, 464(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std r31, 472(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f14, 480(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f15, 488(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f16, 496(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f17, 504(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f18, 512(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f19, 520(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f20, 528(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f21, 536(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f22, 544(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f23, 552(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f24, 560(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f25, 568(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f26, 576(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f27, 584(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f28, 592(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f29, 600(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f30, 608(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stfd f31, 616(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: std r3, 120(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: stw r4, 132(r1) +; BE-P10-PRIV-NEXT: #APP +; BE-P10-PRIV-NEXT: nop +; BE-P10-PRIV-NEXT: #NO_APP +; BE-P10-PRIV-NEXT: addi r3, r1, 132 +; BE-P10-PRIV-NEXT: bl callee2 +; BE-P10-PRIV-NEXT: nop +; BE-P10-PRIV-NEXT: ld r4, 120(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv v31, 320(r1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv v30, 304(r1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv v29, 288(r1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv v28, 272(r1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv v27, 256(r1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv v26, 240(r1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv v25, 224(r1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv v24, 208(r1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv v23, 192(r1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv v22, 176(r1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv v21, 160(r1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lxv v20, 144(r1) # 16-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f31, 616(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f30, 608(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f29, 600(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f28, 592(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f27, 584(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r31, 472(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r30, 464(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r29, 456(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f26, 576(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r28, 448(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r27, 440(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r26, 432(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f25, 568(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r25, 424(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r24, 416(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r23, 408(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f24, 560(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r22, 400(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r21, 392(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lwz r4, 16(r4) +; BE-P10-PRIV-NEXT: add r3, r4, r3 +; BE-P10-PRIV-NEXT: lfd f23, 552(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f22, 544(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r20, 384(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r19, 376(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r18, 368(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r17, 360(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r16, 352(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r15, 344(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: ld r14, 336(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f21, 536(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f20, 528(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f19, 520(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f18, 512(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f17, 504(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f16, 496(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f15, 488(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: lfd f14, 480(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: clrldi r3, r3, 32 +; BE-P10-PRIV-NEXT: addi r1, r1, 624 +; BE-P10-PRIV-NEXT: ld r0, 16(r1) +; BE-P10-PRIV-NEXT: lwz r12, 8(r1) +; BE-P10-PRIV-NEXT: mtlr r0 +; BE-P10-PRIV-NEXT: hashchkp r0, -488(r1) +; BE-P10-PRIV-NEXT: mtocrf 32, r12 +; BE-P10-PRIV-NEXT: mtocrf 16, r12 +; BE-P10-PRIV-NEXT: mtocrf 8, r12 +; BE-P10-PRIV-NEXT: blr +; +; BE-P9-PRIV-LABEL: spill: +; BE-P9-PRIV: # %bb.0: # %entry +; BE-P9-PRIV-NEXT: mflr r0 +; BE-P9-PRIV-NEXT: mfcr r12 +; BE-P9-PRIV-NEXT: std r0, 16(r1) +; BE-P9-PRIV-NEXT: hashstp r0, -488(r1) +; BE-P9-PRIV-NEXT: stw r12, 8(r1) +; BE-P9-PRIV-NEXT: stdu r1, -624(r1) +; BE-P9-PRIV-NEXT: lwz r4, 12(r3) +; BE-P9-PRIV-NEXT: std r14, 336(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std r15, 344(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv v20, 144(r1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv v21, 160(r1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv v22, 176(r1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std r16, 352(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std r17, 360(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv v23, 192(r1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std r18, 368(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv v24, 208(r1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std r19, 376(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv v25, 224(r1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std r20, 384(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std r21, 392(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv v26, 240(r1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std r22, 400(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv v27, 256(r1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std r23, 408(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv v28, 272(r1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std r24, 416(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std r25, 424(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv v29, 288(r1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std r26, 432(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv v30, 304(r1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std r27, 440(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stxv v31, 320(r1) # 16-byte Folded Spill +; BE-P9-PRIV-NEXT: std r28, 448(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std r29, 456(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std r30, 464(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std r31, 472(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f14, 480(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f15, 488(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f16, 496(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f17, 504(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f18, 512(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f19, 520(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f20, 528(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f21, 536(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f22, 544(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f23, 552(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f24, 560(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f25, 568(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f26, 576(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f27, 584(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f28, 592(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f29, 600(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f30, 608(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stfd f31, 616(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: std r3, 120(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: stw r4, 132(r1) +; BE-P9-PRIV-NEXT: #APP +; BE-P9-PRIV-NEXT: nop +; BE-P9-PRIV-NEXT: #NO_APP +; BE-P9-PRIV-NEXT: addi r3, r1, 132 +; BE-P9-PRIV-NEXT: bl callee2 +; BE-P9-PRIV-NEXT: nop +; BE-P9-PRIV-NEXT: ld r4, 120(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv v31, 320(r1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv v30, 304(r1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv v29, 288(r1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv v28, 272(r1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv v27, 256(r1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv v26, 240(r1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv v25, 224(r1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv v24, 208(r1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv v23, 192(r1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv v22, 176(r1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv v21, 160(r1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lxv v20, 144(r1) # 16-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f31, 616(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f30, 608(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f29, 600(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f28, 592(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f27, 584(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r31, 472(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r30, 464(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r29, 456(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f26, 576(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r28, 448(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r27, 440(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r26, 432(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f25, 568(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r25, 424(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r24, 416(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r23, 408(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f24, 560(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r22, 400(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r21, 392(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lwz r4, 16(r4) +; BE-P9-PRIV-NEXT: add r3, r4, r3 +; BE-P9-PRIV-NEXT: lfd f23, 552(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f22, 544(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r20, 384(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r19, 376(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r18, 368(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r17, 360(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r16, 352(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r15, 344(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: ld r14, 336(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f21, 536(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f20, 528(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f19, 520(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f18, 512(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f17, 504(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f16, 496(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f15, 488(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: lfd f14, 480(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: clrldi r3, r3, 32 +; BE-P9-PRIV-NEXT: addi r1, r1, 624 +; BE-P9-PRIV-NEXT: ld r0, 16(r1) +; BE-P9-PRIV-NEXT: lwz r12, 8(r1) +; BE-P9-PRIV-NEXT: mtlr r0 +; BE-P9-PRIV-NEXT: hashchkp r0, -488(r1) +; BE-P9-PRIV-NEXT: mtocrf 32, r12 +; BE-P9-PRIV-NEXT: mtocrf 16, r12 +; BE-P9-PRIV-NEXT: mtocrf 8, r12 +; BE-P9-PRIV-NEXT: blr +; +; BE-P8-PRIV-LABEL: spill: +; BE-P8-PRIV: # %bb.0: # %entry +; BE-P8-PRIV-NEXT: mfcr r12 +; BE-P8-PRIV-NEXT: mflr r0 +; BE-P8-PRIV-NEXT: std r0, 16(r1) +; BE-P8-PRIV-NEXT: hashstp r0, -488(r1) +; BE-P8-PRIV-NEXT: stw r12, 8(r1) +; BE-P8-PRIV-NEXT: stdu r1, -624(r1) +; BE-P8-PRIV-NEXT: li r4, 144 +; BE-P8-PRIV-NEXT: std r14, 336(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r15, 344(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r16, 352(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r17, 360(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x v20, r1, r4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li r4, 160 +; BE-P8-PRIV-NEXT: std r18, 368(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r19, 376(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r20, 384(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r21, 392(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x v21, r1, r4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li r4, 176 +; BE-P8-PRIV-NEXT: std r22, 400(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r23, 408(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r24, 416(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r25, 424(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r26, 432(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r27, 440(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r28, 448(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r29, 456(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r30, 464(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r31, 472(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: std r3, 120(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x v22, r1, r4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li r4, 192 +; BE-P8-PRIV-NEXT: stxvd2x v23, r1, r4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li r4, 208 +; BE-P8-PRIV-NEXT: stfd f14, 480(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x v24, r1, r4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li r4, 224 +; BE-P8-PRIV-NEXT: stfd f15, 488(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x v25, r1, r4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li r4, 240 +; BE-P8-PRIV-NEXT: stfd f16, 496(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x v26, r1, r4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li r4, 256 +; BE-P8-PRIV-NEXT: stfd f17, 504(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x v27, r1, r4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li r4, 272 +; BE-P8-PRIV-NEXT: stfd f18, 512(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x v28, r1, r4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li r4, 288 +; BE-P8-PRIV-NEXT: stfd f19, 520(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x v29, r1, r4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li r4, 304 +; BE-P8-PRIV-NEXT: stfd f20, 528(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x v30, r1, r4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: li r4, 320 +; BE-P8-PRIV-NEXT: stfd f21, 536(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stxvd2x v31, r1, r4 # 16-byte Folded Spill +; BE-P8-PRIV-NEXT: lwz r4, 12(r3) +; BE-P8-PRIV-NEXT: stfd f22, 544(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd f23, 552(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd f24, 560(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd f25, 568(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd f26, 576(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd f27, 584(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd f28, 592(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd f29, 600(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd f30, 608(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stfd f31, 616(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: stw r4, 132(r1) +; BE-P8-PRIV-NEXT: #APP +; BE-P8-PRIV-NEXT: nop +; BE-P8-PRIV-NEXT: #NO_APP +; BE-P8-PRIV-NEXT: addi r3, r1, 132 +; BE-P8-PRIV-NEXT: bl callee2 +; BE-P8-PRIV-NEXT: nop +; BE-P8-PRIV-NEXT: ld r4, 120(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd f31, 616(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd f30, 608(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r31, 472(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd f29, 600(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd f28, 592(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r30, 464(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r29, 456(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lwz r4, 16(r4) +; BE-P8-PRIV-NEXT: lfd f27, 584(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd f26, 576(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r28, 448(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd f25, 568(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd f24, 560(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r27, 440(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r26, 432(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: add r3, r4, r3 +; BE-P8-PRIV-NEXT: li r4, 320 +; BE-P8-PRIV-NEXT: lfd f23, 552(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lfd f22, 544(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r25, 424(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r24, 416(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x v31, r1, r4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li r4, 304 +; BE-P8-PRIV-NEXT: lfd f21, 536(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r23, 408(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r22, 400(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: clrldi r3, r3, 32 +; BE-P8-PRIV-NEXT: lxvd2x v30, r1, r4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li r4, 288 +; BE-P8-PRIV-NEXT: lfd f20, 528(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r21, 392(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r20, 384(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x v29, r1, r4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li r4, 272 +; BE-P8-PRIV-NEXT: lfd f19, 520(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r19, 376(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r18, 368(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x v28, r1, r4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li r4, 256 +; BE-P8-PRIV-NEXT: lfd f18, 512(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r17, 360(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r16, 352(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x v27, r1, r4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li r4, 240 +; BE-P8-PRIV-NEXT: lfd f17, 504(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r15, 344(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: ld r14, 336(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x v26, r1, r4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li r4, 224 +; BE-P8-PRIV-NEXT: lfd f16, 496(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x v25, r1, r4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li r4, 208 +; BE-P8-PRIV-NEXT: lfd f15, 488(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x v24, r1, r4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li r4, 192 +; BE-P8-PRIV-NEXT: lfd f14, 480(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: lxvd2x v23, r1, r4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li r4, 176 +; BE-P8-PRIV-NEXT: lxvd2x v22, r1, r4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li r4, 160 +; BE-P8-PRIV-NEXT: lxvd2x v21, r1, r4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: li r4, 144 +; BE-P8-PRIV-NEXT: lxvd2x v20, r1, r4 # 16-byte Folded Reload +; BE-P8-PRIV-NEXT: addi r1, r1, 624 +; BE-P8-PRIV-NEXT: ld r0, 16(r1) +; BE-P8-PRIV-NEXT: lwz r12, 8(r1) +; BE-P8-PRIV-NEXT: mtocrf 32, r12 +; BE-P8-PRIV-NEXT: hashchkp r0, -488(r1) +; BE-P8-PRIV-NEXT: mtlr r0 +; BE-P8-PRIV-NEXT: mtocrf 16, r12 +; BE-P8-PRIV-NEXT: mtocrf 8, r12 +; BE-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 { +; LE-P10-LABEL: shrinkwrap: +; LE-P10: # %bb.0: # %entry +; LE-P10-NEXT: cmpldi r3, 0 +; LE-P10-NEXT: beq cr0, .LBB2_2 +; LE-P10-NEXT: # %bb.1: # %if.end +; LE-P10-NEXT: mflr r0 +; LE-P10-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; LE-P10-NEXT: std r0, 16(r1) +; LE-P10-NEXT: hashst r0, -24(r1) +; LE-P10-NEXT: stdu r1, -64(r1) +; LE-P10-NEXT: mr r30, r3 +; LE-P10-NEXT: lwz r3, 12(r3) +; LE-P10-NEXT: stw r3, 36(r1) +; LE-P10-NEXT: addi r3, r1, 36 +; LE-P10-NEXT: bl callee2@notoc +; LE-P10-NEXT: lwz r4, 16(r30) +; LE-P10-NEXT: add r3, r4, r3 +; LE-P10-NEXT: addi r1, r1, 64 +; LE-P10-NEXT: ld r0, 16(r1) +; LE-P10-NEXT: clrldi r3, r3, 32 +; LE-P10-NEXT: mtlr r0 +; LE-P10-NEXT: hashchk r0, -24(r1) +; LE-P10-NEXT: ld r30, -16(r1) # 8-byte Folded Reload +; LE-P10-NEXT: blr +; LE-P10-NEXT: .LBB2_2: +; LE-P10-NEXT: li r3, 0 +; LE-P10-NEXT: blr +; +; LE-P9-LABEL: shrinkwrap: +; LE-P9: # %bb.0: # %entry +; LE-P9-NEXT: cmpldi r3, 0 +; LE-P9-NEXT: beq cr0, .LBB2_2 +; LE-P9-NEXT: # %bb.1: # %if.end +; LE-P9-NEXT: mflr r0 +; LE-P9-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; LE-P9-NEXT: std r0, 16(r1) +; LE-P9-NEXT: hashst r0, -24(r1) +; LE-P9-NEXT: stdu r1, -64(r1) +; LE-P9-NEXT: mr r30, r3 +; LE-P9-NEXT: lwz r3, 12(r3) +; LE-P9-NEXT: stw r3, 36(r1) +; LE-P9-NEXT: addi r3, r1, 36 +; LE-P9-NEXT: bl callee2 +; LE-P9-NEXT: nop +; LE-P9-NEXT: lwz r4, 16(r30) +; LE-P9-NEXT: add r3, r4, r3 +; LE-P9-NEXT: addi r1, r1, 64 +; LE-P9-NEXT: ld r0, 16(r1) +; LE-P9-NEXT: clrldi r3, r3, 32 +; LE-P9-NEXT: mtlr r0 +; LE-P9-NEXT: hashchk r0, -24(r1) +; LE-P9-NEXT: ld r30, -16(r1) # 8-byte Folded Reload +; LE-P9-NEXT: blr +; LE-P9-NEXT: .LBB2_2: +; LE-P9-NEXT: li r3, 0 +; LE-P9-NEXT: blr +; +; LE-P8-LABEL: shrinkwrap: +; LE-P8: # %bb.0: # %entry +; LE-P8-NEXT: cmpldi r3, 0 +; LE-P8-NEXT: beq cr0, .LBB2_2 +; LE-P8-NEXT: # %bb.1: # %if.end +; LE-P8-NEXT: mflr r0 +; LE-P8-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; LE-P8-NEXT: std r0, 16(r1) +; LE-P8-NEXT: hashst r0, -24(r1) +; LE-P8-NEXT: stdu r1, -64(r1) +; LE-P8-NEXT: mr r30, r3 +; LE-P8-NEXT: lwz r3, 12(r3) +; LE-P8-NEXT: stw r3, 36(r1) +; LE-P8-NEXT: addi r3, r1, 36 +; LE-P8-NEXT: bl callee2 +; LE-P8-NEXT: nop +; LE-P8-NEXT: lwz r4, 16(r30) +; LE-P8-NEXT: add r3, r4, r3 +; LE-P8-NEXT: addi r1, r1, 64 +; LE-P8-NEXT: ld r0, 16(r1) +; LE-P8-NEXT: clrldi r3, r3, 32 +; LE-P8-NEXT: hashchk r0, -24(r1) +; LE-P8-NEXT: ld r30, -16(r1) # 8-byte Folded Reload +; LE-P8-NEXT: mtlr r0 +; LE-P8-NEXT: blr +; LE-P8-NEXT: .LBB2_2: +; LE-P8-NEXT: li r3, 0 +; LE-P8-NEXT: blr +; +; LE-P10-O0-LABEL: shrinkwrap: +; LE-P10-O0: # %bb.0: # %entry +; LE-P10-O0-NEXT: mflr r0 +; LE-P10-O0-NEXT: std r0, 16(r1) +; LE-P10-O0-NEXT: hashst r0, -8(r1) +; LE-P10-O0-NEXT: stdu r1, -64(r1) +; LE-P10-O0-NEXT: mr r4, r3 +; LE-P10-O0-NEXT: std r4, 40(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: li r3, 0 +; LE-P10-O0-NEXT: cmpdi r4, 0 +; LE-P10-O0-NEXT: stw r3, 48(r1) # 4-byte Folded Spill +; LE-P10-O0-NEXT: beq cr0, .LBB2_2 +; LE-P10-O0-NEXT: # %bb.1: # %if.end +; LE-P10-O0-NEXT: ld r3, 40(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: lwz r3, 12(r3) +; LE-P10-O0-NEXT: stw r3, 52(r1) +; LE-P10-O0-NEXT: addi r3, r1, 52 +; LE-P10-O0-NEXT: bl callee2@notoc +; LE-P10-O0-NEXT: mr r4, r3 +; LE-P10-O0-NEXT: ld r3, 40(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: # kill: def $r4 killed $r4 killed $x4 +; LE-P10-O0-NEXT: lwz r3, 16(r3) +; LE-P10-O0-NEXT: add r3, r3, r4 +; LE-P10-O0-NEXT: stw r3, 48(r1) # 4-byte Folded Spill +; LE-P10-O0-NEXT: .LBB2_2: # %return +; LE-P10-O0-NEXT: lwz r3, 48(r1) # 4-byte Folded Reload +; LE-P10-O0-NEXT: clrldi r3, r3, 32 +; LE-P10-O0-NEXT: addi r1, r1, 64 +; LE-P10-O0-NEXT: ld r0, 16(r1) +; LE-P10-O0-NEXT: hashchk r0, -8(r1) +; LE-P10-O0-NEXT: mtlr r0 +; LE-P10-O0-NEXT: blr +; +; LE-P9-O0-LABEL: shrinkwrap: +; LE-P9-O0: # %bb.0: # %entry +; LE-P9-O0-NEXT: mflr r0 +; LE-P9-O0-NEXT: std r0, 16(r1) +; LE-P9-O0-NEXT: hashst r0, -8(r1) +; LE-P9-O0-NEXT: stdu r1, -128(r1) +; LE-P9-O0-NEXT: mr r4, r3 +; LE-P9-O0-NEXT: std r4, 104(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: li r3, 0 +; LE-P9-O0-NEXT: cmpdi r4, 0 +; LE-P9-O0-NEXT: stw r3, 112(r1) # 4-byte Folded Spill +; LE-P9-O0-NEXT: beq cr0, .LBB2_2 +; LE-P9-O0-NEXT: # %bb.1: # %if.end +; LE-P9-O0-NEXT: ld r3, 104(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lwz r3, 12(r3) +; LE-P9-O0-NEXT: stw r3, 116(r1) +; LE-P9-O0-NEXT: addi r3, r1, 116 +; LE-P9-O0-NEXT: bl callee2 +; LE-P9-O0-NEXT: nop +; LE-P9-O0-NEXT: mr r4, r3 +; LE-P9-O0-NEXT: ld r3, 104(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lwz r3, 16(r3) +; LE-P9-O0-NEXT: add r3, r3, r4 +; LE-P9-O0-NEXT: stw r3, 112(r1) # 4-byte Folded Spill +; LE-P9-O0-NEXT: .LBB2_2: # %return +; LE-P9-O0-NEXT: lwz r3, 112(r1) # 4-byte Folded Reload +; LE-P9-O0-NEXT: clrldi r3, r3, 32 +; LE-P9-O0-NEXT: addi r1, r1, 128 +; LE-P9-O0-NEXT: ld r0, 16(r1) +; LE-P9-O0-NEXT: hashchk r0, -8(r1) +; LE-P9-O0-NEXT: mtlr r0 +; LE-P9-O0-NEXT: blr +; +; LE-P8-O0-LABEL: shrinkwrap: +; LE-P8-O0: # %bb.0: # %entry +; LE-P8-O0-NEXT: mflr r0 +; LE-P8-O0-NEXT: std r0, 16(r1) +; LE-P8-O0-NEXT: hashst r0, -8(r1) +; LE-P8-O0-NEXT: stdu r1, -128(r1) +; LE-P8-O0-NEXT: mr r4, r3 +; LE-P8-O0-NEXT: std r4, 104(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: li r3, 0 +; LE-P8-O0-NEXT: cmpdi r4, 0 +; LE-P8-O0-NEXT: stw r3, 112(r1) # 4-byte Folded Spill +; LE-P8-O0-NEXT: beq cr0, .LBB2_2 +; LE-P8-O0-NEXT: # %bb.1: # %if.end +; LE-P8-O0-NEXT: ld r3, 104(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lwz r3, 12(r3) +; LE-P8-O0-NEXT: stw r3, 116(r1) +; LE-P8-O0-NEXT: addi r3, r1, 116 +; LE-P8-O0-NEXT: bl callee2 +; LE-P8-O0-NEXT: nop +; LE-P8-O0-NEXT: mr r4, r3 +; LE-P8-O0-NEXT: ld r3, 104(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lwz r3, 16(r3) +; LE-P8-O0-NEXT: add r3, r3, r4 +; LE-P8-O0-NEXT: stw r3, 112(r1) # 4-byte Folded Spill +; LE-P8-O0-NEXT: .LBB2_2: # %return +; LE-P8-O0-NEXT: lwz r3, 112(r1) # 4-byte Folded Reload +; LE-P8-O0-NEXT: clrldi r3, r3, 32 +; LE-P8-O0-NEXT: addi r1, r1, 128 +; LE-P8-O0-NEXT: ld r0, 16(r1) +; LE-P8-O0-NEXT: hashchk r0, -8(r1) +; LE-P8-O0-NEXT: mtlr r0 +; LE-P8-O0-NEXT: blr +; +; BE-P10-LABEL: shrinkwrap: +; BE-P10: # %bb.0: # %entry +; BE-P10-NEXT: cmpldi r3, 0 +; BE-P10-NEXT: beq cr0, .LBB2_2 +; BE-P10-NEXT: # %bb.1: # %if.end +; BE-P10-NEXT: mflr r0 +; BE-P10-NEXT: std r0, 16(r1) +; BE-P10-NEXT: hashst r0, -24(r1) +; BE-P10-NEXT: stdu r1, -144(r1) +; BE-P10-NEXT: std r30, 128(r1) # 8-byte Folded Spill +; BE-P10-NEXT: mr r30, r3 +; BE-P10-NEXT: lwz r3, 12(r3) +; BE-P10-NEXT: stw r3, 116(r1) +; BE-P10-NEXT: addi r3, r1, 116 +; BE-P10-NEXT: bl callee2 +; BE-P10-NEXT: nop +; BE-P10-NEXT: lwz r4, 16(r30) +; BE-P10-NEXT: ld r30, 128(r1) # 8-byte Folded Reload +; BE-P10-NEXT: add r3, r4, r3 +; BE-P10-NEXT: addi r1, r1, 144 +; BE-P10-NEXT: ld r0, 16(r1) +; BE-P10-NEXT: clrldi r3, r3, 32 +; BE-P10-NEXT: mtlr r0 +; BE-P10-NEXT: hashchk r0, -24(r1) +; BE-P10-NEXT: blr +; BE-P10-NEXT: .LBB2_2: +; BE-P10-NEXT: li r3, 0 +; BE-P10-NEXT: blr +; +; BE-P9-LABEL: shrinkwrap: +; BE-P9: # %bb.0: # %entry +; BE-P9-NEXT: cmpldi r3, 0 +; BE-P9-NEXT: beq cr0, .LBB2_2 +; BE-P9-NEXT: # %bb.1: # %if.end +; BE-P9-NEXT: mflr r0 +; BE-P9-NEXT: std r0, 16(r1) +; BE-P9-NEXT: hashst r0, -24(r1) +; BE-P9-NEXT: stdu r1, -144(r1) +; BE-P9-NEXT: std r30, 128(r1) # 8-byte Folded Spill +; BE-P9-NEXT: mr r30, r3 +; BE-P9-NEXT: lwz r3, 12(r3) +; BE-P9-NEXT: stw r3, 116(r1) +; BE-P9-NEXT: addi r3, r1, 116 +; BE-P9-NEXT: bl callee2 +; BE-P9-NEXT: nop +; BE-P9-NEXT: lwz r4, 16(r30) +; BE-P9-NEXT: ld r30, 128(r1) # 8-byte Folded Reload +; BE-P9-NEXT: add r3, r4, r3 +; BE-P9-NEXT: addi r1, r1, 144 +; BE-P9-NEXT: ld r0, 16(r1) +; BE-P9-NEXT: clrldi r3, r3, 32 +; BE-P9-NEXT: mtlr r0 +; BE-P9-NEXT: hashchk r0, -24(r1) +; BE-P9-NEXT: blr +; BE-P9-NEXT: .LBB2_2: +; BE-P9-NEXT: li r3, 0 +; BE-P9-NEXT: blr +; +; BE-P8-LABEL: shrinkwrap: +; BE-P8: # %bb.0: # %entry +; BE-P8-NEXT: cmpldi r3, 0 +; BE-P8-NEXT: beq cr0, .LBB2_2 +; BE-P8-NEXT: # %bb.1: # %if.end +; BE-P8-NEXT: mflr r0 +; BE-P8-NEXT: std r0, 16(r1) +; BE-P8-NEXT: hashst r0, -24(r1) +; BE-P8-NEXT: stdu r1, -144(r1) +; BE-P8-NEXT: std r30, 128(r1) # 8-byte Folded Spill +; BE-P8-NEXT: mr r30, r3 +; BE-P8-NEXT: lwz r3, 12(r3) +; BE-P8-NEXT: stw r3, 116(r1) +; BE-P8-NEXT: addi r3, r1, 116 +; BE-P8-NEXT: bl callee2 +; BE-P8-NEXT: nop +; BE-P8-NEXT: lwz r4, 16(r30) +; BE-P8-NEXT: ld r30, 128(r1) # 8-byte Folded Reload +; BE-P8-NEXT: add r3, r4, r3 +; BE-P8-NEXT: addi r1, r1, 144 +; BE-P8-NEXT: ld r0, 16(r1) +; BE-P8-NEXT: clrldi r3, r3, 32 +; BE-P8-NEXT: hashchk r0, -24(r1) +; BE-P8-NEXT: mtlr r0 +; BE-P8-NEXT: blr +; BE-P8-NEXT: .LBB2_2: +; BE-P8-NEXT: li r3, 0 +; BE-P8-NEXT: blr +; +; LE-P10-PRIV-LABEL: shrinkwrap: +; LE-P10-PRIV: # %bb.0: # %entry +; LE-P10-PRIV-NEXT: cmpldi r3, 0 +; LE-P10-PRIV-NEXT: beq cr0, .LBB2_2 +; LE-P10-PRIV-NEXT: # %bb.1: # %if.end +; LE-P10-PRIV-NEXT: mflr r0 +; LE-P10-PRIV-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: std r0, 16(r1) +; LE-P10-PRIV-NEXT: hashstp r0, -24(r1) +; LE-P10-PRIV-NEXT: stdu r1, -64(r1) +; LE-P10-PRIV-NEXT: mr r30, r3 +; LE-P10-PRIV-NEXT: lwz r3, 12(r3) +; LE-P10-PRIV-NEXT: stw r3, 36(r1) +; LE-P10-PRIV-NEXT: addi r3, r1, 36 +; LE-P10-PRIV-NEXT: bl callee2@notoc +; LE-P10-PRIV-NEXT: lwz r4, 16(r30) +; LE-P10-PRIV-NEXT: add r3, r4, r3 +; LE-P10-PRIV-NEXT: addi r1, r1, 64 +; LE-P10-PRIV-NEXT: ld r0, 16(r1) +; LE-P10-PRIV-NEXT: clrldi r3, r3, 32 +; LE-P10-PRIV-NEXT: mtlr r0 +; LE-P10-PRIV-NEXT: hashchkp r0, -24(r1) +; LE-P10-PRIV-NEXT: ld r30, -16(r1) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: blr +; LE-P10-PRIV-NEXT: .LBB2_2: +; LE-P10-PRIV-NEXT: li r3, 0 +; LE-P10-PRIV-NEXT: blr +; +; LE-P9-PRIV-LABEL: shrinkwrap: +; LE-P9-PRIV: # %bb.0: # %entry +; LE-P9-PRIV-NEXT: cmpldi r3, 0 +; LE-P9-PRIV-NEXT: beq cr0, .LBB2_2 +; LE-P9-PRIV-NEXT: # %bb.1: # %if.end +; LE-P9-PRIV-NEXT: mflr r0 +; LE-P9-PRIV-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: std r0, 16(r1) +; LE-P9-PRIV-NEXT: hashstp r0, -24(r1) +; LE-P9-PRIV-NEXT: stdu r1, -64(r1) +; LE-P9-PRIV-NEXT: mr r30, r3 +; LE-P9-PRIV-NEXT: lwz r3, 12(r3) +; LE-P9-PRIV-NEXT: stw r3, 36(r1) +; LE-P9-PRIV-NEXT: addi r3, r1, 36 +; LE-P9-PRIV-NEXT: bl callee2 +; LE-P9-PRIV-NEXT: nop +; LE-P9-PRIV-NEXT: lwz r4, 16(r30) +; LE-P9-PRIV-NEXT: add r3, r4, r3 +; LE-P9-PRIV-NEXT: addi r1, r1, 64 +; LE-P9-PRIV-NEXT: ld r0, 16(r1) +; LE-P9-PRIV-NEXT: clrldi r3, r3, 32 +; LE-P9-PRIV-NEXT: mtlr r0 +; LE-P9-PRIV-NEXT: hashchkp r0, -24(r1) +; LE-P9-PRIV-NEXT: ld r30, -16(r1) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: blr +; LE-P9-PRIV-NEXT: .LBB2_2: +; LE-P9-PRIV-NEXT: li r3, 0 +; LE-P9-PRIV-NEXT: blr +; +; LE-P8-PRIV-LABEL: shrinkwrap: +; LE-P8-PRIV: # %bb.0: # %entry +; LE-P8-PRIV-NEXT: cmpldi r3, 0 +; LE-P8-PRIV-NEXT: beq cr0, .LBB2_2 +; LE-P8-PRIV-NEXT: # %bb.1: # %if.end +; LE-P8-PRIV-NEXT: mflr r0 +; LE-P8-PRIV-NEXT: std r30, -16(r1) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: std r0, 16(r1) +; LE-P8-PRIV-NEXT: hashstp r0, -24(r1) +; LE-P8-PRIV-NEXT: stdu r1, -64(r1) +; LE-P8-PRIV-NEXT: mr r30, r3 +; LE-P8-PRIV-NEXT: lwz r3, 12(r3) +; LE-P8-PRIV-NEXT: stw r3, 36(r1) +; LE-P8-PRIV-NEXT: addi r3, r1, 36 +; LE-P8-PRIV-NEXT: bl callee2 +; LE-P8-PRIV-NEXT: nop +; LE-P8-PRIV-NEXT: lwz r4, 16(r30) +; LE-P8-PRIV-NEXT: add r3, r4, r3 +; LE-P8-PRIV-NEXT: addi r1, r1, 64 +; LE-P8-PRIV-NEXT: ld r0, 16(r1) +; LE-P8-PRIV-NEXT: clrldi r3, r3, 32 +; LE-P8-PRIV-NEXT: hashchkp r0, -24(r1) +; LE-P8-PRIV-NEXT: ld r30, -16(r1) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: mtlr r0 +; LE-P8-PRIV-NEXT: blr +; LE-P8-PRIV-NEXT: .LBB2_2: +; LE-P8-PRIV-NEXT: li r3, 0 +; LE-P8-PRIV-NEXT: blr +; +; BE-P10-PRIV-LABEL: shrinkwrap: +; BE-P10-PRIV: # %bb.0: # %entry +; BE-P10-PRIV-NEXT: cmpldi r3, 0 +; BE-P10-PRIV-NEXT: beq cr0, .LBB2_2 +; BE-P10-PRIV-NEXT: # %bb.1: # %if.end +; BE-P10-PRIV-NEXT: mflr r0 +; BE-P10-PRIV-NEXT: std r0, 16(r1) +; BE-P10-PRIV-NEXT: hashstp r0, -24(r1) +; BE-P10-PRIV-NEXT: stdu r1, -144(r1) +; BE-P10-PRIV-NEXT: std r30, 128(r1) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: mr r30, r3 +; BE-P10-PRIV-NEXT: lwz r3, 12(r3) +; BE-P10-PRIV-NEXT: stw r3, 116(r1) +; BE-P10-PRIV-NEXT: addi r3, r1, 116 +; BE-P10-PRIV-NEXT: bl callee2 +; BE-P10-PRIV-NEXT: nop +; BE-P10-PRIV-NEXT: lwz r4, 16(r30) +; BE-P10-PRIV-NEXT: ld r30, 128(r1) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: add r3, r4, r3 +; BE-P10-PRIV-NEXT: addi r1, r1, 144 +; BE-P10-PRIV-NEXT: ld r0, 16(r1) +; BE-P10-PRIV-NEXT: clrldi r3, r3, 32 +; BE-P10-PRIV-NEXT: mtlr r0 +; BE-P10-PRIV-NEXT: hashchkp r0, -24(r1) +; BE-P10-PRIV-NEXT: blr +; BE-P10-PRIV-NEXT: .LBB2_2: +; BE-P10-PRIV-NEXT: li r3, 0 +; BE-P10-PRIV-NEXT: blr +; +; BE-P9-PRIV-LABEL: shrinkwrap: +; BE-P9-PRIV: # %bb.0: # %entry +; BE-P9-PRIV-NEXT: cmpldi r3, 0 +; BE-P9-PRIV-NEXT: beq cr0, .LBB2_2 +; BE-P9-PRIV-NEXT: # %bb.1: # %if.end +; BE-P9-PRIV-NEXT: mflr r0 +; BE-P9-PRIV-NEXT: std r0, 16(r1) +; BE-P9-PRIV-NEXT: hashstp r0, -24(r1) +; BE-P9-PRIV-NEXT: stdu r1, -144(r1) +; BE-P9-PRIV-NEXT: std r30, 128(r1) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: mr r30, r3 +; BE-P9-PRIV-NEXT: lwz r3, 12(r3) +; BE-P9-PRIV-NEXT: stw r3, 116(r1) +; BE-P9-PRIV-NEXT: addi r3, r1, 116 +; BE-P9-PRIV-NEXT: bl callee2 +; BE-P9-PRIV-NEXT: nop +; BE-P9-PRIV-NEXT: lwz r4, 16(r30) +; BE-P9-PRIV-NEXT: ld r30, 128(r1) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: add r3, r4, r3 +; BE-P9-PRIV-NEXT: addi r1, r1, 144 +; BE-P9-PRIV-NEXT: ld r0, 16(r1) +; BE-P9-PRIV-NEXT: clrldi r3, r3, 32 +; BE-P9-PRIV-NEXT: mtlr r0 +; BE-P9-PRIV-NEXT: hashchkp r0, -24(r1) +; BE-P9-PRIV-NEXT: blr +; BE-P9-PRIV-NEXT: .LBB2_2: +; BE-P9-PRIV-NEXT: li r3, 0 +; BE-P9-PRIV-NEXT: blr +; +; BE-P8-PRIV-LABEL: shrinkwrap: +; BE-P8-PRIV: # %bb.0: # %entry +; BE-P8-PRIV-NEXT: cmpldi r3, 0 +; BE-P8-PRIV-NEXT: beq cr0, .LBB2_2 +; BE-P8-PRIV-NEXT: # %bb.1: # %if.end +; BE-P8-PRIV-NEXT: mflr r0 +; BE-P8-PRIV-NEXT: std r0, 16(r1) +; BE-P8-PRIV-NEXT: hashstp r0, -24(r1) +; BE-P8-PRIV-NEXT: stdu r1, -144(r1) +; BE-P8-PRIV-NEXT: std r30, 128(r1) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: mr r30, r3 +; BE-P8-PRIV-NEXT: lwz r3, 12(r3) +; BE-P8-PRIV-NEXT: stw r3, 116(r1) +; BE-P8-PRIV-NEXT: addi r3, r1, 116 +; BE-P8-PRIV-NEXT: bl callee2 +; BE-P8-PRIV-NEXT: nop +; BE-P8-PRIV-NEXT: lwz r4, 16(r30) +; BE-P8-PRIV-NEXT: ld r30, 128(r1) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: add r3, r4, r3 +; BE-P8-PRIV-NEXT: addi r1, r1, 144 +; BE-P8-PRIV-NEXT: ld r0, 16(r1) +; BE-P8-PRIV-NEXT: clrldi r3, r3, 32 +; BE-P8-PRIV-NEXT: hashchkp r0, -24(r1) +; BE-P8-PRIV-NEXT: mtlr r0 +; BE-P8-PRIV-NEXT: blr +; BE-P8-PRIV-NEXT: .LBB2_2: +; BE-P8-PRIV-NEXT: li r3, 0 +; BE-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 { +; LE-P10-LABEL: aligned: +; LE-P10: # %bb.0: # %entry +; LE-P10-NEXT: mflr r0 +; LE-P10-NEXT: lis r12, -1 +; LE-P10-NEXT: std r30, -16(r1) +; LE-P10-NEXT: mr r30, r1 +; LE-P10-NEXT: ori r12, r12, 0 +; LE-P10-NEXT: std r0, 16(r1) +; LE-P10-NEXT: hashst r0, -32(r1) +; LE-P10-NEXT: clrldi r0, r1, 49 +; LE-P10-NEXT: subc r0, r12, r0 +; LE-P10-NEXT: stdux r1, r1, r0 +; LE-P10-NEXT: std r29, -24(r30) # 8-byte Folded Spill +; LE-P10-NEXT: mr r29, r3 +; LE-P10-NEXT: lwz r3, 4(r3) +; LE-P10-NEXT: lis r4, 0 +; LE-P10-NEXT: addi r5, r1, 32764 +; LE-P10-NEXT: ori r4, r4, 65500 +; LE-P10-NEXT: stwx r3, r1, r4 +; LE-P10-NEXT: lwz r3, 12(r29) +; LE-P10-NEXT: lis r4, 0 +; LE-P10-NEXT: ori r4, r4, 32768 +; LE-P10-NEXT: stwx r3, r1, r4 +; LE-P10-NEXT: lwz r3, 20(r29) +; LE-P10-NEXT: lis r4, 0 +; LE-P10-NEXT: ori r4, r4, 65500 +; LE-P10-NEXT: stw r3, 32764(r1) +; LE-P10-NEXT: lis r3, 0 +; LE-P10-NEXT: add r4, r1, r4 +; LE-P10-NEXT: ori r3, r3, 32768 +; LE-P10-NEXT: add r3, r1, r3 +; LE-P10-NEXT: bl callee3@notoc +; LE-P10-NEXT: lwz r4, 16(r29) +; LE-P10-NEXT: ld r29, -24(r30) # 8-byte Folded Reload +; LE-P10-NEXT: add r3, r4, r3 +; LE-P10-NEXT: clrldi r3, r3, 32 +; LE-P10-NEXT: mr r1, r30 +; LE-P10-NEXT: ld r0, 16(r1) +; LE-P10-NEXT: ld r30, -16(r1) +; LE-P10-NEXT: mtlr r0 +; LE-P10-NEXT: hashchk r0, -32(r1) +; LE-P10-NEXT: blr +; +; LE-P9-LABEL: aligned: +; LE-P9: # %bb.0: # %entry +; LE-P9-NEXT: mflr r0 +; LE-P9-NEXT: lis r12, -1 +; LE-P9-NEXT: std r30, -16(r1) +; LE-P9-NEXT: mr r30, r1 +; LE-P9-NEXT: ori r12, r12, 0 +; LE-P9-NEXT: std r0, 16(r1) +; LE-P9-NEXT: hashst r0, -32(r1) +; LE-P9-NEXT: clrldi r0, r1, 49 +; LE-P9-NEXT: subc r0, r12, r0 +; LE-P9-NEXT: stdux r1, r1, r0 +; LE-P9-NEXT: std r29, -24(r30) # 8-byte Folded Spill +; LE-P9-NEXT: mr r29, r3 +; LE-P9-NEXT: lwz r3, 4(r3) +; LE-P9-NEXT: lis r4, 0 +; LE-P9-NEXT: addi r5, r1, 32764 +; LE-P9-NEXT: ori r4, r4, 65500 +; LE-P9-NEXT: stwx r3, r1, r4 +; LE-P9-NEXT: lwz r3, 12(r29) +; LE-P9-NEXT: lis r4, 0 +; LE-P9-NEXT: ori r4, r4, 32768 +; LE-P9-NEXT: stwx r3, r1, r4 +; LE-P9-NEXT: lwz r3, 20(r29) +; LE-P9-NEXT: lis r4, 0 +; LE-P9-NEXT: ori r4, r4, 65500 +; LE-P9-NEXT: stw r3, 32764(r1) +; LE-P9-NEXT: lis r3, 0 +; LE-P9-NEXT: add r4, r1, r4 +; LE-P9-NEXT: ori r3, r3, 32768 +; LE-P9-NEXT: add r3, r1, r3 +; LE-P9-NEXT: bl callee3 +; LE-P9-NEXT: nop +; LE-P9-NEXT: lwz r4, 16(r29) +; LE-P9-NEXT: ld r29, -24(r30) # 8-byte Folded Reload +; LE-P9-NEXT: add r3, r4, r3 +; LE-P9-NEXT: clrldi r3, r3, 32 +; LE-P9-NEXT: mr r1, r30 +; LE-P9-NEXT: ld r0, 16(r1) +; LE-P9-NEXT: ld r30, -16(r1) +; LE-P9-NEXT: mtlr r0 +; LE-P9-NEXT: hashchk r0, -32(r1) +; LE-P9-NEXT: blr +; +; LE-P8-LABEL: aligned: +; LE-P8: # %bb.0: # %entry +; LE-P8-NEXT: mflr r0 +; LE-P8-NEXT: lis r12, -1 +; LE-P8-NEXT: std r30, -16(r1) +; LE-P8-NEXT: mr r30, r1 +; LE-P8-NEXT: std r0, 16(r1) +; LE-P8-NEXT: hashst r0, -32(r1) +; LE-P8-NEXT: clrldi r0, r1, 49 +; LE-P8-NEXT: ori r12, r12, 0 +; LE-P8-NEXT: subc r0, r12, r0 +; LE-P8-NEXT: stdux r1, r1, r0 +; LE-P8-NEXT: std r29, -24(r30) # 8-byte Folded Spill +; LE-P8-NEXT: mr r29, r3 +; LE-P8-NEXT: lwz r3, 4(r3) +; LE-P8-NEXT: lis r6, 0 +; LE-P8-NEXT: ori r6, r6, 65500 +; LE-P8-NEXT: lwz r4, 12(r29) +; LE-P8-NEXT: lwz r5, 20(r29) +; LE-P8-NEXT: stwx r3, r1, r6 +; LE-P8-NEXT: lis r3, 0 +; LE-P8-NEXT: ori r3, r3, 32768 +; LE-P8-NEXT: stw r5, 32764(r1) +; LE-P8-NEXT: addi r5, r1, 32764 +; LE-P8-NEXT: stwx r4, r1, r3 +; LE-P8-NEXT: lis r3, 0 +; LE-P8-NEXT: lis r4, 0 +; LE-P8-NEXT: ori r3, r3, 32768 +; LE-P8-NEXT: ori r4, r4, 65500 +; LE-P8-NEXT: add r3, r1, r3 +; LE-P8-NEXT: add r4, r1, r4 +; LE-P8-NEXT: bl callee3 +; LE-P8-NEXT: nop +; LE-P8-NEXT: lwz r4, 16(r29) +; LE-P8-NEXT: ld r29, -24(r30) # 8-byte Folded Reload +; LE-P8-NEXT: add r3, r4, r3 +; LE-P8-NEXT: clrldi r3, r3, 32 +; LE-P8-NEXT: mr r1, r30 +; LE-P8-NEXT: ld r0, 16(r1) +; LE-P8-NEXT: ld r30, -16(r1) +; LE-P8-NEXT: hashchk r0, -32(r1) +; LE-P8-NEXT: mtlr r0 +; LE-P8-NEXT: blr +; +; LE-P10-O0-LABEL: aligned: +; LE-P10-O0: # %bb.0: # %entry +; LE-P10-O0-NEXT: mflr r0 +; LE-P10-O0-NEXT: std r30, -16(r1) +; LE-P10-O0-NEXT: std r0, 16(r1) +; LE-P10-O0-NEXT: hashst r0, -24(r1) +; LE-P10-O0-NEXT: mr r30, r1 +; LE-P10-O0-NEXT: clrldi r0, r1, 49 +; LE-P10-O0-NEXT: lis r12, -1 +; LE-P10-O0-NEXT: ori r12, r12, 0 +; LE-P10-O0-NEXT: subc r0, r12, r0 +; LE-P10-O0-NEXT: stdux r1, r1, r0 +; LE-P10-O0-NEXT: std r3, 32752(r1) # 8-byte Folded Spill +; LE-P10-O0-NEXT: lwz r4, 4(r3) +; LE-P10-O0-NEXT: lis r5, 0 +; LE-P10-O0-NEXT: ori r5, r5, 65508 +; LE-P10-O0-NEXT: stwx r4, r1, r5 +; LE-P10-O0-NEXT: lwz r4, 12(r3) +; LE-P10-O0-NEXT: lis r5, 0 +; LE-P10-O0-NEXT: ori r5, r5, 32768 +; LE-P10-O0-NEXT: stwx r4, r1, r5 +; LE-P10-O0-NEXT: lwz r3, 20(r3) +; LE-P10-O0-NEXT: stw r3, 32764(r1) +; LE-P10-O0-NEXT: lis r3, 0 +; LE-P10-O0-NEXT: ori r3, r3, 32768 +; LE-P10-O0-NEXT: add r3, r1, r3 +; LE-P10-O0-NEXT: lis r4, 0 +; LE-P10-O0-NEXT: ori r4, r4, 65508 +; LE-P10-O0-NEXT: add r4, r1, r4 +; LE-P10-O0-NEXT: addi r5, r1, 32764 +; LE-P10-O0-NEXT: bl callee3@notoc +; LE-P10-O0-NEXT: mr r4, r3 +; LE-P10-O0-NEXT: ld r3, 32752(r1) # 8-byte Folded Reload +; LE-P10-O0-NEXT: # kill: def $r4 killed $r4 killed $x4 +; LE-P10-O0-NEXT: lwz r3, 16(r3) +; LE-P10-O0-NEXT: add r3, r3, r4 +; LE-P10-O0-NEXT: clrldi r3, r3, 32 +; LE-P10-O0-NEXT: mr r1, r30 +; LE-P10-O0-NEXT: ld r0, 16(r1) +; LE-P10-O0-NEXT: ld r30, -16(r1) +; LE-P10-O0-NEXT: hashchk r0, -24(r1) +; LE-P10-O0-NEXT: mtlr r0 +; LE-P10-O0-NEXT: blr +; +; LE-P9-O0-LABEL: aligned: +; LE-P9-O0: # %bb.0: # %entry +; LE-P9-O0-NEXT: mflr r0 +; LE-P9-O0-NEXT: std r30, -16(r1) +; LE-P9-O0-NEXT: std r0, 16(r1) +; LE-P9-O0-NEXT: hashst r0, -24(r1) +; LE-P9-O0-NEXT: mr r30, r1 +; LE-P9-O0-NEXT: clrldi r0, r1, 49 +; LE-P9-O0-NEXT: lis r12, -1 +; LE-P9-O0-NEXT: ori r12, r12, 0 +; LE-P9-O0-NEXT: subc r0, r12, r0 +; LE-P9-O0-NEXT: stdux r1, r1, r0 +; LE-P9-O0-NEXT: std r3, 32752(r1) # 8-byte Folded Spill +; LE-P9-O0-NEXT: lwz r4, 4(r3) +; LE-P9-O0-NEXT: lis r5, 0 +; LE-P9-O0-NEXT: ori r5, r5, 65508 +; LE-P9-O0-NEXT: stwx r4, r1, r5 +; LE-P9-O0-NEXT: lwz r4, 12(r3) +; LE-P9-O0-NEXT: lis r5, 0 +; LE-P9-O0-NEXT: ori r5, r5, 32768 +; LE-P9-O0-NEXT: stwx r4, r1, r5 +; LE-P9-O0-NEXT: lwz r3, 20(r3) +; LE-P9-O0-NEXT: stw r3, 32764(r1) +; LE-P9-O0-NEXT: lis r3, 0 +; LE-P9-O0-NEXT: ori r3, r3, 32768 +; LE-P9-O0-NEXT: add r3, r1, r3 +; LE-P9-O0-NEXT: lis r4, 0 +; LE-P9-O0-NEXT: ori r4, r4, 65508 +; LE-P9-O0-NEXT: add r4, r1, r4 +; LE-P9-O0-NEXT: addi r5, r1, 32764 +; LE-P9-O0-NEXT: bl callee3 +; LE-P9-O0-NEXT: nop +; LE-P9-O0-NEXT: mr r4, r3 +; LE-P9-O0-NEXT: ld r3, 32752(r1) # 8-byte Folded Reload +; LE-P9-O0-NEXT: lwz r3, 16(r3) +; LE-P9-O0-NEXT: add r3, r3, r4 +; LE-P9-O0-NEXT: clrldi r3, r3, 32 +; LE-P9-O0-NEXT: mr r1, r30 +; LE-P9-O0-NEXT: ld r0, 16(r1) +; LE-P9-O0-NEXT: ld r30, -16(r1) +; LE-P9-O0-NEXT: hashchk r0, -24(r1) +; LE-P9-O0-NEXT: mtlr r0 +; LE-P9-O0-NEXT: blr +; +; LE-P8-O0-LABEL: aligned: +; LE-P8-O0: # %bb.0: # %entry +; LE-P8-O0-NEXT: mflr r0 +; LE-P8-O0-NEXT: std r30, -16(r1) +; LE-P8-O0-NEXT: std r0, 16(r1) +; LE-P8-O0-NEXT: hashst r0, -24(r1) +; LE-P8-O0-NEXT: mr r30, r1 +; LE-P8-O0-NEXT: clrldi r0, r1, 49 +; LE-P8-O0-NEXT: lis r12, -1 +; LE-P8-O0-NEXT: ori r12, r12, 0 +; LE-P8-O0-NEXT: subc r0, r12, r0 +; LE-P8-O0-NEXT: stdux r1, r1, r0 +; LE-P8-O0-NEXT: std r3, 32752(r1) # 8-byte Folded Spill +; LE-P8-O0-NEXT: lwz r4, 4(r3) +; LE-P8-O0-NEXT: lis r5, 0 +; LE-P8-O0-NEXT: ori r5, r5, 65508 +; LE-P8-O0-NEXT: stwx r4, r1, r5 +; LE-P8-O0-NEXT: lwz r4, 12(r3) +; LE-P8-O0-NEXT: lis r5, 0 +; LE-P8-O0-NEXT: ori r5, r5, 32768 +; LE-P8-O0-NEXT: stwx r4, r1, r5 +; LE-P8-O0-NEXT: lwz r3, 20(r3) +; LE-P8-O0-NEXT: stw r3, 32764(r1) +; LE-P8-O0-NEXT: lis r3, 0 +; LE-P8-O0-NEXT: ori r3, r3, 32768 +; LE-P8-O0-NEXT: add r3, r1, r3 +; LE-P8-O0-NEXT: lis r4, 0 +; LE-P8-O0-NEXT: ori r4, r4, 65508 +; LE-P8-O0-NEXT: add r4, r1, r4 +; LE-P8-O0-NEXT: addi r5, r1, 32764 +; LE-P8-O0-NEXT: bl callee3 +; LE-P8-O0-NEXT: nop +; LE-P8-O0-NEXT: mr r4, r3 +; LE-P8-O0-NEXT: ld r3, 32752(r1) # 8-byte Folded Reload +; LE-P8-O0-NEXT: lwz r3, 16(r3) +; LE-P8-O0-NEXT: add r3, r3, r4 +; LE-P8-O0-NEXT: clrldi r3, r3, 32 +; LE-P8-O0-NEXT: mr r1, r30 +; LE-P8-O0-NEXT: ld r0, 16(r1) +; LE-P8-O0-NEXT: ld r30, -16(r1) +; LE-P8-O0-NEXT: hashchk r0, -24(r1) +; LE-P8-O0-NEXT: mtlr r0 +; LE-P8-O0-NEXT: blr +; +; BE-P10-LABEL: aligned: +; BE-P10: # %bb.0: # %entry +; BE-P10-NEXT: mflr r0 +; BE-P10-NEXT: lis r12, -1 +; BE-P10-NEXT: std r30, -16(r1) +; BE-P10-NEXT: mr r30, r1 +; BE-P10-NEXT: ori r12, r12, 0 +; BE-P10-NEXT: std r0, 16(r1) +; BE-P10-NEXT: hashst r0, -32(r1) +; BE-P10-NEXT: clrldi r0, r1, 49 +; BE-P10-NEXT: subc r0, r12, r0 +; BE-P10-NEXT: stdux r1, r1, r0 +; BE-P10-NEXT: std r29, -24(r30) # 8-byte Folded Spill +; BE-P10-NEXT: mr r29, r3 +; BE-P10-NEXT: lwz r3, 4(r3) +; BE-P10-NEXT: lis r4, 0 +; BE-P10-NEXT: addi r5, r1, 32764 +; BE-P10-NEXT: ori r4, r4, 65500 +; BE-P10-NEXT: stwx r3, r1, r4 +; BE-P10-NEXT: lwz r3, 12(r29) +; BE-P10-NEXT: lis r4, 0 +; BE-P10-NEXT: ori r4, r4, 32768 +; BE-P10-NEXT: stwx r3, r1, r4 +; BE-P10-NEXT: lwz r3, 20(r29) +; BE-P10-NEXT: lis r4, 0 +; BE-P10-NEXT: ori r4, r4, 65500 +; BE-P10-NEXT: stw r3, 32764(r1) +; BE-P10-NEXT: lis r3, 0 +; BE-P10-NEXT: add r4, r1, r4 +; BE-P10-NEXT: ori r3, r3, 32768 +; BE-P10-NEXT: add r3, r1, r3 +; BE-P10-NEXT: bl callee3 +; BE-P10-NEXT: nop +; BE-P10-NEXT: lwz r4, 16(r29) +; BE-P10-NEXT: ld r29, -24(r30) # 8-byte Folded Reload +; BE-P10-NEXT: add r3, r4, r3 +; BE-P10-NEXT: clrldi r3, r3, 32 +; BE-P10-NEXT: mr r1, r30 +; BE-P10-NEXT: ld r0, 16(r1) +; BE-P10-NEXT: ld r30, -16(r1) +; BE-P10-NEXT: mtlr r0 +; BE-P10-NEXT: hashchk r0, -32(r1) +; BE-P10-NEXT: blr +; +; BE-P9-LABEL: aligned: +; BE-P9: # %bb.0: # %entry +; BE-P9-NEXT: mflr r0 +; BE-P9-NEXT: lis r12, -1 +; BE-P9-NEXT: std r30, -16(r1) +; BE-P9-NEXT: mr r30, r1 +; BE-P9-NEXT: ori r12, r12, 0 +; BE-P9-NEXT: std r0, 16(r1) +; BE-P9-NEXT: hashst r0, -32(r1) +; BE-P9-NEXT: clrldi r0, r1, 49 +; BE-P9-NEXT: subc r0, r12, r0 +; BE-P9-NEXT: stdux r1, r1, r0 +; BE-P9-NEXT: std r29, -24(r30) # 8-byte Folded Spill +; BE-P9-NEXT: mr r29, r3 +; BE-P9-NEXT: lwz r3, 4(r3) +; BE-P9-NEXT: lis r4, 0 +; BE-P9-NEXT: addi r5, r1, 32764 +; BE-P9-NEXT: ori r4, r4, 65500 +; BE-P9-NEXT: stwx r3, r1, r4 +; BE-P9-NEXT: lwz r3, 12(r29) +; BE-P9-NEXT: lis r4, 0 +; BE-P9-NEXT: ori r4, r4, 32768 +; BE-P9-NEXT: stwx r3, r1, r4 +; BE-P9-NEXT: lwz r3, 20(r29) +; BE-P9-NEXT: lis r4, 0 +; BE-P9-NEXT: ori r4, r4, 65500 +; BE-P9-NEXT: stw r3, 32764(r1) +; BE-P9-NEXT: lis r3, 0 +; BE-P9-NEXT: add r4, r1, r4 +; BE-P9-NEXT: ori r3, r3, 32768 +; BE-P9-NEXT: add r3, r1, r3 +; BE-P9-NEXT: bl callee3 +; BE-P9-NEXT: nop +; BE-P9-NEXT: lwz r4, 16(r29) +; BE-P9-NEXT: ld r29, -24(r30) # 8-byte Folded Reload +; BE-P9-NEXT: add r3, r4, r3 +; BE-P9-NEXT: clrldi r3, r3, 32 +; BE-P9-NEXT: mr r1, r30 +; BE-P9-NEXT: ld r0, 16(r1) +; BE-P9-NEXT: ld r30, -16(r1) +; BE-P9-NEXT: mtlr r0 +; BE-P9-NEXT: hashchk r0, -32(r1) +; BE-P9-NEXT: blr +; +; BE-P8-LABEL: aligned: +; BE-P8: # %bb.0: # %entry +; BE-P8-NEXT: mflr r0 +; BE-P8-NEXT: lis r12, -1 +; BE-P8-NEXT: std r30, -16(r1) +; BE-P8-NEXT: mr r30, r1 +; BE-P8-NEXT: std r0, 16(r1) +; BE-P8-NEXT: hashst r0, -32(r1) +; BE-P8-NEXT: clrldi r0, r1, 49 +; BE-P8-NEXT: ori r12, r12, 0 +; BE-P8-NEXT: subc r0, r12, r0 +; BE-P8-NEXT: stdux r1, r1, r0 +; BE-P8-NEXT: std r29, -24(r30) # 8-byte Folded Spill +; BE-P8-NEXT: mr r29, r3 +; BE-P8-NEXT: lwz r3, 4(r3) +; BE-P8-NEXT: lis r6, 0 +; BE-P8-NEXT: ori r6, r6, 65500 +; BE-P8-NEXT: lwz r4, 12(r29) +; BE-P8-NEXT: lwz r5, 20(r29) +; BE-P8-NEXT: stwx r3, r1, r6 +; BE-P8-NEXT: lis r3, 0 +; BE-P8-NEXT: ori r3, r3, 32768 +; BE-P8-NEXT: stw r5, 32764(r1) +; BE-P8-NEXT: addi r5, r1, 32764 +; BE-P8-NEXT: stwx r4, r1, r3 +; BE-P8-NEXT: lis r3, 0 +; BE-P8-NEXT: lis r4, 0 +; BE-P8-NEXT: ori r3, r3, 32768 +; BE-P8-NEXT: ori r4, r4, 65500 +; BE-P8-NEXT: add r3, r1, r3 +; BE-P8-NEXT: add r4, r1, r4 +; BE-P8-NEXT: bl callee3 +; BE-P8-NEXT: nop +; BE-P8-NEXT: lwz r4, 16(r29) +; BE-P8-NEXT: ld r29, -24(r30) # 8-byte Folded Reload +; BE-P8-NEXT: add r3, r4, r3 +; BE-P8-NEXT: clrldi r3, r3, 32 +; BE-P8-NEXT: mr r1, r30 +; BE-P8-NEXT: ld r0, 16(r1) +; BE-P8-NEXT: ld r30, -16(r1) +; BE-P8-NEXT: hashchk r0, -32(r1) +; BE-P8-NEXT: mtlr r0 +; BE-P8-NEXT: blr +; +; LE-P10-PRIV-LABEL: aligned: +; LE-P10-PRIV: # %bb.0: # %entry +; LE-P10-PRIV-NEXT: mflr r0 +; LE-P10-PRIV-NEXT: lis r12, -1 +; LE-P10-PRIV-NEXT: std r30, -16(r1) +; LE-P10-PRIV-NEXT: mr r30, r1 +; LE-P10-PRIV-NEXT: ori r12, r12, 0 +; LE-P10-PRIV-NEXT: std r0, 16(r1) +; LE-P10-PRIV-NEXT: hashstp r0, -32(r1) +; LE-P10-PRIV-NEXT: clrldi r0, r1, 49 +; LE-P10-PRIV-NEXT: subc r0, r12, r0 +; LE-P10-PRIV-NEXT: stdux r1, r1, r0 +; LE-P10-PRIV-NEXT: std r29, -24(r30) # 8-byte Folded Spill +; LE-P10-PRIV-NEXT: mr r29, r3 +; LE-P10-PRIV-NEXT: lwz r3, 4(r3) +; LE-P10-PRIV-NEXT: lis r4, 0 +; LE-P10-PRIV-NEXT: addi r5, r1, 32764 +; LE-P10-PRIV-NEXT: ori r4, r4, 65500 +; LE-P10-PRIV-NEXT: stwx r3, r1, r4 +; LE-P10-PRIV-NEXT: lwz r3, 12(r29) +; LE-P10-PRIV-NEXT: lis r4, 0 +; LE-P10-PRIV-NEXT: ori r4, r4, 32768 +; LE-P10-PRIV-NEXT: stwx r3, r1, r4 +; LE-P10-PRIV-NEXT: lwz r3, 20(r29) +; LE-P10-PRIV-NEXT: lis r4, 0 +; LE-P10-PRIV-NEXT: ori r4, r4, 65500 +; LE-P10-PRIV-NEXT: stw r3, 32764(r1) +; LE-P10-PRIV-NEXT: lis r3, 0 +; LE-P10-PRIV-NEXT: add r4, r1, r4 +; LE-P10-PRIV-NEXT: ori r3, r3, 32768 +; LE-P10-PRIV-NEXT: add r3, r1, r3 +; LE-P10-PRIV-NEXT: bl callee3@notoc +; LE-P10-PRIV-NEXT: lwz r4, 16(r29) +; LE-P10-PRIV-NEXT: ld r29, -24(r30) # 8-byte Folded Reload +; LE-P10-PRIV-NEXT: add r3, r4, r3 +; LE-P10-PRIV-NEXT: clrldi r3, r3, 32 +; LE-P10-PRIV-NEXT: mr r1, r30 +; LE-P10-PRIV-NEXT: ld r0, 16(r1) +; LE-P10-PRIV-NEXT: ld r30, -16(r1) +; LE-P10-PRIV-NEXT: mtlr r0 +; LE-P10-PRIV-NEXT: hashchkp r0, -32(r1) +; LE-P10-PRIV-NEXT: blr +; +; LE-P9-PRIV-LABEL: aligned: +; LE-P9-PRIV: # %bb.0: # %entry +; LE-P9-PRIV-NEXT: mflr r0 +; LE-P9-PRIV-NEXT: lis r12, -1 +; LE-P9-PRIV-NEXT: std r30, -16(r1) +; LE-P9-PRIV-NEXT: mr r30, r1 +; LE-P9-PRIV-NEXT: ori r12, r12, 0 +; LE-P9-PRIV-NEXT: std r0, 16(r1) +; LE-P9-PRIV-NEXT: hashstp r0, -32(r1) +; LE-P9-PRIV-NEXT: clrldi r0, r1, 49 +; LE-P9-PRIV-NEXT: subc r0, r12, r0 +; LE-P9-PRIV-NEXT: stdux r1, r1, r0 +; LE-P9-PRIV-NEXT: std r29, -24(r30) # 8-byte Folded Spill +; LE-P9-PRIV-NEXT: mr r29, r3 +; LE-P9-PRIV-NEXT: lwz r3, 4(r3) +; LE-P9-PRIV-NEXT: lis r4, 0 +; LE-P9-PRIV-NEXT: addi r5, r1, 32764 +; LE-P9-PRIV-NEXT: ori r4, r4, 65500 +; LE-P9-PRIV-NEXT: stwx r3, r1, r4 +; LE-P9-PRIV-NEXT: lwz r3, 12(r29) +; LE-P9-PRIV-NEXT: lis r4, 0 +; LE-P9-PRIV-NEXT: ori r4, r4, 32768 +; LE-P9-PRIV-NEXT: stwx r3, r1, r4 +; LE-P9-PRIV-NEXT: lwz r3, 20(r29) +; LE-P9-PRIV-NEXT: lis r4, 0 +; LE-P9-PRIV-NEXT: ori r4, r4, 65500 +; LE-P9-PRIV-NEXT: stw r3, 32764(r1) +; LE-P9-PRIV-NEXT: lis r3, 0 +; LE-P9-PRIV-NEXT: add r4, r1, r4 +; LE-P9-PRIV-NEXT: ori r3, r3, 32768 +; LE-P9-PRIV-NEXT: add r3, r1, r3 +; LE-P9-PRIV-NEXT: bl callee3 +; LE-P9-PRIV-NEXT: nop +; LE-P9-PRIV-NEXT: lwz r4, 16(r29) +; LE-P9-PRIV-NEXT: ld r29, -24(r30) # 8-byte Folded Reload +; LE-P9-PRIV-NEXT: add r3, r4, r3 +; LE-P9-PRIV-NEXT: clrldi r3, r3, 32 +; LE-P9-PRIV-NEXT: mr r1, r30 +; LE-P9-PRIV-NEXT: ld r0, 16(r1) +; LE-P9-PRIV-NEXT: ld r30, -16(r1) +; LE-P9-PRIV-NEXT: mtlr r0 +; LE-P9-PRIV-NEXT: hashchkp r0, -32(r1) +; LE-P9-PRIV-NEXT: blr +; +; LE-P8-PRIV-LABEL: aligned: +; LE-P8-PRIV: # %bb.0: # %entry +; LE-P8-PRIV-NEXT: mflr r0 +; LE-P8-PRIV-NEXT: lis r12, -1 +; LE-P8-PRIV-NEXT: std r30, -16(r1) +; LE-P8-PRIV-NEXT: mr r30, r1 +; LE-P8-PRIV-NEXT: std r0, 16(r1) +; LE-P8-PRIV-NEXT: hashstp r0, -32(r1) +; LE-P8-PRIV-NEXT: clrldi r0, r1, 49 +; LE-P8-PRIV-NEXT: ori r12, r12, 0 +; LE-P8-PRIV-NEXT: subc r0, r12, r0 +; LE-P8-PRIV-NEXT: stdux r1, r1, r0 +; LE-P8-PRIV-NEXT: std r29, -24(r30) # 8-byte Folded Spill +; LE-P8-PRIV-NEXT: mr r29, r3 +; LE-P8-PRIV-NEXT: lwz r3, 4(r3) +; LE-P8-PRIV-NEXT: lis r6, 0 +; LE-P8-PRIV-NEXT: ori r6, r6, 65500 +; LE-P8-PRIV-NEXT: lwz r4, 12(r29) +; LE-P8-PRIV-NEXT: lwz r5, 20(r29) +; LE-P8-PRIV-NEXT: stwx r3, r1, r6 +; LE-P8-PRIV-NEXT: lis r3, 0 +; LE-P8-PRIV-NEXT: ori r3, r3, 32768 +; LE-P8-PRIV-NEXT: stw r5, 32764(r1) +; LE-P8-PRIV-NEXT: addi r5, r1, 32764 +; LE-P8-PRIV-NEXT: stwx r4, r1, r3 +; LE-P8-PRIV-NEXT: lis r3, 0 +; LE-P8-PRIV-NEXT: lis r4, 0 +; LE-P8-PRIV-NEXT: ori r3, r3, 32768 +; LE-P8-PRIV-NEXT: ori r4, r4, 65500 +; LE-P8-PRIV-NEXT: add r3, r1, r3 +; LE-P8-PRIV-NEXT: add r4, r1, r4 +; LE-P8-PRIV-NEXT: bl callee3 +; LE-P8-PRIV-NEXT: nop +; LE-P8-PRIV-NEXT: lwz r4, 16(r29) +; LE-P8-PRIV-NEXT: ld r29, -24(r30) # 8-byte Folded Reload +; LE-P8-PRIV-NEXT: add r3, r4, r3 +; LE-P8-PRIV-NEXT: clrldi r3, r3, 32 +; LE-P8-PRIV-NEXT: mr r1, r30 +; LE-P8-PRIV-NEXT: ld r0, 16(r1) +; LE-P8-PRIV-NEXT: ld r30, -16(r1) +; LE-P8-PRIV-NEXT: hashchkp r0, -32(r1) +; LE-P8-PRIV-NEXT: mtlr r0 +; LE-P8-PRIV-NEXT: blr +; +; BE-P10-PRIV-LABEL: aligned: +; BE-P10-PRIV: # %bb.0: # %entry +; BE-P10-PRIV-NEXT: mflr r0 +; BE-P10-PRIV-NEXT: lis r12, -1 +; BE-P10-PRIV-NEXT: std r30, -16(r1) +; BE-P10-PRIV-NEXT: mr r30, r1 +; BE-P10-PRIV-NEXT: ori r12, r12, 0 +; BE-P10-PRIV-NEXT: std r0, 16(r1) +; BE-P10-PRIV-NEXT: hashstp r0, -32(r1) +; BE-P10-PRIV-NEXT: clrldi r0, r1, 49 +; BE-P10-PRIV-NEXT: subc r0, r12, r0 +; BE-P10-PRIV-NEXT: stdux r1, r1, r0 +; BE-P10-PRIV-NEXT: std r29, -24(r30) # 8-byte Folded Spill +; BE-P10-PRIV-NEXT: mr r29, r3 +; BE-P10-PRIV-NEXT: lwz r3, 4(r3) +; BE-P10-PRIV-NEXT: lis r4, 0 +; BE-P10-PRIV-NEXT: addi r5, r1, 32764 +; BE-P10-PRIV-NEXT: ori r4, r4, 65500 +; BE-P10-PRIV-NEXT: stwx r3, r1, r4 +; BE-P10-PRIV-NEXT: lwz r3, 12(r29) +; BE-P10-PRIV-NEXT: lis r4, 0 +; BE-P10-PRIV-NEXT: ori r4, r4, 32768 +; BE-P10-PRIV-NEXT: stwx r3, r1, r4 +; BE-P10-PRIV-NEXT: lwz r3, 20(r29) +; BE-P10-PRIV-NEXT: lis r4, 0 +; BE-P10-PRIV-NEXT: ori r4, r4, 65500 +; BE-P10-PRIV-NEXT: stw r3, 32764(r1) +; BE-P10-PRIV-NEXT: lis r3, 0 +; BE-P10-PRIV-NEXT: add r4, r1, r4 +; BE-P10-PRIV-NEXT: ori r3, r3, 32768 +; BE-P10-PRIV-NEXT: add r3, r1, r3 +; BE-P10-PRIV-NEXT: bl callee3 +; BE-P10-PRIV-NEXT: nop +; BE-P10-PRIV-NEXT: lwz r4, 16(r29) +; BE-P10-PRIV-NEXT: ld r29, -24(r30) # 8-byte Folded Reload +; BE-P10-PRIV-NEXT: add r3, r4, r3 +; BE-P10-PRIV-NEXT: clrldi r3, r3, 32 +; BE-P10-PRIV-NEXT: mr r1, r30 +; BE-P10-PRIV-NEXT: ld r0, 16(r1) +; BE-P10-PRIV-NEXT: ld r30, -16(r1) +; BE-P10-PRIV-NEXT: mtlr r0 +; BE-P10-PRIV-NEXT: hashchkp r0, -32(r1) +; BE-P10-PRIV-NEXT: blr +; +; BE-P9-PRIV-LABEL: aligned: +; BE-P9-PRIV: # %bb.0: # %entry +; BE-P9-PRIV-NEXT: mflr r0 +; BE-P9-PRIV-NEXT: lis r12, -1 +; BE-P9-PRIV-NEXT: std r30, -16(r1) +; BE-P9-PRIV-NEXT: mr r30, r1 +; BE-P9-PRIV-NEXT: ori r12, r12, 0 +; BE-P9-PRIV-NEXT: std r0, 16(r1) +; BE-P9-PRIV-NEXT: hashstp r0, -32(r1) +; BE-P9-PRIV-NEXT: clrldi r0, r1, 49 +; BE-P9-PRIV-NEXT: subc r0, r12, r0 +; BE-P9-PRIV-NEXT: stdux r1, r1, r0 +; BE-P9-PRIV-NEXT: std r29, -24(r30) # 8-byte Folded Spill +; BE-P9-PRIV-NEXT: mr r29, r3 +; BE-P9-PRIV-NEXT: lwz r3, 4(r3) +; BE-P9-PRIV-NEXT: lis r4, 0 +; BE-P9-PRIV-NEXT: addi r5, r1, 32764 +; BE-P9-PRIV-NEXT: ori r4, r4, 65500 +; BE-P9-PRIV-NEXT: stwx r3, r1, r4 +; BE-P9-PRIV-NEXT: lwz r3, 12(r29) +; BE-P9-PRIV-NEXT: lis r4, 0 +; BE-P9-PRIV-NEXT: ori r4, r4, 32768 +; BE-P9-PRIV-NEXT: stwx r3, r1, r4 +; BE-P9-PRIV-NEXT: lwz r3, 20(r29) +; BE-P9-PRIV-NEXT: lis r4, 0 +; BE-P9-PRIV-NEXT: ori r4, r4, 65500 +; BE-P9-PRIV-NEXT: stw r3, 32764(r1) +; BE-P9-PRIV-NEXT: lis r3, 0 +; BE-P9-PRIV-NEXT: add r4, r1, r4 +; BE-P9-PRIV-NEXT: ori r3, r3, 32768 +; BE-P9-PRIV-NEXT: add r3, r1, r3 +; BE-P9-PRIV-NEXT: bl callee3 +; BE-P9-PRIV-NEXT: nop +; BE-P9-PRIV-NEXT: lwz r4, 16(r29) +; BE-P9-PRIV-NEXT: ld r29, -24(r30) # 8-byte Folded Reload +; BE-P9-PRIV-NEXT: add r3, r4, r3 +; BE-P9-PRIV-NEXT: clrldi r3, r3, 32 +; BE-P9-PRIV-NEXT: mr r1, r30 +; BE-P9-PRIV-NEXT: ld r0, 16(r1) +; BE-P9-PRIV-NEXT: ld r30, -16(r1) +; BE-P9-PRIV-NEXT: mtlr r0 +; BE-P9-PRIV-NEXT: hashchkp r0, -32(r1) +; BE-P9-PRIV-NEXT: blr +; +; BE-P8-PRIV-LABEL: aligned: +; BE-P8-PRIV: # %bb.0: # %entry +; BE-P8-PRIV-NEXT: mflr r0 +; BE-P8-PRIV-NEXT: lis r12, -1 +; BE-P8-PRIV-NEXT: std r30, -16(r1) +; BE-P8-PRIV-NEXT: mr r30, r1 +; BE-P8-PRIV-NEXT: std r0, 16(r1) +; BE-P8-PRIV-NEXT: hashstp r0, -32(r1) +; BE-P8-PRIV-NEXT: clrldi r0, r1, 49 +; BE-P8-PRIV-NEXT: ori r12, r12, 0 +; BE-P8-PRIV-NEXT: subc r0, r12, r0 +; BE-P8-PRIV-NEXT: stdux r1, r1, r0 +; BE-P8-PRIV-NEXT: std r29, -24(r30) # 8-byte Folded Spill +; BE-P8-PRIV-NEXT: mr r29, r3 +; BE-P8-PRIV-NEXT: lwz r3, 4(r3) +; BE-P8-PRIV-NEXT: lis r6, 0 +; BE-P8-PRIV-NEXT: ori r6, r6, 65500 +; BE-P8-PRIV-NEXT: lwz r4, 12(r29) +; BE-P8-PRIV-NEXT: lwz r5, 20(r29) +; BE-P8-PRIV-NEXT: stwx r3, r1, r6 +; BE-P8-PRIV-NEXT: lis r3, 0 +; BE-P8-PRIV-NEXT: ori r3, r3, 32768 +; BE-P8-PRIV-NEXT: stw r5, 32764(r1) +; BE-P8-PRIV-NEXT: addi r5, r1, 32764 +; BE-P8-PRIV-NEXT: stwx r4, r1, r3 +; BE-P8-PRIV-NEXT: lis r3, 0 +; BE-P8-PRIV-NEXT: lis r4, 0 +; BE-P8-PRIV-NEXT: ori r3, r3, 32768 +; BE-P8-PRIV-NEXT: ori r4, r4, 65500 +; BE-P8-PRIV-NEXT: add r3, r1, r3 +; BE-P8-PRIV-NEXT: add r4, r1, r4 +; BE-P8-PRIV-NEXT: bl callee3 +; BE-P8-PRIV-NEXT: nop +; BE-P8-PRIV-NEXT: lwz r4, 16(r29) +; BE-P8-PRIV-NEXT: ld r29, -24(r30) # 8-byte Folded Reload +; BE-P8-PRIV-NEXT: add r3, r4, r3 +; BE-P8-PRIV-NEXT: clrldi r3, r3, 32 +; BE-P8-PRIV-NEXT: mr r1, r30 +; BE-P8-PRIV-NEXT: ld r0, 16(r1) +; BE-P8-PRIV-NEXT: ld r30, -16(r1) +; BE-P8-PRIV-NEXT: hashchkp r0, -32(r1) +; BE-P8-PRIV-NEXT: mtlr r0 +; BE-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 }