diff options
author | Michael Niedermayer <michael@niedermayer.cc> | 2015-07-17 23:26:42 +0200 |
---|---|---|
committer | Michael Niedermayer <michael@niedermayer.cc> | 2015-07-17 23:26:59 +0200 |
commit | 72d1409e23803e8314145f610e84b47a44ba3dbc (patch) | |
tree | 179d60543279fb91556ee71bfed0def93431941d | |
parent | 52b6d96268987db14937fcf5f9a53ab9b4184adb (diff) | |
parent | d37f23263584774e1798e9ac909a398304a05091 (diff) | |
download | ffmpeg-72d1409e23803e8314145f610e84b47a44ba3dbc.tar.gz |
Merge commit 'd37f23263584774e1798e9ac909a398304a05091'
* commit 'd37f23263584774e1798e9ac909a398304a05091':
checkasm: Add unit tests for bswapdsp
Merged-by: Michael Niedermayer <michael@niedermayer.cc>
-rw-r--r-- | tests/checkasm/Makefile | 1 | ||||
-rw-r--r-- | tests/checkasm/bswapdsp.c | 73 | ||||
-rw-r--r-- | tests/checkasm/checkasm.c | 3 | ||||
-rw-r--r-- | tests/checkasm/checkasm.h | 1 |
4 files changed, 78 insertions, 0 deletions
diff --git a/tests/checkasm/Makefile b/tests/checkasm/Makefile index 0758746bc4..483ad136f0 100644 --- a/tests/checkasm/Makefile +++ b/tests/checkasm/Makefile @@ -1,4 +1,5 @@ # libavcodec tests +AVCODECOBJS-$(CONFIG_BSWAPDSP) += bswapdsp.o AVCODECOBJS-$(CONFIG_H264PRED) += h264pred.o AVCODECOBJS-$(CONFIG_H264QPEL) += h264qpel.o diff --git a/tests/checkasm/bswapdsp.c b/tests/checkasm/bswapdsp.c new file mode 100644 index 0000000000..51e228686a --- /dev/null +++ b/tests/checkasm/bswapdsp.c @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2015 Henrik Gramner + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with FFmpeg; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include <string.h> +#include "checkasm.h" +#include "libavcodec/bswapdsp.h" +#include "libavutil/common.h" +#include "libavutil/intreadwrite.h" + +#define BUF_SIZE 512 + +#define randomize_buffers()\ + do {\ + int i;\ + for (i = 0; i < BUF_SIZE; i += 4) {\ + uint32_t r = rnd();\ + AV_WN32A(src0+i, r);\ + AV_WN32A(src1+i, r);\ + r = rnd();\ + AV_WN32A(dst0+i, r);\ + AV_WN32A(dst1+i, r);\ + }\ + } while (0) + +#define check_bswap(type)\ + do {\ + int w;\ + for (w = 0; w < BUF_SIZE/sizeof(type); w++) {\ + int offset = (BUF_SIZE/sizeof(type) - w) & 15; /* Test various alignments */\ + randomize_buffers();\ + call_ref((type*)dst0+offset, (type*)src0+offset, w);\ + call_new((type*)dst1+offset, (type*)src1+offset, w);\ + if (memcmp(src0, src1, BUF_SIZE) || memcmp(dst0, dst1, BUF_SIZE))\ + fail();\ + bench_new((type*)dst1+offset, (type*)src1+offset, w);\ + }\ + } while (0) + +void checkasm_check_bswapdsp(void) +{ + DECLARE_ALIGNED(16, uint8_t, src0)[BUF_SIZE]; + DECLARE_ALIGNED(16, uint8_t, src1)[BUF_SIZE]; + DECLARE_ALIGNED(16, uint8_t, dst0)[BUF_SIZE]; + DECLARE_ALIGNED(16, uint8_t, dst1)[BUF_SIZE]; + BswapDSPContext h; + + ff_bswapdsp_init(&h); + + if (check_func(h.bswap_buf, "bswap_buf")) + check_bswap(uint32_t); + + if (check_func(h.bswap16_buf, "bswap16_buf")) + check_bswap(uint16_t); + + report("bswap"); +} diff --git a/tests/checkasm/checkasm.c b/tests/checkasm/checkasm.c index 41ea9efc61..89d238acd2 100644 --- a/tests/checkasm/checkasm.c +++ b/tests/checkasm/checkasm.c @@ -54,6 +54,9 @@ /* List of tests to invoke */ static void (* const tests[])(void) = { +#if CONFIG_BSWAPDSP + checkasm_check_bswapdsp, +#endif #if CONFIG_H264PRED checkasm_check_h264pred, #endif diff --git a/tests/checkasm/checkasm.h b/tests/checkasm/checkasm.h index 8d5d30f597..aa81b44e94 100644 --- a/tests/checkasm/checkasm.h +++ b/tests/checkasm/checkasm.h @@ -29,6 +29,7 @@ #include "libavutil/lfg.h" #include "libavutil/timer.h" +void checkasm_check_bswapdsp(void); void checkasm_check_h264pred(void); void checkasm_check_h264qpel(void); |