summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/ARMDecoderEmitter.cpp
diff options
context:
space:
mode:
authorDale Johannesen <dalej@apple.com>2010-06-03 21:09:53 +0000
committerDale Johannesen <dalej@apple.com>2010-06-03 21:09:53 +0000
commitd679ff7330e7824da54c8abe6a1a4ab175f3f0ba (patch)
treef321d3a8a29a98b4bdf537d99518251ba8287ac2 /llvm/utils/TableGen/ARMDecoderEmitter.cpp
parent91a3d27ec0a586e5068df28b026d7e6cba626488 (diff)
downloadbcm5719-llvm-d679ff7330e7824da54c8abe6a1a4ab175f3f0ba.tar.gz
bcm5719-llvm-d679ff7330e7824da54c8abe6a1a4ab175f3f0ba.zip
Early implementation of tail call for ARM.
A temporary flag -arm-tail-calls defaults to off, so there is no functional change by default. Intrepid users may try this; simple cases work but there are bugs. llvm-svn: 105413
Diffstat (limited to 'llvm/utils/TableGen/ARMDecoderEmitter.cpp')
-rw-r--r--llvm/utils/TableGen/ARMDecoderEmitter.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/utils/TableGen/ARMDecoderEmitter.cpp b/llvm/utils/TableGen/ARMDecoderEmitter.cpp
index c879a54b355..5f154b6f5b1 100644
--- a/llvm/utils/TableGen/ARMDecoderEmitter.cpp
+++ b/llvm/utils/TableGen/ARMDecoderEmitter.cpp
@@ -1575,6 +1575,13 @@ bool ARMDecoderEmitter::ARMDEBackend::populateInstruction(
if (Name == "BXr9" || Name == "BMOVPCRX" || Name == "BMOVPCRXr9")
return false;
+ // Tail calls are other patterns that generate existing instructions.
+ if (Name == "TCRETURNdi" || Name == "TCRETURNdiND" ||
+ Name == "TCRETURNri" || Name == "TCRETURNriND" ||
+ Name == "TAILJMPd" || Name == "TAILJMPdND" ||
+ Name == "TAILJMPr" || Name == "TAILJMPrND")
+ return false;
+
// VLDMQ/VSTMQ can be hanlded with the more generic VLDMD/VSTMD.
if (Name == "VLDMQ" || Name == "VLDMQ_UPD" ||
Name == "VSTMQ" || Name == "VSTMQ_UPD")
OpenPOWER on IntegriCloud