summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.h
diff options
context:
space:
mode:
authorSjoerd Meijer <sjoerd.meijer@arm.com>2016-06-03 13:19:43 +0000
committerSjoerd Meijer <sjoerd.meijer@arm.com>2016-06-03 13:19:43 +0000
commit9da258d8e5ba3e9b4f4e173865ce191d8634dca8 (patch)
treed2664e3c02b1649bd3972aff6679b69e4c9c239f /llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.h
parent3c2f78576912244ec7917bd70c2fe241a2e798b2 (diff)
downloadbcm5719-llvm-9da258d8e5ba3e9b4f4e173865ce191d8634dca8.tar.gz
bcm5719-llvm-9da258d8e5ba3e9b4f4e173865ce191d8634dca8.zip
ARM target does not use printAliasInstr machinery which
forces having special checks in ArmInstPrinter::printInstruction. This patch addresses this issue. Not all special checks could be removed: either they involve elaborated conditions under which the alias is emitted (e.g. ldm/stm on sp may be pop/push but only if the number of registers is >= 2) or the number of registers is multivalued (like happens again with ldm/stm) and they do not match the InstAlias pattern which assumes single-valued operands in the pattern. Patch by: Roger Ferrer Ibanez Differential Revision: http://reviews.llvm.org/D20237 llvm-svn: 271667
Diffstat (limited to 'llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.h')
-rw-r--r--llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.h b/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.h
index f550b68cae3..9d80eed84dc 100644
--- a/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.h
+++ b/llvm/lib/Target/ARM/InstPrinter/ARMInstPrinter.h
@@ -30,6 +30,12 @@ public:
// Autogenerated by tblgen.
void printInstruction(const MCInst *MI, const MCSubtargetInfo &STI,
raw_ostream &O);
+ virtual bool printAliasInstr(const MCInst *MI, const MCSubtargetInfo &STI,
+ raw_ostream &O);
+ virtual void printCustomAliasOperand(const MCInst *MI, unsigned OpIdx,
+ unsigned PrintMethodIdx,
+ const MCSubtargetInfo &STI,
+ raw_ostream &O);
static const char *getRegisterName(unsigned RegNo);
void printOperand(const MCInst *MI, unsigned OpNo, const MCSubtargetInfo &STI,
OpenPOWER on IntegriCloud