[clang] [AArch64] Add option -msve-streaming-vector-bits= . (PR #144611)
Sander de Smalen via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 23 03:35:04 PDT 2025
================
@@ -820,16 +820,23 @@ AArch64TargetInfo::getTargetBuiltins() const {
std::optional<std::pair<unsigned, unsigned>>
AArch64TargetInfo::getVScaleRange(const LangOptions &LangOpts,
- bool IsArmStreamingFunction,
+ ArmStreamingKind IsArmStreamingFunction,
llvm::StringMap<bool> *FeatureMap) const {
- if (LangOpts.VScaleMin || LangOpts.VScaleMax)
+ if (IsArmStreamingFunction == ArmStreamingKind::NotStreaming &&
+ (LangOpts.VScaleMin || LangOpts.VScaleMax))
return std::pair<unsigned, unsigned>(
LangOpts.VScaleMin ? LangOpts.VScaleMin : 1, LangOpts.VScaleMax);
+ if (IsArmStreamingFunction == ArmStreamingKind::Streaming &&
+ (LangOpts.VScaleStreamingMin || LangOpts.VScaleStreamingMax))
+ return std::pair<unsigned, unsigned>(
+ LangOpts.VScaleStreamingMin ? LangOpts.VScaleStreamingMin : 1,
+ LangOpts.VScaleStreamingMax);
+
----------------
sdesmalen-arm wrote:
When compiling a `__arm_streaming_compatible` function with
`-march=armv9-a+sme -Xclang -mvscale-min=2 -Xclang -mvscale-streaming-min=2 -Xclang -mvscale-max=4 -Xclang -mvscale-streaming-max=4`, it sets the vscale_range to `vscale_range(1, 16)`. I think it should set this to `vscale_range(2, 4)` instead.
https://github.com/llvm/llvm-project/pull/144611
More information about the cfe-commits
mailing list