diff options
author | Dale Johannesen <dalej@apple.com> | 2010-06-03 21:09:53 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2010-06-03 21:09:53 +0000 |
commit | 51e28e634880849ed9f7c02e93c08d25dd70291b (patch) | |
tree | 2c85108de1f24b5eb82be294ee4cd48e133286cb /utils/TableGen/ARMDecoderEmitter.cpp | |
parent | 400f75cb5ed39ab4f071f78f6a26beefbc8a46f0 (diff) |
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105413 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/TableGen/ARMDecoderEmitter.cpp')
-rw-r--r-- | utils/TableGen/ARMDecoderEmitter.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/utils/TableGen/ARMDecoderEmitter.cpp b/utils/TableGen/ARMDecoderEmitter.cpp index c879a54b35..5f154b6f5b 100644 --- a/utils/TableGen/ARMDecoderEmitter.cpp +++ b/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") |