[AArch64][SME] Disable (SLP|Loop)Vectorizer when function may be executed in streamin...
authorSander de Smalen <sander.desmalen@arm.com>
Wed, 19 Oct 2022 14:14:00 +0000 (14:14 +0000)
committerSander de Smalen <sander.desmalen@arm.com>
Wed, 19 Oct 2022 16:42:20 +0000 (16:42 +0000)
commit137459aff6ec2c5f57f978c8feb689fcc8010b62
treeff9fe2c27eac1343defcc9e3a92f1f8c65b8eeda
parent9bcac22be559842cf488db469964fce37c2035a3
[AArch64][SME] Disable (SLP|Loop)Vectorizer when function may be executed in streaming mode.

When the SME attributes tell that a function is or may be executed in Streaming
SVE mode, we currently need to be conservative and disable _any_ vectorization
(fixed or scalable) because the code-generator does not yet support generating
streaming-compatible code.

Scalable auto-vec will be gradually enabled in the future when we have
confidence that the loop-vectorizer won't use any SVE or NEON instructions
that are illegal in Streaming SVE mode.

Reviewed By: paulwalker-arm

Differential Revision: https://reviews.llvm.org/D135950
llvm/lib/Target/AArch64/AArch64Subtarget.cpp
llvm/lib/Target/AArch64/AArch64Subtarget.h
llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h
llvm/test/Transforms/LoopVectorize/AArch64/sme-vectorize.ll [new file with mode: 0644]