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.
6 using System.Runtime.Intrinsics;
8 namespace System.Runtime.Intrinsics.X86
11 /// This class provides access to Intel BMI2 hardware instructions via intrinsics
14 public abstract class Bmi2
18 public static bool IsSupported { get { return false; } }
20 public abstract class X64
24 public static bool IsSupported { get { return false; } }
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
31 public static ulong ZeroHighBits(ulong value, ulong index) { throw new PlatformNotSupportedException(); }
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
38 public static unsafe ulong MultiplyNoFlags(ulong left, ulong right, ulong* high) { throw new PlatformNotSupportedException(); }
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
45 public static ulong ParallelBitDeposit(ulong value, ulong mask) { throw new PlatformNotSupportedException(); }
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
52 public static ulong ParallelBitExtract(ulong value, ulong mask) { throw new PlatformNotSupportedException(); }
56 /// unsigned int _bzhi_u32 (unsigned int a, unsigned int index)
57 /// BZHI r32a, reg/m32, r32b
59 public static uint ZeroHighBits(uint value, uint index) { throw new PlatformNotSupportedException(); }
62 /// unsigned int _mulx_u32 (unsigned int a, unsigned int b, unsigned int* hi)
63 /// MULX r32a, r32b, reg/m32
65 public static unsafe uint MultiplyNoFlags(uint left, uint right, uint* high) { throw new PlatformNotSupportedException(); }
68 /// unsigned int _pdep_u32 (unsigned int a, unsigned int mask)
69 /// PDEP r32a, r32b, reg/m32
71 public static uint ParallelBitDeposit(uint value, uint mask) { throw new PlatformNotSupportedException(); }
74 /// unsigned int _pext_u32 (unsigned int a, unsigned int mask)
75 /// PEXT r32a, r32b, reg/m32
77 public static uint ParallelBitExtract(uint value, uint mask) { throw new PlatformNotSupportedException(); }