31 void ff_int32_to_float_fmul_scalar_sse (
float *dst,
const int *src,
float mul,
int len);
32 void ff_int32_to_float_fmul_scalar_sse2(
float *dst,
const int *src,
float mul,
int len);
34 void ff_float_to_int16_3dnow(int16_t *dst,
const float *src,
long len);
35 void ff_float_to_int16_sse (int16_t *dst,
const float *src,
long len);
36 void ff_float_to_int16_sse2 (int16_t *dst,
const float *src,
long len);
38 void ff_float_to_int16_interleave2_3dnow(int16_t *dst,
const float **src,
long len);
39 void ff_float_to_int16_interleave2_sse (int16_t *dst,
const float **src,
long len);
40 void ff_float_to_int16_interleave2_sse2 (int16_t *dst,
const float **src,
long len);
42 void ff_float_to_int16_interleave6_sse(int16_t *dst,
const float **src,
int len);
43 void ff_float_to_int16_interleave6_3dnow(int16_t *dst,
const float **src,
int len);
44 void ff_float_to_int16_interleave6_3dn2(int16_t *dst,
const float **src,
int len);
46 #define ff_float_to_int16_interleave6_sse2 ff_float_to_int16_interleave6_sse
48 #define FLOAT_TO_INT16_INTERLEAVE(cpu) \
50 static av_noinline void float_to_int16_interleave_misc_##cpu(int16_t *dst, const float **src, long len, int channels){\
51 DECLARE_ALIGNED(16, int16_t, tmp)[len];\
53 for(c=0; c<channels; c++){\
54 ff_float_to_int16_##cpu(tmp, src[c], len);\
55 for(i=0, j=c; i<len; i++, j+=channels)\
60 static void float_to_int16_interleave_##cpu(int16_t *dst, const float **src, long len, int channels){\
62 ff_float_to_int16_##cpu(dst, src[0], len);\
63 else if(channels==2){\
64 ff_float_to_int16_interleave2_##cpu(dst, src, len);\
65 }else if(channels==6){\
66 ff_float_to_int16_interleave6_##cpu(dst, src, len);\
68 float_to_int16_interleave_misc_##cpu(dst, src, len, channels);\
71 FLOAT_TO_INT16_INTERLEAVE(3dnow)
72 FLOAT_TO_INT16_INTERLEAVE(
sse)
73 FLOAT_TO_INT16_INTERLEAVE(sse2)
75 static
void float_to_int16_interleave_3dn2(int16_t *dst, const
float **src,
long len,
int channels){
77 ff_float_to_int16_interleave6_3dn2(dst, src, len);
79 float_to_int16_interleave_3dnow(dst, src, len, channels);
82 void ff_float_interleave2_mmx(
float *dst,
const float **src,
unsigned int len);
83 void ff_float_interleave2_sse(
float *dst,
const float **src,
unsigned int len);
85 void ff_float_interleave6_mmx(
float *dst,
const float **src,
unsigned int len);
86 void ff_float_interleave6_sse(
float *dst,
const float **src,
unsigned int len);
88 static void float_interleave_mmx(
float *dst,
const float **src,
89 unsigned int len,
int channels)
92 ff_float_interleave2_mmx(dst, src, len);
93 }
else if (channels == 6)
94 ff_float_interleave6_mmx(dst, src, len);
99 static void float_interleave_sse(
float *dst,
const float **src,
100 unsigned int len,
int channels)
103 ff_float_interleave2_sse(dst, src, len);
104 }
else if (channels == 6)
105 ff_float_interleave6_sse(dst, src, len);