summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
diff options
context:
space:
mode:
authorCharlie Turner <charlie.turner@arm.com>2014-12-01 08:39:19 +0000
committerCharlie Turner <charlie.turner@arm.com>2014-12-01 08:39:19 +0000
commit7de905cd172a908b96fa523575dbca4df52445ca (patch)
tree838f42573770fecc23c66052e4a0cd8d0a19541d /llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
parent4d88ae20026521a4a5ff1a8f74f482242c63f8c9 (diff)
downloadbcm5719-llvm-7de905cd172a908b96fa523575dbca4df52445ca.tar.gz
bcm5719-llvm-7de905cd172a908b96fa523575dbca4df52445ca.zip
Add Thumb HVC and ERET virtualisation extension instructions.
Patch by Matthew Wahab. Change-Id: I131f71c1150d5fa797066a18e09d526c19bf9016 llvm-svn: 222990
Diffstat (limited to 'llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp')
-rw-r--r--llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp b/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
index a51680c20da..03e4e0a5e17 100644
--- a/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
+++ b/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.cpp
@@ -292,6 +292,21 @@ void ARMInstPrinter::printInst(const MCInst *MI, raw_ostream &O,
}
break;
}
+ // B9.3.3 ERET (Thumb)
+ // For a target that has Virtualization Extensions, ERET is the preferred
+ // disassembly of SUBS PC, LR, #0
+ case ARM::t2SUBS_PC_LR: {
+ if (MI->getNumOperands() == 3 &&
+ MI->getOperand(0).isImm() &&
+ MI->getOperand(0).getImm() == 0 &&
+ (getAvailableFeatures() & ARM::FeatureVirtualization)) {
+ O << "\teret";
+ printPredicateOperand(MI, 1, O);
+ printAnnotation(O, Annot);
+ return;
+ }
+ break;
+ }
}
printInstruction(MI, O);
OpenPOWER on IntegriCloud