summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Strehovský <MichalStrehovsky@users.noreply.github.com>2019-01-18 12:01:03 +0100
committerStephen Toub <stoub@microsoft.com>2019-01-18 11:47:21 -0500
commitf1fe9ff1ecb257d260d83ab30be112f77273c95d (patch)
tree06e6940ef15054d246343968adb5879c386b60ec
parent7fb4ac5629230302800991444f960feefc6da38c (diff)
downloadcoreclr-f1fe9ff1ecb257d260d83ab30be112f77273c95d.tar.gz
coreclr-f1fe9ff1ecb257d260d83ab30be112f77273c95d.tar.bz2
coreclr-f1fe9ff1ecb257d260d83ab30be112f77273c95d.zip
Enable detection of HW intrinsics (dotnet/corert#6836)
I took the liberty of marking the types containing the hardware intrinsics as [Intrinsic] to avoid doing a name check on everything in the system module. It feels like we should take advantage of this attribute in CoreCLR too. This doesn't actually enable the support because RyuJIT unconditionally disables HW intrinsics for prejit (both CoreRT and CPAOT are considered prejit). We might want to do something about this on the RyuJIT side to address that (for CPAOT, to be able to pregenerate best code possible ahead of time, assuming a fixed ISA; and for CoreRT without JIT, where the concerns about AVX-SSE penalty don't apply). See conversation in dotnet/coreclr#21603 Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Aes.PlatformNotSupported.cs4
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Aes.cs5
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Base.PlatformNotSupported.cs5
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Base.cs6
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha1.PlatformNotSupported.cs4
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha1.cs5
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha256.PlatformNotSupported.cs4
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha256.cs5
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Simd.PlatformNotSupported.cs5
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Simd.cs6
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Aes.cs2
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx.cs2
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx2.cs2
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Bmi1.cs3
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Bmi2.cs3
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Fma.cs2
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Lzcnt.cs3
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Pclmulqdq.cs2
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Popcnt.cs3
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse.cs2
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse2.cs2
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse3.cs2
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse41.cs3
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse42.cs3
-rw-r--r--src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Ssse3.cs2
25 files changed, 81 insertions, 4 deletions
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Aes.PlatformNotSupported.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Aes.PlatformNotSupported.cs
index 7451b4be8b..1f19ecea9e 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Aes.PlatformNotSupported.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Aes.PlatformNotSupported.cs
@@ -1,3 +1,7 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Aes.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Aes.cs
index 8a04478c10..c4f2dc078f 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Aes.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Aes.cs
@@ -1,3 +1,7 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
@@ -9,6 +13,7 @@ namespace System.Runtime.Intrinsics.Arm.Arm64
/// Arm64 CPU indicate support for this feature by setting
/// ID_AA64ISAR0_EL1.AES is 1 or better
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public static class Aes
{
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Base.PlatformNotSupported.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Base.PlatformNotSupported.cs
index 0a13828ee0..95c32527af 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Base.PlatformNotSupported.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Base.PlatformNotSupported.cs
@@ -1,7 +1,10 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
-
namespace System.Runtime.Intrinsics.Arm.Arm64
{
/// <summary>
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Base.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Base.cs
index a5fc8e5ddb..c993c411d5 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Base.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Base.cs
@@ -1,7 +1,10 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
-
namespace System.Runtime.Intrinsics.Arm.Arm64
{
/// <summary>
@@ -9,6 +12,7 @@ namespace System.Runtime.Intrinsics.Arm.Arm64
///
/// These intrinsics are supported by all Arm64 CPUs
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public static class Base
{
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha1.PlatformNotSupported.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha1.PlatformNotSupported.cs
index ece7e4473a..970a4da3e1 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha1.PlatformNotSupported.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha1.PlatformNotSupported.cs
@@ -1,3 +1,7 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha1.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha1.cs
index fe90478b82..a6c1901142 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha1.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha1.cs
@@ -1,3 +1,7 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
@@ -9,6 +13,7 @@ namespace System.Runtime.Intrinsics.Arm.Arm64
/// Arm64 CPU indicate support for this feature by setting
/// ID_AA64ISAR0_EL1.SHA1 is 1 or better
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public static class Sha1
{
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha256.PlatformNotSupported.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha256.PlatformNotSupported.cs
index 89d5f72cb8..7cb6fd7f3b 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha256.PlatformNotSupported.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha256.PlatformNotSupported.cs
@@ -1,3 +1,7 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha256.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha256.cs
index bebacbcd98..4b4b16dff5 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha256.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Sha256.cs
@@ -1,3 +1,7 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
@@ -9,6 +13,7 @@ namespace System.Runtime.Intrinsics.Arm.Arm64
/// Arm64 CPU indicate support for this feature by setting
/// ID_AA64ISAR0_EL1.SHA2 is 1 or better
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public static class Sha256
{
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Simd.PlatformNotSupported.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Simd.PlatformNotSupported.cs
index 35d1fb5cfa..9beb3aa2b7 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Simd.PlatformNotSupported.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Simd.PlatformNotSupported.cs
@@ -1,7 +1,10 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
-
namespace System.Runtime.Intrinsics.Arm.Arm64
{
/// <summary>
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Simd.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Simd.cs
index c10c3ffae7..c71daf162d 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Simd.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/Arm/Arm64/Simd.cs
@@ -1,7 +1,10 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
-
namespace System.Runtime.Intrinsics.Arm.Arm64
{
/// <summary>
@@ -10,6 +13,7 @@ namespace System.Runtime.Intrinsics.Arm.Arm64
/// Arm64 CPU indicate support for this feature by setting
/// ID_AA64PFR0_EL1.AdvSIMD == 0 or better.
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public static class Simd
{
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Aes.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Aes.cs
index 412a0c2f14..45c028c358 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Aes.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Aes.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
+using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
namespace System.Runtime.Intrinsics.X86
@@ -10,6 +11,7 @@ namespace System.Runtime.Intrinsics.X86
/// <summary>
/// This class provides access to Intel AES hardware instructions via intrinsics
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public abstract class Aes : Sse2
{
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx.cs
index e1bc5e6d81..02c31d05ce 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
+using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
using Internal.Runtime.CompilerServices;
@@ -11,6 +12,7 @@ namespace System.Runtime.Intrinsics.X86
/// <summary>
/// This class provides access to Intel AVX hardware instructions via intrinsics
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public abstract class Avx : Sse42
{
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx2.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx2.cs
index 42139c6a47..4ab81e788b 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx2.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Avx2.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
+using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
namespace System.Runtime.Intrinsics.X86
@@ -10,6 +11,7 @@ namespace System.Runtime.Intrinsics.X86
/// <summary>
/// This class provides access to Intel AVX2 hardware instructions via intrinsics
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public abstract class Avx2 : Avx
{
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Bmi1.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Bmi1.cs
index cbcc474688..496b8aede5 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Bmi1.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Bmi1.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
+using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
namespace System.Runtime.Intrinsics.X86
@@ -10,6 +11,7 @@ namespace System.Runtime.Intrinsics.X86
/// <summary>
/// This class provides access to Intel BMI1 hardware instructions via intrinsics
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public abstract class Bmi1
{
@@ -17,6 +19,7 @@ namespace System.Runtime.Intrinsics.X86
public static bool IsSupported { get => IsSupported; }
+ [Intrinsic]
public abstract class X64
{
internal X64() { }
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Bmi2.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Bmi2.cs
index b701fd093f..9b61441dda 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Bmi2.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Bmi2.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
+using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
namespace System.Runtime.Intrinsics.X86
@@ -10,6 +11,7 @@ namespace System.Runtime.Intrinsics.X86
/// <summary>
/// This class provides access to Intel BMI2 hardware instructions via intrinsics
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public abstract class Bmi2
{
@@ -17,6 +19,7 @@ namespace System.Runtime.Intrinsics.X86
public static bool IsSupported { get => IsSupported; }
+ [Intrinsic]
public abstract class X64
{
internal X64() { }
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Fma.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Fma.cs
index 88cb8d0cbe..ed01805de7 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Fma.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Fma.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
+using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
namespace System.Runtime.Intrinsics.X86
@@ -10,6 +11,7 @@ namespace System.Runtime.Intrinsics.X86
/// <summary>
/// This class provides access to Intel FMA hardware instructions via intrinsics
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public abstract class Fma : Avx
{
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Lzcnt.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Lzcnt.cs
index b648ee8319..ff1576e645 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Lzcnt.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Lzcnt.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
+using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
namespace System.Runtime.Intrinsics.X86
@@ -10,6 +11,7 @@ namespace System.Runtime.Intrinsics.X86
/// <summary>
/// This class provides access to Intel LZCNT hardware instructions via intrinsics
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public abstract class Lzcnt
{
@@ -17,6 +19,7 @@ namespace System.Runtime.Intrinsics.X86
public static bool IsSupported { get => IsSupported; }
+ [Intrinsic]
public abstract class X64
{
internal X64() { }
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Pclmulqdq.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Pclmulqdq.cs
index c108e65f08..332934befc 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Pclmulqdq.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Pclmulqdq.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
+using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
namespace System.Runtime.Intrinsics.X86
@@ -10,6 +11,7 @@ namespace System.Runtime.Intrinsics.X86
/// <summary>
/// This class provides access to Intel PCLMULQDQ hardware instructions via intrinsics
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public abstract class Pclmulqdq : Sse2
{
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Popcnt.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Popcnt.cs
index 60d2899bcd..c262e99671 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Popcnt.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Popcnt.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
+using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
namespace System.Runtime.Intrinsics.X86
@@ -10,6 +11,7 @@ namespace System.Runtime.Intrinsics.X86
/// <summary>
/// This class provides access to Intel POPCNT hardware instructions via intrinsics
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public abstract class Popcnt : Sse42
{
@@ -17,6 +19,7 @@ namespace System.Runtime.Intrinsics.X86
public new static bool IsSupported { get => IsSupported; }
+ [Intrinsic]
public new abstract class X64 : Sse41.X64
{
internal X64() { }
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse.cs
index b11718e5d9..7c3e27023b 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse.cs
@@ -11,6 +11,7 @@ namespace System.Runtime.Intrinsics.X86
/// <summary>
/// This class provides access to Intel SSE hardware instructions via intrinsics
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public abstract class Sse
{
@@ -18,6 +19,7 @@ namespace System.Runtime.Intrinsics.X86
public static bool IsSupported { get => IsSupported; }
+ [Intrinsic]
public abstract class X64
{
internal X64() { }
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse2.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse2.cs
index 452f2905c0..ea6e3245f9 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse2.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse2.cs
@@ -11,6 +11,7 @@ namespace System.Runtime.Intrinsics.X86
/// <summary>
/// This class provides access to Intel SSE2 hardware instructions via intrinsics
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public abstract class Sse2 : Sse
{
@@ -18,6 +19,7 @@ namespace System.Runtime.Intrinsics.X86
public new static bool IsSupported { get => IsSupported; }
+ [Intrinsic]
public new abstract class X64 : Sse.X64
{
internal X64() { }
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse3.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse3.cs
index 7c0eaad051..9b971b83b3 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse3.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse3.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
+using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
namespace System.Runtime.Intrinsics.X86
@@ -10,6 +11,7 @@ namespace System.Runtime.Intrinsics.X86
/// <summary>
/// This class provides access to Intel SSE3 hardware instructions via intrinsics
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public abstract class Sse3 : Sse2
{
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse41.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse41.cs
index c63dac88dc..721037b3f1 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse41.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse41.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
+using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
namespace System.Runtime.Intrinsics.X86
@@ -10,6 +11,7 @@ namespace System.Runtime.Intrinsics.X86
/// <summary>
/// This class provides access to Intel SSE4.1 hardware instructions via intrinsics
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public abstract class Sse41 : Ssse3
{
@@ -17,6 +19,7 @@ namespace System.Runtime.Intrinsics.X86
public new static bool IsSupported { get => IsSupported; }
+ [Intrinsic]
public new abstract class X64 : Sse2.X64
{
internal X64() { }
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse42.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse42.cs
index e997653e90..9db76c8916 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse42.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Sse42.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
+using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
namespace System.Runtime.Intrinsics.X86
@@ -10,6 +11,7 @@ namespace System.Runtime.Intrinsics.X86
/// <summary>
/// This class provides access to Intel SSE4.2 hardware instructions via intrinsics
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public abstract class Sse42 : Sse41
{
@@ -17,6 +19,7 @@ namespace System.Runtime.Intrinsics.X86
public new static bool IsSupported { get => IsSupported; }
+ [Intrinsic]
public new abstract class X64 : Sse41.X64
{
internal X64() { }
diff --git a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Ssse3.cs b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Ssse3.cs
index d7356309c5..0cb59a2115 100644
--- a/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Ssse3.cs
+++ b/src/System.Private.CoreLib/shared/System/Runtime/Intrinsics/X86/Ssse3.cs
@@ -3,6 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
+using System.Runtime.CompilerServices;
using System.Runtime.Intrinsics;
namespace System.Runtime.Intrinsics.X86
@@ -10,6 +11,7 @@ namespace System.Runtime.Intrinsics.X86
/// <summary>
/// This class provides access to Intel SSSE3 hardware instructions via intrinsics
/// </summary>
+ [Intrinsic]
[CLSCompliant(false)]
public abstract class Ssse3 : Sse3
{