This is an archive of the discontinued LLVM Phabricator instance.

[mlir][Affine][Vector] Add initial support for 'iter_args' to Affine vectorizer.
ClosedPublic

Authored by dcaballe on Mar 3 2021, 3:16 PM.

Details

Summary

This patch adds support for vectorizing loops with 'iter_args' when those loops
are not a vector dimension. This allows vectorizing outer loops with an inner
'iter_args' loop (e.g., reductions). Vectorizing scenarios where 'iter_args'
loops are vector dimensions would require more work (e.g., analysis,
generating horizontal reduction, etc.) not included in this patch.

Diff Detail

Event Timeline

dcaballe created this revision.Mar 3 2021, 3:16 PM
dcaballe requested review of this revision.Mar 3 2021, 3:16 PM
Herald added a project: Restricted Project. · View Herald TranscriptMar 3 2021, 3:16 PM
bondhugula resigned from this revision.Mar 7 2021, 10:47 PM
aartbik added inline comments.Mar 8 2021, 5:41 PM
mlir/lib/Dialect/Affine/Transforms/SuperVectorize.cpp
624

The second sentence reads almost like a dup of the first.

728

same

1042

add TODO: for this

mlir/test/Dialect/Affine/SuperVectorize/vectorize_1d.mlir
518

(1) space after // before CHECK
(2 can we move this to L505

(or move the CHECK-LABEL here)

I know that was have many different styles throughout, but I have a slight preference on keeping all CHECKs together when this form is used

dcaballe updated this revision to Diff 329217.Mar 8 2021, 10:20 PM
dcaballe marked 2 inline comments as done.

Addressed feedback. Thanks!

nicolasvasilache accepted this revision.Mar 9 2021, 2:50 AM
This revision is now accepted and ready to land.Mar 9 2021, 2:50 AM

Thanks! I'll commit this tomorrow if no more comments.

This revision was landed with ongoing or failed builds.Mar 10 2021, 11:02 AM
This revision was automatically updated to reflect the committed changes.