summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
diff options
context:
space:
mode:
authorVenkatraman Govindaraju <venkatra@cs.wisc.edu>2014-03-02 21:17:44 +0000
committerVenkatraman Govindaraju <venkatra@cs.wisc.edu>2014-03-02 21:17:44 +0000
commit4fa2ab26f5dca2a038798d76e1760c52e8786b72 (patch)
tree9d939a8153915287ac3e5b15a506688fd3f40885 /llvm/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
parent49c8ae21f59608479727cdaafa880e51c5f10e15 (diff)
downloadbcm5719-llvm-4fa2ab26f5dca2a038798d76e1760c52e8786b72.tar.gz
bcm5719-llvm-4fa2ab26f5dca2a038798d76e1760c52e8786b72.zip
[Sparc] Add support for decoding jmpl/retl/ret instruction.
llvm-svn: 202663
Diffstat (limited to 'llvm/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp')
-rw-r--r--llvm/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/llvm/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp b/llvm/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
index 045c99087a4..fabc1252cdf 100644
--- a/llvm/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
+++ b/llvm/lib/Target/Sparc/InstPrinter/SparcInstPrinter.cpp
@@ -61,7 +61,15 @@ bool SparcInstPrinter::printSparcAliasInstr(const MCInst *MI, raw_ostream &O)
return false;
switch (MI->getOperand(0).getReg()) {
default: return false;
- case SP::G0: // jmp $addr
+ case SP::G0: // jmp $addr | ret | retl
+ if (MI->getOperand(2).isImm() &&
+ MI->getOperand(2).getImm() == 8) {
+ switch(MI->getOperand(1).getReg()) {
+ default: break;
+ case SP::I7: O << "\tret"; return true;
+ case SP::O7: O << "\tretl"; return true;
+ }
+ }
O << "\tjmp "; printMemOperand(MI, 1, O);
return true;
case SP::O7: // call $addr
OpenPOWER on IntegriCloud