Vector Optimized Library of Kernels  3.2.0
Architecture-tuned implementations of math kernels
volk_64u_popcntpuppet_64u.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2014 Free Software Foundation, Inc.
4  *
5  * This file is part of VOLK
6  *
7  * SPDX-License-Identifier: LGPL-3.0-or-later
8  */
9 
10 #ifndef INCLUDED_volk_64u_popcntpuppet_64u_H
11 #define INCLUDED_volk_64u_popcntpuppet_64u_H
12 
13 #include <stdint.h>
14 #include <string.h>
15 #include <volk/volk_64u_popcnt.h>
16 
17 #ifdef LV_HAVE_GENERIC
18 static inline void volk_64u_popcntpuppet_64u_generic(uint64_t* outVector,
19  const uint64_t* inVector,
20  unsigned int num_points)
21 {
22  for (size_t i = 0; i < num_points; ++i) {
23  volk_64u_popcnt_generic(outVector + i, inVector[i]);
24  }
25 }
26 #endif /* LV_HAVE_GENERIC */
27 
28 #if LV_HAVE_SSE4_2 && LV_HAVE_64
29 static inline void volk_64u_popcntpuppet_64u_a_sse4_2(uint64_t* outVector,
30  const uint64_t* inVector,
31  unsigned int num_points)
32 {
33  for (size_t i = 0; i < num_points; ++i) {
34  volk_64u_popcnt_a_sse4_2(outVector + i, inVector[i]);
35  }
36 }
37 #endif /* LV_HAVE_SSE4_2 */
38 
39 #ifdef LV_HAVE_NEON
40 static inline void volk_64u_popcntpuppet_64u_neon(uint64_t* outVector,
41  const uint64_t* inVector,
42  unsigned int num_points)
43 {
44  for (size_t i = 0; i < num_points; ++i) {
45  volk_64u_popcnt_neon(outVector + i, inVector[i]);
46  }
47 }
48 #endif /* LV_HAVE_NEON */
49 
50 #ifdef LV_HAVE_RVV
51 static inline void volk_64u_popcntpuppet_64u_rvv(uint64_t* outVector,
52  const uint64_t* inVector,
53  unsigned int num_points)
54 {
55  for (size_t i = 0; i < num_points; ++i) {
56  volk_64u_popcnt_rvv(outVector + i, inVector[i]);
57  }
58 }
59 #endif /* LV_HAVE_RVV */
60 
61 #ifdef LV_HAVE_RVA22V
62 static inline void volk_64u_popcntpuppet_64u_rva22(uint64_t* outVector,
63  const uint64_t* inVector,
64  unsigned int num_points)
65 {
66  for (size_t i = 0; i < num_points; ++i) {
67  volk_64u_popcnt_rva22(outVector + i, inVector[i]);
68  }
69 }
70 #endif /* LV_HAVE_RVA22V */
71 
72 #endif /* INCLUDED_volk_32fc_s32fc_rotatorpuppet_32fc_a_H */
static void volk_64u_popcnt_neon(uint64_t *ret, const uint64_t value)
Definition: volk_64u_popcnt.h:101
static void volk_64u_popcnt_generic(uint64_t *ret, const uint64_t value)
Definition: volk_64u_popcnt.h:57
static void volk_64u_popcntpuppet_64u_generic(uint64_t *outVector, const uint64_t *inVector, unsigned int num_points)
Definition: volk_64u_popcntpuppet_64u.h:18
static void volk_64u_popcntpuppet_64u_neon(uint64_t *outVector, const uint64_t *inVector, unsigned int num_points)
Definition: volk_64u_popcntpuppet_64u.h:40
for i
Definition: volk_config_fixed.tmpl.h:13