mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-26 21:47:07 +00:00
8ccddbd123
if (C) V1 |= V2; into: Vx = V1 | V2; V1 = select C, V1, Vx when the expression can be evaluated unconditionally and is *cheap* to execute. This limited form of if conversion is quite handy in lots of cases. For example, it turns this testcase into straight-line code: int in0 ; int in1 ; int in2 ; int in3 ; int in4 ; int in5 ; int in6 ; int in7 ; int in8 ; int in9 ; int in10; int in11; int in12; int in13; int in14; int in15; long output; void mux(void) { output = (in0 ? 0x00000001 : 0) | (in1 ? 0x00000002 : 0) | (in2 ? 0x00000004 : 0) | (in3 ? 0x00000008 : 0) | (in4 ? 0x00000010 : 0) | (in5 ? 0x00000020 : 0) | (in6 ? 0x00000040 : 0) | (in7 ? 0x00000080 : 0) | (in8 ? 0x00000100 : 0) | (in9 ? 0x00000200 : 0) | (in10 ? 0x00000400 : 0) | (in11 ? 0x00000800 : 0) | (in12 ? 0x00001000 : 0) | (in13 ? 0x00002000 : 0) | (in14 ? 0x00004000 : 0) | (in15 ? 0x00008000 : 0) ; } llvm-svn: 12798 |
||
---|---|---|
.. | ||
BasicBlockUtils.cpp | ||
BreakCriticalEdges.cpp | ||
CloneFunction.cpp | ||
CloneModule.cpp | ||
CloneTrace.cpp | ||
CodeExtractor.cpp | ||
DemoteRegToStack.cpp | ||
InlineFunction.cpp | ||
Linker.cpp | ||
Local.cpp | ||
Makefile | ||
PromoteMemoryToRegister.cpp | ||
SimplifyCFG.cpp | ||
UnifyFunctionExitNodes.cpp | ||
ValueMapper.cpp | ||
ValueMapper.h |