[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