This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Turn vecreduce_add(add(x, y)) into vecreduce(x) + vecreduce(y)
ClosedPublic

Authored by dmgreen on Jul 22 2021, 2:07 AM.

Details

Summary

Under MVE we can use VADDV/VADDVA's to perform integer add reductions, so it can be beneficial to use more reductions than summing subvectors and reducing once. Especially for VMLAV/VMLAVA the mul can be incorporated into the reduction, producing less instructions.

Some of the test cases currently get larger due to extra integer adds, but will be improved in a followup patch.

Diff Detail

Event Timeline

dmgreen created this revision.Jul 22 2021, 2:07 AM
dmgreen requested review of this revision.Jul 22 2021, 2:07 AM
Herald added a project: Restricted Project. · View Herald TranscriptJul 22 2021, 2:07 AM
NickGuy accepted this revision.Jul 26 2021, 8:35 AM

LGTM

This revision is now accepted and ready to land.Jul 26 2021, 8:35 AM
This revision was landed with ongoing or failed builds.Jul 30 2021, 2:11 AM
This revision was automatically updated to reflect the committed changes.