summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support
diff options
context:
space:
mode:
authorReed Kotler <rkotler@mips.com>2014-11-13 23:37:45 +0000
committerReed Kotler <rkotler@mips.com>2014-11-13 23:37:45 +0000
commitd5c4196cb6a13f76b68accd1f76f0fecc7785f46 (patch)
treeb22a67809d069f451f8f1e01e3330d8d25ccbe61 /llvm/lib/Support
parent9aeb04793a2e20a3302de899ec0d9c49ef350804 (diff)
downloadbcm5719-llvm-d5c4196cb6a13f76b68accd1f76f0fecc7785f46.tar.gz
bcm5719-llvm-d5c4196cb6a13f76b68accd1f76f0fecc7785f46.zip
First stage of call lowering for Mips fast-isel
Summary: This has most of what is needed for mips fast-isel call lowering for O32. What is missing I will add on the next patch because this patch is already too large. It should not be doing anything wrong but it will punt on some cases that it is basically capable of doing. The mechanism is there for parameters to be passed on the stack but I have not enabled it because it serves as a way for now to prevent some of the strange cases of O32 register passing that I have not fully checked yet and have some issues. The Mips O32 abi rules are very complicated as far how data is passed in floating and integer registers. However there is a way to think about this all very simply and this implementation reflects that. Basically, the ABI rules are written as if everything is passed on the stack and aligned as such. Once that is conceptually done, it is nearly trivial to reassign those locations to registers and then all the complexity disappears. So I have told tablegen that all the data is passed on the stack and during the lowering I fix this by assigning to registers as per the ABI doc. This has been my approach and you can line up what I did with the ABI document and see 1 to 1 what is going on. Test Plan: callabi.ll Reviewers: dsanders Reviewed By: dsanders Subscribers: jholewinski, echristo, ahatanak, llvm-commits, rfuhler Differential Revision: http://reviews.llvm.org/D5714 llvm-svn: 221948
Diffstat (limited to 'llvm/lib/Support')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud