This is an archive of the discontinued LLVM Phabricator instance.

[SVE][CodeGen] Relax all true isel requirement for predicated operations that have no side effects.
ClosedPublic

Authored by paulwalker-arm on Jan 17 2023, 7:51 AM.

Details

Summary

We have isel patterns to allow predicated operations to emit
unpredicated instructions when the predicate is all true. However,
the predicated operations named #_PRED have no requirement for the
result of the inactive lanes and so when those operations have no
side effects, floating point exceptions for example, we can also
safely emit unpredicated instructions. Doing this allows better
register allocation, instruction scheduling and also enables more
usage of instructions that take immediate operands.

NOTE: This patch does not convert all possible instances but instead focuses on the cases that are testable once D141937 lands.

Depends on D141937

Diff Detail

Event Timeline

paulwalker-arm created this revision.Jan 17 2023, 7:51 AM
Herald added a project: Restricted Project. · View Herald Transcript
paulwalker-arm requested review of this revision.Jan 17 2023, 7:51 AM
Herald added a project: Restricted Project. · View Herald TranscriptJan 17 2023, 7:51 AM
Matt added a subscriber: Matt.Jan 18 2023, 2:07 PM
sdesmalen accepted this revision.Feb 1 2023, 4:08 AM

Nice improvements

This revision is now accepted and ready to land.Feb 1 2023, 4:08 AM
Allen added a subscriber: Allen.Feb 1 2023, 5:57 PM
This revision was landed with ongoing or failed builds.Feb 4 2023, 4:04 AM
This revision was automatically updated to reflect the committed changes.