Deleted Added
sdiff udiff text old ( 280031 ) new ( 283526 )
full compact
1//===-- MipsSEInstrInfo.cpp - Mips32/64 Instruction Information -----------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//

--- 350 unchanged lines hidden (view full) ---

359void MipsSEInstrInfo::adjustStackPtr(unsigned SP, int64_t Amount,
360 MachineBasicBlock &MBB,
361 MachineBasicBlock::iterator I) const {
362 const MipsSubtarget &STI = Subtarget;
363 DebugLoc DL = I != MBB.end() ? I->getDebugLoc() : DebugLoc();
364 unsigned ADDu = STI.isABI_N64() ? Mips::DADDu : Mips::ADDu;
365 unsigned ADDiu = STI.isABI_N64() ? Mips::DADDiu : Mips::ADDiu;
366
367 if (Amount == 0)
368 return;
369
370 if (isInt<16>(Amount))// addi sp, sp, amount
371 BuildMI(MBB, I, DL, get(ADDiu), SP).addReg(SP).addImm(Amount);
372 else { // Expand immediate that doesn't fit in 16-bit.
373 unsigned Reg = loadImmediate(Amount, MBB, I, DL, nullptr);
374 BuildMI(MBB, I, DL, get(ADDu), SP).addReg(SP).addReg(Reg, RegState::Kill);
375 }
376}
377

--- 261 unchanged lines hidden ---