#ifndef AVUTIL_FLOAT_DSP_H
#define AVUTIL_FLOAT_DSP_H
+#include "config.h"
+
typedef struct AVFloatDSPContext {
/**
* Calculate the product of two vectors of floats and store the result in
* constraints: 32-byte aligned
* @param src1 second input vector
* constraints: 32-byte aligned
- * @param src1 third input vector
+ * @param src2 third input vector
* constraints: 32-byte aligned
* @param len number of elements in the input
* constraints: multiple of 16
* constraints: 32-byte aligned
* @param src1 second input vector
* constraints: 32-byte aligned
- * @param src1 third input vector
- * constraints: 32-byte aligned
* @param len number of elements in the input
* constraints: multiple of 16
*/
* @param len length of vectors, multiple of 4
*/
void (*butterflies_float)(float *restrict v1, float *restrict v2, int len);
+
+ /**
+ * Calculate the scalar product of two vectors of floats.
+ *
+ * @param v1 first vector, 16-byte aligned
+ * @param v2 second vector, 16-byte aligned
+ * @param len length of vectors, multiple of 4
+ *
+ * @return sum of elementwise products
+ */
+ float (*scalarproduct_float)(const float *v1, const float *v2, int len);
} AVFloatDSPContext;
+/**
+ * Return the scalar product of two vectors.
+ *
+ * @param v1 first input vector
+ * @param v2 first input vector
+ * @param len number of elements
+ *
+ * @return sum of elementwise products
+ */
+float avpriv_scalarproduct_float_c(const float *v1, const float *v2, int len);
+
/**
* Initialize a float DSP context.
*
void avpriv_float_dsp_init(AVFloatDSPContext *fdsp, int strict);
+void ff_float_dsp_init_aarch64(AVFloatDSPContext *fdsp);
void ff_float_dsp_init_arm(AVFloatDSPContext *fdsp);
void ff_float_dsp_init_ppc(AVFloatDSPContext *fdsp, int strict);
void ff_float_dsp_init_x86(AVFloatDSPContext *fdsp);