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 LZCNT hardware instructions via intrinsics
14 public abstract class Lzcnt
18 public static bool IsSupported { get => IsSupported; }
20 public abstract class X64
24 public static bool IsSupported { get => IsSupported; }
27 /// unsigned __int64 _lzcnt_u64 (unsigned __int64 a)
28 /// LZCNT reg, reg/m64
29 /// This intrinisc is only available on 64-bit processes
31 public static ulong LeadingZeroCount(ulong value) => LeadingZeroCount(value);
35 /// unsigned int _lzcnt_u32 (unsigned int a)
36 /// LZCNT reg, reg/m32
38 public static uint LeadingZeroCount(uint value) => LeadingZeroCount(value);