implement some more easy hooks.

llvm-svn: 84614
This commit is contained in:
Chris Lattner 2009-10-20 06:22:33 +00:00
parent 60d5131653
commit 9351e4f4b2
2 changed files with 34 additions and 3 deletions

View File

@ -284,6 +284,36 @@ void ARMInstPrinter::printAddrMode5Operand(const MCInst *MI, unsigned OpNum,
O << "]";
}
void ARMInstPrinter::printAddrMode6Operand(const MCInst *MI, unsigned OpNum) {
const MCOperand &MO1 = MI->getOperand(OpNum);
const MCOperand &MO2 = MI->getOperand(OpNum+1);
const MCOperand &MO3 = MI->getOperand(OpNum+2);
// FIXME: No support yet for specifying alignment.
O << '[' << getRegisterName(MO1.getReg()) << ']';
if (ARM_AM::getAM6WBFlag(MO3.getImm())) {
if (MO2.getReg() == 0)
O << '!';
else
O << ", " << getRegisterName(MO2.getReg());
}
}
void ARMInstPrinter::printAddrModePCOperand(const MCInst *MI, unsigned OpNum,
const char *Modifier) {
assert(0 && "FIXME: Implement printAddrModePCOperand");
}
void ARMInstPrinter::printBitfieldInvMaskImmOperand (const MCInst *MI,
unsigned OpNum) {
const MCOperand &MO = MI->getOperand(OpNum);
uint32_t v = ~MO.getImm();
int32_t lsb = CountTrailingZeros_32(v);
int32_t width = (32 - CountLeadingZeros_32 (v)) - lsb;
assert(MO.isImm() && "Not a valid bf_inv_mask_imm value!");
O << '#' << lsb << ", #" << width;
}
void ARMInstPrinter::printRegisterList(const MCInst *MI, unsigned OpNum) {
O << "{";

View File

@ -47,10 +47,11 @@ public:
const char *Modifier = 0);
void printAddrMode5Operand(const MCInst *MI, unsigned OpNum,
const char *Modifier = 0);
void printAddrMode6Operand(const MCInst *MI, unsigned OpNum) {}
void printAddrMode6Operand(const MCInst *MI, unsigned OpNum);
void printAddrModePCOperand(const MCInst *MI, unsigned OpNum,
const char *Modifier = 0) {}
void printBitfieldInvMaskImmOperand (const MCInst *MI, unsigned OpNum) {}
const char *Modifier = 0);
void printBitfieldInvMaskImmOperand (const MCInst *MI, unsigned OpNum);
void printThumbITMask(const MCInst *MI, unsigned OpNum) {}
void printThumbAddrModeRROperand(const MCInst *MI, unsigned OpNum) {}