Remove legacy 64-bit intrinsic APIs
[platform/upstream/coreclr.git] / src / System.Private.CoreLib / shared / System / Runtime / Intrinsics / X86 / Popcnt.PlatformNotSupported.cs
1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4
5 using System;
6
7 namespace System.Runtime.Intrinsics.X86
8 {
9     /// <summary>
10     /// This class provides access to Intel POPCNT hardware instructions via intrinsics
11     /// </summary>
12     [CLSCompliant(false)]
13     public abstract class Popcnt : Sse42
14     {
15         internal Popcnt() { }
16
17         public new static bool IsSupported { get { return false; } }
18
19         public new abstract class X64 : Sse41.X64
20         {
21             internal X64() { }
22             public new static bool IsSupported { get { return false; } }
23             /// <summary>
24             /// __int64 _mm_popcnt_u64 (unsigned __int64 a)
25             ///   POPCNT reg64, reg/m64
26             /// This intrinisc is only available on 64-bit processes
27             /// </summary>
28             public static ulong PopCount(ulong value) { throw new PlatformNotSupportedException(); }
29         }
30
31         /// <summary>
32         /// int _mm_popcnt_u32 (unsigned int a)
33         ///   POPCNT reg, reg/m32
34         /// </summary>
35         public static uint PopCount(uint value) { throw new PlatformNotSupportedException(); }
36     }
37 }