mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-30 23:20:54 +00:00
39c5686a1f
Add support for modulo for targets that have hardware division and for those that don't. When hardware division is not available, we have to choose the correct libcall to use. This is generally straightforward, except for AEABI. The AEABI variant is trickier than the other libcalls because it returns { quotient, remainder }, instead of just one value like the other libcalls that we've seen so far. Therefore, we need to use custom lowering for it. However, we don't want to have too much special code, so we refactor the target-independent code in the legalizer by adding a helper for replacing an instruction with a libcall. This helper is used by the legalizer itself when dealing with simple calls, and also by the custom ARM legalization for the more complicated AEABI divmod calls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305459 91177308-0d34-0410-b5e6-96231b3b80d8 |
||
---|---|---|
.. | ||
CallLowering.cpp | ||
CMakeLists.txt | ||
GlobalISel.cpp | ||
InstructionSelect.cpp | ||
InstructionSelector.cpp | ||
IRTranslator.cpp | ||
Legalizer.cpp | ||
LegalizerHelper.cpp | ||
LegalizerInfo.cpp | ||
LLVMBuild.txt | ||
Localizer.cpp | ||
MachineIRBuilder.cpp | ||
RegBankSelect.cpp | ||
RegisterBank.cpp | ||
RegisterBankInfo.cpp | ||
Utils.cpp |