[AArch64] Force streaming-compatible codegen when attributes are set.
authorSander de Smalen <sander.desmalen@arm.com>
Tue, 18 Jul 2023 09:41:08 +0000 (09:41 +0000)
committerSander de Smalen <sander.desmalen@arm.com>
Tue, 18 Jul 2023 10:26:00 +0000 (10:26 +0000)
commit08fd44b30063f7a896e76be7f47b79622dba1427
treee593fc5b31ce2cf4f6a3813bd1f4c824e6ff5382
parente9725628bac174a6d216107f2a72fc798d187a6f
[AArch64] Force streaming-compatible codegen when attributes are set.

Before this patch, the only way to generate streaming-compatible code
was to use the `-force-streaming-compatible-sve` flag, but the compiler
should also avoid the use of instructions invalid in streaming mode
when a function has the aarch64_pstate_sm_enabled/compatible attribute.

Reviewed By: paulwalker-arm, david-arm

Differential Revision: https://reviews.llvm.org/D155428
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/test/CodeGen/AArch64/sme-streaming-compatible-interface.ll
llvm/test/Transforms/LoopVectorize/AArch64/streaming-compatible-sve-no-maximize-bandwidth.ll