Skip to content

Commit 165986f

Browse files
committed
Fix: Explicit simsimd_size_t cast in SVE
1 parent 82146b0 commit 165986f

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

include/stringzilla/stringzilla.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6081,7 +6081,7 @@ SZ_PUBLIC void sz_fill_sve(sz_ptr_t target, sz_size_t length, sz_u8_t value) {
60816081

60826082
if (length <= vec_len) {
60836083
// Small buffer case: use mask to handle small writes
6084-
svbool_t mask = svwhilelt_b8(0ull, length);
6084+
svbool_t mask = svwhilelt_b8((sz_size_t)0ull, length);
60856085
svst1_u8(mask, (unsigned char *)target, value_vec);
60866086
}
60876087
else {
@@ -6091,7 +6091,7 @@ SZ_PUBLIC void sz_fill_sve(sz_ptr_t target, sz_size_t length, sz_u8_t value) {
60916091
sz_size_t body_length = length - head_length - tail_length;
60926092

60936093
// Handle unaligned head
6094-
svbool_t head_mask = svwhilelt_b8(0ull, head_length);
6094+
svbool_t head_mask = svwhilelt_b8((sz_size_t)0ull, head_length);
60956095
svst1_u8(head_mask, (unsigned char *)target, value_vec);
60966096
target += head_length;
60976097

@@ -6101,7 +6101,7 @@ SZ_PUBLIC void sz_fill_sve(sz_ptr_t target, sz_size_t length, sz_u8_t value) {
61016101
}
61026102

61036103
// Handle unaligned tail
6104-
svbool_t tail_mask = svwhilelt_b8(0ull, tail_length);
6104+
svbool_t tail_mask = svwhilelt_b8((sz_size_t)0ull, tail_length);
61056105
svst1_u8(tail_mask, (unsigned char *)target, value_vec);
61066106
}
61076107
}
@@ -6118,7 +6118,7 @@ SZ_PUBLIC void sz_copy_sve(sz_ptr_t target, sz_cptr_t source, sz_size_t length)
61186118
// When the buffer is small, there isn't much to innovate.
61196119
if (length <= vec_len) {
61206120
// Small buffer case: use mask to handle small writes
6121-
svbool_t mask = svwhilelt_b8(0ull, length);
6121+
svbool_t mask = svwhilelt_b8((sz_size_t)0ull, length);
61226122
svuint8_t data = svld1_u8(mask, (unsigned char *)source);
61236123
svst1_u8(mask, (unsigned char *)target, data);
61246124
}
@@ -6143,10 +6143,10 @@ SZ_PUBLIC void sz_copy_sve(sz_ptr_t target, sz_cptr_t source, sz_size_t length)
61436143
sz_size_t body_length = length - head_length - tail_length;
61446144

61456145
// Handle unaligned parts
6146-
svbool_t head_mask = svwhilelt_b8(0ull, head_length);
6146+
svbool_t head_mask = svwhilelt_b8((sz_size_t)0ull, head_length);
61476147
svuint8_t head_data = svld1_u8(head_mask, (unsigned char *)source);
61486148
svst1_u8(head_mask, (unsigned char *)target, head_data);
6149-
svbool_t tail_mask = svwhilelt_b8(0ull, tail_length);
6149+
svbool_t tail_mask = svwhilelt_b8((sz_size_t)0ull, tail_length);
61506150
svuint8_t tail_data = svld1_u8(tail_mask, (unsigned char *)source + head_length + body_length);
61516151
svst1_u8(tail_mask, (unsigned char *)target + head_length + body_length, tail_data);
61526152
target += head_length;
@@ -6162,15 +6162,15 @@ SZ_PUBLIC void sz_copy_sve(sz_ptr_t target, sz_cptr_t source, sz_size_t length)
61626162
// Up to (vec_len * 2 - 1) bytes of data may be left in the body,
61636163
// so we can unroll the last two optional loop iterations.
61646164
if (body_length > vec_len) {
6165-
svbool_t mask = svwhilelt_b8(0ull, body_length);
6165+
svbool_t mask = svwhilelt_b8((sz_size_t)0ull, body_length);
61666166
svuint8_t data = svld1_u8(mask, (unsigned char *)source);
61676167
svst1_u8(mask, (unsigned char *)target, data);
61686168
body_length -= vec_len;
61696169
source += body_length;
61706170
target += body_length;
61716171
}
61726172
if (body_length) {
6173-
svbool_t mask = svwhilelt_b8(0ull, body_length);
6173+
svbool_t mask = svwhilelt_b8((sz_size_t)0ull, body_length);
61746174
svuint8_t data = svld1_u8(mask, (unsigned char *)source);
61756175
svst1_u8(mask, (unsigned char *)target, data);
61766176
}

scripts/test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ inline void expect_equality(char const *a, char const *b, std::size_t size) {
144144
* regions are tested. Uses a combination of deterministic and random tests with uniform and exponential distributions.
145145
*/
146146
static void test_memory_utilities(std::size_t experiments = 1024ull * 1024ull,
147-
std::size_t max_l2_size = 1024ull * 1024ull * 32ull) {
147+
std::size_t max_l2_size = 1024ull * 1024ull) {
148148

149149
// We will be mirroring the operations on both standard and StringZilla strings.
150150
std::string text_stl(max_l2_size, '-');

0 commit comments

Comments
 (0)