aboutsummaryrefslogtreecommitdiff
path: root/include/psimd.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/psimd.h')
-rw-r--r--include/psimd.h14
1 files changed, 7 insertions, 7 deletions
diff --git a/include/psimd.h b/include/psimd.h
index 0aadfd1..06d5fee 100644
--- a/include/psimd.h
+++ b/include/psimd.h
@@ -690,13 +690,13 @@
#endif
}
- PSIMD_INTRINSIC psimd_u8 psimd_blend_u8(psimd_u8 mask, psimd_u8 a, psimd_u8 b) {
+ PSIMD_INTRINSIC psimd_u8 psimd_blend_u8(psimd_s8 mask, psimd_u8 a, psimd_u8 b) {
#if defined(__ARM_NEON__) || defined(__ARM_NEON)
return (psimd_u8) vbslq_u8((uint8x16_t) mask, (uint8x16_t) a, (uint8x16_t) b);
#elif defined(__wasm__) && defined(__wasm_simd128__) && defined(__clang__)
return (psimd_u8) __builtin_wasm_bitselect(a, b, mask);
#else
- return (mask & a) | (~mask & b);
+ return (psimd_u8) ((mask & (psimd_s8) a) | (~mask & (psimd_s8) b));
#endif
}
@@ -710,13 +710,13 @@
#endif
}
- PSIMD_INTRINSIC psimd_u16 psimd_blend_u16(psimd_u16 mask, psimd_u16 a, psimd_u16 b) {
+ PSIMD_INTRINSIC psimd_u16 psimd_blend_u16(psimd_s16 mask, psimd_u16 a, psimd_u16 b) {
#if defined(__ARM_NEON__) || defined(__ARM_NEON)
return (psimd_u16) vbslq_u16((uint16x8_t) mask, (uint16x8_t) a, (uint16x8_t) b);
#elif defined(__wasm__) && defined(__wasm_simd128__) && defined(__clang__)
return (psimd_u16) __builtin_wasm_bitselect(a, b, mask);
#else
- return (mask & a) | (~mask & b);
+ return (psimd_u16) ((mask & (psimd_s16) a) | (~mask & (psimd_s16) b));
#endif
}
@@ -730,13 +730,13 @@
#endif
}
- PSIMD_INTRINSIC psimd_u32 psimd_blend_u32(psimd_u32 mask, psimd_u32 a, psimd_u32 b) {
+ PSIMD_INTRINSIC psimd_u32 psimd_blend_u32(psimd_s32 mask, psimd_u32 a, psimd_u32 b) {
#if defined(__ARM_NEON__) || defined(__ARM_NEON)
return (psimd_u32) vbslq_u32((uint32x4_t) mask, (uint32x4_t) a, (uint32x4_t) b);
#elif defined(__wasm__) && defined(__wasm_simd128__) && defined(__clang__)
return (psimd_u32) __builtin_wasm_bitselect(a, b, mask);
#else
- return (mask & a) | (~mask & b);
+ return (psimd_u32) ((mask & (psimd_s32) a) | (~mask & (psimd_s32) b));
#endif
}
@@ -746,7 +746,7 @@
#elif defined(__wasm__) && defined(__wasm_simd128__) && defined(__clang__)
return (psimd_f32) __builtin_wasm_bitselect(a, b, mask);
#else
- return (psimd_f32) psimd_blend_s32(mask, (psimd_s32) a, (psimd_s32) b);
+ return (psimd_f32) ((mask & (psimd_s32) a) | (~mask & (psimd_s32) b));
#endif
}