Skip to content

Commit fedb064

Browse files
committed
feat:using neon to merge registers
1 parent d3833e4 commit fedb064

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

be/src/olap/hll.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525

2626
#ifdef __x86_64__
2727
#include <immintrin.h>
28+
#elif __aarch64__
29+
#include <arm_neon.h>
2830
#endif
2931

3032
#include "vec/common/hash_table/phmap_fwd_decl.h"
@@ -287,6 +289,17 @@ class HyperLogLog {
287289
src += 32;
288290
dst += 32;
289291
}
292+
#elif __aarch64__
293+
int loop = HLL_REGISTERS_COUNT / 16;
294+
uint8_t* dst = _registers;
295+
const uint8_t* src = other_registers;
296+
for (int i = 0; i < loop; i++) {
297+
uint8x16_t va = vld1q_u8(dst);
298+
uint8x16_t vb = vld1q_u8(src);
299+
vst1q_u8(dst, vmaxq_u8(va, vb));
300+
src += 16;
301+
dst += 16;
302+
}
290303
#else
291304
for (int i = 0; i < HLL_REGISTERS_COUNT; ++i) {
292305
_registers[i] =

0 commit comments

Comments
 (0)