aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC/MCInst.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/MC/MCInst.cpp')
-rw-r--r--llvm/lib/MC/MCInst.cpp38
1 files changed, 24 insertions, 14 deletions
diff --git a/llvm/lib/MC/MCInst.cpp b/llvm/lib/MC/MCInst.cpp
index f6f6edee5822..3cc50ff43513 100644
--- a/llvm/lib/MC/MCInst.cpp
+++ b/llvm/lib/MC/MCInst.cpp
@@ -10,6 +10,7 @@
#include "llvm/Config/llvm-config.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCInstPrinter.h"
+#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Debug.h"
@@ -17,20 +18,28 @@
using namespace llvm;
-void MCOperand::print(raw_ostream &OS) const {
+void MCOperand::print(raw_ostream &OS, const MCRegisterInfo *RegInfo) const {
OS << "<MCOperand ";
if (!isValid())
OS << "INVALID";
- else if (isReg())
- OS << "Reg:" << getReg();
- else if (isImm())
+ else if (isReg()) {
+ OS << "Reg:";
+ if (RegInfo)
+ OS << RegInfo->getName(getReg());
+ else
+ OS << getReg();
+ } else if (isImm())
OS << "Imm:" << getImm();
- else if (isFPImm())
- OS << "FPImm:" << getFPImm();
+ else if (isSFPImm())
+ OS << "SFPImm:" << bit_cast<float>(getSFPImm());
+ else if (isDFPImm())
+ OS << "DFPImm:" << bit_cast<double>(getDFPImm());
else if (isExpr()) {
OS << "Expr:(" << *getExpr() << ")";
} else if (isInst()) {
- OS << "Inst:(" << *getInst() << ")";
+ OS << "Inst:(";
+ getInst()->print(OS, RegInfo);
+ OS << ")";
} else
OS << "UNDEFINED";
OS << ">";
@@ -60,23 +69,24 @@ LLVM_DUMP_METHOD void MCOperand::dump() const {
}
#endif
-void MCInst::print(raw_ostream &OS) const {
+void MCInst::print(raw_ostream &OS, const MCRegisterInfo *RegInfo) const {
OS << "<MCInst " << getOpcode();
for (unsigned i = 0, e = getNumOperands(); i != e; ++i) {
OS << " ";
- getOperand(i).print(OS);
+ getOperand(i).print(OS, RegInfo);
}
OS << ">";
}
void MCInst::dump_pretty(raw_ostream &OS, const MCInstPrinter *Printer,
- StringRef Separator) const {
+ StringRef Separator,
+ const MCRegisterInfo *RegInfo) const {
StringRef InstName = Printer ? Printer->getOpcodeName(getOpcode()) : "";
- dump_pretty(OS, InstName, Separator);
+ dump_pretty(OS, InstName, Separator, RegInfo);
}
-void MCInst::dump_pretty(raw_ostream &OS, StringRef Name,
- StringRef Separator) const {
+void MCInst::dump_pretty(raw_ostream &OS, StringRef Name, StringRef Separator,
+ const MCRegisterInfo *RegInfo) const {
OS << "<MCInst #" << getOpcode();
// Show the instruction opcode name if we have it.
@@ -85,7 +95,7 @@ void MCInst::dump_pretty(raw_ostream &OS, StringRef Name,
for (unsigned i = 0, e = getNumOperands(); i != e; ++i) {
OS << Separator;
- getOperand(i).print(OS);
+ getOperand(i).print(OS, RegInfo);
}
OS << ">";
}