From 8775dfc9e2a11ec37766f2995f365bb72376ed88 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Fri, 26 Jan 2024 14:19:53 -0800 Subject: [PATCH] Update proposed/swift-interop.md --- proposed/swift-interop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposed/swift-interop.md b/proposed/swift-interop.md index 507af5377..29b00ee97 100644 --- a/proposed/swift-interop.md +++ b/proposed/swift-interop.md @@ -124,7 +124,7 @@ The projection tooling will provide blittable representations of any projected f ##### SIMD Types -We will pass the `System.Runtime.Intrinsics.VectorX` types in SIMD registers as we do with the managed calling convention. We will treat the `Vector2/3/4` types as non-SIMD types as we will not project any Swift SIMD types to these types (see the SIMD Types section in the projection design). +We will pass the `System.Runtime.Intrinsics.VectorX` types in SIMD registers in the same way the default unmanaged calling convention specifies. We will treat the `Vector2/3/4` types as non-SIMD types as we will not project any Swift SIMD types to these types (see the SIMD Types section in the projection design). CoreCLR and NativeAOT currently block the `VectorX` types from P/Invokes as this behavior is currently not well-supported by RyuJIT. As the target libraries for .NET 9 do not use the Swift `SIMDX` types, we can defer SIMD support until a future release of Swift interop. Unlike the existing P/Invoke blocking behavior however, we should block these types in the JIT if possible as the existing `VectorX` blocking for P/Invokes is not robust.