llvm-6502/lib
Gerolf Hoflehner 2318c2f28d [InstCombine] Optimize icmp-select-icmp
In special cases select instructions can be eliminated by
replacing them with a cheaper bitwise operation even when the
select result is used outside its home block. The instances implemented
are patterns like
    %x=icmp.eq
    %y=select %x,%r, null
    %z=icmp.eq|neq %y, null
    br %z,true, false
==> %x=icmp.ne
    %y=icmp.eq %r,null
    %z=or %x,%y
    br %z,true,false
The optimization is integrated into the instruction
combiner and performed only when all uses of the select result can
be replaced by the select operand proper. For this dominator information
is used and dominance is now a required analysis pass in the combiner.
The optimization itself is iterative. The critical step is to replace the
select result with the non-constant select operand. So the select becomes
local and the combiner iteratively works out simpler code pattern and
eventually eliminates the select.

rdar://17853760



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218721 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-01 00:13:22 +00:00
..
Analysis [BasicAA] Make better use of zext and sign information 2014-09-30 22:43:40 +00:00
AsmParser
Bitcode
CodeGen Omit DW_AT_inline under -gmlt to save a little more space. 2014-09-30 23:29:16 +00:00
DebugInfo Store TypeUnits in a SmallVector<DWARFUnitSection> instead of a single DWARFUnitSection. 2014-09-29 13:56:39 +00:00
ExecutionEngine Unit test r218187, changing RTDyldMemoryManager::getSymbolAddress's behavior favor mangled lookup over unmangled lookup. 2014-09-29 21:25:13 +00:00
IR [AVX512] Added intrinsics for VPCMPEQB and VPCMPEQW. 2014-09-30 11:32:22 +00:00
IRReader
LineEditor
Linker
LTO
MC Extend C disassembler API to allow specifying target features 2014-09-30 16:31:40 +00:00
Object Object: BSS/virtual sections don't have contents 2014-09-26 22:32:16 +00:00
Option
ProfileData llvm-cov: Use the number of executed functions for the function coverage metric. 2014-09-30 12:45:13 +00:00
Support Fix llvm::huge_valf multiple initializations with Visual C++. 2014-09-27 14:41:29 +00:00
TableGen Refactoring: raw pointer -> unique_ptr 2014-09-25 19:55:58 +00:00
Target Split the estimate() interface into separate functions for each type. NFC. 2014-09-30 20:28:48 +00:00
Transforms [InstCombine] Optimize icmp-select-icmp 2014-10-01 00:13:22 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile