summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
index a9da64cc216..34c58b27cc1 100644
--- a/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
+++ b/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp
@@ -279,6 +279,21 @@ bool PPCAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
if (MI->getOperand(OpNo).isImm())
O << "i";
return false;
+ case 'x':
+ if(!MI->getOperand(OpNo).isReg())
+ return true;
+ // This operand uses VSX numbering.
+ // If the operand is a VMX register, convert it to a VSX register.
+ unsigned Reg = MI->getOperand(OpNo).getReg();
+ if (PPCInstrInfo::isVRRegister(Reg))
+ Reg = PPC::VSX32 + (Reg - PPC::V0);
+ else if (PPCInstrInfo::isVFRegister(Reg))
+ Reg = PPC::VSX32 + (Reg - PPC::VF0);
+ const char *RegName;
+ RegName = PPCInstPrinter::getRegisterName(Reg);
+ RegName = stripRegisterPrefix(RegName);
+ O << RegName;
+ return false;
}
}
OpenPOWER on IntegriCloud