1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
llvm-mirror/lib/Transforms/InstCombine
Duncan Sands 88fc6cd7fe Generalize the reassociation transform in SimplifyCommutative (now renamed to
SimplifyAssociativeOrCommutative) "(A op C1) op C2" -> "A op (C1 op C2)",
which previously was only done if C1 and C2 were constants, to occur whenever
"C1 op C2" simplifies (a la InstructionSimplify).  Since the simplifying operand
combination can no longer be assumed to be the right-hand terms, consider all of
the possible permutations.  When compiling "gcc as one big file", transform 2
(i.e. using right-hand operands) fires about 4000 times but it has to be said
that most of the time the simplifying operands are both constants.  Transforms
3, 4 and 5 each fired once.  Transform 6, which is an existing transform that
I didn't change, never fired.  With this change, the testcase is now optimized
perfectly with one run of instcombine (previously it required instcombine +
reassociate + instcombine, and it may just have been luck that this worked).

llvm-svn: 119002
2010-11-13 15:10:37 +00:00
..
CMakeLists.txt Removed a bunch of unnecessary target_link_libraries. 2010-09-28 22:39:14 +00:00
InstCombine.h Generalize the reassociation transform in SimplifyCommutative (now renamed to 2010-11-13 15:10:37 +00:00
InstCombineAddSub.cpp Generalize the reassociation transform in SimplifyCommutative (now renamed to 2010-11-13 15:10:37 +00:00
InstCombineAndOrXor.cpp Generalize the reassociation transform in SimplifyCommutative (now renamed to 2010-11-13 15:10:37 +00:00
InstCombineCalls.cpp Teach instcombine to set the alignment arguments for NEON load/store intrinsics. 2010-10-22 21:41:48 +00:00
InstCombineCasts.cpp Fix a serious performance regression introduced by r108687 on linux: 2010-09-07 20:01:38 +00:00
InstCombineCompares.cpp PR7750: !CExpr->isNullValue() only properly computes whether CExpr is nonnull 2010-07-29 18:03:33 +00:00
InstCombineLoadStoreAlloca.cpp Fix a case where instcombine was stripping metadata (and alignment) 2010-10-25 16:16:27 +00:00
InstCombineMulDivRem.cpp Generalize the reassociation transform in SimplifyCommutative (now renamed to 2010-11-13 15:10:37 +00:00
InstCombinePHI.cpp cache result of operator* 2010-07-12 14:15:58 +00:00
InstCombineSelect.cpp Teach InstCombine not to use Add and Neg on FP. PR 8490. 2010-10-27 23:45:18 +00:00
InstCombineShifts.cpp When checking that the necessary bits are zero in 2010-11-10 01:30:56 +00:00
InstCombineSimplifyDemanded.cpp use ArgOperand API 2010-06-28 16:45:00 +00:00
InstCombineVectorOps.cpp Clean up indentation and other whitespace. 2010-10-29 22:20:45 +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 Generalize the reassociation transform in SimplifyCommutative (now renamed to 2010-11-13 15:10:37 +00:00
Makefile make -fno-rtti the default unless a directory builds with REQUIRES_RTTI. 2010-01-24 20:43:08 +00:00