return false;
}
-
-std::string LowercaseString (const std::string &S) {
- std::string result (S);
- for (unsigned i = 0; i < S.length(); ++i)
- if (isupper (result[i]))
- result[i] = tolower(result[i]);
- return result;
-}
-
void V8Printer::printOperand(const MachineInstr *MI, int opNum) {
const MachineOperand &MO = MI->getOperand (opNum);
const MRegisterInfo &RI = *TM.getRegisterInfo();
if (MI->getOpcode() == V8::SETHIi && !MO.isRegister() && !MO.isImmediate()) {
O << "%hi(";
CloseParen = true;
- } else if (MI->getOpcode() ==V8::ORri &&!MO.isRegister() &&!MO.isImmediate()) {
+ } else if (MI->getOpcode() ==V8::ORri &&!MO.isRegister() &&!MO.isImmediate())
+ {
O << "%lo(";
CloseParen = true;
}
case MachineOperand::MO_ExternalSymbol:
O << MO.getSymbolName();
break;
+ case MachineOperand::MO_ConstantPoolIndex:
+ O << ".CPI" << CurrentFnName << "_" << MO.getConstantPoolIndex();
+ break;
default:
- O << "<unknown operand type>"; break;
+ O << "<unknown operand type>"; abort (); break;
}
if (CloseParen) O << ")";
}
static bool isLoadInstruction (const MachineInstr *MI) {
switch (MI->getOpcode ()) {
- case V8::LDSBmr:
- case V8::LDSHmr:
- case V8::LDUBmr:
- case V8::LDUHmr:
- case V8::LDmr:
- case V8::LDDmr:
+ case V8::LDSB:
+ case V8::LDSH:
+ case V8::LDUB:
+ case V8::LDUH:
+ case V8::LD:
+ case V8::LDD:
+ case V8::LDFrr:
+ case V8::LDFri:
+ case V8::LDDFrr:
+ case V8::LDDFri:
return true;
default:
return false;
static bool isStoreInstruction (const MachineInstr *MI) {
switch (MI->getOpcode ()) {
- case V8::STBrm:
- case V8::STHrm:
- case V8::STrm:
- case V8::STDrm:
+ case V8::STB:
+ case V8::STH:
+ case V8::ST:
+ case V8::STD:
+ case V8::STFrr:
+ case V8::STFri:
+ case V8::STDFrr:
+ case V8::STDFri:
+ return true;
+ default:
+ return false;
+ }
+}
+
+static bool isPseudoInstruction (const MachineInstr *MI) {
+ switch (MI->getOpcode ()) {
+ case V8::PHI:
+ case V8::ADJCALLSTACKUP:
+ case V8::ADJCALLSTACKDOWN:
+ case V8::IMPLICIT_USE:
+ case V8::IMPLICIT_DEF:
return true;
default:
return false;
unsigned Opcode = MI->getOpcode();
const TargetInstrInfo &TII = *TM.getInstrInfo();
const TargetInstrDescriptor &Desc = TII.get(Opcode);
+
+ // If it's a pseudo-instruction, comment it out.
+ if (isPseudoInstruction (MI))
+ O << "! ";
+
O << Desc.Name << " ";
// Printing memory instructions is a special case.
if (CurSection != NewSection) {
CurSection = NewSection;
if (!CurSection.empty())
- OS << "\t" << NewSection << "\n";
+ OS << "\t.section " << NewSection << "\n";
}
}