Skip to content

Commit db99742

Browse files
committed
neon sim compilation fix
1 parent c979fd6 commit db99742

File tree

2 files changed

+7
-10
lines changed

2 files changed

+7
-10
lines changed

include/sqlite-vec-cpp/simd/neon.hpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -117,25 +117,26 @@ inline std::int32_t l1_distance_int8_neon(std::span<const std::int8_t> a,
117117
std::size_t i = 0;
118118

119119
// Process 64 elements at a time (4 × 16)
120+
// Note: vabdq_s8 returns int8x16_t; reinterpret as uint8x16_t since abs diff is non-negative
120121
while (i + 63 < size) {
121122
int8x16_t v1 = vld1q_s8(&a[i]);
122123
int8x16_t v2 = vld1q_s8(&b[i]);
123-
uint8x16_t diff1 = vabdq_s8(v1, v2);
124+
uint8x16_t diff1 = vreinterpretq_u8_s8(vabdq_s8(v1, v2));
124125
acc1 = vaddq_s32(acc1, vreinterpretq_s32_u32(vpaddlq_u16(vpaddlq_u8(diff1))));
125126

126127
v1 = vld1q_s8(&a[i + 16]);
127128
v2 = vld1q_s8(&b[i + 16]);
128-
uint8x16_t diff2 = vabdq_s8(v1, v2);
129+
uint8x16_t diff2 = vreinterpretq_u8_s8(vabdq_s8(v1, v2));
129130
acc2 = vaddq_s32(acc2, vreinterpretq_s32_u32(vpaddlq_u16(vpaddlq_u8(diff2))));
130131

131132
v1 = vld1q_s8(&a[i + 32]);
132133
v2 = vld1q_s8(&b[i + 32]);
133-
uint8x16_t diff3 = vabdq_s8(v1, v2);
134+
uint8x16_t diff3 = vreinterpretq_u8_s8(vabdq_s8(v1, v2));
134135
acc3 = vaddq_s32(acc3, vreinterpretq_s32_u32(vpaddlq_u16(vpaddlq_u8(diff3))));
135136

136137
v1 = vld1q_s8(&a[i + 48]);
137138
v2 = vld1q_s8(&b[i + 48]);
138-
uint8x16_t diff4 = vabdq_s8(v1, v2);
139+
uint8x16_t diff4 = vreinterpretq_u8_s8(vabdq_s8(v1, v2));
139140
acc4 = vaddq_s32(acc4, vreinterpretq_s32_u32(vpaddlq_u16(vpaddlq_u8(diff4))));
140141

141142
i += 64;
@@ -145,7 +146,7 @@ inline std::int32_t l1_distance_int8_neon(std::span<const std::int8_t> a,
145146
while (i + 15 < size) {
146147
int8x16_t v1 = vld1q_s8(&a[i]);
147148
int8x16_t v2 = vld1q_s8(&b[i]);
148-
uint8x16_t diff = vabdq_s8(v1, v2);
149+
uint8x16_t diff = vreinterpretq_u8_s8(vabdq_s8(v1, v2));
149150
acc1 = vaddq_s32(acc1, vreinterpretq_s32_u32(vpaddlq_u16(vpaddlq_u8(diff))));
150151
i += 16;
151152
}

src/sqlite_vec_c_api.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,7 @@ extern "C" {
1212
#ifdef _WIN32
1313
__declspec(dllexport)
1414
#endif
15-
int sqlite3_vec_init(
16-
sqlite3 *db,
17-
char **pzErrMsg,
18-
const sqlite3_api_routines *pApi
19-
) {
15+
int sqlite3_vec_init(sqlite3* db, char** pzErrMsg, const sqlite3_api_routines* pApi) {
2016
(void)pApi; // not using extension API; direct sqlite3.h
2117

2218
try {

0 commit comments

Comments
 (0)