forked from OSchip/llvm-project
parent
a336e70573
commit
05dec8b122
|
@ -92,7 +92,7 @@ namespace {
|
|||
case ARMBuildAttrs::Advanced_SIMD_arch:
|
||||
case ARMBuildAttrs::VFP_arch:
|
||||
Streamer.EmitRawText(StringRef("\t.fpu ") + LowercaseString(String));
|
||||
break;
|
||||
break;
|
||||
default: assert(0 && "Unsupported Text attribute in ASM Mode"); break;
|
||||
}
|
||||
}
|
||||
|
@ -240,7 +240,7 @@ void ARMAsmPrinter::EmitDwarfRegOp(const MachineLocation &MLoc) const {
|
|||
// S registers are described as bit-pieces of a register
|
||||
// S[2x] = DW_OP_regx(256 + (x>>1)) DW_OP_bit_piece(32, 0)
|
||||
// S[2x+1] = DW_OP_regx(256 + (x>>1)) DW_OP_bit_piece(32, 32)
|
||||
|
||||
|
||||
unsigned SReg = Reg - ARM::S0;
|
||||
bool odd = SReg & 0x1;
|
||||
unsigned Rx = 256 + (SReg >> 1);
|
||||
|
@ -265,12 +265,13 @@ void ARMAsmPrinter::EmitDwarfRegOp(const MachineLocation &MLoc) const {
|
|||
} else if (Reg >= ARM::Q0 && Reg <= ARM::Q15) {
|
||||
assert(ARM::Q0 + 15 == ARM::Q15 && "Unexpected ARM Q register numbering");
|
||||
// Q registers Q0-Q15 are described by composing two D registers together.
|
||||
// Qx = DW_OP_regx(256+2x) DW_OP_piece(8) DW_OP_regx(256+2x+1) DW_OP_piece(8)
|
||||
// Qx = DW_OP_regx(256+2x) DW_OP_piece(8) DW_OP_regx(256+2x+1)
|
||||
// DW_OP_piece(8)
|
||||
|
||||
unsigned QReg = Reg - ARM::Q0;
|
||||
unsigned D1 = 256 + 2 * QReg;
|
||||
unsigned D2 = D1 + 1;
|
||||
|
||||
|
||||
OutStreamer.AddComment("DW_OP_regx for Q register: D1");
|
||||
EmitInt8(dwarf::DW_OP_regx);
|
||||
EmitULEB128(D1);
|
||||
|
@ -451,16 +452,16 @@ bool ARMAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNum,
|
|||
// This takes advantage of the 2 operand-ness of ldm/stm and that we've
|
||||
// already got the operands in registers that are operands to the
|
||||
// inline asm statement.
|
||||
|
||||
|
||||
O << "{" << ARMInstPrinter::getRegisterName(RegBegin);
|
||||
|
||||
|
||||
// FIXME: The register allocator not only may not have given us the
|
||||
// registers in sequence, but may not be in ascending registers. This
|
||||
// will require changes in the register allocator that'll need to be
|
||||
// propagated down here if the operands change.
|
||||
unsigned RegOps = OpNum + 1;
|
||||
while (MI->getOperand(RegOps).isReg()) {
|
||||
O << ", "
|
||||
O << ", "
|
||||
<< ARMInstPrinter::getRegisterName(MI->getOperand(RegOps).getReg());
|
||||
RegOps++;
|
||||
}
|
||||
|
@ -513,7 +514,7 @@ bool ARMAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI,
|
|||
// Does this asm operand have a single letter operand modifier?
|
||||
if (ExtraCode && ExtraCode[0]) {
|
||||
if (ExtraCode[1] != 0) return true; // Unknown modifier.
|
||||
|
||||
|
||||
switch (ExtraCode[0]) {
|
||||
case 'A': // A memory operand for a VLD1/VST1 instruction.
|
||||
default: return true; // Unknown modifier.
|
||||
|
@ -524,7 +525,7 @@ bool ARMAsmPrinter::PrintAsmMemoryOperand(const MachineInstr *MI,
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const MachineOperand &MO = MI->getOperand(OpNum);
|
||||
assert(MO.isReg() && "unexpected inline asm memory operand");
|
||||
O << "[" << ARMInstPrinter::getRegisterName(MO.getReg()) << "]";
|
||||
|
|
|
@ -161,11 +161,11 @@ namespace {
|
|||
// are already handled elsewhere. They are placeholders to allow this
|
||||
// encoder to continue to function until the MC encoder is sufficiently
|
||||
// far along that this one can be eliminated entirely.
|
||||
unsigned NEONThumb2DataIPostEncoder(const MachineInstr &MI, unsigned Val)
|
||||
unsigned NEONThumb2DataIPostEncoder(const MachineInstr &MI, unsigned Val)
|
||||
const { return 0; }
|
||||
unsigned NEONThumb2LoadStorePostEncoder(const MachineInstr &MI,unsigned Val)
|
||||
unsigned NEONThumb2LoadStorePostEncoder(const MachineInstr &MI,unsigned Val)
|
||||
const { return 0; }
|
||||
unsigned NEONThumb2DupPostEncoder(const MachineInstr &MI,unsigned Val)
|
||||
unsigned NEONThumb2DupPostEncoder(const MachineInstr &MI,unsigned Val)
|
||||
const { return 0; }
|
||||
unsigned VFPThumb2PostEncoder(const MachineInstr&MI, unsigned Val)
|
||||
const { return 0; }
|
||||
|
@ -985,7 +985,7 @@ unsigned ARMCodeEmitter::getMachineSoImmOpValue(unsigned SoImm) {
|
|||
|
||||
unsigned ARMCodeEmitter::getAddrModeSBit(const MachineInstr &MI,
|
||||
const MCInstrDesc &MCID) const {
|
||||
for (unsigned i = MI.getNumOperands(), e = MCID.getNumOperands(); i >= e; --i){
|
||||
for (unsigned i = MI.getNumOperands(), e = MCID.getNumOperands(); i >= e;--i){
|
||||
const MachineOperand &MO = MI.getOperand(i-1);
|
||||
if (MO.isReg() && MO.isDef() && MO.getReg() == ARM::CPSR)
|
||||
return 1 << ARMII::S_BitShift;
|
||||
|
|
|
@ -869,7 +869,7 @@ bool ARMExpandPseudo::ExpandMI(MachineBasicBlock &MBB,
|
|||
case ARM::RRX: {
|
||||
// This encodes as "MOVs Rd, Rm, rrx
|
||||
MachineInstrBuilder MIB =
|
||||
AddDefaultPred(BuildMI(MBB, MBBI, MI.getDebugLoc(), TII->get(ARM::MOVsi),
|
||||
AddDefaultPred(BuildMI(MBB, MBBI, MI.getDebugLoc(),TII->get(ARM::MOVsi),
|
||||
MI.getOperand(0).getReg())
|
||||
.addOperand(MI.getOperand(1))
|
||||
.addImm(ARM_AM::getSORegOpc(ARM_AM::rrx, 0)))
|
||||
|
|
|
@ -684,7 +684,8 @@ bool ARMFrameLowering::spillCalleeSavedRegisters(MachineBasicBlock &MBB,
|
|||
ARMFunctionInfo *AFI = MF.getInfo<ARMFunctionInfo>();
|
||||
|
||||
unsigned PushOpc = AFI->isThumbFunction() ? ARM::t2STMDB_UPD : ARM::STMDB_UPD;
|
||||
unsigned PushOneOpc = AFI->isThumbFunction() ? ARM::t2STR_PRE : ARM::STR_PRE_IMM;
|
||||
unsigned PushOneOpc = AFI->isThumbFunction() ?
|
||||
ARM::t2STR_PRE : ARM::STR_PRE_IMM;
|
||||
unsigned FltOpc = ARM::VSTMDDB_UPD;
|
||||
emitPushInst(MBB, MI, CSI, PushOpc, PushOneOpc, false, &isARMArea1Register,
|
||||
MachineInstr::FrameSetup);
|
||||
|
@ -708,7 +709,7 @@ bool ARMFrameLowering::restoreCalleeSavedRegisters(MachineBasicBlock &MBB,
|
|||
bool isVarArg = AFI->getVarArgsRegSaveSize() > 0;
|
||||
|
||||
unsigned PopOpc = AFI->isThumbFunction() ? ARM::t2LDMIA_UPD : ARM::LDMIA_UPD;
|
||||
unsigned LdrOpc = AFI->isThumbFunction() ? ARM::t2LDR_POST : ARM::LDR_POST_IMM;
|
||||
unsigned LdrOpc = AFI->isThumbFunction() ? ARM::t2LDR_POST :ARM::LDR_POST_IMM;
|
||||
unsigned FltOpc = ARM::VLDMDIA_UPD;
|
||||
emitPopInst(MBB, MI, CSI, FltOpc, 0, isVarArg, true, &isARMArea3Register);
|
||||
emitPopInst(MBB, MI, CSI, PopOpc, LdrOpc, isVarArg, false,
|
||||
|
|
Loading…
Reference in New Issue