This is an archive of the discontinued LLVM Phabricator instance.

[RISCV] Expand scalable-vector truncstores and extloads
ClosedPublic

Authored by frasercrmck on Mar 31 2021, 5:02 AM.

Details

Summary

Caught in internal testing, these operations are assumed legal by
default, even for scalable vector types. Expand them back into separate
truncations and stores, or loads and extensions.

Also add explicit fixed-length vector tests for these operations, even
though they should have been correct already.

Diff Detail

Event Timeline

frasercrmck created this revision.Mar 31 2021, 5:02 AM
frasercrmck requested review of this revision.Mar 31 2021, 5:02 AM
Herald added a project: Restricted Project. · View Herald TranscriptMar 31 2021, 5:02 AM
  • rebase to hopefully fix the buildbots
craig.topper added inline comments.Apr 1 2021, 4:53 PM
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
508

You might be better off using integer_scalable_vector_valuetypes(). We need to block mask vectors too.

566

LoadExt for integer fixed vectors is missing.

578

Is the explicit makeArrayRef needed?

  • expand operations also for bool and fixed-length types
  • remove makearrayref
frasercrmck marked 3 inline comments as done.Apr 5 2021, 3:05 AM
frasercrmck added inline comments.
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
508

Good catch, thanks.

566

Done.

578

Turns out it's not, thanks.

This revision is now accepted and ready to land.Apr 5 2021, 8:49 AM
This revision was automatically updated to reflect the committed changes.
frasercrmck marked 3 inline comments as done.