clang
20.0.0git
lib
Headers
popcntintrin.h
Go to the documentation of this file.
1
/*===---- popcntintrin.h - POPCNT intrinsics -------------------------------===
2
*
3
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
* See https://llvm.org/LICENSE.txt for license information.
5
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
*
7
*===-----------------------------------------------------------------------===
8
*/
9
10
#ifndef __POPCNTINTRIN_H
11
#define __POPCNTINTRIN_H
12
13
/* Define the default attributes for the functions in this file. */
14
#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("popcnt"
)))
15
16
#if defined(__cplusplus) && (__cplusplus >= 201103L)
17
#define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr
18
#else
19
#define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS
20
#endif
21
22
/// Counts the number of bits in the source operand having a value of 1.
23
///
24
/// \headerfile <x86intrin.h>
25
///
26
/// This intrinsic corresponds to the <c> POPCNT </c> instruction.
27
///
28
/// \param __A
29
/// An unsigned 32-bit integer operand.
30
/// \returns A 32-bit integer containing the number of bits with value 1 in the
31
/// source operand.
32
static
__inline__
int
__DEFAULT_FN_ATTRS_CONSTEXPR
33
_mm_popcnt_u32
(
unsigned
int
__A)
34
{
35
return
__builtin_popcount(__A);
36
}
37
38
#ifdef __x86_64__
39
/// Counts the number of bits in the source operand having a value of 1.
40
///
41
/// \headerfile <x86intrin.h>
42
///
43
/// This intrinsic corresponds to the <c> POPCNT </c> instruction.
44
///
45
/// \param __A
46
/// An unsigned 64-bit integer operand.
47
/// \returns A 64-bit integer containing the number of bits with value 1 in the
48
/// source operand.
49
static
__inline__
long
long
__DEFAULT_FN_ATTRS_CONSTEXPR
50
_mm_popcnt_u64(
unsigned
long
long
__A)
51
{
52
return
__builtin_popcountll(__A);
53
}
54
#endif
/* __x86_64__ */
55
56
#undef __DEFAULT_FN_ATTRS
57
#undef __DEFAULT_FN_ATTRS_CONSTEXPR
58
59
#endif
/* __POPCNTINTRIN_H */
_mm_popcnt_u32
static __inline__ int __DEFAULT_FN_ATTRS_CONSTEXPR _mm_popcnt_u32(unsigned int __A)
Counts the number of bits in the source operand having a value of 1.
Definition:
popcntintrin.h:33
__DEFAULT_FN_ATTRS_CONSTEXPR
#define __DEFAULT_FN_ATTRS_CONSTEXPR
Definition:
popcntintrin.h:19
Generated on Fri Nov 22 2024 09:49:24 for clang by
1.9.6