llvm/lib/CodeGen/GlobalISel
Diana Picus 39c5686a1f [ARM] GlobalISel: Add support for i32 modulo
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
2017-06-15 10:53:31 +00:00
..
CallLowering.cpp [IR] Abstract away ArgNo+1 attribute indexing as much as possible 2017-05-03 18:17:31 +00:00
CMakeLists.txt Prune trailing whitespace. (To regenerate makefiles) 2017-05-28 22:54:25 +00:00
GlobalISel.cpp [GlobalISel] Add a localizer pass for target to use 2017-05-27 01:34:00 +00:00
InstructionSelect.cpp ARM: Compute MaxCallFrame size early 2017-05-05 22:04:05 +00:00
InstructionSelector.cpp Re-commit: [globalisel][tablegen] Import rules containing intrinsic_wo_chain. 2017-05-18 10:33:36 +00:00
IRTranslator.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
Legalizer.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
LegalizerHelper.cpp [ARM] GlobalISel: Add support for i32 modulo 2017-06-15 10:53:31 +00:00
LegalizerInfo.cpp [GISel]: Fix undefined behavior while accessing DefaultAction map 2017-05-12 22:43:58 +00:00
LLVMBuild.txt Revert "Get GlobalISel to build on Linux after r286407" 2016-11-16 22:24:59 +00:00
Localizer.cpp [Localizer] Don't trick to be smart for the insertion point 2017-05-30 20:53:06 +00:00
MachineIRBuilder.cpp [globalisel][legalizer] G_LOAD/G_STORE NarrowScalar should not emit G_GEP x, 0. 2017-06-13 23:42:32 +00:00
RegBankSelect.cpp [RegisterBankInfo] Remove overly-agressive asserts 2017-05-15 09:52:33 +00:00
RegisterBank.cpp Move size and alignment information of regclass to TargetRegisterInfo 2017-04-24 18:55:33 +00:00
RegisterBankInfo.cpp [RegisterBankInfo] Uniquely allocate instruction mapping. 2017-05-05 22:48:22 +00:00
Utils.cpp [GISel]: Add a getConstantFPVRegVal utility 2017-05-12 22:54:52 +00:00