|
15 | 15 | // specific language governing permissions and limitations |
16 | 16 | // under the License. |
17 | 17 |
|
18 | | -#include "arrow/util/bpacking_dispatch_internal.h" |
19 | 18 | #if defined(ARROW_HAVE_NEON) |
20 | | -#include "arrow/util/bpacking_simd_impl_internal.h" |
| 19 | +# define UNPACK_PLATFORM unpack_neon |
| 20 | +#elif defined(ARROW_HAVE_SSE4_2) |
| 21 | +# define UNPACK_PLATFORM unpack_sse4_2 |
21 | 22 | #endif |
22 | | -#include "arrow/util/bpacking_simd_internal.h" |
| 23 | + |
| 24 | +#if defined(UNPACK_PLATFORM) |
| 25 | + |
| 26 | +# include "arrow/util/bpacking_dispatch_internal.h" |
| 27 | +# include "arrow/util/bpacking_simd_impl_internal.h" |
| 28 | +# include "arrow/util/bpacking_simd_internal.h" |
23 | 29 |
|
24 | 30 | namespace arrow::internal { |
25 | 31 |
|
26 | 32 | template <typename UnpackedUint, int kPackedBitSize> |
27 | 33 | using Simd128Kernel = Kernel<UnpackedUint, kPackedBitSize, 128>; |
28 | 34 |
|
29 | | -#if defined(ARROW_HAVE_NEON) |
30 | | - |
31 | 35 | template <typename Uint> |
32 | | -void unpack_neon(const uint8_t* in, Uint* out, int batch_size, int num_bits, |
33 | | - int bit_offset) { |
| 36 | +void UNPACK_PLATFORM(const uint8_t* in, Uint* out, int batch_size, int num_bits, |
| 37 | + int bit_offset) { |
34 | 38 | return unpack_jump<Simd128Kernel>(in, out, batch_size, num_bits, bit_offset); |
35 | 39 | } |
36 | 40 |
|
37 | | -template void unpack_neon<bool>(const uint8_t*, bool*, int, int, int); |
38 | | -template void unpack_neon<uint8_t>(const uint8_t*, uint8_t*, int, int, int); |
39 | | -template void unpack_neon<uint16_t>(const uint8_t*, uint16_t*, int, int, int); |
40 | | -template void unpack_neon<uint32_t>(const uint8_t*, uint32_t*, int, int, int); |
41 | | -template void unpack_neon<uint64_t>(const uint8_t*, uint64_t*, int, int, int); |
42 | | - |
43 | | -#elif defined(ARROW_HAVE_SSE4_2) |
44 | | - |
45 | | -template <typename Uint> |
46 | | -void unpack_sse4_2(const uint8_t* in, Uint* out, int batch_size, int num_bits, |
47 | | - int bit_offset) { |
48 | | - return unpack_jump<Simd128Kernel>(in, out, batch_size, num_bits, bit_offset); |
49 | | -} |
| 41 | +template void UNPACK_PLATFORM<bool>(const uint8_t*, bool*, int, int, int); |
| 42 | +template void UNPACK_PLATFORM<uint8_t>(const uint8_t*, uint8_t*, int, int, int); |
| 43 | +template void UNPACK_PLATFORM<uint16_t>(const uint8_t*, uint16_t*, int, int, int); |
| 44 | +template void UNPACK_PLATFORM<uint32_t>(const uint8_t*, uint32_t*, int, int, int); |
| 45 | +template void UNPACK_PLATFORM<uint64_t>(const uint8_t*, uint64_t*, int, int, int); |
50 | 46 |
|
51 | | -template void unpack_sse4_2<bool>(const uint8_t*, bool*, int, int, int); |
52 | | -template void unpack_sse4_2<uint8_t>(const uint8_t*, uint8_t*, int, int, int); |
53 | | -template void unpack_sse4_2<uint16_t>(const uint8_t*, uint16_t*, int, int, int); |
54 | | -template void unpack_sse4_2<uint32_t>(const uint8_t*, uint32_t*, int, int, int); |
55 | | -template void unpack_sse4_2<uint64_t>(const uint8_t*, uint64_t*, int, int, int); |
| 47 | +} // namespace arrow::internal |
56 | 48 |
|
57 | 49 | #endif |
58 | | - |
59 | | -} // namespace arrow::internal |
0 commit comments