This is an archive of the discontinued LLVM Phabricator instance.

[X86][AVX] splitIntVSETCC - handle separate (canonicalized) SETCC operands
ClosedPublic

Authored by RKSimon on Mar 24 2021, 5:31 AM.

Details

Summary

LowerVSETCC calls splitIntVSETCC after canonicalizing certain patterns, in particular (X & CPow2 != 0) -> (X & CPow2 == CPow2).

Unfortunately if we're splitting for AVX1/non-AVX512BW cases, we lose these canonicalizations as we call the split with the original SetCC node, and when the split nodes are later lowered in LowerVSETCC the patterns are lost behind extract_subvector etc. But if we pass the canonicalized operands for splitting we retain the optimizations.

Diff Detail

Event Timeline

RKSimon created this revision.Mar 24 2021, 5:31 AM
RKSimon requested review of this revision.Mar 24 2021, 5:31 AM
Herald added a project: Restricted Project. · View Herald TranscriptMar 24 2021, 5:31 AM
This revision is now accepted and ready to land.Mar 24 2021, 5:05 PM
This revision was landed with ongoing or failed builds.Mar 25 2021, 3:19 AM
This revision was automatically updated to reflect the committed changes.