27
;---------------------------------------------------------------------------------
28
; void int32_to_float_fmul_scalar(float *dst, const int *src, float mul, int len);
29
;---------------------------------------------------------------------------------
30
%macro INT32_TO_FLOAT_FMUL_SCALAR 2
32
cglobal int32_to_float_fmul_scalar_%1, 3,3,%2, dst, src, len
34
cglobal int32_to_float_fmul_scalar_%1, 4,4,%2, dst, src, mul, len
48
cvtdq2ps m1, [srcq+lenq ]
49
cvtdq2ps m2, [srcq+lenq+16]
51
cvtpi2ps m1, [srcq+lenq ]
52
cvtpi2ps m3, [srcq+lenq+ 8]
53
cvtpi2ps m2, [srcq+lenq+16]
54
cvtpi2ps m4, [srcq+lenq+24]
61
mova [dstq+lenq+16], m2
68
%define SPLATD SPLATD_SSE
70
INT32_TO_FLOAT_FMUL_SCALAR sse, 5
72
%define SPLATD SPLATD_SSE2
73
INT32_TO_FLOAT_FMUL_SCALAR sse2, 3
77
;------------------------------------------------------------------------------
78
; void ff_float_to_int16(int16_t *dst, const float *src, long len);
79
;------------------------------------------------------------------------------
80
%macro FLOAT_TO_INT16 2
81
cglobal float_to_int16_%1, 3,3,%2, dst, src, len
83
lea srcq, [srcq+2*lenq]
88
cvtps2dq m0, [srcq+2*lenq ]
89
cvtps2dq m1, [srcq+2*lenq+16]
93
cvtps2pi m0, [srcq+2*lenq ]
94
cvtps2pi m1, [srcq+2*lenq+ 8]
95
cvtps2pi m2, [srcq+2*lenq+16]
96
cvtps2pi m3, [srcq+2*lenq+24]
100
mova [dstq+lenq+8], m2
111
FLOAT_TO_INT16 sse2, 2
113
FLOAT_TO_INT16 sse, 0
114
%define cvtps2pi pf2id
115
FLOAT_TO_INT16 3dnow, 0
119
;-------------------------------------------------------------------------------
120
; void ff_float_to_int16_interleave2(int16_t *dst, const float **src, long len);
121
;-------------------------------------------------------------------------------
122
%macro FLOAT_TO_INT16_INTERLEAVE2 1
123
cglobal float_to_int16_interleave2_%1, 3,4,2, dst, src0, src1, len
125
mov src1q, [src0q+gprsize]
133
cvtps2dq m0, [src0q+lenq]
134
cvtps2dq m1, [src1q+lenq]
140
cvtps2pi m0, [src0q+lenq ]
141
cvtps2pi m1, [src0q+lenq+8]
142
cvtps2pi m2, [src1q+lenq ]
143
cvtps2pi m3, [src1q+lenq+8]
149
mova [dstq+lenq ], m0
150
mova [dstq+lenq+8], m1
161
%define cvtps2pi pf2id
162
FLOAT_TO_INT16_INTERLEAVE2 3dnow
164
%define movdqa movaps
165
FLOAT_TO_INT16_INTERLEAVE2 sse
168
FLOAT_TO_INT16_INTERLEAVE2 sse2
27
171
%macro PSWAPD_SSE 2
28
172
pshufw %1, %2, 0x4e