llvm-project/llvm/test/Transforms/Reassociate
Fiona Glaser b8a330c42a Reassociate: add global reassociation algorithm
This algorithm (explained more in the source code) takes into account
global redundancies by building a "pair map" to find common subexprs.

The primary motivation of this is to handle situations like

foo = (a * b) * c
bar = (a * d) * c

where we currently don't identify that "a * c" is redundant.

Accordingly, it prioritizes the emission of a * c so that CSE
can remove the redundant calculation later.

Does not change the actual reassociation algorithm -- only the
order in which the reassociated operand chain is reconstructed.

Gives ~1.5% floating point math instruction count reduction on
a large offline suite of graphics shaders.

llvm-svn: 320515
2017-12-12 19:18:02 +00:00
..
2002-05-15-AgressiveSubMove.ll
2002-05-15-MissedTree.ll
2002-05-15-SubReassociate.ll [Reassociate] auto-generate better checks; NFC 2017-10-13 20:56:35 +00:00
2002-07-09-DominanceProblem.ll
2003-08-12-InfiniteLoop.ll
2005-09-01-ArrayOutOfBounds.ll
2006-04-27-ReassociateVector.ll
2011-01-26-UseAfterFree.ll
2012-05-08-UndefLeak.ll
2012-06-08-InfiniteLoop.ll
absorption.ll
add_across_block_crash.ll [Reassociate] add check lines; NFC 2017-11-09 16:25:35 +00:00
basictest.ll Reassociate: add global reassociation algorithm 2017-12-12 19:18:02 +00:00
canonicalize-neg-const.ll [Reassociate] regenerate test checks; NFC 2017-11-09 16:30:19 +00:00
commute.ll
crash.ll
crash2.ll
deadcode.ll
erase_inst_made_change.ll [Reassociate] Make sure EraseInst sets MadeChange 2017-06-27 05:32:13 +00:00
factorize-again.ll [Reassociate] auto-generate test checks; NFC 2017-11-09 18:26:49 +00:00
fast-AgressiveSubMove.ll [Reassociate] add tests with 'reassoc' FMF; NFC 2017-11-13 17:29:11 +00:00
fast-ArrayOutOfBounds.ll
fast-MissedTree.ll [Reassociate] add tests with 'reassoc' FMF; NFC 2017-11-13 17:29:11 +00:00
fast-ReassociateVector.ll Reassociate: add global reassociation algorithm 2017-12-12 19:18:02 +00:00
fast-SubReassociate.ll [Reassociate] add tests with 'reassoc' FMF; NFC 2017-11-13 17:29:11 +00:00
fast-basictest.ll [Reassociate] add tests with 'reassoc' FMF; NFC 2017-11-13 17:29:11 +00:00
fast-fp-commute.ll Reassociate: add global reassociation algorithm 2017-12-12 19:18:02 +00:00
fast-mightymul.ll
fast-multistep.ll [Reassociate] don't name values "tmp"; NFCI 2017-11-09 18:14:24 +00:00
fp-commute.ll
fp-expr.ll [Reassociate] regenerate test checks; NFC 2017-11-09 22:41:39 +00:00
inverses.ll
keep-debug-loc.ll [Reassociate] Do not drop debug location if replacement is missing 2017-08-24 09:05:00 +00:00
looptest.ll [Reassociate] Remove FIXME from looptest.ll (NFC) 2017-10-31 14:06:31 +00:00
mightymul.ll
min_int.ll
mixed-fast-nonfast-fp.ll [Reassociate] add tests with 'reassoc' FMF; NFC 2017-11-13 17:29:11 +00:00
mulfactor.ll [Reassociate] don't name values "tmp"; NFCI 2017-11-09 18:14:24 +00:00
multistep.ll [Reassociate] don't name values "tmp"; NFCI 2017-11-09 18:14:24 +00:00
negation.ll
negation1.ll
no-op.ll
optional-flags.ll
otherops.ll
pr12245.ll
pr21205.ll
pr28367.ll
propagate-flags.ll [Reassociate] regenerate test checks; NFC 2017-11-09 22:41:39 +00:00
reassoc-intermediate-fnegs.ll [Reassociate] don't name values "tmp"; NFCI 2017-11-09 18:14:24 +00:00
reassociate-deadinst.ll
repeats.ll
secondary.ll
shift-factor.ll [Reassociate] don't name values "tmp"; NFCI 2017-11-09 18:14:24 +00:00
shifttest.ll
subtest.ll [Reassociate] auto-generate better checks; NFC 2017-10-13 20:56:35 +00:00
vaarg_movable.ll
wrap-flags.ll
xor_reassoc.ll