54 for (i=0; i<
len; i++) {
55 accu = (int64_t)src0[i] * src1[i];
56 dst[i] = src2[i] + (
int)((accu + 0x40000000) >> 31);
66 for (i=0; i<
len; i++) {
67 accu = (int64_t)src0[i] * src1[-i];
68 dst[i] = (
int)((accu+0x40000000) >> 31);
81 round = bits? 1 << (bits-1) : 0;
83 for (i=-len, j=len-1; i<0; i++, j--) {
88 dst[i] = av_clip_int16(((((int64_t)s0*wj - (int64_t)s1*wi + 0x40000000) >> 31) + round) >> bits);
89 dst[j] = av_clip_int16(((((int64_t)s0*wi + (int64_t)s1*wj + 0x40000000) >> 31) + round) >> bits);
103 for (i=-len, j=len-1; i<0; i++, j--) {
108 dst[i] = ((int64_t)s0*wj - (int64_t)s1*wi + 0x40000000) >> 31;
109 dst[j] = ((int64_t)s0*wi + (int64_t)s1*wj + 0x40000000) >> 31;
118 for (i = 0; i <
len; i++){
119 accu = (int64_t)src0[i] * src1[i];
120 dst[i] = (
int)((accu+0x40000000) >> 31);
128 int64_t p = 0x40000000;
131 for (i = 0; i <
len; i++)
132 p += (int64_t)v1[i] * v2[i];
134 return (
int)(p >> 31);
141 for (i = 0; i <
len; i++){
142 int t = v1[i] - v2[i];
static void vector_fmul_window_scaled_c(int16_t *dst, const int32_t *src0, const int32_t *src1, const int32_t *win, int len, uint8_t bits)
int(* scalarproduct_fixed)(const int *v1, const int *v2, int len)
Calculate the scalar product of two vectors of integers.
static int scalarproduct_fixed_c(const int *v1, const int *v2, int len)
static void vector_fmul_reverse_c(int *dst, const int *src0, const int *src1, int len)
AVFixedDSPContext * avpriv_alloc_fixed_dsp(int bit_exact)
Allocate and initialize a fixed DSP context.
void ff_fixed_dsp_init_x86(AVFixedDSPContext *fdsp)
void(* vector_fmul_window_scaled)(int16_t *dst, const int32_t *src0, const int32_t *src1, const int32_t *win, int len, uint8_t bits)
Overlap/add with window function.
void(* vector_fmul_reverse)(int *dst, const int *src0, const int *src1, int len)
static void vector_fmul_add_c(int *dst, const int *src0, const int *src1, const int *src2, int len)
void(* butterflies_fixed)(int *av_restrict v1, int *av_restrict v2, int len)
Calculate the sum and difference of two vectors of integers.
static av_always_inline av_const double round(double x)
static void butterflies_fixed_c(int *v1, int *v2, int len)
static void vector_fmul_c(int *dst, const int *src0, const int *src1, int len)
void(* vector_fmul_add)(int *dst, const int *src0, const int *src1, const int *src2, int len)
Calculate the entry wise product of two vectors of integers, add a third vector of integers and store...
void(* vector_fmul)(int *dst, const int *src0, const int *src1, int len)
Fixed-point multiplication that calculates the entry wise product of two vectors of integers and stor...
static void vector_fmul_window_c(int32_t *dst, const int32_t *src0, const int32_t *src1, const int32_t *win, int len)
void(* vector_fmul_window)(int32_t *dst, const int32_t *src0, const int32_t *src1, const int32_t *win, int len)
Overlap/add with window function.