diff options
author | James Almer <jamrial@gmail.com> | 2023-12-21 22:11:25 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2023-12-22 09:26:38 -0300 |
commit | c5029bb19352524463f3560fe7f6cb794e147b1f (patch) | |
tree | 05c6b2a0acb8c4af6575e208837a4ff7733f3f79 /tests/checkasm/takdsp.c | |
parent | 935837c3d388f47de39fab40337e4b356d03c298 (diff) | |
download | ffmpeg-c5029bb19352524463f3560fe7f6cb794e147b1f.tar.gz |
checkasm/takdsp: add decorrelate_sf test
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'tests/checkasm/takdsp.c')
-rw-r--r-- | tests/checkasm/takdsp.c | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/tests/checkasm/takdsp.c b/tests/checkasm/takdsp.c index 3aecee1f72..b27bb92976 100644 --- a/tests/checkasm/takdsp.c +++ b/tests/checkasm/takdsp.c @@ -24,6 +24,7 @@ #include "libavutil/mem_internal.h" #include "libavcodec/takdsp.h" +#include "libavcodec/mathops.h" #include "checkasm.h" @@ -33,8 +34,9 @@ buf[i] = rnd(); \ } while (0) -static void test_decorrelate_ls(TAKDSPContext *s) { #define BUF_SIZE 1024 + +static void test_decorrelate_ls(TAKDSPContext *s) { declare_func(void, int32_t *, int32_t *, int); if (check_func(s->decorrelate_ls, "decorrelate_ls")) { @@ -60,7 +62,6 @@ static void test_decorrelate_ls(TAKDSPContext *s) { } static void test_decorrelate_sr(TAKDSPContext *s) { -#define BUF_SIZE 1024 declare_func(void, int32_t *, int32_t *, int); if (check_func(s->decorrelate_sr, "decorrelate_sr")) { @@ -86,7 +87,6 @@ static void test_decorrelate_sr(TAKDSPContext *s) { } static void test_decorrelate_sm(TAKDSPContext *s) { -#define BUF_SIZE 1024 declare_func(void, int32_t *, int32_t *, int); if (check_func(s->decorrelate_sm, "decorrelate_sm")) { @@ -114,6 +114,34 @@ static void test_decorrelate_sm(TAKDSPContext *s) { report("decorrelate_sm"); } +static void test_decorrelate_sf(TAKDSPContext *s) { + declare_func(void, int32_t *, int32_t *, int, int, int); + + if (check_func(s->decorrelate_sf, "decorrelate_sf")) { + LOCAL_ALIGNED_32(int32_t, p1, [BUF_SIZE]); + LOCAL_ALIGNED_32(int32_t, p1_2, [BUF_SIZE]); + LOCAL_ALIGNED_32(int32_t, p2, [BUF_SIZE]); + int dshift, dfactor; + + randomize(p1, BUF_SIZE); + memcpy(p1_2, p1, BUF_SIZE * sizeof(*p1)); + randomize(p2, BUF_SIZE); + dshift = (rnd() & 0xF) + 1; + dfactor = sign_extend(rnd(), 10); + + call_ref(p1, p2, BUF_SIZE, dshift, dfactor); + call_new(p1_2, p2, BUF_SIZE, dshift, dfactor); + + if (memcmp(p1, p1_2, BUF_SIZE * sizeof(*p1)) != 0) { + fail(); + } + + bench_new(p1, p2, BUF_SIZE, dshift, dfactor); + } + + report("decorrelate_sf"); +} + void checkasm_check_takdsp(void) { TAKDSPContext s = { 0 }; @@ -122,4 +150,5 @@ void checkasm_check_takdsp(void) test_decorrelate_ls(&s); test_decorrelate_sr(&s); test_decorrelate_sm(&s); + test_decorrelate_sf(&s); } |