This is an archive of the discontinued LLVM Phabricator instance.

[IR] Move vector.insert/vector.extract out of experimental namespace
ClosedPublic

Authored by bsmith on Jun 16 2022, 8:18 AM.

Details

Summary

These intrinsics are now fundemental for SVE code generation and have been
present for a year and a half, hence move them out of the experimental
namespace.

Diff Detail

Event Timeline

bsmith created this revision.Jun 16 2022, 8:18 AM
bsmith requested review of this revision.Jun 16 2022, 8:18 AM
Herald added projects: Restricted Project, Restricted Project. · View Herald TranscriptJun 16 2022, 8:18 AM

Maybe a line in the Release Notes of LLVM?

bsmith updated this revision to Diff 437557.Jun 16 2022, 8:47 AM
  • Add info to release notes
Matt added a subscriber: Matt.Jun 16 2022, 4:41 PM
paulwalker-arm accepted this revision.Jun 17 2022, 5:06 AM
This revision is now accepted and ready to land.Jun 17 2022, 5:06 AM

Hey Bradley! Thanks for pinging us about this upcoming change! Something that my colleague @jsetoain mentioned is that these vector insert/extract intrinsics can also work on fixed-length only vectors. However, the documentation and slightly tend to suggest that they should specifically be used to insert/extract fixed-length vectors into/out of scalable one. Perhaps clarifying that they can be used on fixed-length only vectors and adding an example for that case would be very helpful. Thanks!

bsmith updated this revision to Diff 438718.Jun 21 2022, 8:32 AM
  • Clarify LangRef slightly to make it clearer that fixed types can be used
  • Rebase on top of recent test changes
craig.topper added inline comments.Jun 21 2022, 8:37 AM
llvm/docs/LangRef.rst
17290

Now this comment makes it seems like you can't use it on purely scalable vectors.

17327

Same here

jsetoain added inline comments.Jun 21 2022, 10:05 AM
llvm/docs/LangRef.rst
17293–17295

To answer Craig's point, I don't think it was clear before that you could use this intrinsic with purely scalable vectors before, either. I believe the confusion comes from these clarifications. If instead of explicitly stating valid options you exclude the invalid ones, there's no room for ambiguity. Something like:

"Scalable vectors can only be inserted/extracted into/out of other scalable vectors". Examples of all other possible combinations might help to nail down this point.

bsmith updated this revision to Diff 438975.Jun 22 2022, 4:32 AM
  • Further improve clarity on usable types in LangRef
paulwalker-arm accepted this revision.Jun 23 2022, 7:33 AM
paulwalker-arm added inline comments.
llvm/docs/LangRef.rst
17283

For this and the other instances, please remove the % as idx must be a literal (as documented below) but using %idx makes it look like an arbitrary variable can be used.

This revision was landed with ongoing or failed builds.Jun 27 2022, 3:50 AM
This revision was automatically updated to reflect the committed changes.