/// This class provides access to Intel AES hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Aes
+ public abstract class Aes : Sse2
{
- public static bool IsSupported { get { return false; } }
-
+ internal Aes() { }
+
+ public new static bool IsSupported { get { return false; } }
+
/// <summary>
/// __m128i _mm_aesdec_si128 (__m128i a, __m128i RoundKey)
/// AESDEC xmm, xmm/m128
/// This class provides access to Intel AES hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Aes
+ public abstract class Aes : Sse2
{
- public static bool IsSupported { get => IsSupported; }
-
+ internal Aes() { }
+
+ public new static bool IsSupported { get => IsSupported; }
+
/// <summary>
/// __m128i _mm_aesdec_si128 (__m128i a, __m128i RoundKey)
/// AESDEC xmm, xmm/m128
/// This class provides access to Intel AVX hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Avx
+ public abstract class Avx : Sse42
{
- public static bool IsSupported { get { return false; } }
-
+ internal Avx() { }
+
+ public new static bool IsSupported { get { return false; } }
+
/// <summary>
/// __m256 _mm256_add_ps (__m256 a, __m256 b)
/// VADDPS ymm, ymm, ymm/m256
/// This class provides access to Intel AVX hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Avx
+ public abstract class Avx : Sse42
{
- public static bool IsSupported { get => IsSupported; }
+ internal Avx() { }
+
+ public new static bool IsSupported { get => IsSupported; }
/// <summary>
/// __m256 _mm256_add_ps (__m256 a, __m256 b)
return LoadVector256(buffer);
}
}
-
+
/// <summary>
/// __m256i _mm256_insert_epi16 (__m256i a, __int16 i, const int index)
/// HELPER
return LoadVector256(buffer);
}
}
-
+
/// <summary>
/// __m256i _mm256_insert_epi32 (__m256i a, __int32 i, const int index)
/// HELPER
/// This class provides access to Intel AVX2 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Avx2
+ public abstract class Avx2 : Avx
{
- public static bool IsSupported { get { return false; } }
+ internal Avx2() { }
+
+ public new static bool IsSupported { get { return false; } }
/// <summary>
/// __m256i _mm256_abs_epi8 (__m256i a)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(sbyte* address, Vector256<sbyte> value, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe void ExtractVector128(sbyte* address, Vector256<sbyte> value, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(byte* address, Vector256<byte> value, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe void ExtractVector128(byte* address, Vector256<byte> value, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(short* address, Vector256<short> value, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe void ExtractVector128(short* address, Vector256<short> value, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(ushort* address, Vector256<ushort> value, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe void ExtractVector128(ushort* address, Vector256<ushort> value, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(int* address, Vector256<int> value, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe void ExtractVector128(int* address, Vector256<int> value, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(uint* address, Vector256<uint> value, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe void ExtractVector128(uint* address, Vector256<uint> value, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(long* address, Vector256<long> value, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe void ExtractVector128(long* address, Vector256<long> value, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(ulong* address, Vector256<ulong> value, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe void ExtractVector128(ulong* address, Vector256<ulong> value, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m128i _mm_i32gather_epi32 (int const* base_addr, __m128i vindex, const int scale)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, xm128, imm8
/// </summary>
- public static unsafe Vector256<sbyte> InsertVector128(Vector256<sbyte> value, sbyte* address, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe Vector256<sbyte> InsertVector128(Vector256<sbyte> value, sbyte* address, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, m128, imm8
/// </summary>
- public static unsafe Vector256<byte> InsertVector128(Vector256<byte> value, byte* address, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe Vector256<byte> InsertVector128(Vector256<byte> value, byte* address, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, m128, imm8
/// </summary>
- public static unsafe Vector256<short> InsertVector128(Vector256<short> value, short* address, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe Vector256<short> InsertVector128(Vector256<short> value, short* address, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, m128, imm8
/// </summary>
- public static unsafe Vector256<ushort> InsertVector128(Vector256<ushort> value, ushort* address, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe Vector256<ushort> InsertVector128(Vector256<ushort> value, ushort* address, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, m128, imm8
/// </summary>
- public static unsafe Vector256<int> InsertVector128(Vector256<int> value, int* address, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe Vector256<int> InsertVector128(Vector256<int> value, int* address, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, m128, imm8
/// </summary>
- public static unsafe Vector256<uint> InsertVector128(Vector256<uint> value, uint* address, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe Vector256<uint> InsertVector128(Vector256<uint> value, uint* address, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, m128, imm8
/// </summary>
- public static unsafe Vector256<long> InsertVector128(Vector256<long> value, long* address, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe Vector256<long> InsertVector128(Vector256<long> value, long* address, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, m128, imm8
/// </summary>
- public static unsafe Vector256<ulong> InsertVector128(Vector256<ulong> value, ulong* address, byte index) { throw new PlatformNotSupportedException(); }
+ public new static unsafe Vector256<ulong> InsertVector128(Vector256<ulong> value, ulong* address, byte index) { throw new PlatformNotSupportedException(); }
/// <summary>
/// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr)
/// This class provides access to Intel AVX2 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Avx2
+ public abstract class Avx2 : Avx
{
- public static bool IsSupported { get => IsSupported; }
+ internal Avx2() { }
+
+ public new static bool IsSupported { get => IsSupported; }
/// <summary>
/// __m256i _mm256_abs_epi8 (__m256i a)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(sbyte* address, Vector256<sbyte> value, byte index) => ExtractVector128(address, value, index);
+ public new static unsafe void ExtractVector128(sbyte* address, Vector256<sbyte> value, byte index) => ExtractVector128(address, value, index);
/// <summary>
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(byte* address, Vector256<byte> value, byte index) => ExtractVector128(address, value, index);
+ public new static unsafe void ExtractVector128(byte* address, Vector256<byte> value, byte index) => ExtractVector128(address, value, index);
/// <summary>
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(short* address, Vector256<short> value, byte index) => ExtractVector128(address, value, index);
+ public new static unsafe void ExtractVector128(short* address, Vector256<short> value, byte index) => ExtractVector128(address, value, index);
/// <summary>
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(ushort* address, Vector256<ushort> value, byte index) => ExtractVector128(address, value, index);
+ public new static unsafe void ExtractVector128(ushort* address, Vector256<ushort> value, byte index) => ExtractVector128(address, value, index);
/// <summary>
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(int* address, Vector256<int> value, byte index) => ExtractVector128(address, value, index);
+ public new static unsafe void ExtractVector128(int* address, Vector256<int> value, byte index) => ExtractVector128(address, value, index);
/// <summary>
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(uint* address, Vector256<uint> value, byte index) => ExtractVector128(address, value, index);
+ public new static unsafe void ExtractVector128(uint* address, Vector256<uint> value, byte index) => ExtractVector128(address, value, index);
/// <summary>
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(long* address, Vector256<long> value, byte index) => ExtractVector128(address, value, index);
+ public new static unsafe void ExtractVector128(long* address, Vector256<long> value, byte index) => ExtractVector128(address, value, index);
/// <summary>
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// __m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
/// VEXTRACTI128 m128, ymm, imm8
/// </summary>
- public static unsafe void ExtractVector128(ulong* address, Vector256<ulong> value, byte index) => ExtractVector128(address, value, index);
+ public new static unsafe void ExtractVector128(ulong* address, Vector256<ulong> value, byte index) => ExtractVector128(address, value, index);
/// <summary>
/// __m128i _mm_i32gather_epi32 (int const* base_addr, __m128i vindex, const int scale)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, xm128, imm8
/// </summary>
- public static unsafe Vector256<sbyte> InsertVector128(Vector256<sbyte> value, sbyte* address, byte index) => InsertVector128(value, address, index);
+ public new static unsafe Vector256<sbyte> InsertVector128(Vector256<sbyte> value, sbyte* address, byte index) => InsertVector128(value, address, index);
/// <summary>
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, m128, imm8
/// </summary>
- public static unsafe Vector256<byte> InsertVector128(Vector256<byte> value, byte* address, byte index) => InsertVector128(value, address, index);
+ public new static unsafe Vector256<byte> InsertVector128(Vector256<byte> value, byte* address, byte index) => InsertVector128(value, address, index);
/// <summary>
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, m128, imm8
/// </summary>
- public static unsafe Vector256<short> InsertVector128(Vector256<short> value, short* address, byte index) => InsertVector128(value, address, index);
+ public new static unsafe Vector256<short> InsertVector128(Vector256<short> value, short* address, byte index) => InsertVector128(value, address, index);
/// <summary>
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, m128, imm8
/// </summary>
- public static unsafe Vector256<ushort> InsertVector128(Vector256<ushort> value, ushort* address, byte index) => InsertVector128(value, address, index);
+ public new static unsafe Vector256<ushort> InsertVector128(Vector256<ushort> value, ushort* address, byte index) => InsertVector128(value, address, index);
/// <summary>
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, m128, imm8
/// </summary>
- public static unsafe Vector256<int> InsertVector128(Vector256<int> value, int* address, byte index) => InsertVector128(value, address, index);
+ public new static unsafe Vector256<int> InsertVector128(Vector256<int> value, int* address, byte index) => InsertVector128(value, address, index);
/// <summary>
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, m128, imm8
/// </summary>
- public static unsafe Vector256<uint> InsertVector128(Vector256<uint> value, uint* address, byte index) => InsertVector128(value, address, index);
+ public new static unsafe Vector256<uint> InsertVector128(Vector256<uint> value, uint* address, byte index) => InsertVector128(value, address, index);
/// <summary>
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, m128, imm8
/// </summary>
- public static unsafe Vector256<long> InsertVector128(Vector256<long> value, long* address, byte index) => InsertVector128(value, address, index);
+ public new static unsafe Vector256<long> InsertVector128(Vector256<long> value, long* address, byte index) => InsertVector128(value, address, index);
/// <summary>
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// __m256i _mm256_inserti128_si256 (__m256i a, __m128i b, const int imm8)
/// VINSERTI128 ymm, ymm, m128, imm8
/// </summary>
- public static unsafe Vector256<ulong> InsertVector128(Vector256<ulong> value, ulong* address, byte index) => InsertVector128(value, address, index);
+ public new static unsafe Vector256<ulong> InsertVector128(Vector256<ulong> value, ulong* address, byte index) => InsertVector128(value, address, index);
/// <summary>
/// __m256i _mm256_stream_load_si256 (__m256i const* mem_addr)
/// This class provides access to Intel BMI1 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Bmi1
+ public abstract class Bmi1
{
+ internal Bmi1() { }
+
public static bool IsSupported { get { return false; } }
/// <summary>
/// BEXTR r64a, reg/m64, r64b
/// </summary>
public static ulong BitFieldExtract(ulong value, ushort control) { throw new PlatformNotSupportedException(); }
-
+
/// <summary>
/// unsigned int _blsi_u32 (unsigned int a)
/// BLSI reg, reg/m32
/// BLSMSK reg, reg/m64
/// </summary>
public static ulong GetMaskUpToLowestSetBit(ulong value) { throw new PlatformNotSupportedException(); }
-
+
/// <summary>
/// unsigned int _blsr_u32 (unsigned int a)
/// BLSR reg, reg/m32
/// This class provides access to Intel BMI1 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Bmi1
+ public abstract class Bmi1
{
+ internal Bmi1() { }
+
public static bool IsSupported { get => IsSupported; }
/// <summary>
/// BEXTR r64a, reg/m64, r64b
/// </summary>
public static ulong BitFieldExtract(ulong value, ushort control) => BitFieldExtract(value, control);
-
+
/// <summary>
/// unsigned int _blsi_u32 (unsigned int a)
/// BLSI reg, reg/m32
/// BLSMSK reg, reg/m64
/// </summary>
public static ulong GetMaskUpToLowestSetBit(ulong value) => GetMaskUpToLowestSetBit(value);
-
+
/// <summary>
/// unsigned int _blsr_u32 (unsigned int a)
/// BLSR reg, reg/m32
/// This class provides access to Intel BMI2 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Bmi2
+ public abstract class Bmi2
{
+ internal Bmi2() { }
+
public static bool IsSupported { get { return false; } }
/// <summary>
/// unsigned __int64 _pext_u64 (unsigned __int64 a, unsigned __int64 mask)
/// PEXT r64a, r64b, reg/m64
/// </summary>
- public static ulong ParallelBitExtract(ulong value, ulong mask) { throw new PlatformNotSupportedException(); }
+ public static ulong ParallelBitExtract(ulong value, ulong mask) { throw new PlatformNotSupportedException(); }
}
}
/// This class provides access to Intel BMI2 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Bmi2
+ public abstract class Bmi2
{
+ internal Bmi2() { }
+
public static bool IsSupported { get => IsSupported; }
/// <summary>
/// _CMP_LT_OQ
/// </summary>
LessThanOrderedNonSignaling = 17,
-
+
/// <summary>
/// _CMP_LE_OQ
/// </summary>
EqualUnorderedSignaling = 24,
/// <summary>
- /// _CMP_NGE_UQ
+ /// _CMP_NGE_UQ
/// </summary>
NotGreaterThanOrEqualUnorderedNonSignaling = 25,
/// <summary>
- /// _CMP_NGT_UQ
+ /// _CMP_NGT_UQ
/// </summary>
NotGreaterThanUnorderedNonSignaling = 26,
/// <summary>
- /// _CMP_FALSE_OS
+ /// _CMP_FALSE_OS
/// </summary>
FalseOrderedSignaling = 27,
/// <summary>
/// This class provides access to Intel FMA hardware instructions via intrinsics
/// </summary>
- public static class Fma
+ public abstract class Fma : Avx
{
- public static bool IsSupported { get { return false; } }
+ internal Fma() { }
+
+ public new static bool IsSupported { get { return false; } }
/// <summary>
/// __m128 _mm_fmadd_ps (__m128 a, __m128 b, __m128 c)
/// <summary>
/// This class provides access to Intel FMA hardware instructions via intrinsics
/// </summary>
- public static class Fma
+ public abstract class Fma : Avx
{
- public static bool IsSupported { get => IsSupported; }
+ internal Fma() { }
+
+ public new static bool IsSupported { get => IsSupported; }
/// <summary>
/// __m128 _mm_fmadd_ps (__m128 a, __m128 b, __m128 c)
/// This class provides access to Intel LZCNT hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Lzcnt
+ public abstract class Lzcnt
{
+ internal Lzcnt() { }
+
public static bool IsSupported { get { return false; } }
/// <summary>
/// This class provides access to Intel LZCNT hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Lzcnt
+ public abstract class Lzcnt
{
+ internal Lzcnt() { }
+
public static bool IsSupported { get => IsSupported; }
/// <summary>
/// This class provides access to Intel PCLMULQDQ hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Pclmulqdq
+ public abstract class Pclmulqdq : Sse2
{
- public static bool IsSupported { get { return false; } }
+ internal Pclmulqdq() { }
+
+ public new static bool IsSupported { get { return false; } }
/// <summary>
/// __m128i _mm_clmulepi64_si128 (__m128i a, __m128i b, const int imm8)
/// This class provides access to Intel PCLMULQDQ hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Pclmulqdq
+ public abstract class Pclmulqdq : Sse2
{
- public static bool IsSupported { get => IsSupported; }
+ internal Pclmulqdq() { }
+
+ public new static bool IsSupported { get => IsSupported; }
/// <summary>
/// __m128i _mm_clmulepi64_si128 (__m128i a, __m128i b, const int imm8)
/// This class provides access to Intel POPCNT hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Popcnt
+ public abstract class Popcnt : Sse42
{
- public static bool IsSupported { get { return false; } }
+ internal Popcnt() { }
+
+ public new static bool IsSupported { get { return false; } }
/// <summary>
/// int _mm_popcnt_u32 (unsigned int a)
/// This class provides access to Intel POPCNT hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Popcnt
+ public abstract class Popcnt : Sse42
{
- public static bool IsSupported { get => IsSupported; }
+ internal Popcnt() { }
+
+ public new static bool IsSupported { get => IsSupported; }
/// <summary>
/// int _mm_popcnt_u32 (unsigned int a)
/// This class provides access to Intel SSE hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Sse
+ public abstract class Sse
{
+ internal Sse() { }
+
public static bool IsSupported { get { return false; } }
/// <summary>
/// This class provides access to Intel SSE hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Sse
+ public abstract class Sse
{
+ internal Sse() { }
+
public static bool IsSupported { get => IsSupported; }
/// <summary>
/// This class provides access to Intel SSE2 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Sse2
+ public abstract class Sse2 : Sse
{
- public static bool IsSupported { get { return false; } }
-
+ internal Sse2() { }
+
+ public new static bool IsSupported { get { return false; } }
+
/// <summary>
/// __m128i _mm_add_epi8 (__m128i a, __m128i b)
/// PADDB xmm, xmm/m128
/// This class provides access to Intel SSE2 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Sse2
+ public abstract class Sse2 : Sse
{
- public static bool IsSupported { get => IsSupported; }
+ internal Sse2() { }
+
+ public new static bool IsSupported { get => IsSupported; }
/// <summary>
/// __m128i _mm_add_epi8 (__m128i a, __m128i b)
/// This class provides access to Intel SSE3 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Sse3
+ public abstract class Sse3 : Sse2
{
- public static bool IsSupported { get { return false; } }
-
+ internal Sse3() { }
+
+ public new static bool IsSupported { get { return false; } }
+
/// <summary>
/// __m128 _mm_addsub_ps (__m128 a, __m128 b)
/// ADDSUBPS xmm, xmm/m128
/// This class provides access to Intel SSE3 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Sse3
+ public abstract class Sse3 : Sse2
{
- public static bool IsSupported { get => IsSupported; }
-
+ internal Sse3() { }
+
+ public new static bool IsSupported { get => IsSupported; }
+
/// <summary>
/// __m128 _mm_addsub_ps (__m128 a, __m128 b)
/// ADDSUBPS xmm, xmm/m128
/// This class provides access to Intel SSE4.1 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Sse41
+ public abstract class Sse41 : Ssse3
{
- public static bool IsSupported { get { return false; } }
+ internal Sse41() { }
+
+ public new static bool IsSupported { get { return false; } }
/// <summary>
/// __m128i _mm_blend_epi16 (__m128i a, __m128i b, const int imm8)
/// This class provides access to Intel SSE4.1 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Sse41
+ public abstract class Sse41 : Ssse3
{
- public static bool IsSupported { get => IsSupported; }
-
+ internal Sse41() { }
+
+ public new static bool IsSupported { get => IsSupported; }
+
/// <summary>
/// __m128i _mm_blend_epi16 (__m128i a, __m128i b, const int imm8)
/// PBLENDW xmm, xmm/m128 imm8
/// This class provides access to Intel SSE4.2 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Sse42
+ public abstract class Sse42 : Sse41
{
- public static bool IsSupported { get { return false; } }
+ internal Sse42() { }
+
+ public new static bool IsSupported { get { return false; } }
/// <summary>
/// int _mm_cmpistra (__m128i a, __m128i b, const int imm8)
/// This class provides access to Intel SSE4.2 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Sse42
+ public abstract class Sse42 : Sse41
{
- public static bool IsSupported { get => IsSupported; }
+ internal Sse42() { }
+
+ public new static bool IsSupported { get => IsSupported; }
/// <summary>
/// int _mm_cmpistra (__m128i a, __m128i b, const int imm8)
/// This class provides access to Intel SSSE3 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Ssse3
+ public abstract class Ssse3 : Sse3
{
- public static bool IsSupported { get { return false; } }
-
+ internal Ssse3() { }
+
+ public new static bool IsSupported { get { return false; } }
+
/// <summary>
/// __m128i _mm_abs_epi8 (__m128i a)
/// PABSB xmm, xmm/m128
/// This class provides access to Intel SSSE3 hardware instructions via intrinsics
/// </summary>
[CLSCompliant(false)]
- public static class Ssse3
+ public abstract class Ssse3 : Sse3
{
- public static bool IsSupported { get => IsSupported; }
-
+ internal Ssse3() { }
+
+ public new static bool IsSupported { get => IsSupported; }
+
/// <summary>
/// __m128i _mm_abs_epi8 (__m128i a)
/// PABSB xmm, xmm/m128