This is an archive of the discontinued LLVM Phabricator instance.

[DAGCombine] Improve handling of insert_subvector of bitcast values
ClosedPublic

Authored by niravd on Jun 23 2017, 1:45 PM.

Details

Summary

Add variations on existing optimizations that deal with bitcasts in operands. Fixes regressions from X86's post-legalization store merge change.

Diff Detail

Repository
rL LLVM

Event Timeline

niravd created this revision.Jun 23 2017, 1:45 PM
RKSimon added a subscriber: RKSimon.

Waiting on test cases.

craig.topper added inline comments.Jun 26 2017, 10:01 PM
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
15473 ↗(On Diff #103767)

"If we N0"?

15485 ↗(On Diff #103767)

Period on the end of the comment.

15494 ↗(On Diff #103767)

No space between "bit" and "cast" to match the comment above?

It turns out generating the failing case for this nontrivial as it looks like we canot irectly build a insertsubvector /extract subvector node.

The peephole of note is along the lines of:

insertsubvector (insertsubvector undef (extractsubvector (bitcast x) 0) 0) (extract subvector (bitcast x) (subvectorsize)) subvectorsize

becoming :

(bitcast x)

Rather than push on this here, I'm going to flip the dependence with D34559 which will now have a small degradation that this patch will fix.

niravd updated this revision to Diff 104211.Jun 27 2017, 10:35 AM

Comment cleanup

niravd updated this revision to Diff 104325.Jun 27 2017, 5:37 PM
niravd edited the summary of this revision. (Show Details)

Rebase and move after X86 post-legalization store merge to provide test cases.

RKSimon added inline comments.Jul 4 2017, 7:56 AM
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
15525 ↗(On Diff #104325)

N0.getOpcode()

niravd updated this revision to Diff 108518.Jul 27 2017, 1:24 PM
niravd marked 4 inline comments as done.

Resolve comments.

niravd updated this revision to Diff 108938.Jul 31 2017, 9:09 AM

Unfold unrelated commit.

niravd updated this revision to Diff 108940.EditedJul 31 2017, 9:12 AM

Undo unrelated updated.

RKSimon accepted this revision.Aug 1 2017, 5:26 AM

LGTM

This revision is now accepted and ready to land.Aug 1 2017, 5:26 AM

@niravd Anything stopping this going in?

This revision was automatically updated to reflect the committed changes.