[PATCH] D135950: [AArch64][SME] Disable (SLP|Loop)Vectorizer when function may be executed in streaming mode.

Sander de Smalen via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 18 10:04:05 PDT 2022


sdesmalen added a comment.

In D135950#3862297 <https://reviews.llvm.org/D135950#3862297>, @paulwalker-arm wrote:

> Sorry @sdesmalen, I must keep reminding myself that streaming compatible is a subset of streaming SVE mode :)  What about representing each separately? For example `IsStreamingSVECompatible` and `InStreamingSVEMode`. The latter likely has no current uses? but will allow that difference between "streaming compatible" and "streaming SVE mode" to be queried if/when necessary.

In that case we'd have the possibility of representing an invalid combination (i.e. a function cannot be both `StreamingCompatible` and `StreamingSVEMode`), so then an enum would be a better choice. But since there is (currently) no need for this, is `IsStreamingSVEDisabled` not better at this point? It makes little sense to add something we don't need and can easily extend later.



================
Comment at: llvm/test/Transforms/LoopVectorize/AArch64/sme-vectorize.ll:83
+
+define void @test_slp(ptr noalias %dst, ptr readonly %src, i32 %N) #0 {
+; CHECK-LABEL: @test_slp
----------------
dmgreen wrote:
> Are you sure this tests anything in SLP?
I believe so, the hints passed to LoopVectorize sets the vectorize-width to 1 and the interleave-count to 4 using the attributes. We end up with a fixed-width vector code, so this must be due to SLP.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D135950/new/

https://reviews.llvm.org/D135950



More information about the llvm-commits mailing list