diff options
author | Christophe Lyon <christophe.lyon@st.com> | 2011-02-08 18:15:05 +0100 |
---|---|---|
committer | Christophe Lyon <christophe.lyon@st.com> | 2011-02-08 18:28:48 +0100 |
commit | f0ecb5a040ce3b9baf1e8ddd53f02e46470fd965 (patch) | |
tree | c4e61604a5e3fc6b35bcf1b83c65d6334c56d8aa /ref_vsli_n.c | |
parent | 2eeafa4af3fffbc655074e549236c118eea2548a (diff) | |
download | platform_external_arm-neon-tests-f0ecb5a040ce3b9baf1e8ddd53f02e46470fd965.tar.gz platform_external_arm-neon-tests-f0ecb5a040ce3b9baf1e8ddd53f02e46470fd965.tar.bz2 platform_external_arm-neon-tests-f0ecb5a040ce3b9baf1e8ddd53f02e46470fd965.zip |
Restore tests for vsli/vsri. Add tests with maximum allowed shift amount.
Diffstat (limited to 'ref_vsli_n.c')
-rw-r--r-- | ref_vsli_n.c | 70 |
1 files changed, 27 insertions, 43 deletions
diff --git a/ref_vsli_n.c b/ref_vsli_n.c index 2666af6..5f6ed23 100644 --- a/ref_vsli_n.c +++ b/ref_vsli_n.c @@ -23,35 +23,19 @@ THE SOFTWARE. */ -#ifdef __arm__ -#include <arm_neon.h> -#else -#error Target not supported -#endif - -#include "stm-arm-neon-ref.h" - -#ifndef INSN_NAME #define INSN_NAME vsli #define TEST_MSG "VSLI_N" -#endif -#define FNNAME1(NAME) void exec_ ## NAME ##_n (void) -#define FNNAME(NAME) FNNAME1(NAME) +/* Extra tests for functions requiring corner cases tests */ +void vsli_extra(void); +#define EXTRA_TESTS vsli_extra -FNNAME (INSN_NAME) -{ - /* vector_res = vmlx_n(vector, vector2, val), - then store the result. */ -#define TEST_VMLX_N1(INSN, Q, T1, T2, W, N, V) \ - VECT_VAR(vector_res, T1, W, N) = \ - INSN##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N), \ - VECT_VAR(vector2, T1, W, N), \ - V); \ - vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), VECT_VAR(vector_res, T1, W, N)) +#include "ref_vsXi_n.c" -#define TEST_VMLX_N(INSN, Q, T1, T2, W, N, V) \ - TEST_VMLX_N1(INSN, Q, T1, T2, W, N, V) +void vsli_extra(void) +{ + /* Test cases with maximum shift amount (this amount is different + * from vsri. */ /* With ARM RVCT, we need to declare variables before any executable statement */ @@ -82,23 +66,23 @@ FNNAME (INSN_NAME) TEST_VDUP(vector2, q, uint, u, 32, 4, 55); TEST_VDUP(vector2, q, uint, u, 64, 2, 3); - /* Choose shift amount arbitrarily */ - TEST_VMLX_N(INSN_NAME, , int, s, 8, 8, 4); - TEST_VMLX_N(INSN_NAME, , int, s, 16, 4, 3); - TEST_VMLX_N(INSN_NAME, , int, s, 32, 2, 1); - TEST_VMLX_N(INSN_NAME, , int, s, 64, 1, 32); - TEST_VMLX_N(INSN_NAME, , uint, u, 8, 8, 2); - TEST_VMLX_N(INSN_NAME, , uint, u, 16, 4, 10); - TEST_VMLX_N(INSN_NAME, , uint, u, 32, 2, 30); - TEST_VMLX_N(INSN_NAME, , uint, u, 64, 1, 3); - TEST_VMLX_N(INSN_NAME, q, int, s, 8, 16, 5); - TEST_VMLX_N(INSN_NAME, q, int, s, 16, 8, 3); - TEST_VMLX_N(INSN_NAME, q, int, s, 32, 4, 20); - TEST_VMLX_N(INSN_NAME, q, int, s, 64, 2, 16); - TEST_VMLX_N(INSN_NAME, q, uint, u, 8, 16, 3); - TEST_VMLX_N(INSN_NAME, q, uint, u, 16, 8, 12); - TEST_VMLX_N(INSN_NAME, q, uint, u, 32, 4, 23); - TEST_VMLX_N(INSN_NAME, q, uint, u, 64, 2, 53); - - dump_results_hex (TEST_MSG); + /* Use maximum allowed shift amount */ + TEST_VSXI_N(INSN_NAME, , int, s, 8, 8, 7); + TEST_VSXI_N(INSN_NAME, , int, s, 16, 4, 15); + TEST_VSXI_N(INSN_NAME, , int, s, 32, 2, 31); + TEST_VSXI_N(INSN_NAME, , int, s, 64, 1, 63); + TEST_VSXI_N(INSN_NAME, , uint, u, 8, 8, 7); + TEST_VSXI_N(INSN_NAME, , uint, u, 16, 4, 15); + TEST_VSXI_N(INSN_NAME, , uint, u, 32, 2, 31); + TEST_VSXI_N(INSN_NAME, , uint, u, 64, 1, 63); + TEST_VSXI_N(INSN_NAME, q, int, s, 8, 16, 7); + TEST_VSXI_N(INSN_NAME, q, int, s, 16, 8, 15); + TEST_VSXI_N(INSN_NAME, q, int, s, 32, 4, 31); + TEST_VSXI_N(INSN_NAME, q, int, s, 64, 2, 63); + TEST_VSXI_N(INSN_NAME, q, uint, u, 8, 16, 7); + TEST_VSXI_N(INSN_NAME, q, uint, u, 16, 8, 15); + TEST_VSXI_N(INSN_NAME, q, uint, u, 32, 4, 31); + TEST_VSXI_N(INSN_NAME, q, uint, u, 64, 2, 63); + + dump_results_hex2 (TEST_MSG, "max shift amount"); } |