HomePhabricator

[DivRemPairs] Recommit: Handling for expanded-form rem - recomposition (PR42673)

Description

[DivRemPairs] Recommit: Handling for expanded-form rem - recomposition (PR42673)

Summary:
While -div-rem-pairs pass can decompose rem in div+rem pair when div-rem pair
is unsupported by target, nothing performs the opposite fold.
We can't do that in InstCombine or DAGCombine since neither of those has access to TTI.
So it makes most sense to teach -div-rem-pairs about it.

If we matched rem in expanded form, we know we will be able to place div-rem pair
next to each other so we won't regress the situation.
Also, we shouldn't decompose rem if we matched already-decomposed form.
This is surprisingly straight-forward otherwise.

The original patch was committed in rL367288 but was reverted in rL367289
because it exposed pre-existing RAUW issues in internal data structures
of the pass; those now have been addressed in a previous patch.

https://bugs.llvm.org/show_bug.cgi?id=42673

Reviewers: spatel, RKSimon, efriedma, ZaMaZaN4iK, bogner

Reviewed By: bogner

Subscribers: bogner, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D65298

Details

Committed
lebedevriJul 31 2019, 5:06 AM
Reviewer
bogner
Differential Revision
D65298: [DivRemPairs] Handling for expanded-form rem - recomposition (PR42673)
Parents
rL367418: Fix issues with inferior stdout coming out of order
Branches
Unknown
Tags
Unknown