%endmacro
INIT_MMX mmx
-%define SPLATD SPLATD_MMX
%define CLIPD CLIPD_MMX
VECTOR_CLIP_INT32 0, 1, 0, 0
INIT_XMM sse2
-%define SPLATD SPLATD_SSE2
VECTOR_CLIP_INT32 6, 1, 0, 0, _int
%define CLIPD CLIPD_SSE2
VECTOR_CLIP_INT32 6, 2, 0, 1
%endmacro
INIT_XMM sse
-%define SPLATD SPLATD_SSE
INT32_TO_FLOAT_FMUL_SCALAR 5
INIT_XMM sse2
-%define SPLATD SPLATD_SSE2
INT32_TO_FLOAT_FMUL_SCALAR 3
-%undef SPLATD
;------------------------------------------------------------------------------
%endif
%endmacro
-%macro SPLATD 2-3 0
-%if mmsize == 16
- pshufd %1, %2, (%3)*0x55
-%else
- pshufw %1, %2, (%3)*0x11 + ((%3)+1)*0x44
-%endif
-%endmacro
-
-%macro SPLATD_MMX 1
+%macro SPLATD 1
+%if mmsize == 8
punpckldq %1, %1
-%endmacro
-
-%macro SPLATD_SSE 1
- shufps %1, %1, 0
-%endmacro
-
-%macro SPLATD_SSE2 1
+%elif cpuflag(sse2)
pshufd %1, %1, 0
+%elif cpuflag(sse)
+ shufps %1, %1, 0
+%endif
%endmacro
%macro CLIPW 3 ;(dst, min, max)
%else ; %1 == 10/9/8
punpcklwd m5, m3, m4
punpckhwd m3, m4
- SPLATD m0, m0
+ SPLATD m0
pmaddwd m5, m0
pmaddwd m3, m0