|
|
|
@ -61,6 +61,28 @@ static void test_vector_fmul(const float *src0, const float *src1) |
|
|
|
|
bench_new(odst, src0, src1, LEN); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void test_vector_dmul(const double *src0, const double *src1) |
|
|
|
|
{ |
|
|
|
|
LOCAL_ALIGNED_32(double, cdst, [LEN]); |
|
|
|
|
LOCAL_ALIGNED_32(double, odst, [LEN]); |
|
|
|
|
int i; |
|
|
|
|
|
|
|
|
|
declare_func(void, double *dst, const double *src0, const double *src1, |
|
|
|
|
int len); |
|
|
|
|
|
|
|
|
|
call_ref(cdst, src0, src1, LEN); |
|
|
|
|
call_new(odst, src0, src1, LEN); |
|
|
|
|
for (i = 0; i < LEN; i++) { |
|
|
|
|
if (!double_near_abs_eps(cdst[i], odst[i], DBL_EPSILON)) { |
|
|
|
|
fprintf(stderr, "%d: %- .12f - %- .12f = % .12g\n", |
|
|
|
|
i, cdst[i], odst[i], cdst[i] - odst[i]); |
|
|
|
|
fail(); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
bench_new(odst, src0, src1, LEN); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#define ARBITRARY_FMUL_ADD_CONST 0.005 |
|
|
|
|
static void test_vector_fmul_add(const float *src0, const float *src1, const float *src2) |
|
|
|
|
{ |
|
|
|
@ -294,6 +316,8 @@ void checkasm_check_float_dsp(void) |
|
|
|
|
if (check_func(fdsp->vector_fmac_scalar, "vector_fmac_scalar")) |
|
|
|
|
test_vector_fmac_scalar(src0, src1, src2); |
|
|
|
|
report("vector_fmac"); |
|
|
|
|
if (check_func(fdsp->vector_dmul, "vector_dmul")) |
|
|
|
|
test_vector_dmul(dbl_src0, dbl_src1); |
|
|
|
|
if (check_func(fdsp->vector_dmul_scalar, "vector_dmul_scalar")) |
|
|
|
|
test_vector_dmul_scalar(dbl_src0, dbl_src1); |
|
|
|
|
report("vector_dmul"); |
|
|
|
|