unsigned AsmVariant, const char *ExtraCode);
+ void printS5ImmOperand(const MachineInstr *MI, unsigned OpNo) {
+ char value = MI->getOperand(OpNo).getImmedValue();
+ value = (value << (32-5)) >> (32-5);
+ O << (int)value;
+ }
void printU5ImmOperand(const MachineInstr *MI, unsigned OpNo) {
unsigned char value = MI->getOperand(OpNo).getImmedValue();
assert(value <= 31 && "Invalid u5imm argument!");
printOperand(MI, OpNo+1);
O << ')';
}
+ void printMemRegImmShifted(const MachineInstr *MI, unsigned OpNo) {
+ if (MI->getOperand(OpNo).isImmediate())
+ printS16X4ImmOperand(MI, OpNo);
+ else
+ printSymbolLo(MI, OpNo);
+ O << '(';
+ if (MI->getOperand(OpNo+1).isRegister() &&
+ MI->getOperand(OpNo+1).getReg() == PPC::R0)
+ O << "0";
+ else
+ printOperand(MI, OpNo+1);
+ O << ')';
+ }
+
void printMemRegReg(const MachineInstr *MI, unsigned OpNo) {
// When used as the base register, r0 reads constant zero rather than
// the value contained in the register. For this reason, the darwin
SetupMachineFunction(MF);
O << "\n\n";
- // Emit pre-function debug information.
- DW.BeginFunction(MF);
-
// Print out constants referenced by the function
EmitConstantPool(MF.getConstantPool());
EmitAlignment(4, F);
O << CurrentFnName << ":\n";
+ // Emit pre-function debug information.
+ DW.BeginFunction(&MF);
+
// Print out code for the function.
for (MachineFunction::const_iterator I = MF.begin(), E = MF.end();
I != E; ++I) {
}
// Emit post-function debug information.
- DW.EndFunction(MF);
+ DW.EndFunction();
// We didn't modify anything.
return false;
Mang->setUseQuotes(true);
// Emit initial debug information.
- DW.BeginModule(M);
+ DW.BeginModule(&M);
return false;
}
}
// Emit initial debug information.
- DW.EndModule(M);
+ DW.EndModule();
// Funny Darwin hack: This flag tells the linker that no global symbols
// contain code that falls through to other global symbols (e.g. the obvious