Skip to content

Commit cf907f6

Browse files
committed
Avoid scalarization in _mm_madd_epi16
1 parent 2e48b2d commit cf907f6

File tree

1 file changed

+1
-14
lines changed

1 file changed

+1
-14
lines changed

system/include/compat/emmintrin.h

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -669,20 +669,7 @@ _mm_avg_epu16(__m128i __a, __m128i __b)
669669
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
670670
_mm_madd_epi16(__m128i __a, __m128i __b)
671671
{
672-
// TODO: optimize
673-
union {
674-
signed short x[8];
675-
__m128i m;
676-
} src, src2;
677-
union {
678-
signed int x[4];
679-
__m128i m;
680-
} dst;
681-
src.m = __a;
682-
src2.m = __b;
683-
for(int i = 0; i < 4; ++i)
684-
dst.x[i] = src.x[i*2] * src2.x[i*2] + src.x[i*2+1] * src2.x[i*2+1];
685-
return dst.m;
672+
return (__m128i)__builtin_wasm_dot_s_i32x4_i16x8((v128_t)__a, (v128_t)__b);
686673
}
687674

688675
static __inline__ __m128i __attribute__((__always_inline__, __nodebug__))

0 commit comments

Comments
 (0)