@@ -2554,6 +2554,14 @@ inline _Tpvec func(const _Tpvec& a, const _Tpvec& b) \
2554
2554
return _Tpvec (intrin (a.val , b.val )); \
2555
2555
}
2556
2556
2557
+ #define OPENCV_HAL_IMPL_WASM_BIN_FUNC_FALLBACK (_Tpvec, func, intrin ) \
2558
+ inline _Tpvec func (const _Tpvec& a, const _Tpvec& b) \
2559
+ { \
2560
+ fallback::_Tpvec a_ (a); \
2561
+ fallback::_Tpvec b_ (b); \
2562
+ return _Tpvec (fallback::func (a_, b_)); \
2563
+ }
2564
+
2557
2565
OPENCV_HAL_IMPL_WASM_BIN_FUNC (v_float32x4, v_min, wasm_f32x4_min)
2558
2566
OPENCV_HAL_IMPL_WASM_BIN_FUNC (v_float32x4, v_max, wasm_f32x4_max)
2559
2567
OPENCV_HAL_IMPL_WASM_BIN_FUNC (v_float64x2, v_min, wasm_f64x2_min)
@@ -2644,8 +2652,14 @@ OPENCV_HAL_IMPL_WASM_BIN_FUNC(v_uint8x16, v_sub_wrap, wasm_i8x16_sub)
2644
2652
OPENCV_HAL_IMPL_WASM_BIN_FUNC (v_int8x16, v_sub_wrap, wasm_i8x16_sub)
2645
2653
OPENCV_HAL_IMPL_WASM_BIN_FUNC (v_uint16x8, v_sub_wrap, wasm_i16x8_sub)
2646
2654
OPENCV_HAL_IMPL_WASM_BIN_FUNC (v_int16x8, v_sub_wrap, wasm_i16x8_sub)
2655
+ #if (__EMSCRIPTEN_major__ * 1000000 + __EMSCRIPTEN_minor__ * 1000 + __EMSCRIPTEN_tiny__) >= (2000000)
2656
+ // details: https://github.com/opencv/opencv/issues/18097 ( https://github.com/emscripten-core/emscripten/issues/12018 )
2657
+ OPENCV_HAL_IMPL_WASM_BIN_FUNC_FALLBACK (v_uint8x16, v_mul_wrap, wasm_i8x16_mul)
2658
+ OPENCV_HAL_IMPL_WASM_BIN_FUNC_FALLBACK(v_int8x16, v_mul_wrap, wasm_i8x16_mul)
2659
+ #else
2647
2660
OPENCV_HAL_IMPL_WASM_BIN_FUNC (v_uint8x16, v_mul_wrap, wasm_i8x16_mul)
2648
2661
OPENCV_HAL_IMPL_WASM_BIN_FUNC(v_int8x16, v_mul_wrap, wasm_i8x16_mul)
2662
+ #endif
2649
2663
OPENCV_HAL_IMPL_WASM_BIN_FUNC (v_uint16x8, v_mul_wrap, wasm_i16x8_mul)
2650
2664
OPENCV_HAL_IMPL_WASM_BIN_FUNC (v_int16x8, v_mul_wrap, wasm_i16x8_mul)
2651
2665
0 commit comments