From a6aac1f627df54c0bb71afa7f287ba4b2a5b9440 Mon Sep 17 00:00:00 2001 From: Tanner Gooding Date: Fri, 4 Sep 2020 11:40:52 -0700 Subject: [PATCH] Marking Matrix3x2, Matrix4x4, Plane, and Quaternion as Intrinsic (#41829) --- .../System.Private.CoreLib/src/System/Numerics/Matrix3x2.cs | 2 ++ .../System.Private.CoreLib/src/System/Numerics/Matrix4x4.cs | 2 +- .../System.Private.CoreLib/src/System/Numerics/Plane.cs | 1 + .../System.Private.CoreLib/src/System/Numerics/Quaternion.cs | 2 ++ 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.cs b/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.cs index 5f65ddd3fd00af..a70b3d776c2a1b 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.cs @@ -2,12 +2,14 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Globalization; +using System.Runtime.CompilerServices; namespace System.Numerics { /// /// A structure encapsulating a 3x2 matrix. /// + [Intrinsic] public struct Matrix3x2 : IEquatable { private const float RotationEpsilon = 0.001f * MathF.PI / 180f; // 0.1% of a degree diff --git a/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.cs b/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.cs index d009951583d8e6..cfd16ad73e7b59 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.cs @@ -14,7 +14,7 @@ namespace System.Numerics /// /// A structure encapsulating a 4x4 matrix. /// - [StructLayout(LayoutKind.Sequential)] + [Intrinsic] public struct Matrix4x4 : IEquatable { private const float BillboardEpsilon = 1e-4f; diff --git a/src/libraries/System.Private.CoreLib/src/System/Numerics/Plane.cs b/src/libraries/System.Private.CoreLib/src/System/Numerics/Plane.cs index f03d5698efe896..631f6da2cef89a 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Numerics/Plane.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Numerics/Plane.cs @@ -9,6 +9,7 @@ namespace System.Numerics /// /// A structure encapsulating a 3D Plane /// + [Intrinsic] public struct Plane : IEquatable { private const float NormalizeEpsilon = 1.192092896e-07f; // smallest such that 1.0+NormalizeEpsilon != 1.0 diff --git a/src/libraries/System.Private.CoreLib/src/System/Numerics/Quaternion.cs b/src/libraries/System.Private.CoreLib/src/System/Numerics/Quaternion.cs index 34e06ac7311ca3..b7a5bc39765506 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Numerics/Quaternion.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Numerics/Quaternion.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Globalization; +using System.Runtime.CompilerServices; namespace System.Numerics { @@ -9,6 +10,7 @@ namespace System.Numerics /// A structure encapsulating a four-dimensional vector (x,y,z,w), /// which is used to efficiently rotate an object about the (x,y,z) vector by the angle theta, where w = cos(theta/2). /// + [Intrinsic] public struct Quaternion : IEquatable { private const float SlerpEpsilon = 1e-6f;