diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-11-26 02:39:42 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-11-26 02:39:42 +0000 |
commit | e2b814033a963d7d9ca00933279cd15839b473b9 (patch) | |
tree | 18af8f6ccd41df4d0b36a54e7ef14f7def7b2c94 /gcc/testsuite | |
parent | 7e911808fabbf99d37336440470c43a13ac03496 (diff) | |
download | gcc-e2b814033a963d7d9ca00933279cd15839b473b9.tar.gz |
* config/i386/i386-builtin-types.awk (DEF_VECTOR_TYPE): Allow an
optional 3rd argument to define the mode.
* config/i386/i386-builtin-types.def (UQI, UHI, USI, UDI): New.
(V2UDI, V4USI, V8UHI, V16UQI): New.
(V4SF_FTYPE_V4SF_V4SF_V4SI, V2UDI_FTYPE_V2UDI_V2UDI_V2UDI,
V4USI_FTYPE_V4USI_V4USI_V4USI, V8UHI_FTYPE_V8UHI_V8UHI_V8UHI,
V16UQI_FTYPE_V16UQI_V16UQI_V16UQI): New.
* config/i386/i386-modes.def: Rearrange for double-wide AVX.
* config/i386/i386-protos.h (ix86_expand_vec_extract_even_odd): New.
* config/i386/i386.c (IX86_BUILTIN_VEC_PERM_*): New.
(bdesc_args): Add the builtin definitions to match.
(ix86_expand_builtin): Expand them.
(ix86_builtin_vectorization_cost): Rename from
x86_builtin_vectorization_cost.
(ix86_vectorize_builtin_vec_perm, struct expand_vec_perm_d,
doublesize_vector_mode, expand_vselect, expand_vselect_vconcat,
expand_vec_perm_blend, expand_vec_perm_vpermil,
expand_vec_perm_pshufb, expand_vec_perm_1,
expand_vec_perm_pshuflw_pshufhw, expand_vec_perm_palignr,
expand_vec_perm_interleave2, expand_vec_perm_pshufb2,
expand_vec_perm_even_odd_1, expand_vec_perm_even_odd,
ix86_expand_vec_perm_builtin_1, extract_vec_perm_cst,
ix86_expand_vec_perm_builtin, ix86_vectorize_builtin_vec_perm_ok,
ix86_expand_vec_extract_even_odd, TARGET_VECTORIZE_BUILTIN_VEC_PERM,
TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK): New.
* sse.md (SSEMODE_EO): New.
(vec_extract_even<mode>): Use SSEMODE_EO and
ix86_expand_vec_extract_even_odd.
(vec_extract_odd<mode>): Likewise.
(mulv16qi3, vec_pack_trunc_v8hi, vec_pack_trunc_v4si,
vec_pack_trunc_v2di): Use ix86_expand_vec_extract_even_odd.
testsuite/
* gcc.dg/vect/slp-21.c: Succeed with vect_extract_even_odd too.
* lib/target-supports.exp
(check_effective_target_vect_extract_even_odd): Add x86.
* gcc.target/i386/isa-check.h: New.
* gcc.target/i386/vperm-2-2.inc, gcc.target/i386/vperm-4-1.inc,
gcc.target/i386/vperm-4-2.inc, gcc.target/i386/vperm-v2df.c,
gcc.target/i386/vperm-v2di.c, gcc.target/i386/vperm-v4sf-1.c,
gcc.target/i386/vperm-v4sf-2.c, gcc.target/i386/vperm-v4si-1.c,
gcc.target/i386/vperm-v4si-2.c, gcc.target/i386/vperm-v4si-2x.c,
gcc.target/i386/vperm.pl: New files.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154667 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/ChangeLog | 15 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/vect/slp-21.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/isa-check.h | 85 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/vperm-2-2.inc | 27 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/vperm-4-1.inc | 272 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/vperm-4-2.inc | 4262 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/vperm-v2df.c | 34 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/vperm-v2di.c | 34 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/vperm-v4sf-1.c | 40 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/vperm-v4sf-2.c | 40 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/vperm-v4si-1.c | 40 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/vperm-v4si-2.c | 40 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/vperm-v4si-2x.c | 3 | ||||
-rwxr-xr-x | gcc/testsuite/gcc.target/i386/vperm.pl | 41 | ||||
-rw-r--r-- | gcc/testsuite/lib/target-supports.exp | 4 |
15 files changed, 4938 insertions, 3 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index edce8bd8137..965327c3f93 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,20 @@ 2009-11-25 Richard Henderson <rth@redhat.com> + * gcc.dg/vect/slp-21.c: Succeed with vect_extract_even_odd too. + + * lib/target-supports.exp + (check_effective_target_vect_extract_even_odd): Add x86. + + * gcc.target/i386/isa-check.h: New. + * gcc.target/i386/vperm-2-2.inc, gcc.target/i386/vperm-4-1.inc, + gcc.target/i386/vperm-4-2.inc, gcc.target/i386/vperm-v2df.c, + gcc.target/i386/vperm-v2di.c, gcc.target/i386/vperm-v4sf-1.c, + gcc.target/i386/vperm-v4sf-2.c, gcc.target/i386/vperm-v4si-1.c, + gcc.target/i386/vperm-v4si-2.c, gcc.target/i386/vperm-v4si-2x.c, + gcc.target/i386/vperm.pl: New files. + +2009-11-25 Richard Henderson <rth@redhat.com> + * gcc.dg/vect/pr36493.c: Call check_vect. * gcc.dg/vect/pr37539.c: Likewise. * gcc.dg/vect/vect-nest-cycle-3.c: Call check_vect earlier. diff --git a/gcc/testsuite/gcc.dg/vect/slp-21.c b/gcc/testsuite/gcc.dg/vect/slp-21.c index 327045e4789..182ad49939e 100644 --- a/gcc/testsuite/gcc.dg/vect/slp-21.c +++ b/gcc/testsuite/gcc.dg/vect/slp-21.c @@ -200,8 +200,8 @@ int main (void) return 0; } -/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" { target vect_strided } } } */ -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! { vect_strided } } } } } */ +/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect" { target { vect_strided || vect_extract_even_odd } } } } */ +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! { vect_strided || vect_extract_even_odd } } } } } */ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided } } } */ /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! { vect_strided } } } } } */ /* { dg-final { cleanup-tree-dump "vect" } } */ diff --git a/gcc/testsuite/gcc.target/i386/isa-check.h b/gcc/testsuite/gcc.target/i386/isa-check.h new file mode 100644 index 00000000000..8ddbf4dfc2b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/isa-check.h @@ -0,0 +1,85 @@ +#include "cpuid.h" + +extern void exit (int) __attribute__((noreturn)); + +/* Determine what instruction set we've been compiled for, + and detect that we're running with it. */ +static void __attribute__((constructor)) +check_isa (void) +{ + int a, b, c, d; + int c1, d1, c1e, d1e; + + c1 = d1 = c1e = d1e = 0; + +#ifdef __MMX__ + d1 |= bit_MMX; +#endif +#ifdef __3dNOW__ + d1e |= bit_3DNOW; +#endif +#ifdef __3dNOW_A__ + d1e |= bit_3DNOWP; +#endif +#ifdef __SSE__ + d1 |= bit_SSE; +#endif +#ifdef __SSE2__ + d1 |= bit_SSE2; +#endif +#ifdef __SSE3__ + c1 |= bit_SSE3; +#endif +#ifdef __SSSE3__ + c1 |= bit_SSSE3; +#endif +#ifdef __SSE4_1__ + c1 |= bit_SSE4_1; +#endif +#ifdef __SSE4_2__ + c1 |= bit_SSE4_2; +#endif +#ifdef __AES__ + c1 |= bit_AES; +#endif +#ifdef __PCLMUL__ + c1 |= bit_PCLMUL; +#endif +#ifdef __AVX__ + c1 |= bit_AVX; +#endif +#ifdef __FMA__ + c1 |= bit_FMA; +#endif +#ifdef __SSE4A__ + c1e |= bit_SSE4a; +#endif +#ifdef __FMA4__ + c1e |= bit_FMA4; +#endif +#ifdef __XOP__ + c1e |= bit_XOP; +#endif +#ifdef __LWP__ + c1e |= bit_LWP; +#endif + + if (c1 | d1) + { + if (!__get_cpuid (1, &a, &b, &c, &d)) + goto fail; + if ((c & c1) != c1 || (d & d1) != d1) + goto fail; + } + if (c1e | d1e) + { + if (!__get_cpuid (0x80000001, &a, &b, &c, &d)) + goto fail; + if ((c & c1e) != c1e || (d & d1e) != d1e) + goto fail; + } + return; + + fail: + exit (0); +} diff --git a/gcc/testsuite/gcc.target/i386/vperm-2-2.inc b/gcc/testsuite/gcc.target/i386/vperm-2-2.inc new file mode 100644 index 00000000000..ef66f68089f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vperm-2-2.inc @@ -0,0 +1,27 @@ +/* This file auto-generated with ./vperm.pl 2 2. */ + +void check0(void) +{ + TEST (0, 0) + TEST (1, 0) + TEST (2, 0) + TEST (3, 0) + TEST (0, 1) + TEST (1, 1) + TEST (2, 1) + TEST (3, 1) + TEST (0, 2) + TEST (1, 2) + TEST (2, 2) + TEST (3, 2) + TEST (0, 3) + TEST (1, 3) + TEST (2, 3) + TEST (3, 3) +} + +void check(void) +{ + check0 (); +} + diff --git a/gcc/testsuite/gcc.target/i386/vperm-4-1.inc b/gcc/testsuite/gcc.target/i386/vperm-4-1.inc new file mode 100644 index 00000000000..c04f1856fb4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vperm-4-1.inc @@ -0,0 +1,272 @@ +/* This file auto-generated with ./vperm.pl 4 1. */ + +void check0(void) +{ + TEST (0, 0, 0, 0) + TEST (1, 0, 0, 0) + TEST (2, 0, 0, 0) + TEST (3, 0, 0, 0) + TEST (0, 1, 0, 0) + TEST (1, 1, 0, 0) + TEST (2, 1, 0, 0) + TEST (3, 1, 0, 0) + TEST (0, 2, 0, 0) + TEST (1, 2, 0, 0) + TEST (2, 2, 0, 0) + TEST (3, 2, 0, 0) + TEST (0, 3, 0, 0) + TEST (1, 3, 0, 0) + TEST (2, 3, 0, 0) + TEST (3, 3, 0, 0) + TEST (0, 0, 1, 0) + TEST (1, 0, 1, 0) + TEST (2, 0, 1, 0) + TEST (3, 0, 1, 0) + TEST (0, 1, 1, 0) + TEST (1, 1, 1, 0) + TEST (2, 1, 1, 0) + TEST (3, 1, 1, 0) + TEST (0, 2, 1, 0) + TEST (1, 2, 1, 0) + TEST (2, 2, 1, 0) + TEST (3, 2, 1, 0) + TEST (0, 3, 1, 0) + TEST (1, 3, 1, 0) + TEST (2, 3, 1, 0) + TEST (3, 3, 1, 0) + TEST (0, 0, 2, 0) + TEST (1, 0, 2, 0) + TEST (2, 0, 2, 0) + TEST (3, 0, 2, 0) + TEST (0, 1, 2, 0) + TEST (1, 1, 2, 0) + TEST (2, 1, 2, 0) + TEST (3, 1, 2, 0) + TEST (0, 2, 2, 0) + TEST (1, 2, 2, 0) + TEST (2, 2, 2, 0) + TEST (3, 2, 2, 0) + TEST (0, 3, 2, 0) + TEST (1, 3, 2, 0) + TEST (2, 3, 2, 0) + TEST (3, 3, 2, 0) + TEST (0, 0, 3, 0) + TEST (1, 0, 3, 0) + TEST (2, 0, 3, 0) + TEST (3, 0, 3, 0) + TEST (0, 1, 3, 0) + TEST (1, 1, 3, 0) + TEST (2, 1, 3, 0) + TEST (3, 1, 3, 0) + TEST (0, 2, 3, 0) + TEST (1, 2, 3, 0) + TEST (2, 2, 3, 0) + TEST (3, 2, 3, 0) + TEST (0, 3, 3, 0) + TEST (1, 3, 3, 0) + TEST (2, 3, 3, 0) + TEST (3, 3, 3, 0) + TEST (0, 0, 0, 1) + TEST (1, 0, 0, 1) + TEST (2, 0, 0, 1) + TEST (3, 0, 0, 1) + TEST (0, 1, 0, 1) + TEST (1, 1, 0, 1) + TEST (2, 1, 0, 1) + TEST (3, 1, 0, 1) + TEST (0, 2, 0, 1) + TEST (1, 2, 0, 1) + TEST (2, 2, 0, 1) + TEST (3, 2, 0, 1) + TEST (0, 3, 0, 1) + TEST (1, 3, 0, 1) + TEST (2, 3, 0, 1) + TEST (3, 3, 0, 1) + TEST (0, 0, 1, 1) + TEST (1, 0, 1, 1) + TEST (2, 0, 1, 1) + TEST (3, 0, 1, 1) + TEST (0, 1, 1, 1) + TEST (1, 1, 1, 1) + TEST (2, 1, 1, 1) + TEST (3, 1, 1, 1) + TEST (0, 2, 1, 1) + TEST (1, 2, 1, 1) + TEST (2, 2, 1, 1) + TEST (3, 2, 1, 1) + TEST (0, 3, 1, 1) + TEST (1, 3, 1, 1) + TEST (2, 3, 1, 1) + TEST (3, 3, 1, 1) + TEST (0, 0, 2, 1) + TEST (1, 0, 2, 1) + TEST (2, 0, 2, 1) + TEST (3, 0, 2, 1) + TEST (0, 1, 2, 1) + TEST (1, 1, 2, 1) + TEST (2, 1, 2, 1) + TEST (3, 1, 2, 1) + TEST (0, 2, 2, 1) + TEST (1, 2, 2, 1) + TEST (2, 2, 2, 1) + TEST (3, 2, 2, 1) + TEST (0, 3, 2, 1) + TEST (1, 3, 2, 1) + TEST (2, 3, 2, 1) + TEST (3, 3, 2, 1) + TEST (0, 0, 3, 1) + TEST (1, 0, 3, 1) + TEST (2, 0, 3, 1) + TEST (3, 0, 3, 1) + TEST (0, 1, 3, 1) + TEST (1, 1, 3, 1) + TEST (2, 1, 3, 1) + TEST (3, 1, 3, 1) + TEST (0, 2, 3, 1) + TEST (1, 2, 3, 1) + TEST (2, 2, 3, 1) + TEST (3, 2, 3, 1) + TEST (0, 3, 3, 1) + TEST (1, 3, 3, 1) + TEST (2, 3, 3, 1) + TEST (3, 3, 3, 1) +} + +void check1(void) +{ + TEST (0, 0, 0, 2) + TEST (1, 0, 0, 2) + TEST (2, 0, 0, 2) + TEST (3, 0, 0, 2) + TEST (0, 1, 0, 2) + TEST (1, 1, 0, 2) + TEST (2, 1, 0, 2) + TEST (3, 1, 0, 2) + TEST (0, 2, 0, 2) + TEST (1, 2, 0, 2) + TEST (2, 2, 0, 2) + TEST (3, 2, 0, 2) + TEST (0, 3, 0, 2) + TEST (1, 3, 0, 2) + TEST (2, 3, 0, 2) + TEST (3, 3, 0, 2) + TEST (0, 0, 1, 2) + TEST (1, 0, 1, 2) + TEST (2, 0, 1, 2) + TEST (3, 0, 1, 2) + TEST (0, 1, 1, 2) + TEST (1, 1, 1, 2) + TEST (2, 1, 1, 2) + TEST (3, 1, 1, 2) + TEST (0, 2, 1, 2) + TEST (1, 2, 1, 2) + TEST (2, 2, 1, 2) + TEST (3, 2, 1, 2) + TEST (0, 3, 1, 2) + TEST (1, 3, 1, 2) + TEST (2, 3, 1, 2) + TEST (3, 3, 1, 2) + TEST (0, 0, 2, 2) + TEST (1, 0, 2, 2) + TEST (2, 0, 2, 2) + TEST (3, 0, 2, 2) + TEST (0, 1, 2, 2) + TEST (1, 1, 2, 2) + TEST (2, 1, 2, 2) + TEST (3, 1, 2, 2) + TEST (0, 2, 2, 2) + TEST (1, 2, 2, 2) + TEST (2, 2, 2, 2) + TEST (3, 2, 2, 2) + TEST (0, 3, 2, 2) + TEST (1, 3, 2, 2) + TEST (2, 3, 2, 2) + TEST (3, 3, 2, 2) + TEST (0, 0, 3, 2) + TEST (1, 0, 3, 2) + TEST (2, 0, 3, 2) + TEST (3, 0, 3, 2) + TEST (0, 1, 3, 2) + TEST (1, 1, 3, 2) + TEST (2, 1, 3, 2) + TEST (3, 1, 3, 2) + TEST (0, 2, 3, 2) + TEST (1, 2, 3, 2) + TEST (2, 2, 3, 2) + TEST (3, 2, 3, 2) + TEST (0, 3, 3, 2) + TEST (1, 3, 3, 2) + TEST (2, 3, 3, 2) + TEST (3, 3, 3, 2) + TEST (0, 0, 0, 3) + TEST (1, 0, 0, 3) + TEST (2, 0, 0, 3) + TEST (3, 0, 0, 3) + TEST (0, 1, 0, 3) + TEST (1, 1, 0, 3) + TEST (2, 1, 0, 3) + TEST (3, 1, 0, 3) + TEST (0, 2, 0, 3) + TEST (1, 2, 0, 3) + TEST (2, 2, 0, 3) + TEST (3, 2, 0, 3) + TEST (0, 3, 0, 3) + TEST (1, 3, 0, 3) + TEST (2, 3, 0, 3) + TEST (3, 3, 0, 3) + TEST (0, 0, 1, 3) + TEST (1, 0, 1, 3) + TEST (2, 0, 1, 3) + TEST (3, 0, 1, 3) + TEST (0, 1, 1, 3) + TEST (1, 1, 1, 3) + TEST (2, 1, 1, 3) + TEST (3, 1, 1, 3) + TEST (0, 2, 1, 3) + TEST (1, 2, 1, 3) + TEST (2, 2, 1, 3) + TEST (3, 2, 1, 3) + TEST (0, 3, 1, 3) + TEST (1, 3, 1, 3) + TEST (2, 3, 1, 3) + TEST (3, 3, 1, 3) + TEST (0, 0, 2, 3) + TEST (1, 0, 2, 3) + TEST (2, 0, 2, 3) + TEST (3, 0, 2, 3) + TEST (0, 1, 2, 3) + TEST (1, 1, 2, 3) + TEST (2, 1, 2, 3) + TEST (3, 1, 2, 3) + TEST (0, 2, 2, 3) + TEST (1, 2, 2, 3) + TEST (2, 2, 2, 3) + TEST (3, 2, 2, 3) + TEST (0, 3, 2, 3) + TEST (1, 3, 2, 3) + TEST (2, 3, 2, 3) + TEST (3, 3, 2, 3) + TEST (0, 0, 3, 3) + TEST (1, 0, 3, 3) + TEST (2, 0, 3, 3) + TEST (3, 0, 3, 3) + TEST (0, 1, 3, 3) + TEST (1, 1, 3, 3) + TEST (2, 1, 3, 3) + TEST (3, 1, 3, 3) + TEST (0, 2, 3, 3) + TEST (1, 2, 3, 3) + TEST (2, 2, 3, 3) + TEST (3, 2, 3, 3) + TEST (0, 3, 3, 3) + TEST (1, 3, 3, 3) + TEST (2, 3, 3, 3) + TEST (3, 3, 3, 3) +} + +void check(void) +{ + check0 (); + check1 (); +} + diff --git a/gcc/testsuite/gcc.target/i386/vperm-4-2.inc b/gcc/testsuite/gcc.target/i386/vperm-4-2.inc new file mode 100644 index 00000000000..2f7baa0ed08 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vperm-4-2.inc @@ -0,0 +1,4262 @@ +/* This file auto-generated with ./vperm.pl 4 2. */ + +void check0(void) +{ + TEST (0, 0, 0, 0) + TEST (1, 0, 0, 0) + TEST (2, 0, 0, 0) + TEST (3, 0, 0, 0) + TEST (4, 0, 0, 0) + TEST (5, 0, 0, 0) + TEST (6, 0, 0, 0) + TEST (7, 0, 0, 0) + TEST (0, 1, 0, 0) + TEST (1, 1, 0, 0) + TEST (2, 1, 0, 0) + TEST (3, 1, 0, 0) + TEST (4, 1, 0, 0) + TEST (5, 1, 0, 0) + TEST (6, 1, 0, 0) + TEST (7, 1, 0, 0) + TEST (0, 2, 0, 0) + TEST (1, 2, 0, 0) + TEST (2, 2, 0, 0) + TEST (3, 2, 0, 0) + TEST (4, 2, 0, 0) + TEST (5, 2, 0, 0) + TEST (6, 2, 0, 0) + TEST (7, 2, 0, 0) + TEST (0, 3, 0, 0) + TEST (1, 3, 0, 0) + TEST (2, 3, 0, 0) + TEST (3, 3, 0, 0) + TEST (4, 3, 0, 0) + TEST (5, 3, 0, 0) + TEST (6, 3, 0, 0) + TEST (7, 3, 0, 0) + TEST (0, 4, 0, 0) + TEST (1, 4, 0, 0) + TEST (2, 4, 0, 0) + TEST (3, 4, 0, 0) + TEST (4, 4, 0, 0) + TEST (5, 4, 0, 0) + TEST (6, 4, 0, 0) + TEST (7, 4, 0, 0) + TEST (0, 5, 0, 0) + TEST (1, 5, 0, 0) + TEST (2, 5, 0, 0) + TEST (3, 5, 0, 0) + TEST (4, 5, 0, 0) + TEST (5, 5, 0, 0) + TEST (6, 5, 0, 0) + TEST (7, 5, 0, 0) + TEST (0, 6, 0, 0) + TEST (1, 6, 0, 0) + TEST (2, 6, 0, 0) + TEST (3, 6, 0, 0) + TEST (4, 6, 0, 0) + TEST (5, 6, 0, 0) + TEST (6, 6, 0, 0) + TEST (7, 6, 0, 0) + TEST (0, 7, 0, 0) + TEST (1, 7, 0, 0) + TEST (2, 7, 0, 0) + TEST (3, 7, 0, 0) + TEST (4, 7, 0, 0) + TEST (5, 7, 0, 0) + TEST (6, 7, 0, 0) + TEST (7, 7, 0, 0) + TEST (0, 0, 1, 0) + TEST (1, 0, 1, 0) + TEST (2, 0, 1, 0) + TEST (3, 0, 1, 0) + TEST (4, 0, 1, 0) + TEST (5, 0, 1, 0) + TEST (6, 0, 1, 0) + TEST (7, 0, 1, 0) + TEST (0, 1, 1, 0) + TEST (1, 1, 1, 0) + TEST (2, 1, 1, 0) + TEST (3, 1, 1, 0) + TEST (4, 1, 1, 0) + TEST (5, 1, 1, 0) + TEST (6, 1, 1, 0) + TEST (7, 1, 1, 0) + TEST (0, 2, 1, 0) + TEST (1, 2, 1, 0) + TEST (2, 2, 1, 0) + TEST (3, 2, 1, 0) + TEST (4, 2, 1, 0) + TEST (5, 2, 1, 0) + TEST (6, 2, 1, 0) + TEST (7, 2, 1, 0) + TEST (0, 3, 1, 0) + TEST (1, 3, 1, 0) + TEST (2, 3, 1, 0) + TEST (3, 3, 1, 0) + TEST (4, 3, 1, 0) + TEST (5, 3, 1, 0) + TEST (6, 3, 1, 0) + TEST (7, 3, 1, 0) + TEST (0, 4, 1, 0) + TEST (1, 4, 1, 0) + TEST (2, 4, 1, 0) + TEST (3, 4, 1, 0) + TEST (4, 4, 1, 0) + TEST (5, 4, 1, 0) + TEST (6, 4, 1, 0) + TEST (7, 4, 1, 0) + TEST (0, 5, 1, 0) + TEST (1, 5, 1, 0) + TEST (2, 5, 1, 0) + TEST (3, 5, 1, 0) + TEST (4, 5, 1, 0) + TEST (5, 5, 1, 0) + TEST (6, 5, 1, 0) + TEST (7, 5, 1, 0) + TEST (0, 6, 1, 0) + TEST (1, 6, 1, 0) + TEST (2, 6, 1, 0) + TEST (3, 6, 1, 0) + TEST (4, 6, 1, 0) + TEST (5, 6, 1, 0) + TEST (6, 6, 1, 0) + TEST (7, 6, 1, 0) + TEST (0, 7, 1, 0) + TEST (1, 7, 1, 0) + TEST (2, 7, 1, 0) + TEST (3, 7, 1, 0) + TEST (4, 7, 1, 0) + TEST (5, 7, 1, 0) + TEST (6, 7, 1, 0) + TEST (7, 7, 1, 0) +} + +void check1(void) +{ + TEST (0, 0, 2, 0) + TEST (1, 0, 2, 0) + TEST (2, 0, 2, 0) + TEST (3, 0, 2, 0) + TEST (4, 0, 2, 0) + TEST (5, 0, 2, 0) + TEST (6, 0, 2, 0) + TEST (7, 0, 2, 0) + TEST (0, 1, 2, 0) + TEST (1, 1, 2, 0) + TEST (2, 1, 2, 0) + TEST (3, 1, 2, 0) + TEST (4, 1, 2, 0) + TEST (5, 1, 2, 0) + TEST (6, 1, 2, 0) + TEST (7, 1, 2, 0) + TEST (0, 2, 2, 0) + TEST (1, 2, 2, 0) + TEST (2, 2, 2, 0) + TEST (3, 2, 2, 0) + TEST (4, 2, 2, 0) + TEST (5, 2, 2, 0) + TEST (6, 2, 2, 0) + TEST (7, 2, 2, 0) + TEST (0, 3, 2, 0) + TEST (1, 3, 2, 0) + TEST (2, 3, 2, 0) + TEST (3, 3, 2, 0) + TEST (4, 3, 2, 0) + TEST (5, 3, 2, 0) + TEST (6, 3, 2, 0) + TEST (7, 3, 2, 0) + TEST (0, 4, 2, 0) + TEST (1, 4, 2, 0) + TEST (2, 4, 2, 0) + TEST (3, 4, 2, 0) + TEST (4, 4, 2, 0) + TEST (5, 4, 2, 0) + TEST (6, 4, 2, 0) + TEST (7, 4, 2, 0) + TEST (0, 5, 2, 0) + TEST (1, 5, 2, 0) + TEST (2, 5, 2, 0) + TEST (3, 5, 2, 0) + TEST (4, 5, 2, 0) + TEST (5, 5, 2, 0) + TEST (6, 5, 2, 0) + TEST (7, 5, 2, 0) + TEST (0, 6, 2, 0) + TEST (1, 6, 2, 0) + TEST (2, 6, 2, 0) + TEST (3, 6, 2, 0) + TEST (4, 6, 2, 0) + TEST (5, 6, 2, 0) + TEST (6, 6, 2, 0) + TEST (7, 6, 2, 0) + TEST (0, 7, 2, 0) + TEST (1, 7, 2, 0) + TEST (2, 7, 2, 0) + TEST (3, 7, 2, 0) + TEST (4, 7, 2, 0) + TEST (5, 7, 2, 0) + TEST (6, 7, 2, 0) + TEST (7, 7, 2, 0) + TEST (0, 0, 3, 0) + TEST (1, 0, 3, 0) + TEST (2, 0, 3, 0) + TEST (3, 0, 3, 0) + TEST (4, 0, 3, 0) + TEST (5, 0, 3, 0) + TEST (6, 0, 3, 0) + TEST (7, 0, 3, 0) + TEST (0, 1, 3, 0) + TEST (1, 1, 3, 0) + TEST (2, 1, 3, 0) + TEST (3, 1, 3, 0) + TEST (4, 1, 3, 0) + TEST (5, 1, 3, 0) + TEST (6, 1, 3, 0) + TEST (7, 1, 3, 0) + TEST (0, 2, 3, 0) + TEST (1, 2, 3, 0) + TEST (2, 2, 3, 0) + TEST (3, 2, 3, 0) + TEST (4, 2, 3, 0) + TEST (5, 2, 3, 0) + TEST (6, 2, 3, 0) + TEST (7, 2, 3, 0) + TEST (0, 3, 3, 0) + TEST (1, 3, 3, 0) + TEST (2, 3, 3, 0) + TEST (3, 3, 3, 0) + TEST (4, 3, 3, 0) + TEST (5, 3, 3, 0) + TEST (6, 3, 3, 0) + TEST (7, 3, 3, 0) + TEST (0, 4, 3, 0) + TEST (1, 4, 3, 0) + TEST (2, 4, 3, 0) + TEST (3, 4, 3, 0) + TEST (4, 4, 3, 0) + TEST (5, 4, 3, 0) + TEST (6, 4, 3, 0) + TEST (7, 4, 3, 0) + TEST (0, 5, 3, 0) + TEST (1, 5, 3, 0) + TEST (2, 5, 3, 0) + TEST (3, 5, 3, 0) + TEST (4, 5, 3, 0) + TEST (5, 5, 3, 0) + TEST (6, 5, 3, 0) + TEST (7, 5, 3, 0) + TEST (0, 6, 3, 0) + TEST (1, 6, 3, 0) + TEST (2, 6, 3, 0) + TEST (3, 6, 3, 0) + TEST (4, 6, 3, 0) + TEST (5, 6, 3, 0) + TEST (6, 6, 3, 0) + TEST (7, 6, 3, 0) + TEST (0, 7, 3, 0) + TEST (1, 7, 3, 0) + TEST (2, 7, 3, 0) + TEST (3, 7, 3, 0) + TEST (4, 7, 3, 0) + TEST (5, 7, 3, 0) + TEST (6, 7, 3, 0) + TEST (7, 7, 3, 0) +} + +void check2(void) +{ + TEST (0, 0, 4, 0) + TEST (1, 0, 4, 0) + TEST (2, 0, 4, 0) + TEST (3, 0, 4, 0) + TEST (4, 0, 4, 0) + TEST (5, 0, 4, 0) + TEST (6, 0, 4, 0) + TEST (7, 0, 4, 0) + TEST (0, 1, 4, 0) + TEST (1, 1, 4, 0) + TEST (2, 1, 4, 0) + TEST (3, 1, 4, 0) + TEST (4, 1, 4, 0) + TEST (5, 1, 4, 0) + TEST (6, 1, 4, 0) + TEST (7, 1, 4, 0) + TEST (0, 2, 4, 0) + TEST (1, 2, 4, 0) + TEST (2, 2, 4, 0) + TEST (3, 2, 4, 0) + TEST (4, 2, 4, 0) + TEST (5, 2, 4, 0) + TEST (6, 2, 4, 0) + TEST (7, 2, 4, 0) + TEST (0, 3, 4, 0) + TEST (1, 3, 4, 0) + TEST (2, 3, 4, 0) + TEST (3, 3, 4, 0) + TEST (4, 3, 4, 0) + TEST (5, 3, 4, 0) + TEST (6, 3, 4, 0) + TEST (7, 3, 4, 0) + TEST (0, 4, 4, 0) + TEST (1, 4, 4, 0) + TEST (2, 4, 4, 0) + TEST (3, 4, 4, 0) + TEST (4, 4, 4, 0) + TEST (5, 4, 4, 0) + TEST (6, 4, 4, 0) + TEST (7, 4, 4, 0) + TEST (0, 5, 4, 0) + TEST (1, 5, 4, 0) + TEST (2, 5, 4, 0) + TEST (3, 5, 4, 0) + TEST (4, 5, 4, 0) + TEST (5, 5, 4, 0) + TEST (6, 5, 4, 0) + TEST (7, 5, 4, 0) + TEST (0, 6, 4, 0) + TEST (1, 6, 4, 0) + TEST (2, 6, 4, 0) + TEST (3, 6, 4, 0) + TEST (4, 6, 4, 0) + TEST (5, 6, 4, 0) + TEST (6, 6, 4, 0) + TEST (7, 6, 4, 0) + TEST (0, 7, 4, 0) + TEST (1, 7, 4, 0) + TEST (2, 7, 4, 0) + TEST (3, 7, 4, 0) + TEST (4, 7, 4, 0) + TEST (5, 7, 4, 0) + TEST (6, 7, 4, 0) + TEST (7, 7, 4, 0) + TEST (0, 0, 5, 0) + TEST (1, 0, 5, 0) + TEST (2, 0, 5, 0) + TEST (3, 0, 5, 0) + TEST (4, 0, 5, 0) + TEST (5, 0, 5, 0) + TEST (6, 0, 5, 0) + TEST (7, 0, 5, 0) + TEST (0, 1, 5, 0) + TEST (1, 1, 5, 0) + TEST (2, 1, 5, 0) + TEST (3, 1, 5, 0) + TEST (4, 1, 5, 0) + TEST (5, 1, 5, 0) + TEST (6, 1, 5, 0) + TEST (7, 1, 5, 0) + TEST (0, 2, 5, 0) + TEST (1, 2, 5, 0) + TEST (2, 2, 5, 0) + TEST (3, 2, 5, 0) + TEST (4, 2, 5, 0) + TEST (5, 2, 5, 0) + TEST (6, 2, 5, 0) + TEST (7, 2, 5, 0) + TEST (0, 3, 5, 0) + TEST (1, 3, 5, 0) + TEST (2, 3, 5, 0) + TEST (3, 3, 5, 0) + TEST (4, 3, 5, 0) + TEST (5, 3, 5, 0) + TEST (6, 3, 5, 0) + TEST (7, 3, 5, 0) + TEST (0, 4, 5, 0) + TEST (1, 4, 5, 0) + TEST (2, 4, 5, 0) + TEST (3, 4, 5, 0) + TEST (4, 4, 5, 0) + TEST (5, 4, 5, 0) + TEST (6, 4, 5, 0) + TEST (7, 4, 5, 0) + TEST (0, 5, 5, 0) + TEST (1, 5, 5, 0) + TEST (2, 5, 5, 0) + TEST (3, 5, 5, 0) + TEST (4, 5, 5, 0) + TEST (5, 5, 5, 0) + TEST (6, 5, 5, 0) + TEST (7, 5, 5, 0) + TEST (0, 6, 5, 0) + TEST (1, 6, 5, 0) + TEST (2, 6, 5, 0) + TEST (3, 6, 5, 0) + TEST (4, 6, 5, 0) + TEST (5, 6, 5, 0) + TEST (6, 6, 5, 0) + TEST (7, 6, 5, 0) + TEST (0, 7, 5, 0) + TEST (1, 7, 5, 0) + TEST (2, 7, 5, 0) + TEST (3, 7, 5, 0) + TEST (4, 7, 5, 0) + TEST (5, 7, 5, 0) + TEST (6, 7, 5, 0) + TEST (7, 7, 5, 0) +} + +void check3(void) +{ + TEST (0, 0, 6, 0) + TEST (1, 0, 6, 0) + TEST (2, 0, 6, 0) + TEST (3, 0, 6, 0) + TEST (4, 0, 6, 0) + TEST (5, 0, 6, 0) + TEST (6, 0, 6, 0) + TEST (7, 0, 6, 0) + TEST (0, 1, 6, 0) + TEST (1, 1, 6, 0) + TEST (2, 1, 6, 0) + TEST (3, 1, 6, 0) + TEST (4, 1, 6, 0) + TEST (5, 1, 6, 0) + TEST (6, 1, 6, 0) + TEST (7, 1, 6, 0) + TEST (0, 2, 6, 0) + TEST (1, 2, 6, 0) + TEST (2, 2, 6, 0) + TEST (3, 2, 6, 0) + TEST (4, 2, 6, 0) + TEST (5, 2, 6, 0) + TEST (6, 2, 6, 0) + TEST (7, 2, 6, 0) + TEST (0, 3, 6, 0) + TEST (1, 3, 6, 0) + TEST (2, 3, 6, 0) + TEST (3, 3, 6, 0) + TEST (4, 3, 6, 0) + TEST (5, 3, 6, 0) + TEST (6, 3, 6, 0) + TEST (7, 3, 6, 0) + TEST (0, 4, 6, 0) + TEST (1, 4, 6, 0) + TEST (2, 4, 6, 0) + TEST (3, 4, 6, 0) + TEST (4, 4, 6, 0) + TEST (5, 4, 6, 0) + TEST (6, 4, 6, 0) + TEST (7, 4, 6, 0) + TEST (0, 5, 6, 0) + TEST (1, 5, 6, 0) + TEST (2, 5, 6, 0) + TEST (3, 5, 6, 0) + TEST (4, 5, 6, 0) + TEST (5, 5, 6, 0) + TEST (6, 5, 6, 0) + TEST (7, 5, 6, 0) + TEST (0, 6, 6, 0) + TEST (1, 6, 6, 0) + TEST (2, 6, 6, 0) + TEST (3, 6, 6, 0) + TEST (4, 6, 6, 0) + TEST (5, 6, 6, 0) + TEST (6, 6, 6, 0) + TEST (7, 6, 6, 0) + TEST (0, 7, 6, 0) + TEST (1, 7, 6, 0) + TEST (2, 7, 6, 0) + TEST (3, 7, 6, 0) + TEST (4, 7, 6, 0) + TEST (5, 7, 6, 0) + TEST (6, 7, 6, 0) + TEST (7, 7, 6, 0) + TEST (0, 0, 7, 0) + TEST (1, 0, 7, 0) + TEST (2, 0, 7, 0) + TEST (3, 0, 7, 0) + TEST (4, 0, 7, 0) + TEST (5, 0, 7, 0) + TEST (6, 0, 7, 0) + TEST (7, 0, 7, 0) + TEST (0, 1, 7, 0) + TEST (1, 1, 7, 0) + TEST (2, 1, 7, 0) + TEST (3, 1, 7, 0) + TEST (4, 1, 7, 0) + TEST (5, 1, 7, 0) + TEST (6, 1, 7, 0) + TEST (7, 1, 7, 0) + TEST (0, 2, 7, 0) + TEST (1, 2, 7, 0) + TEST (2, 2, 7, 0) + TEST (3, 2, 7, 0) + TEST (4, 2, 7, 0) + TEST (5, 2, 7, 0) + TEST (6, 2, 7, 0) + TEST (7, 2, 7, 0) + TEST (0, 3, 7, 0) + TEST (1, 3, 7, 0) + TEST (2, 3, 7, 0) + TEST (3, 3, 7, 0) + TEST (4, 3, 7, 0) + TEST (5, 3, 7, 0) + TEST (6, 3, 7, 0) + TEST (7, 3, 7, 0) + TEST (0, 4, 7, 0) + TEST (1, 4, 7, 0) + TEST (2, 4, 7, 0) + TEST (3, 4, 7, 0) + TEST (4, 4, 7, 0) + TEST (5, 4, 7, 0) + TEST (6, 4, 7, 0) + TEST (7, 4, 7, 0) + TEST (0, 5, 7, 0) + TEST (1, 5, 7, 0) + TEST (2, 5, 7, 0) + TEST (3, 5, 7, 0) + TEST (4, 5, 7, 0) + TEST (5, 5, 7, 0) + TEST (6, 5, 7, 0) + TEST (7, 5, 7, 0) + TEST (0, 6, 7, 0) + TEST (1, 6, 7, 0) + TEST (2, 6, 7, 0) + TEST (3, 6, 7, 0) + TEST (4, 6, 7, 0) + TEST (5, 6, 7, 0) + TEST (6, 6, 7, 0) + TEST (7, 6, 7, 0) + TEST (0, 7, 7, 0) + TEST (1, 7, 7, 0) + TEST (2, 7, 7, 0) + TEST (3, 7, 7, 0) + TEST (4, 7, 7, 0) + TEST (5, 7, 7, 0) + TEST (6, 7, 7, 0) + TEST (7, 7, 7, 0) +} + +void check4(void) +{ + TEST (0, 0, 0, 1) + TEST (1, 0, 0, 1) + TEST (2, 0, 0, 1) + TEST (3, 0, 0, 1) + TEST (4, 0, 0, 1) + TEST (5, 0, 0, 1) + TEST (6, 0, 0, 1) + TEST (7, 0, 0, 1) + TEST (0, 1, 0, 1) + TEST (1, 1, 0, 1) + TEST (2, 1, 0, 1) + TEST (3, 1, 0, 1) + TEST (4, 1, 0, 1) + TEST (5, 1, 0, 1) + TEST (6, 1, 0, 1) + TEST (7, 1, 0, 1) + TEST (0, 2, 0, 1) + TEST (1, 2, 0, 1) + TEST (2, 2, 0, 1) + TEST (3, 2, 0, 1) + TEST (4, 2, 0, 1) + TEST (5, 2, 0, 1) + TEST (6, 2, 0, 1) + TEST (7, 2, 0, 1) + TEST (0, 3, 0, 1) + TEST (1, 3, 0, 1) + TEST (2, 3, 0, 1) + TEST (3, 3, 0, 1) + TEST (4, 3, 0, 1) + TEST (5, 3, 0, 1) + TEST (6, 3, 0, 1) + TEST (7, 3, 0, 1) + TEST (0, 4, 0, 1) + TEST (1, 4, 0, 1) + TEST (2, 4, 0, 1) + TEST (3, 4, 0, 1) + TEST (4, 4, 0, 1) + TEST (5, 4, 0, 1) + TEST (6, 4, 0, 1) + TEST (7, 4, 0, 1) + TEST (0, 5, 0, 1) + TEST (1, 5, 0, 1) + TEST (2, 5, 0, 1) + TEST (3, 5, 0, 1) + TEST (4, 5, 0, 1) + TEST (5, 5, 0, 1) + TEST (6, 5, 0, 1) + TEST (7, 5, 0, 1) + TEST (0, 6, 0, 1) + TEST (1, 6, 0, 1) + TEST (2, 6, 0, 1) + TEST (3, 6, 0, 1) + TEST (4, 6, 0, 1) + TEST (5, 6, 0, 1) + TEST (6, 6, 0, 1) + TEST (7, 6, 0, 1) + TEST (0, 7, 0, 1) + TEST (1, 7, 0, 1) + TEST (2, 7, 0, 1) + TEST (3, 7, 0, 1) + TEST (4, 7, 0, 1) + TEST (5, 7, 0, 1) + TEST (6, 7, 0, 1) + TEST (7, 7, 0, 1) + TEST (0, 0, 1, 1) + TEST (1, 0, 1, 1) + TEST (2, 0, 1, 1) + TEST (3, 0, 1, 1) + TEST (4, 0, 1, 1) + TEST (5, 0, 1, 1) + TEST (6, 0, 1, 1) + TEST (7, 0, 1, 1) + TEST (0, 1, 1, 1) + TEST (1, 1, 1, 1) + TEST (2, 1, 1, 1) + TEST (3, 1, 1, 1) + TEST (4, 1, 1, 1) + TEST (5, 1, 1, 1) + TEST (6, 1, 1, 1) + TEST (7, 1, 1, 1) + TEST (0, 2, 1, 1) + TEST (1, 2, 1, 1) + TEST (2, 2, 1, 1) + TEST (3, 2, 1, 1) + TEST (4, 2, 1, 1) + TEST (5, 2, 1, 1) + TEST (6, 2, 1, 1) + TEST (7, 2, 1, 1) + TEST (0, 3, 1, 1) + TEST (1, 3, 1, 1) + TEST (2, 3, 1, 1) + TEST (3, 3, 1, 1) + TEST (4, 3, 1, 1) + TEST (5, 3, 1, 1) + TEST (6, 3, 1, 1) + TEST (7, 3, 1, 1) + TEST (0, 4, 1, 1) + TEST (1, 4, 1, 1) + TEST (2, 4, 1, 1) + TEST (3, 4, 1, 1) + TEST (4, 4, 1, 1) + TEST (5, 4, 1, 1) + TEST (6, 4, 1, 1) + TEST (7, 4, 1, 1) + TEST (0, 5, 1, 1) + TEST (1, 5, 1, 1) + TEST (2, 5, 1, 1) + TEST (3, 5, 1, 1) + TEST (4, 5, 1, 1) + TEST (5, 5, 1, 1) + TEST (6, 5, 1, 1) + TEST (7, 5, 1, 1) + TEST (0, 6, 1, 1) + TEST (1, 6, 1, 1) + TEST (2, 6, 1, 1) + TEST (3, 6, 1, 1) + TEST (4, 6, 1, 1) + TEST (5, 6, 1, 1) + TEST (6, 6, 1, 1) + TEST (7, 6, 1, 1) + TEST (0, 7, 1, 1) + TEST (1, 7, 1, 1) + TEST (2, 7, 1, 1) + TEST (3, 7, 1, 1) + TEST (4, 7, 1, 1) + TEST (5, 7, 1, 1) + TEST (6, 7, 1, 1) + TEST (7, 7, 1, 1) +} + +void check5(void) +{ + TEST (0, 0, 2, 1) + TEST (1, 0, 2, 1) + TEST (2, 0, 2, 1) + TEST (3, 0, 2, 1) + TEST (4, 0, 2, 1) + TEST (5, 0, 2, 1) + TEST (6, 0, 2, 1) + TEST (7, 0, 2, 1) + TEST (0, 1, 2, 1) + TEST (1, 1, 2, 1) + TEST (2, 1, 2, 1) + TEST (3, 1, 2, 1) + TEST (4, 1, 2, 1) + TEST (5, 1, 2, 1) + TEST (6, 1, 2, 1) + TEST (7, 1, 2, 1) + TEST (0, 2, 2, 1) + TEST (1, 2, 2, 1) + TEST (2, 2, 2, 1) + TEST (3, 2, 2, 1) + TEST (4, 2, 2, 1) + TEST (5, 2, 2, 1) + TEST (6, 2, 2, 1) + TEST (7, 2, 2, 1) + TEST (0, 3, 2, 1) + TEST (1, 3, 2, 1) + TEST (2, 3, 2, 1) + TEST (3, 3, 2, 1) + TEST (4, 3, 2, 1) + TEST (5, 3, 2, 1) + TEST (6, 3, 2, 1) + TEST (7, 3, 2, 1) + TEST (0, 4, 2, 1) + TEST (1, 4, 2, 1) + TEST (2, 4, 2, 1) + TEST (3, 4, 2, 1) + TEST (4, 4, 2, 1) + TEST (5, 4, 2, 1) + TEST (6, 4, 2, 1) + TEST (7, 4, 2, 1) + TEST (0, 5, 2, 1) + TEST (1, 5, 2, 1) + TEST (2, 5, 2, 1) + TEST (3, 5, 2, 1) + TEST (4, 5, 2, 1) + TEST (5, 5, 2, 1) + TEST (6, 5, 2, 1) + TEST (7, 5, 2, 1) + TEST (0, 6, 2, 1) + TEST (1, 6, 2, 1) + TEST (2, 6, 2, 1) + TEST (3, 6, 2, 1) + TEST (4, 6, 2, 1) + TEST (5, 6, 2, 1) + TEST (6, 6, 2, 1) + TEST (7, 6, 2, 1) + TEST (0, 7, 2, 1) + TEST (1, 7, 2, 1) + TEST (2, 7, 2, 1) + TEST (3, 7, 2, 1) + TEST (4, 7, 2, 1) + TEST (5, 7, 2, 1) + TEST (6, 7, 2, 1) + TEST (7, 7, 2, 1) + TEST (0, 0, 3, 1) + TEST (1, 0, 3, 1) + TEST (2, 0, 3, 1) + TEST (3, 0, 3, 1) + TEST (4, 0, 3, 1) + TEST (5, 0, 3, 1) + TEST (6, 0, 3, 1) + TEST (7, 0, 3, 1) + TEST (0, 1, 3, 1) + TEST (1, 1, 3, 1) + TEST (2, 1, 3, 1) + TEST (3, 1, 3, 1) + TEST (4, 1, 3, 1) + TEST (5, 1, 3, 1) + TEST (6, 1, 3, 1) + TEST (7, 1, 3, 1) + TEST (0, 2, 3, 1) + TEST (1, 2, 3, 1) + TEST (2, 2, 3, 1) + TEST (3, 2, 3, 1) + TEST (4, 2, 3, 1) + TEST (5, 2, 3, 1) + TEST (6, 2, 3, 1) + TEST (7, 2, 3, 1) + TEST (0, 3, 3, 1) + TEST (1, 3, 3, 1) + TEST (2, 3, 3, 1) + TEST (3, 3, 3, 1) + TEST (4, 3, 3, 1) + TEST (5, 3, 3, 1) + TEST (6, 3, 3, 1) + TEST (7, 3, 3, 1) + TEST (0, 4, 3, 1) + TEST (1, 4, 3, 1) + TEST (2, 4, 3, 1) + TEST (3, 4, 3, 1) + TEST (4, 4, 3, 1) + TEST (5, 4, 3, 1) + TEST (6, 4, 3, 1) + TEST (7, 4, 3, 1) + TEST (0, 5, 3, 1) + TEST (1, 5, 3, 1) + TEST (2, 5, 3, 1) + TEST (3, 5, 3, 1) + TEST (4, 5, 3, 1) + TEST (5, 5, 3, 1) + TEST (6, 5, 3, 1) + TEST (7, 5, 3, 1) + TEST (0, 6, 3, 1) + TEST (1, 6, 3, 1) + TEST (2, 6, 3, 1) + TEST (3, 6, 3, 1) + TEST (4, 6, 3, 1) + TEST (5, 6, 3, 1) + TEST (6, 6, 3, 1) + TEST (7, 6, 3, 1) + TEST (0, 7, 3, 1) + TEST (1, 7, 3, 1) + TEST (2, 7, 3, 1) + TEST (3, 7, 3, 1) + TEST (4, 7, 3, 1) + TEST (5, 7, 3, 1) + TEST (6, 7, 3, 1) + TEST (7, 7, 3, 1) +} + +void check6(void) +{ + TEST (0, 0, 4, 1) + TEST (1, 0, 4, 1) + TEST (2, 0, 4, 1) + TEST (3, 0, 4, 1) + TEST (4, 0, 4, 1) + TEST (5, 0, 4, 1) + TEST (6, 0, 4, 1) + TEST (7, 0, 4, 1) + TEST (0, 1, 4, 1) + TEST (1, 1, 4, 1) + TEST (2, 1, 4, 1) + TEST (3, 1, 4, 1) + TEST (4, 1, 4, 1) + TEST (5, 1, 4, 1) + TEST (6, 1, 4, 1) + TEST (7, 1, 4, 1) + TEST (0, 2, 4, 1) + TEST (1, 2, 4, 1) + TEST (2, 2, 4, 1) + TEST (3, 2, 4, 1) + TEST (4, 2, 4, 1) + TEST (5, 2, 4, 1) + TEST (6, 2, 4, 1) + TEST (7, 2, 4, 1) + TEST (0, 3, 4, 1) + TEST (1, 3, 4, 1) + TEST (2, 3, 4, 1) + TEST (3, 3, 4, 1) + TEST (4, 3, 4, 1) + TEST (5, 3, 4, 1) + TEST (6, 3, 4, 1) + TEST (7, 3, 4, 1) + TEST (0, 4, 4, 1) + TEST (1, 4, 4, 1) + TEST (2, 4, 4, 1) + TEST (3, 4, 4, 1) + TEST (4, 4, 4, 1) + TEST (5, 4, 4, 1) + TEST (6, 4, 4, 1) + TEST (7, 4, 4, 1) + TEST (0, 5, 4, 1) + TEST (1, 5, 4, 1) + TEST (2, 5, 4, 1) + TEST (3, 5, 4, 1) + TEST (4, 5, 4, 1) + TEST (5, 5, 4, 1) + TEST (6, 5, 4, 1) + TEST (7, 5, 4, 1) + TEST (0, 6, 4, 1) + TEST (1, 6, 4, 1) + TEST (2, 6, 4, 1) + TEST (3, 6, 4, 1) + TEST (4, 6, 4, 1) + TEST (5, 6, 4, 1) + TEST (6, 6, 4, 1) + TEST (7, 6, 4, 1) + TEST (0, 7, 4, 1) + TEST (1, 7, 4, 1) + TEST (2, 7, 4, 1) + TEST (3, 7, 4, 1) + TEST (4, 7, 4, 1) + TEST (5, 7, 4, 1) + TEST (6, 7, 4, 1) + TEST (7, 7, 4, 1) + TEST (0, 0, 5, 1) + TEST (1, 0, 5, 1) + TEST (2, 0, 5, 1) + TEST (3, 0, 5, 1) + TEST (4, 0, 5, 1) + TEST (5, 0, 5, 1) + TEST (6, 0, 5, 1) + TEST (7, 0, 5, 1) + TEST (0, 1, 5, 1) + TEST (1, 1, 5, 1) + TEST (2, 1, 5, 1) + TEST (3, 1, 5, 1) + TEST (4, 1, 5, 1) + TEST (5, 1, 5, 1) + TEST (6, 1, 5, 1) + TEST (7, 1, 5, 1) + TEST (0, 2, 5, 1) + TEST (1, 2, 5, 1) + TEST (2, 2, 5, 1) + TEST (3, 2, 5, 1) + TEST (4, 2, 5, 1) + TEST (5, 2, 5, 1) + TEST (6, 2, 5, 1) + TEST (7, 2, 5, 1) + TEST (0, 3, 5, 1) + TEST (1, 3, 5, 1) + TEST (2, 3, 5, 1) + TEST (3, 3, 5, 1) + TEST (4, 3, 5, 1) + TEST (5, 3, 5, 1) + TEST (6, 3, 5, 1) + TEST (7, 3, 5, 1) + TEST (0, 4, 5, 1) + TEST (1, 4, 5, 1) + TEST (2, 4, 5, 1) + TEST (3, 4, 5, 1) + TEST (4, 4, 5, 1) + TEST (5, 4, 5, 1) + TEST (6, 4, 5, 1) + TEST (7, 4, 5, 1) + TEST (0, 5, 5, 1) + TEST (1, 5, 5, 1) + TEST (2, 5, 5, 1) + TEST (3, 5, 5, 1) + TEST (4, 5, 5, 1) + TEST (5, 5, 5, 1) + TEST (6, 5, 5, 1) + TEST (7, 5, 5, 1) + TEST (0, 6, 5, 1) + TEST (1, 6, 5, 1) + TEST (2, 6, 5, 1) + TEST (3, 6, 5, 1) + TEST (4, 6, 5, 1) + TEST (5, 6, 5, 1) + TEST (6, 6, 5, 1) + TEST (7, 6, 5, 1) + TEST (0, 7, 5, 1) + TEST (1, 7, 5, 1) + TEST (2, 7, 5, 1) + TEST (3, 7, 5, 1) + TEST (4, 7, 5, 1) + TEST (5, 7, 5, 1) + TEST (6, 7, 5, 1) + TEST (7, 7, 5, 1) +} + +void check7(void) +{ + TEST (0, 0, 6, 1) + TEST (1, 0, 6, 1) + TEST (2, 0, 6, 1) + TEST (3, 0, 6, 1) + TEST (4, 0, 6, 1) + TEST (5, 0, 6, 1) + TEST (6, 0, 6, 1) + TEST (7, 0, 6, 1) + TEST (0, 1, 6, 1) + TEST (1, 1, 6, 1) + TEST (2, 1, 6, 1) + TEST (3, 1, 6, 1) + TEST (4, 1, 6, 1) + TEST (5, 1, 6, 1) + TEST (6, 1, 6, 1) + TEST (7, 1, 6, 1) + TEST (0, 2, 6, 1) + TEST (1, 2, 6, 1) + TEST (2, 2, 6, 1) + TEST (3, 2, 6, 1) + TEST (4, 2, 6, 1) + TEST (5, 2, 6, 1) + TEST (6, 2, 6, 1) + TEST (7, 2, 6, 1) + TEST (0, 3, 6, 1) + TEST (1, 3, 6, 1) + TEST (2, 3, 6, 1) + TEST (3, 3, 6, 1) + TEST (4, 3, 6, 1) + TEST (5, 3, 6, 1) + TEST (6, 3, 6, 1) + TEST (7, 3, 6, 1) + TEST (0, 4, 6, 1) + TEST (1, 4, 6, 1) + TEST (2, 4, 6, 1) + TEST (3, 4, 6, 1) + TEST (4, 4, 6, 1) + TEST (5, 4, 6, 1) + TEST (6, 4, 6, 1) + TEST (7, 4, 6, 1) + TEST (0, 5, 6, 1) + TEST (1, 5, 6, 1) + TEST (2, 5, 6, 1) + TEST (3, 5, 6, 1) + TEST (4, 5, 6, 1) + TEST (5, 5, 6, 1) + TEST (6, 5, 6, 1) + TEST (7, 5, 6, 1) + TEST (0, 6, 6, 1) + TEST (1, 6, 6, 1) + TEST (2, 6, 6, 1) + TEST (3, 6, 6, 1) + TEST (4, 6, 6, 1) + TEST (5, 6, 6, 1) + TEST (6, 6, 6, 1) + TEST (7, 6, 6, 1) + TEST (0, 7, 6, 1) + TEST (1, 7, 6, 1) + TEST (2, 7, 6, 1) + TEST (3, 7, 6, 1) + TEST (4, 7, 6, 1) + TEST (5, 7, 6, 1) + TEST (6, 7, 6, 1) + TEST (7, 7, 6, 1) + TEST (0, 0, 7, 1) + TEST (1, 0, 7, 1) + TEST (2, 0, 7, 1) + TEST (3, 0, 7, 1) + TEST (4, 0, 7, 1) + TEST (5, 0, 7, 1) + TEST (6, 0, 7, 1) + TEST (7, 0, 7, 1) + TEST (0, 1, 7, 1) + TEST (1, 1, 7, 1) + TEST (2, 1, 7, 1) + TEST (3, 1, 7, 1) + TEST (4, 1, 7, 1) + TEST (5, 1, 7, 1) + TEST (6, 1, 7, 1) + TEST (7, 1, 7, 1) + TEST (0, 2, 7, 1) + TEST (1, 2, 7, 1) + TEST (2, 2, 7, 1) + TEST (3, 2, 7, 1) + TEST (4, 2, 7, 1) + TEST (5, 2, 7, 1) + TEST (6, 2, 7, 1) + TEST (7, 2, 7, 1) + TEST (0, 3, 7, 1) + TEST (1, 3, 7, 1) + TEST (2, 3, 7, 1) + TEST (3, 3, 7, 1) + TEST (4, 3, 7, 1) + TEST (5, 3, 7, 1) + TEST (6, 3, 7, 1) + TEST (7, 3, 7, 1) + TEST (0, 4, 7, 1) + TEST (1, 4, 7, 1) + TEST (2, 4, 7, 1) + TEST (3, 4, 7, 1) + TEST (4, 4, 7, 1) + TEST (5, 4, 7, 1) + TEST (6, 4, 7, 1) + TEST (7, 4, 7, 1) + TEST (0, 5, 7, 1) + TEST (1, 5, 7, 1) + TEST (2, 5, 7, 1) + TEST (3, 5, 7, 1) + TEST (4, 5, 7, 1) + TEST (5, 5, 7, 1) + TEST (6, 5, 7, 1) + TEST (7, 5, 7, 1) + TEST (0, 6, 7, 1) + TEST (1, 6, 7, 1) + TEST (2, 6, 7, 1) + TEST (3, 6, 7, 1) + TEST (4, 6, 7, 1) + TEST (5, 6, 7, 1) + TEST (6, 6, 7, 1) + TEST (7, 6, 7, 1) + TEST (0, 7, 7, 1) + TEST (1, 7, 7, 1) + TEST (2, 7, 7, 1) + TEST (3, 7, 7, 1) + TEST (4, 7, 7, 1) + TEST (5, 7, 7, 1) + TEST (6, 7, 7, 1) + TEST (7, 7, 7, 1) +} + +void check8(void) +{ + TEST (0, 0, 0, 2) + TEST (1, 0, 0, 2) + TEST (2, 0, 0, 2) + TEST (3, 0, 0, 2) + TEST (4, 0, 0, 2) + TEST (5, 0, 0, 2) + TEST (6, 0, 0, 2) + TEST (7, 0, 0, 2) + TEST (0, 1, 0, 2) + TEST (1, 1, 0, 2) + TEST (2, 1, 0, 2) + TEST (3, 1, 0, 2) + TEST (4, 1, 0, 2) + TEST (5, 1, 0, 2) + TEST (6, 1, 0, 2) + TEST (7, 1, 0, 2) + TEST (0, 2, 0, 2) + TEST (1, 2, 0, 2) + TEST (2, 2, 0, 2) + TEST (3, 2, 0, 2) + TEST (4, 2, 0, 2) + TEST (5, 2, 0, 2) + TEST (6, 2, 0, 2) + TEST (7, 2, 0, 2) + TEST (0, 3, 0, 2) + TEST (1, 3, 0, 2) + TEST (2, 3, 0, 2) + TEST (3, 3, 0, 2) + TEST (4, 3, 0, 2) + TEST (5, 3, 0, 2) + TEST (6, 3, 0, 2) + TEST (7, 3, 0, 2) + TEST (0, 4, 0, 2) + TEST (1, 4, 0, 2) + TEST (2, 4, 0, 2) + TEST (3, 4, 0, 2) + TEST (4, 4, 0, 2) + TEST (5, 4, 0, 2) + TEST (6, 4, 0, 2) + TEST (7, 4, 0, 2) + TEST (0, 5, 0, 2) + TEST (1, 5, 0, 2) + TEST (2, 5, 0, 2) + TEST (3, 5, 0, 2) + TEST (4, 5, 0, 2) + TEST (5, 5, 0, 2) + TEST (6, 5, 0, 2) + TEST (7, 5, 0, 2) + TEST (0, 6, 0, 2) + TEST (1, 6, 0, 2) + TEST (2, 6, 0, 2) + TEST (3, 6, 0, 2) + TEST (4, 6, 0, 2) + TEST (5, 6, 0, 2) + TEST (6, 6, 0, 2) + TEST (7, 6, 0, 2) + TEST (0, 7, 0, 2) + TEST (1, 7, 0, 2) + TEST (2, 7, 0, 2) + TEST (3, 7, 0, 2) + TEST (4, 7, 0, 2) + TEST (5, 7, 0, 2) + TEST (6, 7, 0, 2) + TEST (7, 7, 0, 2) + TEST (0, 0, 1, 2) + TEST (1, 0, 1, 2) + TEST (2, 0, 1, 2) + TEST (3, 0, 1, 2) + TEST (4, 0, 1, 2) + TEST (5, 0, 1, 2) + TEST (6, 0, 1, 2) + TEST (7, 0, 1, 2) + TEST (0, 1, 1, 2) + TEST (1, 1, 1, 2) + TEST (2, 1, 1, 2) + TEST (3, 1, 1, 2) + TEST (4, 1, 1, 2) + TEST (5, 1, 1, 2) + TEST (6, 1, 1, 2) + TEST (7, 1, 1, 2) + TEST (0, 2, 1, 2) + TEST (1, 2, 1, 2) + TEST (2, 2, 1, 2) + TEST (3, 2, 1, 2) + TEST (4, 2, 1, 2) + TEST (5, 2, 1, 2) + TEST (6, 2, 1, 2) + TEST (7, 2, 1, 2) + TEST (0, 3, 1, 2) + TEST (1, 3, 1, 2) + TEST (2, 3, 1, 2) + TEST (3, 3, 1, 2) + TEST (4, 3, 1, 2) + TEST (5, 3, 1, 2) + TEST (6, 3, 1, 2) + TEST (7, 3, 1, 2) + TEST (0, 4, 1, 2) + TEST (1, 4, 1, 2) + TEST (2, 4, 1, 2) + TEST (3, 4, 1, 2) + TEST (4, 4, 1, 2) + TEST (5, 4, 1, 2) + TEST (6, 4, 1, 2) + TEST (7, 4, 1, 2) + TEST (0, 5, 1, 2) + TEST (1, 5, 1, 2) + TEST (2, 5, 1, 2) + TEST (3, 5, 1, 2) + TEST (4, 5, 1, 2) + TEST (5, 5, 1, 2) + TEST (6, 5, 1, 2) + TEST (7, 5, 1, 2) + TEST (0, 6, 1, 2) + TEST (1, 6, 1, 2) + TEST (2, 6, 1, 2) + TEST (3, 6, 1, 2) + TEST (4, 6, 1, 2) + TEST (5, 6, 1, 2) + TEST (6, 6, 1, 2) + TEST (7, 6, 1, 2) + TEST (0, 7, 1, 2) + TEST (1, 7, 1, 2) + TEST (2, 7, 1, 2) + TEST (3, 7, 1, 2) + TEST (4, 7, 1, 2) + TEST (5, 7, 1, 2) + TEST (6, 7, 1, 2) + TEST (7, 7, 1, 2) +} + +void check9(void) +{ + TEST (0, 0, 2, 2) + TEST (1, 0, 2, 2) + TEST (2, 0, 2, 2) + TEST (3, 0, 2, 2) + TEST (4, 0, 2, 2) + TEST (5, 0, 2, 2) + TEST (6, 0, 2, 2) + TEST (7, 0, 2, 2) + TEST (0, 1, 2, 2) + TEST (1, 1, 2, 2) + TEST (2, 1, 2, 2) + TEST (3, 1, 2, 2) + TEST (4, 1, 2, 2) + TEST (5, 1, 2, 2) + TEST (6, 1, 2, 2) + TEST (7, 1, 2, 2) + TEST (0, 2, 2, 2) + TEST (1, 2, 2, 2) + TEST (2, 2, 2, 2) + TEST (3, 2, 2, 2) + TEST (4, 2, 2, 2) + TEST (5, 2, 2, 2) + TEST (6, 2, 2, 2) + TEST (7, 2, 2, 2) + TEST (0, 3, 2, 2) + TEST (1, 3, 2, 2) + TEST (2, 3, 2, 2) + TEST (3, 3, 2, 2) + TEST (4, 3, 2, 2) + TEST (5, 3, 2, 2) + TEST (6, 3, 2, 2) + TEST (7, 3, 2, 2) + TEST (0, 4, 2, 2) + TEST (1, 4, 2, 2) + TEST (2, 4, 2, 2) + TEST (3, 4, 2, 2) + TEST (4, 4, 2, 2) + TEST (5, 4, 2, 2) + TEST (6, 4, 2, 2) + TEST (7, 4, 2, 2) + TEST (0, 5, 2, 2) + TEST (1, 5, 2, 2) + TEST (2, 5, 2, 2) + TEST (3, 5, 2, 2) + TEST (4, 5, 2, 2) + TEST (5, 5, 2, 2) + TEST (6, 5, 2, 2) + TEST (7, 5, 2, 2) + TEST (0, 6, 2, 2) + TEST (1, 6, 2, 2) + TEST (2, 6, 2, 2) + TEST (3, 6, 2, 2) + TEST (4, 6, 2, 2) + TEST (5, 6, 2, 2) + TEST (6, 6, 2, 2) + TEST (7, 6, 2, 2) + TEST (0, 7, 2, 2) + TEST (1, 7, 2, 2) + TEST (2, 7, 2, 2) + TEST (3, 7, 2, 2) + TEST (4, 7, 2, 2) + TEST (5, 7, 2, 2) + TEST (6, 7, 2, 2) + TEST (7, 7, 2, 2) + TEST (0, 0, 3, 2) + TEST (1, 0, 3, 2) + TEST (2, 0, 3, 2) + TEST (3, 0, 3, 2) + TEST (4, 0, 3, 2) + TEST (5, 0, 3, 2) + TEST (6, 0, 3, 2) + TEST (7, 0, 3, 2) + TEST (0, 1, 3, 2) + TEST (1, 1, 3, 2) + TEST (2, 1, 3, 2) + TEST (3, 1, 3, 2) + TEST (4, 1, 3, 2) + TEST (5, 1, 3, 2) + TEST (6, 1, 3, 2) + TEST (7, 1, 3, 2) + TEST (0, 2, 3, 2) + TEST (1, 2, 3, 2) + TEST (2, 2, 3, 2) + TEST (3, 2, 3, 2) + TEST (4, 2, 3, 2) + TEST (5, 2, 3, 2) + TEST (6, 2, 3, 2) + TEST (7, 2, 3, 2) + TEST (0, 3, 3, 2) + TEST (1, 3, 3, 2) + TEST (2, 3, 3, 2) + TEST (3, 3, 3, 2) + TEST (4, 3, 3, 2) + TEST (5, 3, 3, 2) + TEST (6, 3, 3, 2) + TEST (7, 3, 3, 2) + TEST (0, 4, 3, 2) + TEST (1, 4, 3, 2) + TEST (2, 4, 3, 2) + TEST (3, 4, 3, 2) + TEST (4, 4, 3, 2) + TEST (5, 4, 3, 2) + TEST (6, 4, 3, 2) + TEST (7, 4, 3, 2) + TEST (0, 5, 3, 2) + TEST (1, 5, 3, 2) + TEST (2, 5, 3, 2) + TEST (3, 5, 3, 2) + TEST (4, 5, 3, 2) + TEST (5, 5, 3, 2) + TEST (6, 5, 3, 2) + TEST (7, 5, 3, 2) + TEST (0, 6, 3, 2) + TEST (1, 6, 3, 2) + TEST (2, 6, 3, 2) + TEST (3, 6, 3, 2) + TEST (4, 6, 3, 2) + TEST (5, 6, 3, 2) + TEST (6, 6, 3, 2) + TEST (7, 6, 3, 2) + TEST (0, 7, 3, 2) + TEST (1, 7, 3, 2) + TEST (2, 7, 3, 2) + TEST (3, 7, 3, 2) + TEST (4, 7, 3, 2) + TEST (5, 7, 3, 2) + TEST (6, 7, 3, 2) + TEST (7, 7, 3, 2) +} + +void check10(void) +{ + TEST (0, 0, 4, 2) + TEST (1, 0, 4, 2) + TEST (2, 0, 4, 2) + TEST (3, 0, 4, 2) + TEST (4, 0, 4, 2) + TEST (5, 0, 4, 2) + TEST (6, 0, 4, 2) + TEST (7, 0, 4, 2) + TEST (0, 1, 4, 2) + TEST (1, 1, 4, 2) + TEST (2, 1, 4, 2) + TEST (3, 1, 4, 2) + TEST (4, 1, 4, 2) + TEST (5, 1, 4, 2) + TEST (6, 1, 4, 2) + TEST (7, 1, 4, 2) + TEST (0, 2, 4, 2) + TEST (1, 2, 4, 2) + TEST (2, 2, 4, 2) + TEST (3, 2, 4, 2) + TEST (4, 2, 4, 2) + TEST (5, 2, 4, 2) + TEST (6, 2, 4, 2) + TEST (7, 2, 4, 2) + TEST (0, 3, 4, 2) + TEST (1, 3, 4, 2) + TEST (2, 3, 4, 2) + TEST (3, 3, 4, 2) + TEST (4, 3, 4, 2) + TEST (5, 3, 4, 2) + TEST (6, 3, 4, 2) + TEST (7, 3, 4, 2) + TEST (0, 4, 4, 2) + TEST (1, 4, 4, 2) + TEST (2, 4, 4, 2) + TEST (3, 4, 4, 2) + TEST (4, 4, 4, 2) + TEST (5, 4, 4, 2) + TEST (6, 4, 4, 2) + TEST (7, 4, 4, 2) + TEST (0, 5, 4, 2) + TEST (1, 5, 4, 2) + TEST (2, 5, 4, 2) + TEST (3, 5, 4, 2) + TEST (4, 5, 4, 2) + TEST (5, 5, 4, 2) + TEST (6, 5, 4, 2) + TEST (7, 5, 4, 2) + TEST (0, 6, 4, 2) + TEST (1, 6, 4, 2) + TEST (2, 6, 4, 2) + TEST (3, 6, 4, 2) + TEST (4, 6, 4, 2) + TEST (5, 6, 4, 2) + TEST (6, 6, 4, 2) + TEST (7, 6, 4, 2) + TEST (0, 7, 4, 2) + TEST (1, 7, 4, 2) + TEST (2, 7, 4, 2) + TEST (3, 7, 4, 2) + TEST (4, 7, 4, 2) + TEST (5, 7, 4, 2) + TEST (6, 7, 4, 2) + TEST (7, 7, 4, 2) + TEST (0, 0, 5, 2) + TEST (1, 0, 5, 2) + TEST (2, 0, 5, 2) + TEST (3, 0, 5, 2) + TEST (4, 0, 5, 2) + TEST (5, 0, 5, 2) + TEST (6, 0, 5, 2) + TEST (7, 0, 5, 2) + TEST (0, 1, 5, 2) + TEST (1, 1, 5, 2) + TEST (2, 1, 5, 2) + TEST (3, 1, 5, 2) + TEST (4, 1, 5, 2) + TEST (5, 1, 5, 2) + TEST (6, 1, 5, 2) + TEST (7, 1, 5, 2) + TEST (0, 2, 5, 2) + TEST (1, 2, 5, 2) + TEST (2, 2, 5, 2) + TEST (3, 2, 5, 2) + TEST (4, 2, 5, 2) + TEST (5, 2, 5, 2) + TEST (6, 2, 5, 2) + TEST (7, 2, 5, 2) + TEST (0, 3, 5, 2) + TEST (1, 3, 5, 2) + TEST (2, 3, 5, 2) + TEST (3, 3, 5, 2) + TEST (4, 3, 5, 2) + TEST (5, 3, 5, 2) + TEST (6, 3, 5, 2) + TEST (7, 3, 5, 2) + TEST (0, 4, 5, 2) + TEST (1, 4, 5, 2) + TEST (2, 4, 5, 2) + TEST (3, 4, 5, 2) + TEST (4, 4, 5, 2) + TEST (5, 4, 5, 2) + TEST (6, 4, 5, 2) + TEST (7, 4, 5, 2) + TEST (0, 5, 5, 2) + TEST (1, 5, 5, 2) + TEST (2, 5, 5, 2) + TEST (3, 5, 5, 2) + TEST (4, 5, 5, 2) + TEST (5, 5, 5, 2) + TEST (6, 5, 5, 2) + TEST (7, 5, 5, 2) + TEST (0, 6, 5, 2) + TEST (1, 6, 5, 2) + TEST (2, 6, 5, 2) + TEST (3, 6, 5, 2) + TEST (4, 6, 5, 2) + TEST (5, 6, 5, 2) + TEST (6, 6, 5, 2) + TEST (7, 6, 5, 2) + TEST (0, 7, 5, 2) + TEST (1, 7, 5, 2) + TEST (2, 7, 5, 2) + TEST (3, 7, 5, 2) + TEST (4, 7, 5, 2) + TEST (5, 7, 5, 2) + TEST (6, 7, 5, 2) + TEST (7, 7, 5, 2) +} + +void check11(void) +{ + TEST (0, 0, 6, 2) + TEST (1, 0, 6, 2) + TEST (2, 0, 6, 2) + TEST (3, 0, 6, 2) + TEST (4, 0, 6, 2) + TEST (5, 0, 6, 2) + TEST (6, 0, 6, 2) + TEST (7, 0, 6, 2) + TEST (0, 1, 6, 2) + TEST (1, 1, 6, 2) + TEST (2, 1, 6, 2) + TEST (3, 1, 6, 2) + TEST (4, 1, 6, 2) + TEST (5, 1, 6, 2) + TEST (6, 1, 6, 2) + TEST (7, 1, 6, 2) + TEST (0, 2, 6, 2) + TEST (1, 2, 6, 2) + TEST (2, 2, 6, 2) + TEST (3, 2, 6, 2) + TEST (4, 2, 6, 2) + TEST (5, 2, 6, 2) + TEST (6, 2, 6, 2) + TEST (7, 2, 6, 2) + TEST (0, 3, 6, 2) + TEST (1, 3, 6, 2) + TEST (2, 3, 6, 2) + TEST (3, 3, 6, 2) + TEST (4, 3, 6, 2) + TEST (5, 3, 6, 2) + TEST (6, 3, 6, 2) + TEST (7, 3, 6, 2) + TEST (0, 4, 6, 2) + TEST (1, 4, 6, 2) + TEST (2, 4, 6, 2) + TEST (3, 4, 6, 2) + TEST (4, 4, 6, 2) + TEST (5, 4, 6, 2) + TEST (6, 4, 6, 2) + TEST (7, 4, 6, 2) + TEST (0, 5, 6, 2) + TEST (1, 5, 6, 2) + TEST (2, 5, 6, 2) + TEST (3, 5, 6, 2) + TEST (4, 5, 6, 2) + TEST (5, 5, 6, 2) + TEST (6, 5, 6, 2) + TEST (7, 5, 6, 2) + TEST (0, 6, 6, 2) + TEST (1, 6, 6, 2) + TEST (2, 6, 6, 2) + TEST (3, 6, 6, 2) + TEST (4, 6, 6, 2) + TEST (5, 6, 6, 2) + TEST (6, 6, 6, 2) + TEST (7, 6, 6, 2) + TEST (0, 7, 6, 2) + TEST (1, 7, 6, 2) + TEST (2, 7, 6, 2) + TEST (3, 7, 6, 2) + TEST (4, 7, 6, 2) + TEST (5, 7, 6, 2) + TEST (6, 7, 6, 2) + TEST (7, 7, 6, 2) + TEST (0, 0, 7, 2) + TEST (1, 0, 7, 2) + TEST (2, 0, 7, 2) + TEST (3, 0, 7, 2) + TEST (4, 0, 7, 2) + TEST (5, 0, 7, 2) + TEST (6, 0, 7, 2) + TEST (7, 0, 7, 2) + TEST (0, 1, 7, 2) + TEST (1, 1, 7, 2) + TEST (2, 1, 7, 2) + TEST (3, 1, 7, 2) + TEST (4, 1, 7, 2) + TEST (5, 1, 7, 2) + TEST (6, 1, 7, 2) + TEST (7, 1, 7, 2) + TEST (0, 2, 7, 2) + TEST (1, 2, 7, 2) + TEST (2, 2, 7, 2) + TEST (3, 2, 7, 2) + TEST (4, 2, 7, 2) + TEST (5, 2, 7, 2) + TEST (6, 2, 7, 2) + TEST (7, 2, 7, 2) + TEST (0, 3, 7, 2) + TEST (1, 3, 7, 2) + TEST (2, 3, 7, 2) + TEST (3, 3, 7, 2) + TEST (4, 3, 7, 2) + TEST (5, 3, 7, 2) + TEST (6, 3, 7, 2) + TEST (7, 3, 7, 2) + TEST (0, 4, 7, 2) + TEST (1, 4, 7, 2) + TEST (2, 4, 7, 2) + TEST (3, 4, 7, 2) + TEST (4, 4, 7, 2) + TEST (5, 4, 7, 2) + TEST (6, 4, 7, 2) + TEST (7, 4, 7, 2) + TEST (0, 5, 7, 2) + TEST (1, 5, 7, 2) + TEST (2, 5, 7, 2) + TEST (3, 5, 7, 2) + TEST (4, 5, 7, 2) + TEST (5, 5, 7, 2) + TEST (6, 5, 7, 2) + TEST (7, 5, 7, 2) + TEST (0, 6, 7, 2) + TEST (1, 6, 7, 2) + TEST (2, 6, 7, 2) + TEST (3, 6, 7, 2) + TEST (4, 6, 7, 2) + TEST (5, 6, 7, 2) + TEST (6, 6, 7, 2) + TEST (7, 6, 7, 2) + TEST (0, 7, 7, 2) + TEST (1, 7, 7, 2) + TEST (2, 7, 7, 2) + TEST (3, 7, 7, 2) + TEST (4, 7, 7, 2) + TEST (5, 7, 7, 2) + TEST (6, 7, 7, 2) + TEST (7, 7, 7, 2) +} + +void check12(void) +{ + TEST (0, 0, 0, 3) + TEST (1, 0, 0, 3) + TEST (2, 0, 0, 3) + TEST (3, 0, 0, 3) + TEST (4, 0, 0, 3) + TEST (5, 0, 0, 3) + TEST (6, 0, 0, 3) + TEST (7, 0, 0, 3) + TEST (0, 1, 0, 3) + TEST (1, 1, 0, 3) + TEST (2, 1, 0, 3) + TEST (3, 1, 0, 3) + TEST (4, 1, 0, 3) + TEST (5, 1, 0, 3) + TEST (6, 1, 0, 3) + TEST (7, 1, 0, 3) + TEST (0, 2, 0, 3) + TEST (1, 2, 0, 3) + TEST (2, 2, 0, 3) + TEST (3, 2, 0, 3) + TEST (4, 2, 0, 3) + TEST (5, 2, 0, 3) + TEST (6, 2, 0, 3) + TEST (7, 2, 0, 3) + TEST (0, 3, 0, 3) + TEST (1, 3, 0, 3) + TEST (2, 3, 0, 3) + TEST (3, 3, 0, 3) + TEST (4, 3, 0, 3) + TEST (5, 3, 0, 3) + TEST (6, 3, 0, 3) + TEST (7, 3, 0, 3) + TEST (0, 4, 0, 3) + TEST (1, 4, 0, 3) + TEST (2, 4, 0, 3) + TEST (3, 4, 0, 3) + TEST (4, 4, 0, 3) + TEST (5, 4, 0, 3) + TEST (6, 4, 0, 3) + TEST (7, 4, 0, 3) + TEST (0, 5, 0, 3) + TEST (1, 5, 0, 3) + TEST (2, 5, 0, 3) + TEST (3, 5, 0, 3) + TEST (4, 5, 0, 3) + TEST (5, 5, 0, 3) + TEST (6, 5, 0, 3) + TEST (7, 5, 0, 3) + TEST (0, 6, 0, 3) + TEST (1, 6, 0, 3) + TEST (2, 6, 0, 3) + TEST (3, 6, 0, 3) + TEST (4, 6, 0, 3) + TEST (5, 6, 0, 3) + TEST (6, 6, 0, 3) + TEST (7, 6, 0, 3) + TEST (0, 7, 0, 3) + TEST (1, 7, 0, 3) + TEST (2, 7, 0, 3) + TEST (3, 7, 0, 3) + TEST (4, 7, 0, 3) + TEST (5, 7, 0, 3) + TEST (6, 7, 0, 3) + TEST (7, 7, 0, 3) + TEST (0, 0, 1, 3) + TEST (1, 0, 1, 3) + TEST (2, 0, 1, 3) + TEST (3, 0, 1, 3) + TEST (4, 0, 1, 3) + TEST (5, 0, 1, 3) + TEST (6, 0, 1, 3) + TEST (7, 0, 1, 3) + TEST (0, 1, 1, 3) + TEST (1, 1, 1, 3) + TEST (2, 1, 1, 3) + TEST (3, 1, 1, 3) + TEST (4, 1, 1, 3) + TEST (5, 1, 1, 3) + TEST (6, 1, 1, 3) + TEST (7, 1, 1, 3) + TEST (0, 2, 1, 3) + TEST (1, 2, 1, 3) + TEST (2, 2, 1, 3) + TEST (3, 2, 1, 3) + TEST (4, 2, 1, 3) + TEST (5, 2, 1, 3) + TEST (6, 2, 1, 3) + TEST (7, 2, 1, 3) + TEST (0, 3, 1, 3) + TEST (1, 3, 1, 3) + TEST (2, 3, 1, 3) + TEST (3, 3, 1, 3) + TEST (4, 3, 1, 3) + TEST (5, 3, 1, 3) + TEST (6, 3, 1, 3) + TEST (7, 3, 1, 3) + TEST (0, 4, 1, 3) + TEST (1, 4, 1, 3) + TEST (2, 4, 1, 3) + TEST (3, 4, 1, 3) + TEST (4, 4, 1, 3) + TEST (5, 4, 1, 3) + TEST (6, 4, 1, 3) + TEST (7, 4, 1, 3) + TEST (0, 5, 1, 3) + TEST (1, 5, 1, 3) + TEST (2, 5, 1, 3) + TEST (3, 5, 1, 3) + TEST (4, 5, 1, 3) + TEST (5, 5, 1, 3) + TEST (6, 5, 1, 3) + TEST (7, 5, 1, 3) + TEST (0, 6, 1, 3) + TEST (1, 6, 1, 3) + TEST (2, 6, 1, 3) + TEST (3, 6, 1, 3) + TEST (4, 6, 1, 3) + TEST (5, 6, 1, 3) + TEST (6, 6, 1, 3) + TEST (7, 6, 1, 3) + TEST (0, 7, 1, 3) + TEST (1, 7, 1, 3) + TEST (2, 7, 1, 3) + TEST (3, 7, 1, 3) + TEST (4, 7, 1, 3) + TEST (5, 7, 1, 3) + TEST (6, 7, 1, 3) + TEST (7, 7, 1, 3) +} + +void check13(void) +{ + TEST (0, 0, 2, 3) + TEST (1, 0, 2, 3) + TEST (2, 0, 2, 3) + TEST (3, 0, 2, 3) + TEST (4, 0, 2, 3) + TEST (5, 0, 2, 3) + TEST (6, 0, 2, 3) + TEST (7, 0, 2, 3) + TEST (0, 1, 2, 3) + TEST (1, 1, 2, 3) + TEST (2, 1, 2, 3) + TEST (3, 1, 2, 3) + TEST (4, 1, 2, 3) + TEST (5, 1, 2, 3) + TEST (6, 1, 2, 3) + TEST (7, 1, 2, 3) + TEST (0, 2, 2, 3) + TEST (1, 2, 2, 3) + TEST (2, 2, 2, 3) + TEST (3, 2, 2, 3) + TEST (4, 2, 2, 3) + TEST (5, 2, 2, 3) + TEST (6, 2, 2, 3) + TEST (7, 2, 2, 3) + TEST (0, 3, 2, 3) + TEST (1, 3, 2, 3) + TEST (2, 3, 2, 3) + TEST (3, 3, 2, 3) + TEST (4, 3, 2, 3) + TEST (5, 3, 2, 3) + TEST (6, 3, 2, 3) + TEST (7, 3, 2, 3) + TEST (0, 4, 2, 3) + TEST (1, 4, 2, 3) + TEST (2, 4, 2, 3) + TEST (3, 4, 2, 3) + TEST (4, 4, 2, 3) + TEST (5, 4, 2, 3) + TEST (6, 4, 2, 3) + TEST (7, 4, 2, 3) + TEST (0, 5, 2, 3) + TEST (1, 5, 2, 3) + TEST (2, 5, 2, 3) + TEST (3, 5, 2, 3) + TEST (4, 5, 2, 3) + TEST (5, 5, 2, 3) + TEST (6, 5, 2, 3) + TEST (7, 5, 2, 3) + TEST (0, 6, 2, 3) + TEST (1, 6, 2, 3) + TEST (2, 6, 2, 3) + TEST (3, 6, 2, 3) + TEST (4, 6, 2, 3) + TEST (5, 6, 2, 3) + TEST (6, 6, 2, 3) + TEST (7, 6, 2, 3) + TEST (0, 7, 2, 3) + TEST (1, 7, 2, 3) + TEST (2, 7, 2, 3) + TEST (3, 7, 2, 3) + TEST (4, 7, 2, 3) + TEST (5, 7, 2, 3) + TEST (6, 7, 2, 3) + TEST (7, 7, 2, 3) + TEST (0, 0, 3, 3) + TEST (1, 0, 3, 3) + TEST (2, 0, 3, 3) + TEST (3, 0, 3, 3) + TEST (4, 0, 3, 3) + TEST (5, 0, 3, 3) + TEST (6, 0, 3, 3) + TEST (7, 0, 3, 3) + TEST (0, 1, 3, 3) + TEST (1, 1, 3, 3) + TEST (2, 1, 3, 3) + TEST (3, 1, 3, 3) + TEST (4, 1, 3, 3) + TEST (5, 1, 3, 3) + TEST (6, 1, 3, 3) + TEST (7, 1, 3, 3) + TEST (0, 2, 3, 3) + TEST (1, 2, 3, 3) + TEST (2, 2, 3, 3) + TEST (3, 2, 3, 3) + TEST (4, 2, 3, 3) + TEST (5, 2, 3, 3) + TEST (6, 2, 3, 3) + TEST (7, 2, 3, 3) + TEST (0, 3, 3, 3) + TEST (1, 3, 3, 3) + TEST (2, 3, 3, 3) + TEST (3, 3, 3, 3) + TEST (4, 3, 3, 3) + TEST (5, 3, 3, 3) + TEST (6, 3, 3, 3) + TEST (7, 3, 3, 3) + TEST (0, 4, 3, 3) + TEST (1, 4, 3, 3) + TEST (2, 4, 3, 3) + TEST (3, 4, 3, 3) + TEST (4, 4, 3, 3) + TEST (5, 4, 3, 3) + TEST (6, 4, 3, 3) + TEST (7, 4, 3, 3) + TEST (0, 5, 3, 3) + TEST (1, 5, 3, 3) + TEST (2, 5, 3, 3) + TEST (3, 5, 3, 3) + TEST (4, 5, 3, 3) + TEST (5, 5, 3, 3) + TEST (6, 5, 3, 3) + TEST (7, 5, 3, 3) + TEST (0, 6, 3, 3) + TEST (1, 6, 3, 3) + TEST (2, 6, 3, 3) + TEST (3, 6, 3, 3) + TEST (4, 6, 3, 3) + TEST (5, 6, 3, 3) + TEST (6, 6, 3, 3) + TEST (7, 6, 3, 3) + TEST (0, 7, 3, 3) + TEST (1, 7, 3, 3) + TEST (2, 7, 3, 3) + TEST (3, 7, 3, 3) + TEST (4, 7, 3, 3) + TEST (5, 7, 3, 3) + TEST (6, 7, 3, 3) + TEST (7, 7, 3, 3) +} + +void check14(void) +{ + TEST (0, 0, 4, 3) + TEST (1, 0, 4, 3) + TEST (2, 0, 4, 3) + TEST (3, 0, 4, 3) + TEST (4, 0, 4, 3) + TEST (5, 0, 4, 3) + TEST (6, 0, 4, 3) + TEST (7, 0, 4, 3) + TEST (0, 1, 4, 3) + TEST (1, 1, 4, 3) + TEST (2, 1, 4, 3) + TEST (3, 1, 4, 3) + TEST (4, 1, 4, 3) + TEST (5, 1, 4, 3) + TEST (6, 1, 4, 3) + TEST (7, 1, 4, 3) + TEST (0, 2, 4, 3) + TEST (1, 2, 4, 3) + TEST (2, 2, 4, 3) + TEST (3, 2, 4, 3) + TEST (4, 2, 4, 3) + TEST (5, 2, 4, 3) + TEST (6, 2, 4, 3) + TEST (7, 2, 4, 3) + TEST (0, 3, 4, 3) + TEST (1, 3, 4, 3) + TEST (2, 3, 4, 3) + TEST (3, 3, 4, 3) + TEST (4, 3, 4, 3) + TEST (5, 3, 4, 3) + TEST (6, 3, 4, 3) + TEST (7, 3, 4, 3) + TEST (0, 4, 4, 3) + TEST (1, 4, 4, 3) + TEST (2, 4, 4, 3) + TEST (3, 4, 4, 3) + TEST (4, 4, 4, 3) + TEST (5, 4, 4, 3) + TEST (6, 4, 4, 3) + TEST (7, 4, 4, 3) + TEST (0, 5, 4, 3) + TEST (1, 5, 4, 3) + TEST (2, 5, 4, 3) + TEST (3, 5, 4, 3) + TEST (4, 5, 4, 3) + TEST (5, 5, 4, 3) + TEST (6, 5, 4, 3) + TEST (7, 5, 4, 3) + TEST (0, 6, 4, 3) + TEST (1, 6, 4, 3) + TEST (2, 6, 4, 3) + TEST (3, 6, 4, 3) + TEST (4, 6, 4, 3) + TEST (5, 6, 4, 3) + TEST (6, 6, 4, 3) + TEST (7, 6, 4, 3) + TEST (0, 7, 4, 3) + TEST (1, 7, 4, 3) + TEST (2, 7, 4, 3) + TEST (3, 7, 4, 3) + TEST (4, 7, 4, 3) + TEST (5, 7, 4, 3) + TEST (6, 7, 4, 3) + TEST (7, 7, 4, 3) + TEST (0, 0, 5, 3) + TEST (1, 0, 5, 3) + TEST (2, 0, 5, 3) + TEST (3, 0, 5, 3) + TEST (4, 0, 5, 3) + TEST (5, 0, 5, 3) + TEST (6, 0, 5, 3) + TEST (7, 0, 5, 3) + TEST (0, 1, 5, 3) + TEST (1, 1, 5, 3) + TEST (2, 1, 5, 3) + TEST (3, 1, 5, 3) + TEST (4, 1, 5, 3) + TEST (5, 1, 5, 3) + TEST (6, 1, 5, 3) + TEST (7, 1, 5, 3) + TEST (0, 2, 5, 3) + TEST (1, 2, 5, 3) + TEST (2, 2, 5, 3) + TEST (3, 2, 5, 3) + TEST (4, 2, 5, 3) + TEST (5, 2, 5, 3) + TEST (6, 2, 5, 3) + TEST (7, 2, 5, 3) + TEST (0, 3, 5, 3) + TEST (1, 3, 5, 3) + TEST (2, 3, 5, 3) + TEST (3, 3, 5, 3) + TEST (4, 3, 5, 3) + TEST (5, 3, 5, 3) + TEST (6, 3, 5, 3) + TEST (7, 3, 5, 3) + TEST (0, 4, 5, 3) + TEST (1, 4, 5, 3) + TEST (2, 4, 5, 3) + TEST (3, 4, 5, 3) + TEST (4, 4, 5, 3) + TEST (5, 4, 5, 3) + TEST (6, 4, 5, 3) + TEST (7, 4, 5, 3) + TEST (0, 5, 5, 3) + TEST (1, 5, 5, 3) + TEST (2, 5, 5, 3) + TEST (3, 5, 5, 3) + TEST (4, 5, 5, 3) + TEST (5, 5, 5, 3) + TEST (6, 5, 5, 3) + TEST (7, 5, 5, 3) + TEST (0, 6, 5, 3) + TEST (1, 6, 5, 3) + TEST (2, 6, 5, 3) + TEST (3, 6, 5, 3) + TEST (4, 6, 5, 3) + TEST (5, 6, 5, 3) + TEST (6, 6, 5, 3) + TEST (7, 6, 5, 3) + TEST (0, 7, 5, 3) + TEST (1, 7, 5, 3) + TEST (2, 7, 5, 3) + TEST (3, 7, 5, 3) + TEST (4, 7, 5, 3) + TEST (5, 7, 5, 3) + TEST (6, 7, 5, 3) + TEST (7, 7, 5, 3) +} + +void check15(void) +{ + TEST (0, 0, 6, 3) + TEST (1, 0, 6, 3) + TEST (2, 0, 6, 3) + TEST (3, 0, 6, 3) + TEST (4, 0, 6, 3) + TEST (5, 0, 6, 3) + TEST (6, 0, 6, 3) + TEST (7, 0, 6, 3) + TEST (0, 1, 6, 3) + TEST (1, 1, 6, 3) + TEST (2, 1, 6, 3) + TEST (3, 1, 6, 3) + TEST (4, 1, 6, 3) + TEST (5, 1, 6, 3) + TEST (6, 1, 6, 3) + TEST (7, 1, 6, 3) + TEST (0, 2, 6, 3) + TEST (1, 2, 6, 3) + TEST (2, 2, 6, 3) + TEST (3, 2, 6, 3) + TEST (4, 2, 6, 3) + TEST (5, 2, 6, 3) + TEST (6, 2, 6, 3) + TEST (7, 2, 6, 3) + TEST (0, 3, 6, 3) + TEST (1, 3, 6, 3) + TEST (2, 3, 6, 3) + TEST (3, 3, 6, 3) + TEST (4, 3, 6, 3) + TEST (5, 3, 6, 3) + TEST (6, 3, 6, 3) + TEST (7, 3, 6, 3) + TEST (0, 4, 6, 3) + TEST (1, 4, 6, 3) + TEST (2, 4, 6, 3) + TEST (3, 4, 6, 3) + TEST (4, 4, 6, 3) + TEST (5, 4, 6, 3) + TEST (6, 4, 6, 3) + TEST (7, 4, 6, 3) + TEST (0, 5, 6, 3) + TEST (1, 5, 6, 3) + TEST (2, 5, 6, 3) + TEST (3, 5, 6, 3) + TEST (4, 5, 6, 3) + TEST (5, 5, 6, 3) + TEST (6, 5, 6, 3) + TEST (7, 5, 6, 3) + TEST (0, 6, 6, 3) + TEST (1, 6, 6, 3) + TEST (2, 6, 6, 3) + TEST (3, 6, 6, 3) + TEST (4, 6, 6, 3) + TEST (5, 6, 6, 3) + TEST (6, 6, 6, 3) + TEST (7, 6, 6, 3) + TEST (0, 7, 6, 3) + TEST (1, 7, 6, 3) + TEST (2, 7, 6, 3) + TEST (3, 7, 6, 3) + TEST (4, 7, 6, 3) + TEST (5, 7, 6, 3) + TEST (6, 7, 6, 3) + TEST (7, 7, 6, 3) + TEST (0, 0, 7, 3) + TEST (1, 0, 7, 3) + TEST (2, 0, 7, 3) + TEST (3, 0, 7, 3) + TEST (4, 0, 7, 3) + TEST (5, 0, 7, 3) + TEST (6, 0, 7, 3) + TEST (7, 0, 7, 3) + TEST (0, 1, 7, 3) + TEST (1, 1, 7, 3) + TEST (2, 1, 7, 3) + TEST (3, 1, 7, 3) + TEST (4, 1, 7, 3) + TEST (5, 1, 7, 3) + TEST (6, 1, 7, 3) + TEST (7, 1, 7, 3) + TEST (0, 2, 7, 3) + TEST (1, 2, 7, 3) + TEST (2, 2, 7, 3) + TEST (3, 2, 7, 3) + TEST (4, 2, 7, 3) + TEST (5, 2, 7, 3) + TEST (6, 2, 7, 3) + TEST (7, 2, 7, 3) + TEST (0, 3, 7, 3) + TEST (1, 3, 7, 3) + TEST (2, 3, 7, 3) + TEST (3, 3, 7, 3) + TEST (4, 3, 7, 3) + TEST (5, 3, 7, 3) + TEST (6, 3, 7, 3) + TEST (7, 3, 7, 3) + TEST (0, 4, 7, 3) + TEST (1, 4, 7, 3) + TEST (2, 4, 7, 3) + TEST (3, 4, 7, 3) + TEST (4, 4, 7, 3) + TEST (5, 4, 7, 3) + TEST (6, 4, 7, 3) + TEST (7, 4, 7, 3) + TEST (0, 5, 7, 3) + TEST (1, 5, 7, 3) + TEST (2, 5, 7, 3) + TEST (3, 5, 7, 3) + TEST (4, 5, 7, 3) + TEST (5, 5, 7, 3) + TEST (6, 5, 7, 3) + TEST (7, 5, 7, 3) + TEST (0, 6, 7, 3) + TEST (1, 6, 7, 3) + TEST (2, 6, 7, 3) + TEST (3, 6, 7, 3) + TEST (4, 6, 7, 3) + TEST (5, 6, 7, 3) + TEST (6, 6, 7, 3) + TEST (7, 6, 7, 3) + TEST (0, 7, 7, 3) + TEST (1, 7, 7, 3) + TEST (2, 7, 7, 3) + TEST (3, 7, 7, 3) + TEST (4, 7, 7, 3) + TEST (5, 7, 7, 3) + TEST (6, 7, 7, 3) + TEST (7, 7, 7, 3) +} + +void check16(void) +{ + TEST (0, 0, 0, 4) + TEST (1, 0, 0, 4) + TEST (2, 0, 0, 4) + TEST (3, 0, 0, 4) + TEST (4, 0, 0, 4) + TEST (5, 0, 0, 4) + TEST (6, 0, 0, 4) + TEST (7, 0, 0, 4) + TEST (0, 1, 0, 4) + TEST (1, 1, 0, 4) + TEST (2, 1, 0, 4) + TEST (3, 1, 0, 4) + TEST (4, 1, 0, 4) + TEST (5, 1, 0, 4) + TEST (6, 1, 0, 4) + TEST (7, 1, 0, 4) + TEST (0, 2, 0, 4) + TEST (1, 2, 0, 4) + TEST (2, 2, 0, 4) + TEST (3, 2, 0, 4) + TEST (4, 2, 0, 4) + TEST (5, 2, 0, 4) + TEST (6, 2, 0, 4) + TEST (7, 2, 0, 4) + TEST (0, 3, 0, 4) + TEST (1, 3, 0, 4) + TEST (2, 3, 0, 4) + TEST (3, 3, 0, 4) + TEST (4, 3, 0, 4) + TEST (5, 3, 0, 4) + TEST (6, 3, 0, 4) + TEST (7, 3, 0, 4) + TEST (0, 4, 0, 4) + TEST (1, 4, 0, 4) + TEST (2, 4, 0, 4) + TEST (3, 4, 0, 4) + TEST (4, 4, 0, 4) + TEST (5, 4, 0, 4) + TEST (6, 4, 0, 4) + TEST (7, 4, 0, 4) + TEST (0, 5, 0, 4) + TEST (1, 5, 0, 4) + TEST (2, 5, 0, 4) + TEST (3, 5, 0, 4) + TEST (4, 5, 0, 4) + TEST (5, 5, 0, 4) + TEST (6, 5, 0, 4) + TEST (7, 5, 0, 4) + TEST (0, 6, 0, 4) + TEST (1, 6, 0, 4) + TEST (2, 6, 0, 4) + TEST (3, 6, 0, 4) + TEST (4, 6, 0, 4) + TEST (5, 6, 0, 4) + TEST (6, 6, 0, 4) + TEST (7, 6, 0, 4) + TEST (0, 7, 0, 4) + TEST (1, 7, 0, 4) + TEST (2, 7, 0, 4) + TEST (3, 7, 0, 4) + TEST (4, 7, 0, 4) + TEST (5, 7, 0, 4) + TEST (6, 7, 0, 4) + TEST (7, 7, 0, 4) + TEST (0, 0, 1, 4) + TEST (1, 0, 1, 4) + TEST (2, 0, 1, 4) + TEST (3, 0, 1, 4) + TEST (4, 0, 1, 4) + TEST (5, 0, 1, 4) + TEST (6, 0, 1, 4) + TEST (7, 0, 1, 4) + TEST (0, 1, 1, 4) + TEST (1, 1, 1, 4) + TEST (2, 1, 1, 4) + TEST (3, 1, 1, 4) + TEST (4, 1, 1, 4) + TEST (5, 1, 1, 4) + TEST (6, 1, 1, 4) + TEST (7, 1, 1, 4) + TEST (0, 2, 1, 4) + TEST (1, 2, 1, 4) + TEST (2, 2, 1, 4) + TEST (3, 2, 1, 4) + TEST (4, 2, 1, 4) + TEST (5, 2, 1, 4) + TEST (6, 2, 1, 4) + TEST (7, 2, 1, 4) + TEST (0, 3, 1, 4) + TEST (1, 3, 1, 4) + TEST (2, 3, 1, 4) + TEST (3, 3, 1, 4) + TEST (4, 3, 1, 4) + TEST (5, 3, 1, 4) + TEST (6, 3, 1, 4) + TEST (7, 3, 1, 4) + TEST (0, 4, 1, 4) + TEST (1, 4, 1, 4) + TEST (2, 4, 1, 4) + TEST (3, 4, 1, 4) + TEST (4, 4, 1, 4) + TEST (5, 4, 1, 4) + TEST (6, 4, 1, 4) + TEST (7, 4, 1, 4) + TEST (0, 5, 1, 4) + TEST (1, 5, 1, 4) + TEST (2, 5, 1, 4) + TEST (3, 5, 1, 4) + TEST (4, 5, 1, 4) + TEST (5, 5, 1, 4) + TEST (6, 5, 1, 4) + TEST (7, 5, 1, 4) + TEST (0, 6, 1, 4) + TEST (1, 6, 1, 4) + TEST (2, 6, 1, 4) + TEST (3, 6, 1, 4) + TEST (4, 6, 1, 4) + TEST (5, 6, 1, 4) + TEST (6, 6, 1, 4) + TEST (7, 6, 1, 4) + TEST (0, 7, 1, 4) + TEST (1, 7, 1, 4) + TEST (2, 7, 1, 4) + TEST (3, 7, 1, 4) + TEST (4, 7, 1, 4) + TEST (5, 7, 1, 4) + TEST (6, 7, 1, 4) + TEST (7, 7, 1, 4) +} + +void check17(void) +{ + TEST (0, 0, 2, 4) + TEST (1, 0, 2, 4) + TEST (2, 0, 2, 4) + TEST (3, 0, 2, 4) + TEST (4, 0, 2, 4) + TEST (5, 0, 2, 4) + TEST (6, 0, 2, 4) + TEST (7, 0, 2, 4) + TEST (0, 1, 2, 4) + TEST (1, 1, 2, 4) + TEST (2, 1, 2, 4) + TEST (3, 1, 2, 4) + TEST (4, 1, 2, 4) + TEST (5, 1, 2, 4) + TEST (6, 1, 2, 4) + TEST (7, 1, 2, 4) + TEST (0, 2, 2, 4) + TEST (1, 2, 2, 4) + TEST (2, 2, 2, 4) + TEST (3, 2, 2, 4) + TEST (4, 2, 2, 4) + TEST (5, 2, 2, 4) + TEST (6, 2, 2, 4) + TEST (7, 2, 2, 4) + TEST (0, 3, 2, 4) + TEST (1, 3, 2, 4) + TEST (2, 3, 2, 4) + TEST (3, 3, 2, 4) + TEST (4, 3, 2, 4) + TEST (5, 3, 2, 4) + TEST (6, 3, 2, 4) + TEST (7, 3, 2, 4) + TEST (0, 4, 2, 4) + TEST (1, 4, 2, 4) + TEST (2, 4, 2, 4) + TEST (3, 4, 2, 4) + TEST (4, 4, 2, 4) + TEST (5, 4, 2, 4) + TEST (6, 4, 2, 4) + TEST (7, 4, 2, 4) + TEST (0, 5, 2, 4) + TEST (1, 5, 2, 4) + TEST (2, 5, 2, 4) + TEST (3, 5, 2, 4) + TEST (4, 5, 2, 4) + TEST (5, 5, 2, 4) + TEST (6, 5, 2, 4) + TEST (7, 5, 2, 4) + TEST (0, 6, 2, 4) + TEST (1, 6, 2, 4) + TEST (2, 6, 2, 4) + TEST (3, 6, 2, 4) + TEST (4, 6, 2, 4) + TEST (5, 6, 2, 4) + TEST (6, 6, 2, 4) + TEST (7, 6, 2, 4) + TEST (0, 7, 2, 4) + TEST (1, 7, 2, 4) + TEST (2, 7, 2, 4) + TEST (3, 7, 2, 4) + TEST (4, 7, 2, 4) + TEST (5, 7, 2, 4) + TEST (6, 7, 2, 4) + TEST (7, 7, 2, 4) + TEST (0, 0, 3, 4) + TEST (1, 0, 3, 4) + TEST (2, 0, 3, 4) + TEST (3, 0, 3, 4) + TEST (4, 0, 3, 4) + TEST (5, 0, 3, 4) + TEST (6, 0, 3, 4) + TEST (7, 0, 3, 4) + TEST (0, 1, 3, 4) + TEST (1, 1, 3, 4) + TEST (2, 1, 3, 4) + TEST (3, 1, 3, 4) + TEST (4, 1, 3, 4) + TEST (5, 1, 3, 4) + TEST (6, 1, 3, 4) + TEST (7, 1, 3, 4) + TEST (0, 2, 3, 4) + TEST (1, 2, 3, 4) + TEST (2, 2, 3, 4) + TEST (3, 2, 3, 4) + TEST (4, 2, 3, 4) + TEST (5, 2, 3, 4) + TEST (6, 2, 3, 4) + TEST (7, 2, 3, 4) + TEST (0, 3, 3, 4) + TEST (1, 3, 3, 4) + TEST (2, 3, 3, 4) + TEST (3, 3, 3, 4) + TEST (4, 3, 3, 4) + TEST (5, 3, 3, 4) + TEST (6, 3, 3, 4) + TEST (7, 3, 3, 4) + TEST (0, 4, 3, 4) + TEST (1, 4, 3, 4) + TEST (2, 4, 3, 4) + TEST (3, 4, 3, 4) + TEST (4, 4, 3, 4) + TEST (5, 4, 3, 4) + TEST (6, 4, 3, 4) + TEST (7, 4, 3, 4) + TEST (0, 5, 3, 4) + TEST (1, 5, 3, 4) + TEST (2, 5, 3, 4) + TEST (3, 5, 3, 4) + TEST (4, 5, 3, 4) + TEST (5, 5, 3, 4) + TEST (6, 5, 3, 4) + TEST (7, 5, 3, 4) + TEST (0, 6, 3, 4) + TEST (1, 6, 3, 4) + TEST (2, 6, 3, 4) + TEST (3, 6, 3, 4) + TEST (4, 6, 3, 4) + TEST (5, 6, 3, 4) + TEST (6, 6, 3, 4) + TEST (7, 6, 3, 4) + TEST (0, 7, 3, 4) + TEST (1, 7, 3, 4) + TEST (2, 7, 3, 4) + TEST (3, 7, 3, 4) + TEST (4, 7, 3, 4) + TEST (5, 7, 3, 4) + TEST (6, 7, 3, 4) + TEST (7, 7, 3, 4) +} + +void check18(void) +{ + TEST (0, 0, 4, 4) + TEST (1, 0, 4, 4) + TEST (2, 0, 4, 4) + TEST (3, 0, 4, 4) + TEST (4, 0, 4, 4) + TEST (5, 0, 4, 4) + TEST (6, 0, 4, 4) + TEST (7, 0, 4, 4) + TEST (0, 1, 4, 4) + TEST (1, 1, 4, 4) + TEST (2, 1, 4, 4) + TEST (3, 1, 4, 4) + TEST (4, 1, 4, 4) + TEST (5, 1, 4, 4) + TEST (6, 1, 4, 4) + TEST (7, 1, 4, 4) + TEST (0, 2, 4, 4) + TEST (1, 2, 4, 4) + TEST (2, 2, 4, 4) + TEST (3, 2, 4, 4) + TEST (4, 2, 4, 4) + TEST (5, 2, 4, 4) + TEST (6, 2, 4, 4) + TEST (7, 2, 4, 4) + TEST (0, 3, 4, 4) + TEST (1, 3, 4, 4) + TEST (2, 3, 4, 4) + TEST (3, 3, 4, 4) + TEST (4, 3, 4, 4) + TEST (5, 3, 4, 4) + TEST (6, 3, 4, 4) + TEST (7, 3, 4, 4) + TEST (0, 4, 4, 4) + TEST (1, 4, 4, 4) + TEST (2, 4, 4, 4) + TEST (3, 4, 4, 4) + TEST (4, 4, 4, 4) + TEST (5, 4, 4, 4) + TEST (6, 4, 4, 4) + TEST (7, 4, 4, 4) + TEST (0, 5, 4, 4) + TEST (1, 5, 4, 4) + TEST (2, 5, 4, 4) + TEST (3, 5, 4, 4) + TEST (4, 5, 4, 4) + TEST (5, 5, 4, 4) + TEST (6, 5, 4, 4) + TEST (7, 5, 4, 4) + TEST (0, 6, 4, 4) + TEST (1, 6, 4, 4) + TEST (2, 6, 4, 4) + TEST (3, 6, 4, 4) + TEST (4, 6, 4, 4) + TEST (5, 6, 4, 4) + TEST (6, 6, 4, 4) + TEST (7, 6, 4, 4) + TEST (0, 7, 4, 4) + TEST (1, 7, 4, 4) + TEST (2, 7, 4, 4) + TEST (3, 7, 4, 4) + TEST (4, 7, 4, 4) + TEST (5, 7, 4, 4) + TEST (6, 7, 4, 4) + TEST (7, 7, 4, 4) + TEST (0, 0, 5, 4) + TEST (1, 0, 5, 4) + TEST (2, 0, 5, 4) + TEST (3, 0, 5, 4) + TEST (4, 0, 5, 4) + TEST (5, 0, 5, 4) + TEST (6, 0, 5, 4) + TEST (7, 0, 5, 4) + TEST (0, 1, 5, 4) + TEST (1, 1, 5, 4) + TEST (2, 1, 5, 4) + TEST (3, 1, 5, 4) + TEST (4, 1, 5, 4) + TEST (5, 1, 5, 4) + TEST (6, 1, 5, 4) + TEST (7, 1, 5, 4) + TEST (0, 2, 5, 4) + TEST (1, 2, 5, 4) + TEST (2, 2, 5, 4) + TEST (3, 2, 5, 4) + TEST (4, 2, 5, 4) + TEST (5, 2, 5, 4) + TEST (6, 2, 5, 4) + TEST (7, 2, 5, 4) + TEST (0, 3, 5, 4) + TEST (1, 3, 5, 4) + TEST (2, 3, 5, 4) + TEST (3, 3, 5, 4) + TEST (4, 3, 5, 4) + TEST (5, 3, 5, 4) + TEST (6, 3, 5, 4) + TEST (7, 3, 5, 4) + TEST (0, 4, 5, 4) + TEST (1, 4, 5, 4) + TEST (2, 4, 5, 4) + TEST (3, 4, 5, 4) + TEST (4, 4, 5, 4) + TEST (5, 4, 5, 4) + TEST (6, 4, 5, 4) + TEST (7, 4, 5, 4) + TEST (0, 5, 5, 4) + TEST (1, 5, 5, 4) + TEST (2, 5, 5, 4) + TEST (3, 5, 5, 4) + TEST (4, 5, 5, 4) + TEST (5, 5, 5, 4) + TEST (6, 5, 5, 4) + TEST (7, 5, 5, 4) + TEST (0, 6, 5, 4) + TEST (1, 6, 5, 4) + TEST (2, 6, 5, 4) + TEST (3, 6, 5, 4) + TEST (4, 6, 5, 4) + TEST (5, 6, 5, 4) + TEST (6, 6, 5, 4) + TEST (7, 6, 5, 4) + TEST (0, 7, 5, 4) + TEST (1, 7, 5, 4) + TEST (2, 7, 5, 4) + TEST (3, 7, 5, 4) + TEST (4, 7, 5, 4) + TEST (5, 7, 5, 4) + TEST (6, 7, 5, 4) + TEST (7, 7, 5, 4) +} + +void check19(void) +{ + TEST (0, 0, 6, 4) + TEST (1, 0, 6, 4) + TEST (2, 0, 6, 4) + TEST (3, 0, 6, 4) + TEST (4, 0, 6, 4) + TEST (5, 0, 6, 4) + TEST (6, 0, 6, 4) + TEST (7, 0, 6, 4) + TEST (0, 1, 6, 4) + TEST (1, 1, 6, 4) + TEST (2, 1, 6, 4) + TEST (3, 1, 6, 4) + TEST (4, 1, 6, 4) + TEST (5, 1, 6, 4) + TEST (6, 1, 6, 4) + TEST (7, 1, 6, 4) + TEST (0, 2, 6, 4) + TEST (1, 2, 6, 4) + TEST (2, 2, 6, 4) + TEST (3, 2, 6, 4) + TEST (4, 2, 6, 4) + TEST (5, 2, 6, 4) + TEST (6, 2, 6, 4) + TEST (7, 2, 6, 4) + TEST (0, 3, 6, 4) + TEST (1, 3, 6, 4) + TEST (2, 3, 6, 4) + TEST (3, 3, 6, 4) + TEST (4, 3, 6, 4) + TEST (5, 3, 6, 4) + TEST (6, 3, 6, 4) + TEST (7, 3, 6, 4) + TEST (0, 4, 6, 4) + TEST (1, 4, 6, 4) + TEST (2, 4, 6, 4) + TEST (3, 4, 6, 4) + TEST (4, 4, 6, 4) + TEST (5, 4, 6, 4) + TEST (6, 4, 6, 4) + TEST (7, 4, 6, 4) + TEST (0, 5, 6, 4) + TEST (1, 5, 6, 4) + TEST (2, 5, 6, 4) + TEST (3, 5, 6, 4) + TEST (4, 5, 6, 4) + TEST (5, 5, 6, 4) + TEST (6, 5, 6, 4) + TEST (7, 5, 6, 4) + TEST (0, 6, 6, 4) + TEST (1, 6, 6, 4) + TEST (2, 6, 6, 4) + TEST (3, 6, 6, 4) + TEST (4, 6, 6, 4) + TEST (5, 6, 6, 4) + TEST (6, 6, 6, 4) + TEST (7, 6, 6, 4) + TEST (0, 7, 6, 4) + TEST (1, 7, 6, 4) + TEST (2, 7, 6, 4) + TEST (3, 7, 6, 4) + TEST (4, 7, 6, 4) + TEST (5, 7, 6, 4) + TEST (6, 7, 6, 4) + TEST (7, 7, 6, 4) + TEST (0, 0, 7, 4) + TEST (1, 0, 7, 4) + TEST (2, 0, 7, 4) + TEST (3, 0, 7, 4) + TEST (4, 0, 7, 4) + TEST (5, 0, 7, 4) + TEST (6, 0, 7, 4) + TEST (7, 0, 7, 4) + TEST (0, 1, 7, 4) + TEST (1, 1, 7, 4) + TEST (2, 1, 7, 4) + TEST (3, 1, 7, 4) + TEST (4, 1, 7, 4) + TEST (5, 1, 7, 4) + TEST (6, 1, 7, 4) + TEST (7, 1, 7, 4) + TEST (0, 2, 7, 4) + TEST (1, 2, 7, 4) + TEST (2, 2, 7, 4) + TEST (3, 2, 7, 4) + TEST (4, 2, 7, 4) + TEST (5, 2, 7, 4) + TEST (6, 2, 7, 4) + TEST (7, 2, 7, 4) + TEST (0, 3, 7, 4) + TEST (1, 3, 7, 4) + TEST (2, 3, 7, 4) + TEST (3, 3, 7, 4) + TEST (4, 3, 7, 4) + TEST (5, 3, 7, 4) + TEST (6, 3, 7, 4) + TEST (7, 3, 7, 4) + TEST (0, 4, 7, 4) + TEST (1, 4, 7, 4) + TEST (2, 4, 7, 4) + TEST (3, 4, 7, 4) + TEST (4, 4, 7, 4) + TEST (5, 4, 7, 4) + TEST (6, 4, 7, 4) + TEST (7, 4, 7, 4) + TEST (0, 5, 7, 4) + TEST (1, 5, 7, 4) + TEST (2, 5, 7, 4) + TEST (3, 5, 7, 4) + TEST (4, 5, 7, 4) + TEST (5, 5, 7, 4) + TEST (6, 5, 7, 4) + TEST (7, 5, 7, 4) + TEST (0, 6, 7, 4) + TEST (1, 6, 7, 4) + TEST (2, 6, 7, 4) + TEST (3, 6, 7, 4) + TEST (4, 6, 7, 4) + TEST (5, 6, 7, 4) + TEST (6, 6, 7, 4) + TEST (7, 6, 7, 4) + TEST (0, 7, 7, 4) + TEST (1, 7, 7, 4) + TEST (2, 7, 7, 4) + TEST (3, 7, 7, 4) + TEST (4, 7, 7, 4) + TEST (5, 7, 7, 4) + TEST (6, 7, 7, 4) + TEST (7, 7, 7, 4) +} + +void check20(void) +{ + TEST (0, 0, 0, 5) + TEST (1, 0, 0, 5) + TEST (2, 0, 0, 5) + TEST (3, 0, 0, 5) + TEST (4, 0, 0, 5) + TEST (5, 0, 0, 5) + TEST (6, 0, 0, 5) + TEST (7, 0, 0, 5) + TEST (0, 1, 0, 5) + TEST (1, 1, 0, 5) + TEST (2, 1, 0, 5) + TEST (3, 1, 0, 5) + TEST (4, 1, 0, 5) + TEST (5, 1, 0, 5) + TEST (6, 1, 0, 5) + TEST (7, 1, 0, 5) + TEST (0, 2, 0, 5) + TEST (1, 2, 0, 5) + TEST (2, 2, 0, 5) + TEST (3, 2, 0, 5) + TEST (4, 2, 0, 5) + TEST (5, 2, 0, 5) + TEST (6, 2, 0, 5) + TEST (7, 2, 0, 5) + TEST (0, 3, 0, 5) + TEST (1, 3, 0, 5) + TEST (2, 3, 0, 5) + TEST (3, 3, 0, 5) + TEST (4, 3, 0, 5) + TEST (5, 3, 0, 5) + TEST (6, 3, 0, 5) + TEST (7, 3, 0, 5) + TEST (0, 4, 0, 5) + TEST (1, 4, 0, 5) + TEST (2, 4, 0, 5) + TEST (3, 4, 0, 5) + TEST (4, 4, 0, 5) + TEST (5, 4, 0, 5) + TEST (6, 4, 0, 5) + TEST (7, 4, 0, 5) + TEST (0, 5, 0, 5) + TEST (1, 5, 0, 5) + TEST (2, 5, 0, 5) + TEST (3, 5, 0, 5) + TEST (4, 5, 0, 5) + TEST (5, 5, 0, 5) + TEST (6, 5, 0, 5) + TEST (7, 5, 0, 5) + TEST (0, 6, 0, 5) + TEST (1, 6, 0, 5) + TEST (2, 6, 0, 5) + TEST (3, 6, 0, 5) + TEST (4, 6, 0, 5) + TEST (5, 6, 0, 5) + TEST (6, 6, 0, 5) + TEST (7, 6, 0, 5) + TEST (0, 7, 0, 5) + TEST (1, 7, 0, 5) + TEST (2, 7, 0, 5) + TEST (3, 7, 0, 5) + TEST (4, 7, 0, 5) + TEST (5, 7, 0, 5) + TEST (6, 7, 0, 5) + TEST (7, 7, 0, 5) + TEST (0, 0, 1, 5) + TEST (1, 0, 1, 5) + TEST (2, 0, 1, 5) + TEST (3, 0, 1, 5) + TEST (4, 0, 1, 5) + TEST (5, 0, 1, 5) + TEST (6, 0, 1, 5) + TEST (7, 0, 1, 5) + TEST (0, 1, 1, 5) + TEST (1, 1, 1, 5) + TEST (2, 1, 1, 5) + TEST (3, 1, 1, 5) + TEST (4, 1, 1, 5) + TEST (5, 1, 1, 5) + TEST (6, 1, 1, 5) + TEST (7, 1, 1, 5) + TEST (0, 2, 1, 5) + TEST (1, 2, 1, 5) + TEST (2, 2, 1, 5) + TEST (3, 2, 1, 5) + TEST (4, 2, 1, 5) + TEST (5, 2, 1, 5) + TEST (6, 2, 1, 5) + TEST (7, 2, 1, 5) + TEST (0, 3, 1, 5) + TEST (1, 3, 1, 5) + TEST (2, 3, 1, 5) + TEST (3, 3, 1, 5) + TEST (4, 3, 1, 5) + TEST (5, 3, 1, 5) + TEST (6, 3, 1, 5) + TEST (7, 3, 1, 5) + TEST (0, 4, 1, 5) + TEST (1, 4, 1, 5) + TEST (2, 4, 1, 5) + TEST (3, 4, 1, 5) + TEST (4, 4, 1, 5) + TEST (5, 4, 1, 5) + TEST (6, 4, 1, 5) + TEST (7, 4, 1, 5) + TEST (0, 5, 1, 5) + TEST (1, 5, 1, 5) + TEST (2, 5, 1, 5) + TEST (3, 5, 1, 5) + TEST (4, 5, 1, 5) + TEST (5, 5, 1, 5) + TEST (6, 5, 1, 5) + TEST (7, 5, 1, 5) + TEST (0, 6, 1, 5) + TEST (1, 6, 1, 5) + TEST (2, 6, 1, 5) + TEST (3, 6, 1, 5) + TEST (4, 6, 1, 5) + TEST (5, 6, 1, 5) + TEST (6, 6, 1, 5) + TEST (7, 6, 1, 5) + TEST (0, 7, 1, 5) + TEST (1, 7, 1, 5) + TEST (2, 7, 1, 5) + TEST (3, 7, 1, 5) + TEST (4, 7, 1, 5) + TEST (5, 7, 1, 5) + TEST (6, 7, 1, 5) + TEST (7, 7, 1, 5) +} + +void check21(void) +{ + TEST (0, 0, 2, 5) + TEST (1, 0, 2, 5) + TEST (2, 0, 2, 5) + TEST (3, 0, 2, 5) + TEST (4, 0, 2, 5) + TEST (5, 0, 2, 5) + TEST (6, 0, 2, 5) + TEST (7, 0, 2, 5) + TEST (0, 1, 2, 5) + TEST (1, 1, 2, 5) + TEST (2, 1, 2, 5) + TEST (3, 1, 2, 5) + TEST (4, 1, 2, 5) + TEST (5, 1, 2, 5) + TEST (6, 1, 2, 5) + TEST (7, 1, 2, 5) + TEST (0, 2, 2, 5) + TEST (1, 2, 2, 5) + TEST (2, 2, 2, 5) + TEST (3, 2, 2, 5) + TEST (4, 2, 2, 5) + TEST (5, 2, 2, 5) + TEST (6, 2, 2, 5) + TEST (7, 2, 2, 5) + TEST (0, 3, 2, 5) + TEST (1, 3, 2, 5) + TEST (2, 3, 2, 5) + TEST (3, 3, 2, 5) + TEST (4, 3, 2, 5) + TEST (5, 3, 2, 5) + TEST (6, 3, 2, 5) + TEST (7, 3, 2, 5) + TEST (0, 4, 2, 5) + TEST (1, 4, 2, 5) + TEST (2, 4, 2, 5) + TEST (3, 4, 2, 5) + TEST (4, 4, 2, 5) + TEST (5, 4, 2, 5) + TEST (6, 4, 2, 5) + TEST (7, 4, 2, 5) + TEST (0, 5, 2, 5) + TEST (1, 5, 2, 5) + TEST (2, 5, 2, 5) + TEST (3, 5, 2, 5) + TEST (4, 5, 2, 5) + TEST (5, 5, 2, 5) + TEST (6, 5, 2, 5) + TEST (7, 5, 2, 5) + TEST (0, 6, 2, 5) + TEST (1, 6, 2, 5) + TEST (2, 6, 2, 5) + TEST (3, 6, 2, 5) + TEST (4, 6, 2, 5) + TEST (5, 6, 2, 5) + TEST (6, 6, 2, 5) + TEST (7, 6, 2, 5) + TEST (0, 7, 2, 5) + TEST (1, 7, 2, 5) + TEST (2, 7, 2, 5) + TEST (3, 7, 2, 5) + TEST (4, 7, 2, 5) + TEST (5, 7, 2, 5) + TEST (6, 7, 2, 5) + TEST (7, 7, 2, 5) + TEST (0, 0, 3, 5) + TEST (1, 0, 3, 5) + TEST (2, 0, 3, 5) + TEST (3, 0, 3, 5) + TEST (4, 0, 3, 5) + TEST (5, 0, 3, 5) + TEST (6, 0, 3, 5) + TEST (7, 0, 3, 5) + TEST (0, 1, 3, 5) + TEST (1, 1, 3, 5) + TEST (2, 1, 3, 5) + TEST (3, 1, 3, 5) + TEST (4, 1, 3, 5) + TEST (5, 1, 3, 5) + TEST (6, 1, 3, 5) + TEST (7, 1, 3, 5) + TEST (0, 2, 3, 5) + TEST (1, 2, 3, 5) + TEST (2, 2, 3, 5) + TEST (3, 2, 3, 5) + TEST (4, 2, 3, 5) + TEST (5, 2, 3, 5) + TEST (6, 2, 3, 5) + TEST (7, 2, 3, 5) + TEST (0, 3, 3, 5) + TEST (1, 3, 3, 5) + TEST (2, 3, 3, 5) + TEST (3, 3, 3, 5) + TEST (4, 3, 3, 5) + TEST (5, 3, 3, 5) + TEST (6, 3, 3, 5) + TEST (7, 3, 3, 5) + TEST (0, 4, 3, 5) + TEST (1, 4, 3, 5) + TEST (2, 4, 3, 5) + TEST (3, 4, 3, 5) + TEST (4, 4, 3, 5) + TEST (5, 4, 3, 5) + TEST (6, 4, 3, 5) + TEST (7, 4, 3, 5) + TEST (0, 5, 3, 5) + TEST (1, 5, 3, 5) + TEST (2, 5, 3, 5) + TEST (3, 5, 3, 5) + TEST (4, 5, 3, 5) + TEST (5, 5, 3, 5) + TEST (6, 5, 3, 5) + TEST (7, 5, 3, 5) + TEST (0, 6, 3, 5) + TEST (1, 6, 3, 5) + TEST (2, 6, 3, 5) + TEST (3, 6, 3, 5) + TEST (4, 6, 3, 5) + TEST (5, 6, 3, 5) + TEST (6, 6, 3, 5) + TEST (7, 6, 3, 5) + TEST (0, 7, 3, 5) + TEST (1, 7, 3, 5) + TEST (2, 7, 3, 5) + TEST (3, 7, 3, 5) + TEST (4, 7, 3, 5) + TEST (5, 7, 3, 5) + TEST (6, 7, 3, 5) + TEST (7, 7, 3, 5) +} + +void check22(void) +{ + TEST (0, 0, 4, 5) + TEST (1, 0, 4, 5) + TEST (2, 0, 4, 5) + TEST (3, 0, 4, 5) + TEST (4, 0, 4, 5) + TEST (5, 0, 4, 5) + TEST (6, 0, 4, 5) + TEST (7, 0, 4, 5) + TEST (0, 1, 4, 5) + TEST (1, 1, 4, 5) + TEST (2, 1, 4, 5) + TEST (3, 1, 4, 5) + TEST (4, 1, 4, 5) + TEST (5, 1, 4, 5) + TEST (6, 1, 4, 5) + TEST (7, 1, 4, 5) + TEST (0, 2, 4, 5) + TEST (1, 2, 4, 5) + TEST (2, 2, 4, 5) + TEST (3, 2, 4, 5) + TEST (4, 2, 4, 5) + TEST (5, 2, 4, 5) + TEST (6, 2, 4, 5) + TEST (7, 2, 4, 5) + TEST (0, 3, 4, 5) + TEST (1, 3, 4, 5) + TEST (2, 3, 4, 5) + TEST (3, 3, 4, 5) + TEST (4, 3, 4, 5) + TEST (5, 3, 4, 5) + TEST (6, 3, 4, 5) + TEST (7, 3, 4, 5) + TEST (0, 4, 4, 5) + TEST (1, 4, 4, 5) + TEST (2, 4, 4, 5) + TEST (3, 4, 4, 5) + TEST (4, 4, 4, 5) + TEST (5, 4, 4, 5) + TEST (6, 4, 4, 5) + TEST (7, 4, 4, 5) + TEST (0, 5, 4, 5) + TEST (1, 5, 4, 5) + TEST (2, 5, 4, 5) + TEST (3, 5, 4, 5) + TEST (4, 5, 4, 5) + TEST (5, 5, 4, 5) + TEST (6, 5, 4, 5) + TEST (7, 5, 4, 5) + TEST (0, 6, 4, 5) + TEST (1, 6, 4, 5) + TEST (2, 6, 4, 5) + TEST (3, 6, 4, 5) + TEST (4, 6, 4, 5) + TEST (5, 6, 4, 5) + TEST (6, 6, 4, 5) + TEST (7, 6, 4, 5) + TEST (0, 7, 4, 5) + TEST (1, 7, 4, 5) + TEST (2, 7, 4, 5) + TEST (3, 7, 4, 5) + TEST (4, 7, 4, 5) + TEST (5, 7, 4, 5) + TEST (6, 7, 4, 5) + TEST (7, 7, 4, 5) + TEST (0, 0, 5, 5) + TEST (1, 0, 5, 5) + TEST (2, 0, 5, 5) + TEST (3, 0, 5, 5) + TEST (4, 0, 5, 5) + TEST (5, 0, 5, 5) + TEST (6, 0, 5, 5) + TEST (7, 0, 5, 5) + TEST (0, 1, 5, 5) + TEST (1, 1, 5, 5) + TEST (2, 1, 5, 5) + TEST (3, 1, 5, 5) + TEST (4, 1, 5, 5) + TEST (5, 1, 5, 5) + TEST (6, 1, 5, 5) + TEST (7, 1, 5, 5) + TEST (0, 2, 5, 5) + TEST (1, 2, 5, 5) + TEST (2, 2, 5, 5) + TEST (3, 2, 5, 5) + TEST (4, 2, 5, 5) + TEST (5, 2, 5, 5) + TEST (6, 2, 5, 5) + TEST (7, 2, 5, 5) + TEST (0, 3, 5, 5) + TEST (1, 3, 5, 5) + TEST (2, 3, 5, 5) + TEST (3, 3, 5, 5) + TEST (4, 3, 5, 5) + TEST (5, 3, 5, 5) + TEST (6, 3, 5, 5) + TEST (7, 3, 5, 5) + TEST (0, 4, 5, 5) + TEST (1, 4, 5, 5) + TEST (2, 4, 5, 5) + TEST (3, 4, 5, 5) + TEST (4, 4, 5, 5) + TEST (5, 4, 5, 5) + TEST (6, 4, 5, 5) + TEST (7, 4, 5, 5) + TEST (0, 5, 5, 5) + TEST (1, 5, 5, 5) + TEST (2, 5, 5, 5) + TEST (3, 5, 5, 5) + TEST (4, 5, 5, 5) + TEST (5, 5, 5, 5) + TEST (6, 5, 5, 5) + TEST (7, 5, 5, 5) + TEST (0, 6, 5, 5) + TEST (1, 6, 5, 5) + TEST (2, 6, 5, 5) + TEST (3, 6, 5, 5) + TEST (4, 6, 5, 5) + TEST (5, 6, 5, 5) + TEST (6, 6, 5, 5) + TEST (7, 6, 5, 5) + TEST (0, 7, 5, 5) + TEST (1, 7, 5, 5) + TEST (2, 7, 5, 5) + TEST (3, 7, 5, 5) + TEST (4, 7, 5, 5) + TEST (5, 7, 5, 5) + TEST (6, 7, 5, 5) + TEST (7, 7, 5, 5) +} + +void check23(void) +{ + TEST (0, 0, 6, 5) + TEST (1, 0, 6, 5) + TEST (2, 0, 6, 5) + TEST (3, 0, 6, 5) + TEST (4, 0, 6, 5) + TEST (5, 0, 6, 5) + TEST (6, 0, 6, 5) + TEST (7, 0, 6, 5) + TEST (0, 1, 6, 5) + TEST (1, 1, 6, 5) + TEST (2, 1, 6, 5) + TEST (3, 1, 6, 5) + TEST (4, 1, 6, 5) + TEST (5, 1, 6, 5) + TEST (6, 1, 6, 5) + TEST (7, 1, 6, 5) + TEST (0, 2, 6, 5) + TEST (1, 2, 6, 5) + TEST (2, 2, 6, 5) + TEST (3, 2, 6, 5) + TEST (4, 2, 6, 5) + TEST (5, 2, 6, 5) + TEST (6, 2, 6, 5) + TEST (7, 2, 6, 5) + TEST (0, 3, 6, 5) + TEST (1, 3, 6, 5) + TEST (2, 3, 6, 5) + TEST (3, 3, 6, 5) + TEST (4, 3, 6, 5) + TEST (5, 3, 6, 5) + TEST (6, 3, 6, 5) + TEST (7, 3, 6, 5) + TEST (0, 4, 6, 5) + TEST (1, 4, 6, 5) + TEST (2, 4, 6, 5) + TEST (3, 4, 6, 5) + TEST (4, 4, 6, 5) + TEST (5, 4, 6, 5) + TEST (6, 4, 6, 5) + TEST (7, 4, 6, 5) + TEST (0, 5, 6, 5) + TEST (1, 5, 6, 5) + TEST (2, 5, 6, 5) + TEST (3, 5, 6, 5) + TEST (4, 5, 6, 5) + TEST (5, 5, 6, 5) + TEST (6, 5, 6, 5) + TEST (7, 5, 6, 5) + TEST (0, 6, 6, 5) + TEST (1, 6, 6, 5) + TEST (2, 6, 6, 5) + TEST (3, 6, 6, 5) + TEST (4, 6, 6, 5) + TEST (5, 6, 6, 5) + TEST (6, 6, 6, 5) + TEST (7, 6, 6, 5) + TEST (0, 7, 6, 5) + TEST (1, 7, 6, 5) + TEST (2, 7, 6, 5) + TEST (3, 7, 6, 5) + TEST (4, 7, 6, 5) + TEST (5, 7, 6, 5) + TEST (6, 7, 6, 5) + TEST (7, 7, 6, 5) + TEST (0, 0, 7, 5) + TEST (1, 0, 7, 5) + TEST (2, 0, 7, 5) + TEST (3, 0, 7, 5) + TEST (4, 0, 7, 5) + TEST (5, 0, 7, 5) + TEST (6, 0, 7, 5) + TEST (7, 0, 7, 5) + TEST (0, 1, 7, 5) + TEST (1, 1, 7, 5) + TEST (2, 1, 7, 5) + TEST (3, 1, 7, 5) + TEST (4, 1, 7, 5) + TEST (5, 1, 7, 5) + TEST (6, 1, 7, 5) + TEST (7, 1, 7, 5) + TEST (0, 2, 7, 5) + TEST (1, 2, 7, 5) + TEST (2, 2, 7, 5) + TEST (3, 2, 7, 5) + TEST (4, 2, 7, 5) + TEST (5, 2, 7, 5) + TEST (6, 2, 7, 5) + TEST (7, 2, 7, 5) + TEST (0, 3, 7, 5) + TEST (1, 3, 7, 5) + TEST (2, 3, 7, 5) + TEST (3, 3, 7, 5) + TEST (4, 3, 7, 5) + TEST (5, 3, 7, 5) + TEST (6, 3, 7, 5) + TEST (7, 3, 7, 5) + TEST (0, 4, 7, 5) + TEST (1, 4, 7, 5) + TEST (2, 4, 7, 5) + TEST (3, 4, 7, 5) + TEST (4, 4, 7, 5) + TEST (5, 4, 7, 5) + TEST (6, 4, 7, 5) + TEST (7, 4, 7, 5) + TEST (0, 5, 7, 5) + TEST (1, 5, 7, 5) + TEST (2, 5, 7, 5) + TEST (3, 5, 7, 5) + TEST (4, 5, 7, 5) + TEST (5, 5, 7, 5) + TEST (6, 5, 7, 5) + TEST (7, 5, 7, 5) + TEST (0, 6, 7, 5) + TEST (1, 6, 7, 5) + TEST (2, 6, 7, 5) + TEST (3, 6, 7, 5) + TEST (4, 6, 7, 5) + TEST (5, 6, 7, 5) + TEST (6, 6, 7, 5) + TEST (7, 6, 7, 5) + TEST (0, 7, 7, 5) + TEST (1, 7, 7, 5) + TEST (2, 7, 7, 5) + TEST (3, 7, 7, 5) + TEST (4, 7, 7, 5) + TEST (5, 7, 7, 5) + TEST (6, 7, 7, 5) + TEST (7, 7, 7, 5) +} + +void check24(void) +{ + TEST (0, 0, 0, 6) + TEST (1, 0, 0, 6) + TEST (2, 0, 0, 6) + TEST (3, 0, 0, 6) + TEST (4, 0, 0, 6) + TEST (5, 0, 0, 6) + TEST (6, 0, 0, 6) + TEST (7, 0, 0, 6) + TEST (0, 1, 0, 6) + TEST (1, 1, 0, 6) + TEST (2, 1, 0, 6) + TEST (3, 1, 0, 6) + TEST (4, 1, 0, 6) + TEST (5, 1, 0, 6) + TEST (6, 1, 0, 6) + TEST (7, 1, 0, 6) + TEST (0, 2, 0, 6) + TEST (1, 2, 0, 6) + TEST (2, 2, 0, 6) + TEST (3, 2, 0, 6) + TEST (4, 2, 0, 6) + TEST (5, 2, 0, 6) + TEST (6, 2, 0, 6) + TEST (7, 2, 0, 6) + TEST (0, 3, 0, 6) + TEST (1, 3, 0, 6) + TEST (2, 3, 0, 6) + TEST (3, 3, 0, 6) + TEST (4, 3, 0, 6) + TEST (5, 3, 0, 6) + TEST (6, 3, 0, 6) + TEST (7, 3, 0, 6) + TEST (0, 4, 0, 6) + TEST (1, 4, 0, 6) + TEST (2, 4, 0, 6) + TEST (3, 4, 0, 6) + TEST (4, 4, 0, 6) + TEST (5, 4, 0, 6) + TEST (6, 4, 0, 6) + TEST (7, 4, 0, 6) + TEST (0, 5, 0, 6) + TEST (1, 5, 0, 6) + TEST (2, 5, 0, 6) + TEST (3, 5, 0, 6) + TEST (4, 5, 0, 6) + TEST (5, 5, 0, 6) + TEST (6, 5, 0, 6) + TEST (7, 5, 0, 6) + TEST (0, 6, 0, 6) + TEST (1, 6, 0, 6) + TEST (2, 6, 0, 6) + TEST (3, 6, 0, 6) + TEST (4, 6, 0, 6) + TEST (5, 6, 0, 6) + TEST (6, 6, 0, 6) + TEST (7, 6, 0, 6) + TEST (0, 7, 0, 6) + TEST (1, 7, 0, 6) + TEST (2, 7, 0, 6) + TEST (3, 7, 0, 6) + TEST (4, 7, 0, 6) + TEST (5, 7, 0, 6) + TEST (6, 7, 0, 6) + TEST (7, 7, 0, 6) + TEST (0, 0, 1, 6) + TEST (1, 0, 1, 6) + TEST (2, 0, 1, 6) + TEST (3, 0, 1, 6) + TEST (4, 0, 1, 6) + TEST (5, 0, 1, 6) + TEST (6, 0, 1, 6) + TEST (7, 0, 1, 6) + TEST (0, 1, 1, 6) + TEST (1, 1, 1, 6) + TEST (2, 1, 1, 6) + TEST (3, 1, 1, 6) + TEST (4, 1, 1, 6) + TEST (5, 1, 1, 6) + TEST (6, 1, 1, 6) + TEST (7, 1, 1, 6) + TEST (0, 2, 1, 6) + TEST (1, 2, 1, 6) + TEST (2, 2, 1, 6) + TEST (3, 2, 1, 6) + TEST (4, 2, 1, 6) + TEST (5, 2, 1, 6) + TEST (6, 2, 1, 6) + TEST (7, 2, 1, 6) + TEST (0, 3, 1, 6) + TEST (1, 3, 1, 6) + TEST (2, 3, 1, 6) + TEST (3, 3, 1, 6) + TEST (4, 3, 1, 6) + TEST (5, 3, 1, 6) + TEST (6, 3, 1, 6) + TEST (7, 3, 1, 6) + TEST (0, 4, 1, 6) + TEST (1, 4, 1, 6) + TEST (2, 4, 1, 6) + TEST (3, 4, 1, 6) + TEST (4, 4, 1, 6) + TEST (5, 4, 1, 6) + TEST (6, 4, 1, 6) + TEST (7, 4, 1, 6) + TEST (0, 5, 1, 6) + TEST (1, 5, 1, 6) + TEST (2, 5, 1, 6) + TEST (3, 5, 1, 6) + TEST (4, 5, 1, 6) + TEST (5, 5, 1, 6) + TEST (6, 5, 1, 6) + TEST (7, 5, 1, 6) + TEST (0, 6, 1, 6) + TEST (1, 6, 1, 6) + TEST (2, 6, 1, 6) + TEST (3, 6, 1, 6) + TEST (4, 6, 1, 6) + TEST (5, 6, 1, 6) + TEST (6, 6, 1, 6) + TEST (7, 6, 1, 6) + TEST (0, 7, 1, 6) + TEST (1, 7, 1, 6) + TEST (2, 7, 1, 6) + TEST (3, 7, 1, 6) + TEST (4, 7, 1, 6) + TEST (5, 7, 1, 6) + TEST (6, 7, 1, 6) + TEST (7, 7, 1, 6) +} + +void check25(void) +{ + TEST (0, 0, 2, 6) + TEST (1, 0, 2, 6) + TEST (2, 0, 2, 6) + TEST (3, 0, 2, 6) + TEST (4, 0, 2, 6) + TEST (5, 0, 2, 6) + TEST (6, 0, 2, 6) + TEST (7, 0, 2, 6) + TEST (0, 1, 2, 6) + TEST (1, 1, 2, 6) + TEST (2, 1, 2, 6) + TEST (3, 1, 2, 6) + TEST (4, 1, 2, 6) + TEST (5, 1, 2, 6) + TEST (6, 1, 2, 6) + TEST (7, 1, 2, 6) + TEST (0, 2, 2, 6) + TEST (1, 2, 2, 6) + TEST (2, 2, 2, 6) + TEST (3, 2, 2, 6) + TEST (4, 2, 2, 6) + TEST (5, 2, 2, 6) + TEST (6, 2, 2, 6) + TEST (7, 2, 2, 6) + TEST (0, 3, 2, 6) + TEST (1, 3, 2, 6) + TEST (2, 3, 2, 6) + TEST (3, 3, 2, 6) + TEST (4, 3, 2, 6) + TEST (5, 3, 2, 6) + TEST (6, 3, 2, 6) + TEST (7, 3, 2, 6) + TEST (0, 4, 2, 6) + TEST (1, 4, 2, 6) + TEST (2, 4, 2, 6) + TEST (3, 4, 2, 6) + TEST (4, 4, 2, 6) + TEST (5, 4, 2, 6) + TEST (6, 4, 2, 6) + TEST (7, 4, 2, 6) + TEST (0, 5, 2, 6) + TEST (1, 5, 2, 6) + TEST (2, 5, 2, 6) + TEST (3, 5, 2, 6) + TEST (4, 5, 2, 6) + TEST (5, 5, 2, 6) + TEST (6, 5, 2, 6) + TEST (7, 5, 2, 6) + TEST (0, 6, 2, 6) + TEST (1, 6, 2, 6) + TEST (2, 6, 2, 6) + TEST (3, 6, 2, 6) + TEST (4, 6, 2, 6) + TEST (5, 6, 2, 6) + TEST (6, 6, 2, 6) + TEST (7, 6, 2, 6) + TEST (0, 7, 2, 6) + TEST (1, 7, 2, 6) + TEST (2, 7, 2, 6) + TEST (3, 7, 2, 6) + TEST (4, 7, 2, 6) + TEST (5, 7, 2, 6) + TEST (6, 7, 2, 6) + TEST (7, 7, 2, 6) + TEST (0, 0, 3, 6) + TEST (1, 0, 3, 6) + TEST (2, 0, 3, 6) + TEST (3, 0, 3, 6) + TEST (4, 0, 3, 6) + TEST (5, 0, 3, 6) + TEST (6, 0, 3, 6) + TEST (7, 0, 3, 6) + TEST (0, 1, 3, 6) + TEST (1, 1, 3, 6) + TEST (2, 1, 3, 6) + TEST (3, 1, 3, 6) + TEST (4, 1, 3, 6) + TEST (5, 1, 3, 6) + TEST (6, 1, 3, 6) + TEST (7, 1, 3, 6) + TEST (0, 2, 3, 6) + TEST (1, 2, 3, 6) + TEST (2, 2, 3, 6) + TEST (3, 2, 3, 6) + TEST (4, 2, 3, 6) + TEST (5, 2, 3, 6) + TEST (6, 2, 3, 6) + TEST (7, 2, 3, 6) + TEST (0, 3, 3, 6) + TEST (1, 3, 3, 6) + TEST (2, 3, 3, 6) + TEST (3, 3, 3, 6) + TEST (4, 3, 3, 6) + TEST (5, 3, 3, 6) + TEST (6, 3, 3, 6) + TEST (7, 3, 3, 6) + TEST (0, 4, 3, 6) + TEST (1, 4, 3, 6) + TEST (2, 4, 3, 6) + TEST (3, 4, 3, 6) + TEST (4, 4, 3, 6) + TEST (5, 4, 3, 6) + TEST (6, 4, 3, 6) + TEST (7, 4, 3, 6) + TEST (0, 5, 3, 6) + TEST (1, 5, 3, 6) + TEST (2, 5, 3, 6) + TEST (3, 5, 3, 6) + TEST (4, 5, 3, 6) + TEST (5, 5, 3, 6) + TEST (6, 5, 3, 6) + TEST (7, 5, 3, 6) + TEST (0, 6, 3, 6) + TEST (1, 6, 3, 6) + TEST (2, 6, 3, 6) + TEST (3, 6, 3, 6) + TEST (4, 6, 3, 6) + TEST (5, 6, 3, 6) + TEST (6, 6, 3, 6) + TEST (7, 6, 3, 6) + TEST (0, 7, 3, 6) + TEST (1, 7, 3, 6) + TEST (2, 7, 3, 6) + TEST (3, 7, 3, 6) + TEST (4, 7, 3, 6) + TEST (5, 7, 3, 6) + TEST (6, 7, 3, 6) + TEST (7, 7, 3, 6) +} + +void check26(void) +{ + TEST (0, 0, 4, 6) + TEST (1, 0, 4, 6) + TEST (2, 0, 4, 6) + TEST (3, 0, 4, 6) + TEST (4, 0, 4, 6) + TEST (5, 0, 4, 6) + TEST (6, 0, 4, 6) + TEST (7, 0, 4, 6) + TEST (0, 1, 4, 6) + TEST (1, 1, 4, 6) + TEST (2, 1, 4, 6) + TEST (3, 1, 4, 6) + TEST (4, 1, 4, 6) + TEST (5, 1, 4, 6) + TEST (6, 1, 4, 6) + TEST (7, 1, 4, 6) + TEST (0, 2, 4, 6) + TEST (1, 2, 4, 6) + TEST (2, 2, 4, 6) + TEST (3, 2, 4, 6) + TEST (4, 2, 4, 6) + TEST (5, 2, 4, 6) + TEST (6, 2, 4, 6) + TEST (7, 2, 4, 6) + TEST (0, 3, 4, 6) + TEST (1, 3, 4, 6) + TEST (2, 3, 4, 6) + TEST (3, 3, 4, 6) + TEST (4, 3, 4, 6) + TEST (5, 3, 4, 6) + TEST (6, 3, 4, 6) + TEST (7, 3, 4, 6) + TEST (0, 4, 4, 6) + TEST (1, 4, 4, 6) + TEST (2, 4, 4, 6) + TEST (3, 4, 4, 6) + TEST (4, 4, 4, 6) + TEST (5, 4, 4, 6) + TEST (6, 4, 4, 6) + TEST (7, 4, 4, 6) + TEST (0, 5, 4, 6) + TEST (1, 5, 4, 6) + TEST (2, 5, 4, 6) + TEST (3, 5, 4, 6) + TEST (4, 5, 4, 6) + TEST (5, 5, 4, 6) + TEST (6, 5, 4, 6) + TEST (7, 5, 4, 6) + TEST (0, 6, 4, 6) + TEST (1, 6, 4, 6) + TEST (2, 6, 4, 6) + TEST (3, 6, 4, 6) + TEST (4, 6, 4, 6) + TEST (5, 6, 4, 6) + TEST (6, 6, 4, 6) + TEST (7, 6, 4, 6) + TEST (0, 7, 4, 6) + TEST (1, 7, 4, 6) + TEST (2, 7, 4, 6) + TEST (3, 7, 4, 6) + TEST (4, 7, 4, 6) + TEST (5, 7, 4, 6) + TEST (6, 7, 4, 6) + TEST (7, 7, 4, 6) + TEST (0, 0, 5, 6) + TEST (1, 0, 5, 6) + TEST (2, 0, 5, 6) + TEST (3, 0, 5, 6) + TEST (4, 0, 5, 6) + TEST (5, 0, 5, 6) + TEST (6, 0, 5, 6) + TEST (7, 0, 5, 6) + TEST (0, 1, 5, 6) + TEST (1, 1, 5, 6) + TEST (2, 1, 5, 6) + TEST (3, 1, 5, 6) + TEST (4, 1, 5, 6) + TEST (5, 1, 5, 6) + TEST (6, 1, 5, 6) + TEST (7, 1, 5, 6) + TEST (0, 2, 5, 6) + TEST (1, 2, 5, 6) + TEST (2, 2, 5, 6) + TEST (3, 2, 5, 6) + TEST (4, 2, 5, 6) + TEST (5, 2, 5, 6) + TEST (6, 2, 5, 6) + TEST (7, 2, 5, 6) + TEST (0, 3, 5, 6) + TEST (1, 3, 5, 6) + TEST (2, 3, 5, 6) + TEST (3, 3, 5, 6) + TEST (4, 3, 5, 6) + TEST (5, 3, 5, 6) + TEST (6, 3, 5, 6) + TEST (7, 3, 5, 6) + TEST (0, 4, 5, 6) + TEST (1, 4, 5, 6) + TEST (2, 4, 5, 6) + TEST (3, 4, 5, 6) + TEST (4, 4, 5, 6) + TEST (5, 4, 5, 6) + TEST (6, 4, 5, 6) + TEST (7, 4, 5, 6) + TEST (0, 5, 5, 6) + TEST (1, 5, 5, 6) + TEST (2, 5, 5, 6) + TEST (3, 5, 5, 6) + TEST (4, 5, 5, 6) + TEST (5, 5, 5, 6) + TEST (6, 5, 5, 6) + TEST (7, 5, 5, 6) + TEST (0, 6, 5, 6) + TEST (1, 6, 5, 6) + TEST (2, 6, 5, 6) + TEST (3, 6, 5, 6) + TEST (4, 6, 5, 6) + TEST (5, 6, 5, 6) + TEST (6, 6, 5, 6) + TEST (7, 6, 5, 6) + TEST (0, 7, 5, 6) + TEST (1, 7, 5, 6) + TEST (2, 7, 5, 6) + TEST (3, 7, 5, 6) + TEST (4, 7, 5, 6) + TEST (5, 7, 5, 6) + TEST (6, 7, 5, 6) + TEST (7, 7, 5, 6) +} + +void check27(void) +{ + TEST (0, 0, 6, 6) + TEST (1, 0, 6, 6) + TEST (2, 0, 6, 6) + TEST (3, 0, 6, 6) + TEST (4, 0, 6, 6) + TEST (5, 0, 6, 6) + TEST (6, 0, 6, 6) + TEST (7, 0, 6, 6) + TEST (0, 1, 6, 6) + TEST (1, 1, 6, 6) + TEST (2, 1, 6, 6) + TEST (3, 1, 6, 6) + TEST (4, 1, 6, 6) + TEST (5, 1, 6, 6) + TEST (6, 1, 6, 6) + TEST (7, 1, 6, 6) + TEST (0, 2, 6, 6) + TEST (1, 2, 6, 6) + TEST (2, 2, 6, 6) + TEST (3, 2, 6, 6) + TEST (4, 2, 6, 6) + TEST (5, 2, 6, 6) + TEST (6, 2, 6, 6) + TEST (7, 2, 6, 6) + TEST (0, 3, 6, 6) + TEST (1, 3, 6, 6) + TEST (2, 3, 6, 6) + TEST (3, 3, 6, 6) + TEST (4, 3, 6, 6) + TEST (5, 3, 6, 6) + TEST (6, 3, 6, 6) + TEST (7, 3, 6, 6) + TEST (0, 4, 6, 6) + TEST (1, 4, 6, 6) + TEST (2, 4, 6, 6) + TEST (3, 4, 6, 6) + TEST (4, 4, 6, 6) + TEST (5, 4, 6, 6) + TEST (6, 4, 6, 6) + TEST (7, 4, 6, 6) + TEST (0, 5, 6, 6) + TEST (1, 5, 6, 6) + TEST (2, 5, 6, 6) + TEST (3, 5, 6, 6) + TEST (4, 5, 6, 6) + TEST (5, 5, 6, 6) + TEST (6, 5, 6, 6) + TEST (7, 5, 6, 6) + TEST (0, 6, 6, 6) + TEST (1, 6, 6, 6) + TEST (2, 6, 6, 6) + TEST (3, 6, 6, 6) + TEST (4, 6, 6, 6) + TEST (5, 6, 6, 6) + TEST (6, 6, 6, 6) + TEST (7, 6, 6, 6) + TEST (0, 7, 6, 6) + TEST (1, 7, 6, 6) + TEST (2, 7, 6, 6) + TEST (3, 7, 6, 6) + TEST (4, 7, 6, 6) + TEST (5, 7, 6, 6) + TEST (6, 7, 6, 6) + TEST (7, 7, 6, 6) + TEST (0, 0, 7, 6) + TEST (1, 0, 7, 6) + TEST (2, 0, 7, 6) + TEST (3, 0, 7, 6) + TEST (4, 0, 7, 6) + TEST (5, 0, 7, 6) + TEST (6, 0, 7, 6) + TEST (7, 0, 7, 6) + TEST (0, 1, 7, 6) + TEST (1, 1, 7, 6) + TEST (2, 1, 7, 6) + TEST (3, 1, 7, 6) + TEST (4, 1, 7, 6) + TEST (5, 1, 7, 6) + TEST (6, 1, 7, 6) + TEST (7, 1, 7, 6) + TEST (0, 2, 7, 6) + TEST (1, 2, 7, 6) + TEST (2, 2, 7, 6) + TEST (3, 2, 7, 6) + TEST (4, 2, 7, 6) + TEST (5, 2, 7, 6) + TEST (6, 2, 7, 6) + TEST (7, 2, 7, 6) + TEST (0, 3, 7, 6) + TEST (1, 3, 7, 6) + TEST (2, 3, 7, 6) + TEST (3, 3, 7, 6) + TEST (4, 3, 7, 6) + TEST (5, 3, 7, 6) + TEST (6, 3, 7, 6) + TEST (7, 3, 7, 6) + TEST (0, 4, 7, 6) + TEST (1, 4, 7, 6) + TEST (2, 4, 7, 6) + TEST (3, 4, 7, 6) + TEST (4, 4, 7, 6) + TEST (5, 4, 7, 6) + TEST (6, 4, 7, 6) + TEST (7, 4, 7, 6) + TEST (0, 5, 7, 6) + TEST (1, 5, 7, 6) + TEST (2, 5, 7, 6) + TEST (3, 5, 7, 6) + TEST (4, 5, 7, 6) + TEST (5, 5, 7, 6) + TEST (6, 5, 7, 6) + TEST (7, 5, 7, 6) + TEST (0, 6, 7, 6) + TEST (1, 6, 7, 6) + TEST (2, 6, 7, 6) + TEST (3, 6, 7, 6) + TEST (4, 6, 7, 6) + TEST (5, 6, 7, 6) + TEST (6, 6, 7, 6) + TEST (7, 6, 7, 6) + TEST (0, 7, 7, 6) + TEST (1, 7, 7, 6) + TEST (2, 7, 7, 6) + TEST (3, 7, 7, 6) + TEST (4, 7, 7, 6) + TEST (5, 7, 7, 6) + TEST (6, 7, 7, 6) + TEST (7, 7, 7, 6) +} + +void check28(void) +{ + TEST (0, 0, 0, 7) + TEST (1, 0, 0, 7) + TEST (2, 0, 0, 7) + TEST (3, 0, 0, 7) + TEST (4, 0, 0, 7) + TEST (5, 0, 0, 7) + TEST (6, 0, 0, 7) + TEST (7, 0, 0, 7) + TEST (0, 1, 0, 7) + TEST (1, 1, 0, 7) + TEST (2, 1, 0, 7) + TEST (3, 1, 0, 7) + TEST (4, 1, 0, 7) + TEST (5, 1, 0, 7) + TEST (6, 1, 0, 7) + TEST (7, 1, 0, 7) + TEST (0, 2, 0, 7) + TEST (1, 2, 0, 7) + TEST (2, 2, 0, 7) + TEST (3, 2, 0, 7) + TEST (4, 2, 0, 7) + TEST (5, 2, 0, 7) + TEST (6, 2, 0, 7) + TEST (7, 2, 0, 7) + TEST (0, 3, 0, 7) + TEST (1, 3, 0, 7) + TEST (2, 3, 0, 7) + TEST (3, 3, 0, 7) + TEST (4, 3, 0, 7) + TEST (5, 3, 0, 7) + TEST (6, 3, 0, 7) + TEST (7, 3, 0, 7) + TEST (0, 4, 0, 7) + TEST (1, 4, 0, 7) + TEST (2, 4, 0, 7) + TEST (3, 4, 0, 7) + TEST (4, 4, 0, 7) + TEST (5, 4, 0, 7) + TEST (6, 4, 0, 7) + TEST (7, 4, 0, 7) + TEST (0, 5, 0, 7) + TEST (1, 5, 0, 7) + TEST (2, 5, 0, 7) + TEST (3, 5, 0, 7) + TEST (4, 5, 0, 7) + TEST (5, 5, 0, 7) + TEST (6, 5, 0, 7) + TEST (7, 5, 0, 7) + TEST (0, 6, 0, 7) + TEST (1, 6, 0, 7) + TEST (2, 6, 0, 7) + TEST (3, 6, 0, 7) + TEST (4, 6, 0, 7) + TEST (5, 6, 0, 7) + TEST (6, 6, 0, 7) + TEST (7, 6, 0, 7) + TEST (0, 7, 0, 7) + TEST (1, 7, 0, 7) + TEST (2, 7, 0, 7) + TEST (3, 7, 0, 7) + TEST (4, 7, 0, 7) + TEST (5, 7, 0, 7) + TEST (6, 7, 0, 7) + TEST (7, 7, 0, 7) + TEST (0, 0, 1, 7) + TEST (1, 0, 1, 7) + TEST (2, 0, 1, 7) + TEST (3, 0, 1, 7) + TEST (4, 0, 1, 7) + TEST (5, 0, 1, 7) + TEST (6, 0, 1, 7) + TEST (7, 0, 1, 7) + TEST (0, 1, 1, 7) + TEST (1, 1, 1, 7) + TEST (2, 1, 1, 7) + TEST (3, 1, 1, 7) + TEST (4, 1, 1, 7) + TEST (5, 1, 1, 7) + TEST (6, 1, 1, 7) + TEST (7, 1, 1, 7) + TEST (0, 2, 1, 7) + TEST (1, 2, 1, 7) + TEST (2, 2, 1, 7) + TEST (3, 2, 1, 7) + TEST (4, 2, 1, 7) + TEST (5, 2, 1, 7) + TEST (6, 2, 1, 7) + TEST (7, 2, 1, 7) + TEST (0, 3, 1, 7) + TEST (1, 3, 1, 7) + TEST (2, 3, 1, 7) + TEST (3, 3, 1, 7) + TEST (4, 3, 1, 7) + TEST (5, 3, 1, 7) + TEST (6, 3, 1, 7) + TEST (7, 3, 1, 7) + TEST (0, 4, 1, 7) + TEST (1, 4, 1, 7) + TEST (2, 4, 1, 7) + TEST (3, 4, 1, 7) + TEST (4, 4, 1, 7) + TEST (5, 4, 1, 7) + TEST (6, 4, 1, 7) + TEST (7, 4, 1, 7) + TEST (0, 5, 1, 7) + TEST (1, 5, 1, 7) + TEST (2, 5, 1, 7) + TEST (3, 5, 1, 7) + TEST (4, 5, 1, 7) + TEST (5, 5, 1, 7) + TEST (6, 5, 1, 7) + TEST (7, 5, 1, 7) + TEST (0, 6, 1, 7) + TEST (1, 6, 1, 7) + TEST (2, 6, 1, 7) + TEST (3, 6, 1, 7) + TEST (4, 6, 1, 7) + TEST (5, 6, 1, 7) + TEST (6, 6, 1, 7) + TEST (7, 6, 1, 7) + TEST (0, 7, 1, 7) + TEST (1, 7, 1, 7) + TEST (2, 7, 1, 7) + TEST (3, 7, 1, 7) + TEST (4, 7, 1, 7) + TEST (5, 7, 1, 7) + TEST (6, 7, 1, 7) + TEST (7, 7, 1, 7) +} + +void check29(void) +{ + TEST (0, 0, 2, 7) + TEST (1, 0, 2, 7) + TEST (2, 0, 2, 7) + TEST (3, 0, 2, 7) + TEST (4, 0, 2, 7) + TEST (5, 0, 2, 7) + TEST (6, 0, 2, 7) + TEST (7, 0, 2, 7) + TEST (0, 1, 2, 7) + TEST (1, 1, 2, 7) + TEST (2, 1, 2, 7) + TEST (3, 1, 2, 7) + TEST (4, 1, 2, 7) + TEST (5, 1, 2, 7) + TEST (6, 1, 2, 7) + TEST (7, 1, 2, 7) + TEST (0, 2, 2, 7) + TEST (1, 2, 2, 7) + TEST (2, 2, 2, 7) + TEST (3, 2, 2, 7) + TEST (4, 2, 2, 7) + TEST (5, 2, 2, 7) + TEST (6, 2, 2, 7) + TEST (7, 2, 2, 7) + TEST (0, 3, 2, 7) + TEST (1, 3, 2, 7) + TEST (2, 3, 2, 7) + TEST (3, 3, 2, 7) + TEST (4, 3, 2, 7) + TEST (5, 3, 2, 7) + TEST (6, 3, 2, 7) + TEST (7, 3, 2, 7) + TEST (0, 4, 2, 7) + TEST (1, 4, 2, 7) + TEST (2, 4, 2, 7) + TEST (3, 4, 2, 7) + TEST (4, 4, 2, 7) + TEST (5, 4, 2, 7) + TEST (6, 4, 2, 7) + TEST (7, 4, 2, 7) + TEST (0, 5, 2, 7) + TEST (1, 5, 2, 7) + TEST (2, 5, 2, 7) + TEST (3, 5, 2, 7) + TEST (4, 5, 2, 7) + TEST (5, 5, 2, 7) + TEST (6, 5, 2, 7) + TEST (7, 5, 2, 7) + TEST (0, 6, 2, 7) + TEST (1, 6, 2, 7) + TEST (2, 6, 2, 7) + TEST (3, 6, 2, 7) + TEST (4, 6, 2, 7) + TEST (5, 6, 2, 7) + TEST (6, 6, 2, 7) + TEST (7, 6, 2, 7) + TEST (0, 7, 2, 7) + TEST (1, 7, 2, 7) + TEST (2, 7, 2, 7) + TEST (3, 7, 2, 7) + TEST (4, 7, 2, 7) + TEST (5, 7, 2, 7) + TEST (6, 7, 2, 7) + TEST (7, 7, 2, 7) + TEST (0, 0, 3, 7) + TEST (1, 0, 3, 7) + TEST (2, 0, 3, 7) + TEST (3, 0, 3, 7) + TEST (4, 0, 3, 7) + TEST (5, 0, 3, 7) + TEST (6, 0, 3, 7) + TEST (7, 0, 3, 7) + TEST (0, 1, 3, 7) + TEST (1, 1, 3, 7) + TEST (2, 1, 3, 7) + TEST (3, 1, 3, 7) + TEST (4, 1, 3, 7) + TEST (5, 1, 3, 7) + TEST (6, 1, 3, 7) + TEST (7, 1, 3, 7) + TEST (0, 2, 3, 7) + TEST (1, 2, 3, 7) + TEST (2, 2, 3, 7) + TEST (3, 2, 3, 7) + TEST (4, 2, 3, 7) + TEST (5, 2, 3, 7) + TEST (6, 2, 3, 7) + TEST (7, 2, 3, 7) + TEST (0, 3, 3, 7) + TEST (1, 3, 3, 7) + TEST (2, 3, 3, 7) + TEST (3, 3, 3, 7) + TEST (4, 3, 3, 7) + TEST (5, 3, 3, 7) + TEST (6, 3, 3, 7) + TEST (7, 3, 3, 7) + TEST (0, 4, 3, 7) + TEST (1, 4, 3, 7) + TEST (2, 4, 3, 7) + TEST (3, 4, 3, 7) + TEST (4, 4, 3, 7) + TEST (5, 4, 3, 7) + TEST (6, 4, 3, 7) + TEST (7, 4, 3, 7) + TEST (0, 5, 3, 7) + TEST (1, 5, 3, 7) + TEST (2, 5, 3, 7) + TEST (3, 5, 3, 7) + TEST (4, 5, 3, 7) + TEST (5, 5, 3, 7) + TEST (6, 5, 3, 7) + TEST (7, 5, 3, 7) + TEST (0, 6, 3, 7) + TEST (1, 6, 3, 7) + TEST (2, 6, 3, 7) + TEST (3, 6, 3, 7) + TEST (4, 6, 3, 7) + TEST (5, 6, 3, 7) + TEST (6, 6, 3, 7) + TEST (7, 6, 3, 7) + TEST (0, 7, 3, 7) + TEST (1, 7, 3, 7) + TEST (2, 7, 3, 7) + TEST (3, 7, 3, 7) + TEST (4, 7, 3, 7) + TEST (5, 7, 3, 7) + TEST (6, 7, 3, 7) + TEST (7, 7, 3, 7) +} + +void check30(void) +{ + TEST (0, 0, 4, 7) + TEST (1, 0, 4, 7) + TEST (2, 0, 4, 7) + TEST (3, 0, 4, 7) + TEST (4, 0, 4, 7) + TEST (5, 0, 4, 7) + TEST (6, 0, 4, 7) + TEST (7, 0, 4, 7) + TEST (0, 1, 4, 7) + TEST (1, 1, 4, 7) + TEST (2, 1, 4, 7) + TEST (3, 1, 4, 7) + TEST (4, 1, 4, 7) + TEST (5, 1, 4, 7) + TEST (6, 1, 4, 7) + TEST (7, 1, 4, 7) + TEST (0, 2, 4, 7) + TEST (1, 2, 4, 7) + TEST (2, 2, 4, 7) + TEST (3, 2, 4, 7) + TEST (4, 2, 4, 7) + TEST (5, 2, 4, 7) + TEST (6, 2, 4, 7) + TEST (7, 2, 4, 7) + TEST (0, 3, 4, 7) + TEST (1, 3, 4, 7) + TEST (2, 3, 4, 7) + TEST (3, 3, 4, 7) + TEST (4, 3, 4, 7) + TEST (5, 3, 4, 7) + TEST (6, 3, 4, 7) + TEST (7, 3, 4, 7) + TEST (0, 4, 4, 7) + TEST (1, 4, 4, 7) + TEST (2, 4, 4, 7) + TEST (3, 4, 4, 7) + TEST (4, 4, 4, 7) + TEST (5, 4, 4, 7) + TEST (6, 4, 4, 7) + TEST (7, 4, 4, 7) + TEST (0, 5, 4, 7) + TEST (1, 5, 4, 7) + TEST (2, 5, 4, 7) + TEST (3, 5, 4, 7) + TEST (4, 5, 4, 7) + TEST (5, 5, 4, 7) + TEST (6, 5, 4, 7) + TEST (7, 5, 4, 7) + TEST (0, 6, 4, 7) + TEST (1, 6, 4, 7) + TEST (2, 6, 4, 7) + TEST (3, 6, 4, 7) + TEST (4, 6, 4, 7) + TEST (5, 6, 4, 7) + TEST (6, 6, 4, 7) + TEST (7, 6, 4, 7) + TEST (0, 7, 4, 7) + TEST (1, 7, 4, 7) + TEST (2, 7, 4, 7) + TEST (3, 7, 4, 7) + TEST (4, 7, 4, 7) + TEST (5, 7, 4, 7) + TEST (6, 7, 4, 7) + TEST (7, 7, 4, 7) + TEST (0, 0, 5, 7) + TEST (1, 0, 5, 7) + TEST (2, 0, 5, 7) + TEST (3, 0, 5, 7) + TEST (4, 0, 5, 7) + TEST (5, 0, 5, 7) + TEST (6, 0, 5, 7) + TEST (7, 0, 5, 7) + TEST (0, 1, 5, 7) + TEST (1, 1, 5, 7) + TEST (2, 1, 5, 7) + TEST (3, 1, 5, 7) + TEST (4, 1, 5, 7) + TEST (5, 1, 5, 7) + TEST (6, 1, 5, 7) + TEST (7, 1, 5, 7) + TEST (0, 2, 5, 7) + TEST (1, 2, 5, 7) + TEST (2, 2, 5, 7) + TEST (3, 2, 5, 7) + TEST (4, 2, 5, 7) + TEST (5, 2, 5, 7) + TEST (6, 2, 5, 7) + TEST (7, 2, 5, 7) + TEST (0, 3, 5, 7) + TEST (1, 3, 5, 7) + TEST (2, 3, 5, 7) + TEST (3, 3, 5, 7) + TEST (4, 3, 5, 7) + TEST (5, 3, 5, 7) + TEST (6, 3, 5, 7) + TEST (7, 3, 5, 7) + TEST (0, 4, 5, 7) + TEST (1, 4, 5, 7) + TEST (2, 4, 5, 7) + TEST (3, 4, 5, 7) + TEST (4, 4, 5, 7) + TEST (5, 4, 5, 7) + TEST (6, 4, 5, 7) + TEST (7, 4, 5, 7) + TEST (0, 5, 5, 7) + TEST (1, 5, 5, 7) + TEST (2, 5, 5, 7) + TEST (3, 5, 5, 7) + TEST (4, 5, 5, 7) + TEST (5, 5, 5, 7) + TEST (6, 5, 5, 7) + TEST (7, 5, 5, 7) + TEST (0, 6, 5, 7) + TEST (1, 6, 5, 7) + TEST (2, 6, 5, 7) + TEST (3, 6, 5, 7) + TEST (4, 6, 5, 7) + TEST (5, 6, 5, 7) + TEST (6, 6, 5, 7) + TEST (7, 6, 5, 7) + TEST (0, 7, 5, 7) + TEST (1, 7, 5, 7) + TEST (2, 7, 5, 7) + TEST (3, 7, 5, 7) + TEST (4, 7, 5, 7) + TEST (5, 7, 5, 7) + TEST (6, 7, 5, 7) + TEST (7, 7, 5, 7) +} + +void check31(void) +{ + TEST (0, 0, 6, 7) + TEST (1, 0, 6, 7) + TEST (2, 0, 6, 7) + TEST (3, 0, 6, 7) + TEST (4, 0, 6, 7) + TEST (5, 0, 6, 7) + TEST (6, 0, 6, 7) + TEST (7, 0, 6, 7) + TEST (0, 1, 6, 7) + TEST (1, 1, 6, 7) + TEST (2, 1, 6, 7) + TEST (3, 1, 6, 7) + TEST (4, 1, 6, 7) + TEST (5, 1, 6, 7) + TEST (6, 1, 6, 7) + TEST (7, 1, 6, 7) + TEST (0, 2, 6, 7) + TEST (1, 2, 6, 7) + TEST (2, 2, 6, 7) + TEST (3, 2, 6, 7) + TEST (4, 2, 6, 7) + TEST (5, 2, 6, 7) + TEST (6, 2, 6, 7) + TEST (7, 2, 6, 7) + TEST (0, 3, 6, 7) + TEST (1, 3, 6, 7) + TEST (2, 3, 6, 7) + TEST (3, 3, 6, 7) + TEST (4, 3, 6, 7) + TEST (5, 3, 6, 7) + TEST (6, 3, 6, 7) + TEST (7, 3, 6, 7) + TEST (0, 4, 6, 7) + TEST (1, 4, 6, 7) + TEST (2, 4, 6, 7) + TEST (3, 4, 6, 7) + TEST (4, 4, 6, 7) + TEST (5, 4, 6, 7) + TEST (6, 4, 6, 7) + TEST (7, 4, 6, 7) + TEST (0, 5, 6, 7) + TEST (1, 5, 6, 7) + TEST (2, 5, 6, 7) + TEST (3, 5, 6, 7) + TEST (4, 5, 6, 7) + TEST (5, 5, 6, 7) + TEST (6, 5, 6, 7) + TEST (7, 5, 6, 7) + TEST (0, 6, 6, 7) + TEST (1, 6, 6, 7) + TEST (2, 6, 6, 7) + TEST (3, 6, 6, 7) + TEST (4, 6, 6, 7) + TEST (5, 6, 6, 7) + TEST (6, 6, 6, 7) + TEST (7, 6, 6, 7) + TEST (0, 7, 6, 7) + TEST (1, 7, 6, 7) + TEST (2, 7, 6, 7) + TEST (3, 7, 6, 7) + TEST (4, 7, 6, 7) + TEST (5, 7, 6, 7) + TEST (6, 7, 6, 7) + TEST (7, 7, 6, 7) + TEST (0, 0, 7, 7) + TEST (1, 0, 7, 7) + TEST (2, 0, 7, 7) + TEST (3, 0, 7, 7) + TEST (4, 0, 7, 7) + TEST (5, 0, 7, 7) + TEST (6, 0, 7, 7) + TEST (7, 0, 7, 7) + TEST (0, 1, 7, 7) + TEST (1, 1, 7, 7) + TEST (2, 1, 7, 7) + TEST (3, 1, 7, 7) + TEST (4, 1, 7, 7) + TEST (5, 1, 7, 7) + TEST (6, 1, 7, 7) + TEST (7, 1, 7, 7) + TEST (0, 2, 7, 7) + TEST (1, 2, 7, 7) + TEST (2, 2, 7, 7) + TEST (3, 2, 7, 7) + TEST (4, 2, 7, 7) + TEST (5, 2, 7, 7) + TEST (6, 2, 7, 7) + TEST (7, 2, 7, 7) + TEST (0, 3, 7, 7) + TEST (1, 3, 7, 7) + TEST (2, 3, 7, 7) + TEST (3, 3, 7, 7) + TEST (4, 3, 7, 7) + TEST (5, 3, 7, 7) + TEST (6, 3, 7, 7) + TEST (7, 3, 7, 7) + TEST (0, 4, 7, 7) + TEST (1, 4, 7, 7) + TEST (2, 4, 7, 7) + TEST (3, 4, 7, 7) + TEST (4, 4, 7, 7) + TEST (5, 4, 7, 7) + TEST (6, 4, 7, 7) + TEST (7, 4, 7, 7) + TEST (0, 5, 7, 7) + TEST (1, 5, 7, 7) + TEST (2, 5, 7, 7) + TEST (3, 5, 7, 7) + TEST (4, 5, 7, 7) + TEST (5, 5, 7, 7) + TEST (6, 5, 7, 7) + TEST (7, 5, 7, 7) + TEST (0, 6, 7, 7) + TEST (1, 6, 7, 7) + TEST (2, 6, 7, 7) + TEST (3, 6, 7, 7) + TEST (4, 6, 7, 7) + TEST (5, 6, 7, 7) + TEST (6, 6, 7, 7) + TEST (7, 6, 7, 7) + TEST (0, 7, 7, 7) + TEST (1, 7, 7, 7) + TEST (2, 7, 7, 7) + TEST (3, 7, 7, 7) + TEST (4, 7, 7, 7) + TEST (5, 7, 7, 7) + TEST (6, 7, 7, 7) + TEST (7, 7, 7, 7) +} + +void check(void) +{ + check0 (); + check1 (); + check2 (); + check3 (); + check4 (); + check5 (); + check6 (); + check7 (); + check8 (); + check9 (); + check10 (); + check11 (); + check12 (); + check13 (); + check14 (); + check15 (); + check16 (); + check17 (); + check18 (); + check19 (); + check20 (); + check21 (); + check22 (); + check23 (); + check24 (); + check25 (); + check26 (); + check27 (); + check28 (); + check29 (); + check30 (); + check31 (); +} + diff --git a/gcc/testsuite/gcc.target/i386/vperm-v2df.c b/gcc/testsuite/gcc.target/i386/vperm-v2df.c new file mode 100644 index 00000000000..f17e065e328 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vperm-v2df.c @@ -0,0 +1,34 @@ +/* { dg-do run } */ +/* { dg-options "-O -msse2" } */ + +#include "isa-check.h" + +typedef double S; +typedef double V __attribute__((vector_size(16))); +typedef long long IV __attribute__((vector_size(16))); +typedef union { S s[2]; V v; } U; + +static U i[2], b, c; + +extern int memcmp (const void *, const void *, __SIZE_TYPE__); +#define assert(T) ((T) || (__builtin_trap (), 0)) + +#define TEST(E0, E1) \ + b.v = __builtin_ia32_vec_perm_v2df (i[0].v, i[1].v, (IV){E0, E1}); \ + c.s[0] = i[0].s[E0]; \ + c.s[1] = i[0].s[E1]; \ + __asm__("" : : : "memory"); \ + assert (memcmp (&b, &c, sizeof(c)) == 0); + +#include "vperm-2-2.inc" + +int main() +{ + i[0].s[0] = 0; + i[0].s[1] = 1; + i[0].s[2] = 2; + i[0].s[3] = 3; + + check(); + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/vperm-v2di.c b/gcc/testsuite/gcc.target/i386/vperm-v2di.c new file mode 100644 index 00000000000..c6fe5611f66 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vperm-v2di.c @@ -0,0 +1,34 @@ +/* { dg-do run } */ +/* { dg-options "-O -msse2" } */ + +#include "isa-check.h" + +typedef long long S; +typedef long long V __attribute__((vector_size(16))); +typedef long long IV __attribute__((vector_size(16))); +typedef union { S s[2]; V v; } U; + +static U i[2], b, c; + +extern int memcmp (const void *, const void *, __SIZE_TYPE__); +#define assert(T) ((T) || (__builtin_trap (), 0)) + +#define TEST(E0, E1) \ + b.v = __builtin_ia32_vec_perm_v2di (i[0].v, i[1].v, (IV){E0, E1}); \ + c.s[0] = i[0].s[E0]; \ + c.s[1] = i[0].s[E1]; \ + __asm__("" : : : "memory"); \ + assert (memcmp (&b, &c, sizeof(c)) == 0); + +#include "vperm-2-2.inc" + +int main() +{ + i[0].s[0] = 0; + i[0].s[1] = 1; + i[0].s[2] = 2; + i[0].s[3] = 3; + + check(); + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/vperm-v4sf-1.c b/gcc/testsuite/gcc.target/i386/vperm-v4sf-1.c new file mode 100644 index 00000000000..b9fc9b172fe --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vperm-v4sf-1.c @@ -0,0 +1,40 @@ +/* { dg-do run } */ +/* { dg-options "-O -msse" } */ + +#include "isa-check.h" + +typedef float S; +typedef float V __attribute__((vector_size(16))); +typedef int IV __attribute__((vector_size(16))); +typedef union { S s[4]; V v; } U; + +static U i[2], b, c; + +extern int memcmp (const void *, const void *, __SIZE_TYPE__); +#define assert(T) ((T) || (__builtin_trap (), 0)) + +#define TEST(E0, E1, E2, E3) \ + b.v = __builtin_ia32_vec_perm_v4sf (i[0].v, i[1].v, (IV){E0, E1, E2, E3}); \ + c.s[0] = i[0].s[E0]; \ + c.s[1] = i[0].s[E1]; \ + c.s[2] = i[0].s[E2]; \ + c.s[3] = i[0].s[E3]; \ + __asm__("" : : : "memory"); \ + assert (memcmp (&b, &c, sizeof(c)) == 0); + +#include "vperm-4-1.inc" + +int main() +{ + i[0].s[0] = 0; + i[0].s[1] = 1; + i[0].s[2] = 2; + i[0].s[3] = 3; + i[0].s[4] = 4; + i[0].s[5] = 5; + i[0].s[6] = 6; + i[0].s[7] = 7; + + check(); + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/vperm-v4sf-2.c b/gcc/testsuite/gcc.target/i386/vperm-v4sf-2.c new file mode 100644 index 00000000000..f81d24141f7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vperm-v4sf-2.c @@ -0,0 +1,40 @@ +/* { dg-do run } */ +/* { dg-options "-O -mssse3" } */ + +#include "isa-check.h" + +typedef float S; +typedef float V __attribute__((vector_size(16))); +typedef int IV __attribute__((vector_size(16))); +typedef union { S s[4]; V v; } U; + +static U i[2], b, c; + +extern int memcmp (const void *, const void *, __SIZE_TYPE__); +#define assert(T) ((T) || (__builtin_trap (), 0)) + +#define TEST(E0, E1, E2, E3) \ + b.v = __builtin_ia32_vec_perm_v4sf (i[0].v, i[1].v, (IV){E0, E1, E2, E3}); \ + c.s[0] = i[0].s[E0]; \ + c.s[1] = i[0].s[E1]; \ + c.s[2] = i[0].s[E2]; \ + c.s[3] = i[0].s[E3]; \ + __asm__("" : : : "memory"); \ + assert (memcmp (&b, &c, sizeof(c)) == 0); + +#include "vperm-4-2.inc" + +int main() +{ + i[0].s[0] = 0; + i[0].s[1] = 1; + i[0].s[2] = 2; + i[0].s[3] = 3; + i[0].s[4] = 4; + i[0].s[5] = 5; + i[0].s[6] = 6; + i[0].s[7] = 7; + + check(); + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/vperm-v4si-1.c b/gcc/testsuite/gcc.target/i386/vperm-v4si-1.c new file mode 100644 index 00000000000..663feb3f488 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vperm-v4si-1.c @@ -0,0 +1,40 @@ +/* { dg-do run } */ +/* { dg-options "-O -msse2" } */ + +#include "isa-check.h" + +typedef int S; +typedef int V __attribute__((vector_size(16))); +typedef int IV __attribute__((vector_size(16))); +typedef union { S s[4]; V v; } U; + +static U i[2], b, c; + +extern int memcmp (const void *, const void *, __SIZE_TYPE__); +#define assert(T) ((T) || (__builtin_trap (), 0)) + +#define TEST(E0, E1, E2, E3) \ + b.v = __builtin_ia32_vec_perm_v4si (i[0].v, i[1].v, (IV){E0, E1, E2, E3}); \ + c.s[0] = i[0].s[E0]; \ + c.s[1] = i[0].s[E1]; \ + c.s[2] = i[0].s[E2]; \ + c.s[3] = i[0].s[E3]; \ + __asm__("" : : : "memory"); \ + assert (memcmp (&b, &c, sizeof(c)) == 0); + +#include "vperm-4-1.inc" + +int main() +{ + i[0].s[0] = 0; + i[0].s[1] = 1; + i[0].s[2] = 2; + i[0].s[3] = 3; + i[0].s[4] = 4; + i[0].s[5] = 5; + i[0].s[6] = 6; + i[0].s[7] = 7; + + check(); + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/vperm-v4si-2.c b/gcc/testsuite/gcc.target/i386/vperm-v4si-2.c new file mode 100644 index 00000000000..0da953bdd52 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vperm-v4si-2.c @@ -0,0 +1,40 @@ +/* { dg-do run } */ +/* { dg-options "-O -mssse3" } */ + +#include "isa-check.h" + +typedef int S; +typedef int V __attribute__((vector_size(16))); +typedef int IV __attribute__((vector_size(16))); +typedef union { S s[4]; V v; } U; + +static U i[2], b, c; + +extern int memcmp (const void *, const void *, __SIZE_TYPE__); +#define assert(T) ((T) || (__builtin_trap (), 0)) + +#define TEST(E0, E1, E2, E3) \ + b.v = __builtin_ia32_vec_perm_v4si (i[0].v, i[1].v, (IV){E0, E1, E2, E3}); \ + c.s[0] = i[0].s[E0]; \ + c.s[1] = i[0].s[E1]; \ + c.s[2] = i[0].s[E2]; \ + c.s[3] = i[0].s[E3]; \ + __asm__("" : : : "memory"); \ + assert (memcmp (&b, &c, sizeof(c)) == 0); + +#include "vperm-4-2.inc" + +int main() +{ + i[0].s[0] = 0; + i[0].s[1] = 1; + i[0].s[2] = 2; + i[0].s[3] = 3; + i[0].s[4] = 4; + i[0].s[5] = 5; + i[0].s[6] = 6; + i[0].s[7] = 7; + + check(); + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/vperm-v4si-2x.c b/gcc/testsuite/gcc.target/i386/vperm-v4si-2x.c new file mode 100644 index 00000000000..4410d93a654 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vperm-v4si-2x.c @@ -0,0 +1,3 @@ +/* { dg-do run } */ +/* { dg-options "-O -mxop" } */ +#include "vperm-v4si-2.c" diff --git a/gcc/testsuite/gcc.target/i386/vperm.pl b/gcc/testsuite/gcc.target/i386/vperm.pl new file mode 100755 index 00000000000..80fae9daa4f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vperm.pl @@ -0,0 +1,41 @@ +#!/usr/bin/perl + +$nelt = int($ARGV[0]); +$leng = int($ARGV[1]); + +print "/* This file auto-generated with ./vperm.pl $nelt $leng. */\n\n"; + +for ($i = 0; $i < $nelt; ++$i) { $perm[$i] = 0; } +$ncheck = 0; + +for ($i = 0; $i < ($leng * $nelt) ** $nelt; ++$i) +{ + if ($i % 128 == 0) + { + print "}\n\n" if $ncheck > 0; + print "void check$ncheck(void)\n{\n"; + ++$ncheck; + } + + print " TEST ("; + for ($j = 0; $j < $nelt; ++$j) + { + print $perm[$j]; + print ", " if $j < $nelt - 1; + } + print ")\n"; + + INCR: for ($j = 0; $j < $nelt; ++$j) + { + last INCR if ++$perm[$j] < $leng * $nelt; + $perm[$j] = 0; + } +} +print "}\n\n"; + +print "void check(void)\n{\n"; +for ($i = 0; $i < $ncheck; ++$i) +{ + print " check$i ();\n"; +} +print "}\n\n"; diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 4b8d6f312ff..5155cba65ee 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -2562,7 +2562,9 @@ proc check_effective_target_vect_extract_even_odd { } { verbose "check_effective_target_vect_extract_even_odd: using cached result" 2 } else { set et_vect_extract_even_odd_saved 0 - if { [istarget powerpc*-*-*] + if { [istarget powerpc*-*-*] + || [istarget i?86-*-*] + || [istarget x86_64-*-*] || [istarget spu-*-*] } { set et_vect_extract_even_odd_saved 1 } |