mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-24 21:25:41 +00:00
Behold, rlwinm with certain immediate arguments is printed as the much more
readable slwi or srwi (shift left/right word immediate). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21099 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a3829d5580
commit
ad5f65c74b
@ -397,6 +397,28 @@ void PowerPCAsmPrinter::printOp(const MachineOperand &MO, bool IsCallOp) {
|
||||
///
|
||||
void PowerPCAsmPrinter::printMachineInstruction(const MachineInstr *MI) {
|
||||
++EmittedInsts;
|
||||
// Check for slwi/srwi mnemonics.
|
||||
if (MI->getOpcode() == PPC::RLWINM) {
|
||||
bool FoundMnemonic = false;
|
||||
unsigned char SH = MI->getOperand(2).getImmedValue();
|
||||
unsigned char MB = MI->getOperand(3).getImmedValue();
|
||||
unsigned char ME = MI->getOperand(4).getImmedValue();
|
||||
if (SH <= 31 && MB == 0 && ME == (31-SH)) {
|
||||
O << "slwi "; FoundMnemonic = true;
|
||||
}
|
||||
if (SH <= 31 && MB == (32-SH) && ME == 31) {
|
||||
O << "srwi "; FoundMnemonic = true;
|
||||
SH = 32-SH;
|
||||
}
|
||||
if (FoundMnemonic) {
|
||||
printOperand(MI, 0, MVT::i64);
|
||||
O << ", ";
|
||||
printOperand(MI, 1, MVT::i64);
|
||||
O << ", " << (unsigned int)SH << "\n";
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (printInstruction(MI))
|
||||
return; // Printer was automatically generated
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user