Remove legacy 64-bit intrinsic APIs
[platform/upstream/coreclr.git] / src / System.Private.CoreLib / shared / System / Runtime / Intrinsics / X86 / Bmi2.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 using System.Runtime.Intrinsics;
7
8 namespace System.Runtime.Intrinsics.X86
9 {
10     /// <summary>
11     /// This class provides access to Intel BMI2 hardware instructions via intrinsics
12     /// </summary>
13     [CLSCompliant(false)]
14     public abstract class Bmi2
15     {
16         internal Bmi2() { }
17
18         public static bool IsSupported { get { return false; } }
19
20         public abstract class X64
21         {
22             internal X64() { }
23
24             public static bool IsSupported { get { return false; } }
25
26             /// <summary>
27             /// unsigned __int64 _bzhi_u64 (unsigned __int64 a, unsigned int index)
28             ///   BZHI r64a, reg/m32, r64b
29             /// This intrinisc is only available on 64-bit processes
30             /// </summary>
31             public static ulong ZeroHighBits(ulong value, ulong index) { throw new PlatformNotSupportedException(); }
32
33             /// <summary>
34             /// unsigned __int64 _mulx_u64 (unsigned __int64 a, unsigned __int64 b, unsigned __int64* hi)
35             ///   MULX r64a, r64b, reg/m64
36             /// This intrinisc is only available on 64-bit processes
37             /// </summary>
38             public static unsafe ulong MultiplyNoFlags(ulong left, ulong right, ulong* high) { throw new PlatformNotSupportedException(); }
39
40             /// <summary>
41             /// unsigned __int64 _pdep_u64 (unsigned __int64 a, unsigned __int64 mask)
42             ///   PDEP r64a, r64b, reg/m64
43             /// This intrinisc is only available on 64-bit processes
44             /// </summary>
45             public static ulong ParallelBitDeposit(ulong value, ulong mask) { throw new PlatformNotSupportedException(); }
46
47             /// <summary>
48             /// unsigned __int64 _pext_u64 (unsigned __int64 a, unsigned __int64 mask)
49             ///   PEXT r64a, r64b, reg/m64
50             /// This intrinisc is only available on 64-bit processes
51             /// </summary>
52             public static ulong ParallelBitExtract(ulong value, ulong mask) { throw new PlatformNotSupportedException(); }
53         }
54
55         /// <summary>
56         /// unsigned int _bzhi_u32 (unsigned int a, unsigned int index)
57         ///   BZHI r32a, reg/m32, r32b
58         /// </summary>
59         public static uint ZeroHighBits(uint value, uint index) { throw new PlatformNotSupportedException(); }
60
61         /// <summary>
62         /// unsigned int _mulx_u32 (unsigned int a, unsigned int b, unsigned int* hi)
63         ///   MULX r32a, r32b, reg/m32
64         /// </summary>
65         public static unsafe uint MultiplyNoFlags(uint left, uint right, uint* high) { throw new PlatformNotSupportedException(); }
66
67         /// <summary>
68         /// unsigned int _pdep_u32 (unsigned int a, unsigned int mask)
69         ///   PDEP r32a, r32b, reg/m32
70         /// </summary>
71         public static uint ParallelBitDeposit(uint value, uint mask) { throw new PlatformNotSupportedException(); }
72
73         /// <summary>
74         /// unsigned int _pext_u32 (unsigned int a, unsigned int mask)
75         ///   PEXT r32a, r32b, reg/m32
76         /// </summary>
77         public static uint ParallelBitExtract(uint value, uint mask) { throw new PlatformNotSupportedException(); }
78     }
79 }