llvm-6502/lib/Transforms/InstCombine
Tobias Grosser 46431d7a93 InstCombine: Match min/max hidden by sext/zext
X = sext x; x >s c ? X : C+1 --> X = sext x; X <s C+1 ? C+1 : X
X = sext x; x <s c ? X : C-1 --> X = sext x; X >s C-1 ? C-1 : X
X = zext x; x >u c ? X : C+1 --> X = zext x; X <u C+1 ? C+1 : X
X = zext x; x <u c ? X : C-1 --> X = zext x; X >u C-1 ? C-1 : X
X = sext x; x >u c ? X : C+1 --> X = sext x; X <u C+1 ? C+1 : X
X = sext x; x <u c ? X : C-1 --> X = sext x; X >u C-1 ? C-1 : X

Instead of calculating this with mixed types promote all to the
larger type. This enables scalar evolution to analyze this
expression. PR8866

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123034 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07 21:33:14 +00:00
..
CMakeLists.txt Removed a bunch of unnecessary target_link_libraries. 2010-09-28 22:39:14 +00:00
InstCombine.h Move getOrEnforceKnownAlignment out of instcombine into Transforms/Utils. 2010-12-25 20:37:57 +00:00
InstCombineAddSub.cpp Add a generic expansion transform: A op (B op' C) -> (A op B) op' (A op C) 2010-12-22 13:36:08 +00:00
InstCombineAndOrXor.cpp Add a generic expansion transform: A op (B op' C) -> (A op B) op' (A op C) 2010-12-22 13:36:08 +00:00
InstCombineCalls.cpp Revert 122959, it needs more thought. Add it back to README.txt with additional notes. 2011-01-07 20:42:20 +00:00
InstCombineCasts.cpp Whitespace fixes. No functionality change. 2010-12-17 23:27:41 +00:00
InstCombineCompares.cpp recognize an unsigned add with overflow idiom into uadd. 2010-12-19 19:37:52 +00:00
InstCombineLoadStoreAlloca.cpp Move getOrEnforceKnownAlignment out of instcombine into Transforms/Utils. 2010-12-25 20:37:57 +00:00
InstCombineMulDivRem.cpp Add a generic expansion transform: A op (B op' C) -> (A op B) op' (A op C) 2010-12-22 13:36:08 +00:00
InstCombinePHI.cpp Teach InstructionSimplify about phi nodes. I chose to have it simply 2010-11-14 13:30:18 +00:00
InstCombineSelect.cpp InstCombine: Match min/max hidden by sext/zext 2011-01-07 21:33:14 +00:00
InstCombineShifts.cpp When determining if we can fold (x >> C1) << C2, the bits that we need to verify are zero 2010-12-23 23:56:24 +00:00
InstCombineSimplifyDemanded.cpp PR5207: Change APInt methods trunc(), sext(), zext(), sextOrTrunc() and 2010-12-07 08:25:19 +00:00
InstCombineVectorOps.cpp PR5207: Rename overloaded APInt methods set(), clear(), flip() to 2010-12-01 08:53:58 +00:00
InstCombineWorklist.h I got tired of VISIBILITY_HIDDEN colliding with the gcc enum. Rename it 2010-05-11 20:16:09 +00:00
InstructionCombining.cpp Add a generic expansion transform: A op (B op' C) -> (A op B) op' (A op C) 2010-12-22 13:36:08 +00:00
Makefile make -fno-rtti the default unless a directory builds with REQUIRES_RTTI. 2010-01-24 20:43:08 +00:00