Skip to content

Commit 29c0f46

Browse files
committed
Fix: f16, i8, bf16 compile-time dispatch
1 parent 22bb40b commit 29c0f46

File tree

1 file changed

+18
-19
lines changed

1 file changed

+18
-19
lines changed

include/simsimd/simsimd.h

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -549,7 +549,6 @@ SIMSIMD_PUBLIC simsimd_capability_t _simsimd_capabilities_arm(void) {
549549
// This value must match the existing indicator obtained from ID_AA64PFR0_EL1:
550550
unsigned supports_sve2 = ((id_aa64zfr0_el1) & 0xF) >= 1;
551551
unsigned supports_sve2p1 = ((id_aa64zfr0_el1) & 0xF) >= 2;
552-
unsigned supports_neon = 1; // NEON is always supported
553552

554553
return (simsimd_capability_t)( //
555554
(simsimd_cap_neon_k * (supports_neon)) | //
@@ -1579,7 +1578,7 @@ SIMSIMD_PUBLIC void simsimd_find_kernel_punned( //
15791578
*/
15801579
SIMSIMD_PUBLIC void simsimd_dot_i8(simsimd_i8_t const *a, simsimd_i8_t const *b, simsimd_size_t n,
15811580
simsimd_distance_t *d) {
1582-
#if SIMSIMD_TARGET_NEON_F16
1581+
#if SIMSIMD_TARGET_NEON_I8
15831582
simsimd_dot_i8_neon(a, b, n, d);
15841583
#elif SIMSIMD_TARGET_ICE
15851584
simsimd_dot_i8_ice(a, b, n, d);
@@ -1703,7 +1702,7 @@ SIMSIMD_PUBLIC void simsimd_vdot_f16c(simsimd_f16c_t const *a, simsimd_f16c_t co
17031702
simsimd_distance_t *d) {
17041703
#if SIMSIMD_TARGET_SVE
17051704
simsimd_vdot_f16c_sve(a, b, n, d);
1706-
#elif SIMSIMD_TARGET_NEON
1705+
#elif SIMSIMD_TARGET_NEON_F16
17071706
simsimd_dot_f16c_neon(a, b, n, d);
17081707
#elif SIMSIMD_TARGET_SAPPHIRE
17091708
simsimd_dot_f16c_sapphire(a, b, n, d);
@@ -1763,7 +1762,7 @@ SIMSIMD_PUBLIC void simsimd_vdot_f64c(simsimd_f64c_t const *a, simsimd_f64c_t co
17631762
*/
17641763
SIMSIMD_PUBLIC void simsimd_cos_i8(simsimd_i8_t const *a, simsimd_i8_t const *b, simsimd_size_t n,
17651764
simsimd_distance_t *d) {
1766-
#if SIMSIMD_TARGET_NEON
1765+
#if SIMSIMD_TARGET_NEON_I8
17671766
simsimd_cos_i8_neon(a, b, n, d);
17681767
#elif SIMSIMD_TARGET_ICE
17691768
simsimd_cos_i8_ice(a, b, n, d);
@@ -1775,7 +1774,7 @@ SIMSIMD_PUBLIC void simsimd_cos_i8(simsimd_i8_t const *a, simsimd_i8_t const *b,
17751774
}
17761775
SIMSIMD_PUBLIC void simsimd_cos_u8(simsimd_u8_t const *a, simsimd_u8_t const *b, simsimd_size_t n,
17771776
simsimd_distance_t *d) {
1778-
#if SIMSIMD_TARGET_NEON
1777+
#if SIMSIMD_TARGET_NEON_I8
17791778
simsimd_cos_u8_neon(a, b, n, d);
17801779
#elif SIMSIMD_TARGET_ICE
17811780
simsimd_cos_u8_ice(a, b, n, d);
@@ -1841,7 +1840,7 @@ SIMSIMD_PUBLIC void simsimd_cos_f64(simsimd_f64_t const *a, simsimd_f64_t const
18411840
}
18421841
SIMSIMD_PUBLIC void simsimd_l2sq_i8(simsimd_i8_t const *a, simsimd_i8_t const *b, simsimd_size_t n,
18431842
simsimd_distance_t *d) {
1844-
#if SIMSIMD_TARGET_NEON
1843+
#if SIMSIMD_TARGET_NEON_I8
18451844
simsimd_l2sq_i8_neon(a, b, n, d);
18461845
#elif SIMSIMD_TARGET_ICE
18471846
simsimd_l2sq_i8_ice(a, b, n, d);
@@ -1853,7 +1852,7 @@ SIMSIMD_PUBLIC void simsimd_l2sq_i8(simsimd_i8_t const *a, simsimd_i8_t const *b
18531852
}
18541853
SIMSIMD_PUBLIC void simsimd_l2sq_u8(simsimd_u8_t const *a, simsimd_u8_t const *b, simsimd_size_t n,
18551854
simsimd_distance_t *d) {
1856-
#if SIMSIMD_TARGET_NEON
1855+
#if SIMSIMD_TARGET_NEON_I8
18571856
simsimd_l2sq_u8_neon(a, b, n, d);
18581857
#elif SIMSIMD_TARGET_ICE
18591858
simsimd_l2sq_u8_ice(a, b, n, d);
@@ -1919,7 +1918,7 @@ SIMSIMD_PUBLIC void simsimd_l2sq_f64(simsimd_f64_t const *a, simsimd_f64_t const
19191918
}
19201919
SIMSIMD_PUBLIC void simsimd_l2_i8(simsimd_i8_t const *a, simsimd_i8_t const *b, simsimd_size_t n,
19211920
simsimd_distance_t *d) {
1922-
#if SIMSIMD_TARGET_NEON
1921+
#if SIMSIMD_TARGET_NEON_I8
19231922
simsimd_l2_i8_neon(a, b, n, d);
19241923
#elif SIMSIMD_TARGET_ICE
19251924
simsimd_l2_i8_ice(a, b, n, d);
@@ -1931,7 +1930,7 @@ SIMSIMD_PUBLIC void simsimd_l2_i8(simsimd_i8_t const *a, simsimd_i8_t const *b,
19311930
}
19321931
SIMSIMD_PUBLIC void simsimd_l2_u8(simsimd_u8_t const *a, simsimd_u8_t const *b, simsimd_size_t n,
19331932
simsimd_distance_t *d) {
1934-
#if SIMSIMD_TARGET_NEON
1933+
#if SIMSIMD_TARGET_NEON_I8
19351934
simsimd_l2_u8_neon(a, b, n, d);
19361935
#elif SIMSIMD_TARGET_ICE
19371936
simsimd_l2_u8_ice(a, b, n, d);
@@ -2054,7 +2053,7 @@ SIMSIMD_PUBLIC void simsimd_jaccard_b8(simsimd_b8_t const *a, simsimd_b8_t const
20542053
*/
20552054
SIMSIMD_PUBLIC void simsimd_kl_f16(simsimd_f16_t const *a, simsimd_f16_t const *b, simsimd_size_t n,
20562055
simsimd_distance_t *d) {
2057-
#if SIMSIMD_TARGET_NEON
2056+
#if SIMSIMD_TARGET_NEON_F16
20582057
simsimd_kl_f16_neon(a, b, n, d);
20592058
#elif SIMSIMD_TARGET_HASWELL
20602059
simsimd_kl_f16_haswell(a, b, n, d);
@@ -2082,7 +2081,7 @@ SIMSIMD_PUBLIC void simsimd_kl_f64(simsimd_f64_t const *a, simsimd_f64_t const *
20822081
}
20832082
SIMSIMD_PUBLIC void simsimd_js_f16(simsimd_f16_t const *a, simsimd_f16_t const *b, simsimd_size_t n,
20842083
simsimd_distance_t *d) {
2085-
#if SIMSIMD_TARGET_NEON
2084+
#if SIMSIMD_TARGET_NEON_F16
20862085
simsimd_js_f16_neon(a, b, n, d);
20872086
#elif SIMSIMD_TARGET_HASWELL
20882087
simsimd_js_f16_haswell(a, b, n, d);
@@ -2213,7 +2212,7 @@ SIMSIMD_PUBLIC void simsimd_bilinear_f16(simsimd_f16_t const *a, simsimd_f16_t c
22132212
simsimd_bilinear_f16_sapphire(a, b, c, n, d);
22142213
#elif SIMSIMD_TARGET_HASWELL
22152214
simsimd_bilinear_f16_haswell(a, b, c, n, d);
2216-
#elif SIMSIMD_TARGET_NEON
2215+
#elif SIMSIMD_TARGET_NEON_F16
22172216
simsimd_bilinear_f16_neon(a, b, c, n, d);
22182217
#else
22192218
simsimd_bilinear_f16_serial(a, b, c, n, d);
@@ -2225,7 +2224,7 @@ SIMSIMD_PUBLIC void simsimd_bilinear_bf16(simsimd_bf16_t const *a, simsimd_bf16_
22252224
simsimd_bilinear_bf16_genoa(a, b, c, n, d);
22262225
#elif SIMSIMD_TARGET_HASWELL
22272226
simsimd_bilinear_bf16_haswell(a, b, c, n, d);
2228-
#elif SIMSIMD_TARGET_NEON
2227+
#elif SIMSIMD_TARGET_NEON_BF16
22292228
simsimd_bilinear_bf16_neon(a, b, c, n, d);
22302229
#else
22312230
simsimd_bilinear_bf16_serial(a, b, c, n, d);
@@ -2253,7 +2252,7 @@ SIMSIMD_PUBLIC void simsimd_bilinear_f16c(simsimd_f16c_t const *a, simsimd_f16c_
22532252
simsimd_size_t n, simsimd_distance_t *d) {
22542253
#if SIMSIMD_TARGET_SAPPHIRE
22552254
simsimd_bilinear_f16c_sapphire(a, b, c, n, d);
2256-
#elif SIMSIMD_TARGET_NEON
2255+
#elif SIMSIMD_TARGET_NEON_F16
22572256
simsimd_bilinear_f16c_neon(a, b, c, n, d);
22582257
#else
22592258
simsimd_bilinear_f16c_serial(a, b, c, n, d);
@@ -2263,7 +2262,7 @@ SIMSIMD_PUBLIC void simsimd_bilinear_bf16c(simsimd_bf16c_t const *a, simsimd_bf1
22632262
simsimd_size_t n, simsimd_distance_t *d) {
22642263
#if SIMSIMD_TARGET_GENOA
22652264
simsimd_bilinear_bf16c_genoa(a, b, c, n, d);
2266-
#elif SIMSIMD_TARGET_NEON
2265+
#elif SIMSIMD_TARGET_NEON_BF16
22672266
simsimd_bilinear_bf16c_neon(a, b, c, n, d);
22682267
#else
22692268
simsimd_bilinear_bf16c_serial(a, b, c, n, d);
@@ -2293,7 +2292,7 @@ SIMSIMD_PUBLIC void simsimd_mahalanobis_f16(simsimd_f16_t const *a, simsimd_f16_
22932292
simsimd_mahalanobis_f16_sapphire(a, b, c, n, d);
22942293
#elif SIMSIMD_TARGET_HASWELL
22952294
simsimd_mahalanobis_f16_haswell(a, b, c, n, d);
2296-
#elif SIMSIMD_TARGET_NEON
2295+
#elif SIMSIMD_TARGET_NEON_F16
22972296
simsimd_mahalanobis_f16_neon(a, b, c, n, d);
22982297
#else
22992298
simsimd_mahalanobis_f16_serial(a, b, c, n, d);
@@ -2305,7 +2304,7 @@ SIMSIMD_PUBLIC void simsimd_mahalanobis_bf16(simsimd_bf16_t const *a, simsimd_bf
23052304
simsimd_mahalanobis_bf16_genoa(a, b, c, n, d);
23062305
#elif SIMSIMD_TARGET_HASWELL
23072306
simsimd_mahalanobis_bf16_haswell(a, b, c, n, d);
2308-
#elif SIMSIMD_TARGET_NEON
2307+
#elif SIMSIMD_TARGET_NEON_BF16
23092308
simsimd_mahalanobis_bf16_neon(a, b, c, n, d);
23102309
#else
23112310
simsimd_mahalanobis_bf16_serial(a, b, c, n, d);
@@ -2352,7 +2351,7 @@ SIMSIMD_PUBLIC void simsimd_wsum_bf16(simsimd_bf16_t const *a, simsimd_bf16_t co
23522351
simsimd_wsum_bf16_skylake(a, b, n, alpha, beta, r);
23532352
#elif SIMSIMD_TARGET_HASWELL
23542353
simsimd_wsum_bf16_haswell(a, b, n, alpha, beta, r);
2355-
#elif SIMSIMD_TARGET_NEON
2354+
#elif SIMSIMD_TARGET_NEON_BF16
23562355
simsimd_wsum_bf16_neon(a, b, n, alpha, beta, r);
23572356
#else
23582357
simsimd_wsum_bf16_serial(a, b, n, alpha, beta, r);
@@ -2431,7 +2430,7 @@ SIMSIMD_PUBLIC void simsimd_fma_bf16(simsimd_bf16_t const *a, simsimd_bf16_t con
24312430
simsimd_fma_bf16_skylake(a, b, c, n, alpha, beta, r);
24322431
#elif SIMSIMD_TARGET_HASWELL
24332432
simsimd_fma_bf16_haswell(a, b, c, n, alpha, beta, r);
2434-
#elif SIMSIMD_TARGET_NEON
2433+
#elif SIMSIMD_TARGET_NEON_BF16
24352434
simsimd_fma_bf16_neon(a, b, c, n, alpha, beta, r);
24362435
#else
24372436
simsimd_fma_bf16_serial(a, b, c, n, alpha, beta, r);

0 commit comments

Comments
 (0)