mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
1704a62e0b
This covers both hard and soft float. Hard float is easy, since it's just Legal. Soft float is more involved, because there are several different ways to handle it based on the predicate: one and ueq need not only one, but two libcalls to get a result. Furthermore, we have large differences between the values returned by the AEABI and GNU functions. AEABI functions return a nice 1 or 0 representing true and respectively false. GNU functions generally return a value that needs to be compared against 0 (e.g. for ogt, the value returned by the libcall is > 0 for true). We could introduce redundant comparisons for AEABI as well, but they don't seem easy to remove afterwards, so we do different processing based on whether or not the result really needs to be compared against something (and just truncate if it doesn't). llvm-svn: 307243 |
||
---|---|---|
.. | ||
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 |