This is an archive of the discontinued LLVM Phabricator instance.

[SVE] Bail out of constructDup(...) optimization for fixed width vectors > 128 bits
AbandonedPublic

Authored by cameron.mcinally on Feb 8 2022, 2:10 PM.

Details

Summary

The getScaledOffsetDup optimization in constructDup(...) expects the EXTRACT_VECTOR's source to be a NEON sized vector. Since the DUPLANE* patterns won't match a larger fixed width vector, bail out of that optimization early when a large vector is seen.

Two notes on the test case:

  1. I bumped the -aarch64-sve-vector-bits-min option to 512b so that the new DUPLANE* test can live in this file. I've confirmed that the 2 existing test cases also show their original failure at this new width, so there is no change in coverage.
  1. The new test case generates a ton of instructions. I wasn't sure if we should continue using the update_llc_test_checks.py script to generate the CHECK lines or not. Or maybe something else? Any preferences?

Diff Detail

Event Timeline

cameron.mcinally requested review of this revision.Feb 8 2022, 2:10 PM
Herald added a project: Restricted Project. · View Herald TranscriptFeb 8 2022, 2:10 PM

Hi @cameron.mcinally, this looks very similar to D119252 I think.

paulwalker-arm added a subscriber: bsmith.EditedFeb 9 2022, 2:03 AM

Yep this a duplicate of D119252. Are you happy for @bsmith to run with it?

Matt added a comment.Feb 9 2022, 10:41 AM

Thank you, Cameron (not a noise at all from my perspective--it's actually helped me in a related issue I've encountered)!