summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/SystemZ/InstPrinter
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@linux.vnet.ibm.com>2013-05-14 10:17:52 +0000
committerRichard Sandiford <rsandifo@linux.vnet.ibm.com>2013-05-14 10:17:52 +0000
commiteb9af294266ee67924030f546205ea41a3eea0c2 (patch)
tree8e89cbaadb329b036ce03a9a2295903a0751354b /llvm/lib/Target/SystemZ/InstPrinter
parent1290369f7b268027f72f7cd6203c77e3253cd276 (diff)
downloadbcm5719-llvm-eb9af294266ee67924030f546205ea41a3eea0c2.tar.gz
bcm5719-llvm-eb9af294266ee67924030f546205ea41a3eea0c2.zip
[SystemZ] Add disassembler support
llvm-svn: 181777
Diffstat (limited to 'llvm/lib/Target/SystemZ/InstPrinter')
-rw-r--r--llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp20
-rw-r--r--llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h1
2 files changed, 19 insertions, 2 deletions
diff --git a/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp b/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp
index d73cf498089..369802b2b81 100644
--- a/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp
+++ b/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.cpp
@@ -114,10 +114,26 @@ void SystemZInstPrinter::printAccessRegOperand(const MCInst *MI, int OpNum,
O << "%a" << (unsigned int)Value;
}
+void SystemZInstPrinter::printPCRelOperand(const MCInst *MI, int OpNum,
+ raw_ostream &O) {
+ const MCOperand &MO = MI->getOperand(OpNum);
+ if (MO.isImm()) {
+ O << "0x";
+ O.write_hex(MO.getImm());
+ } else
+ O << *MO.getExpr();
+}
+
void SystemZInstPrinter::printCallOperand(const MCInst *MI, int OpNum,
raw_ostream &O) {
- printOperand(MI, OpNum, O);
- O << "@PLT";
+ const MCOperand &MO = MI->getOperand(OpNum);
+ if (MO.isImm()) {
+ O << "0x";
+ O.write_hex(MO.getImm());
+ } else {
+ O << *MO.getExpr();
+ O << "@PLT";
+ }
}
void SystemZInstPrinter::printOperand(const MCInst *MI, int OpNum,
diff --git a/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h b/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h
index b82e79d93cd..f77282efcb9 100644
--- a/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h
+++ b/llvm/lib/Target/SystemZ/InstPrinter/SystemZInstPrinter.h
@@ -56,6 +56,7 @@ private:
void printU16ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printS32ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printU32ImmOperand(const MCInst *MI, int OpNum, raw_ostream &O);
+ void printPCRelOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printCallOperand(const MCInst *MI, int OpNum, raw_ostream &O);
void printAccessRegOperand(const MCInst *MI, int OpNum, raw_ostream &O);
OpenPOWER on IntegriCloud