llvm-project/llvm/lib/Transforms/Utils
James Molloy f01488e2bc [InstCombine] Rewrite bswap/bitreverse handling completely.
There are several requirements that ended up with this design;
  1. Matching bitreversals is too heavyweight for InstCombine and doesn't really need to be done so early.
  2. Bitreversals and byteswaps are very related in their matching logic.
  3. We want to implement support for matching more advanced bswap/bitreverse patterns like partial bswaps/bitreverses.
  4. Bswaps are best matched early in InstCombine.

The result of these is that a new utility function is created in Transforms/Utils/Local.h that can be configured to search for bswaps, bitreverses or both. InstCombine uses it to find only bswaps, CGP uses it to find only bitreversals.

We can then extend the matching logic in one place only.

llvm-svn: 257875
2016-01-15 09:20:19 +00:00
..
ASanStackFrameLayout.cpp Update to use new name alignTo(). 2016-01-14 21:06:47 +00:00
AddDiscriminators.cpp Fix the debug build breakage that getDiscriminator is called by mistake. 2015-11-19 20:29:27 +00:00
BasicBlockUtils.cpp [SplitLandingPadPredecessors] Create a PHINode for the original landingpad only if it has some uses 2016-01-06 20:32:05 +00:00
BreakCriticalEdges.cpp TransformUtils: Remove implicit ilist iterator conversions, NFC 2015-10-13 02:39:05 +00:00
BuildLibCalls.cpp [Utils] Put includes in correct order. NFC. 2015-11-24 18:57:06 +00:00
BypassSlowDivision.cpp Clarify that the bypassSlowDivision optimization operates on a single BB [v2] 2016-01-04 23:18:58 +00:00
CMakeLists.txt TransformUtils: Introduce module splitter. 2015-08-21 02:48:20 +00:00
CloneFunction.cpp Remove CloningDirector and associated code 2016-01-08 18:23:17 +00:00
CloneModule.cpp Return a std::unique_ptr from CloneModule. NFC. 2015-12-08 23:57:17 +00:00
CmpInstAnalysis.cpp
CodeExtractor.cpp [IR] Reformulate LLVM's EH funclet IR 2015-12-12 05:38:55 +00:00
CtorUtils.cpp TransformUtils: Remove implicit ilist iterator conversions, NFC 2015-10-13 02:39:05 +00:00
DemoteRegToStack.cpp TransformUtils: Remove implicit ilist iterator conversions, NFC 2015-10-13 02:39:05 +00:00
FlattenCFG.cpp LPM: Stop threading `Pass *` through all of the loop utility APIs. NFC 2015-12-15 19:40:57 +00:00
GlobalStatus.cpp GlobalOpt does not treat externally_initialized globals correctly 2015-10-12 13:20:52 +00:00
InlineFunction.cpp [OperandBundles] Copy DebugLoc with calls/invokes 2016-01-14 06:21:42 +00:00
InstructionNamer.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
IntegerDivision.cpp [Transforms] Use asserts instead of ifs around llvm_unreachable. NFC 2015-12-25 02:04:17 +00:00
LCSSA.cpp [WinEH] Update LCSSA to handle catchswitch with handlers inside and outside a loop 2015-12-18 18:12:35 +00:00
LLVMBuild.txt [PM/AA] Remove the last relics of the separate IPA library from LLVM, 2015-08-18 17:51:53 +00:00
Local.cpp [InstCombine] Rewrite bswap/bitreverse handling completely. 2016-01-15 09:20:19 +00:00
LoopSimplify.cpp LPM: Stop threading `Pass *` through all of the loop utility APIs. NFC 2015-12-15 19:40:57 +00:00
LoopUnroll.cpp LoopInfo: Simplify ownership of Loop objects 2016-01-08 19:08:53 +00:00
LoopUnrollRuntime.cpp LPM: Stop threading `Pass *` through all of the loop utility APIs. NFC 2015-12-15 19:40:57 +00:00
LoopUtils.cpp function names start with a lower case letter ; NFC 2016-01-12 18:03:37 +00:00
LoopVersioning.cpp Re-commit r255115, with the PredicatedScalarEvolution class moved to 2015-12-09 16:06:28 +00:00
LowerInvoke.cpp TransformUtils: Remove implicit ilist iterator conversions, NFC 2015-10-13 02:39:05 +00:00
LowerSwitch.cpp TransformUtils: Remove implicit ilist iterator conversions, NFC 2015-10-13 02:39:05 +00:00
Makefile
Mem2Reg.cpp [Mem2Reg] Respect optnone 2015-12-11 13:36:59 +00:00
MetaRenamer.cpp Whoops, remove trailing whitespace. 2015-08-27 05:37:12 +00:00
ModuleUtils.cpp Create llvm.global_ctors in the new format. 2015-12-06 16:18:25 +00:00
PromoteMemoryToRegister.cpp getParent() ^ 3 == getModule() ; NFCI 2015-12-14 17:24:23 +00:00
SSAUpdater.cpp Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
SimplifyCFG.cpp Code refactoring for commit r257278. 2016-01-11 19:20:53 +00:00
SimplifyIndVar.cpp LPM: Stop threading `Pass *` through all of the loop utility APIs. NFC 2015-12-15 19:40:57 +00:00
SimplifyInstructions.cpp [Utils] Put includes in correct order. NFC. 2015-11-24 18:57:06 +00:00
SimplifyLibCalls.cpp [LibCallSimplifier] use instruction-level fast-math-flags to transform pow(x, 0.5) calls 2016-01-12 19:06:35 +00:00
SplitModule.cpp TransformUtils: Introduce module splitter. 2015-08-21 02:48:20 +00:00
SymbolRewriter.cpp Remove unnecessary includes 2015-08-08 00:41:53 +00:00
UnifyFunctionExitNodes.cpp TransformUtils: Remove implicit ilist iterator conversions, NFC 2015-10-13 02:39:05 +00:00
Utils.cpp
ValueMapper.cpp Split resolveCycles(bool AllowTemps) into two interfaces and document 2016-01-11 21:37:41 +00:00