diff options
Diffstat (limited to 'post/lib_powerpc/fpu')
| -rw-r--r-- | post/lib_powerpc/fpu/20001122-1.c | 61 | ||||
| -rw-r--r-- | post/lib_powerpc/fpu/20010114-2.c | 65 | ||||
| -rw-r--r-- | post/lib_powerpc/fpu/20010226-1.c | 53 | ||||
| -rw-r--r-- | post/lib_powerpc/fpu/980619-1.c | 59 | ||||
| -rw-r--r-- | post/lib_powerpc/fpu/Makefile | 33 | ||||
| -rw-r--r-- | post/lib_powerpc/fpu/acc1.c | 56 | ||||
| -rw-r--r-- | post/lib_powerpc/fpu/compare-fp-1.c | 224 | ||||
| -rw-r--r-- | post/lib_powerpc/fpu/fpu.c | 91 | ||||
| -rw-r--r-- | post/lib_powerpc/fpu/mul-subnormal-single-1.c | 102 | 
9 files changed, 744 insertions, 0 deletions
| diff --git a/post/lib_powerpc/fpu/20001122-1.c b/post/lib_powerpc/fpu/20001122-1.c new file mode 100644 index 000000000..bef80c5f7 --- /dev/null +++ b/post/lib_powerpc/fpu/20001122-1.c @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2007 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ +/* + * This file is originally a part of the GCC testsuite. + */ + +#include <common.h> + +#include <post.h> + +#if CONFIG_POST & CONFIG_SYS_POST_FPU + +GNU_FPOST_ATTR + +int fpu_post_test_math1 (void) +{ +	volatile double a, *p; +	double c, d; +	volatile double b; + +	d = 1.0; +	p = &b; + +	do +	{ +		c = d; +		d = c * 0.5; +		b = 1 + d; +	} while (b != 1.0); + +	a = 1.0 + c; + +	if (a == 1.0) { +		post_log ("Error in FPU math1 test\n"); +		return -1; +	} + +	return 0; +} + +#endif /* CONFIG_POST & CONFIG_SYS_POST_FPU */ diff --git a/post/lib_powerpc/fpu/20010114-2.c b/post/lib_powerpc/fpu/20010114-2.c new file mode 100644 index 000000000..ee564e8d6 --- /dev/null +++ b/post/lib_powerpc/fpu/20010114-2.c @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2007 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ +/* + * This file is originally a part of the GCC testsuite. + */ + +#include <common.h> + +#include <post.h> + +#if CONFIG_POST & CONFIG_SYS_POST_FPU + +GNU_FPOST_ATTR + +static float rintf (float x) +{ +	volatile float TWO23 = 8388608.0; + +	if (__builtin_fabs (x) < TWO23) +	{ +		if (x > 0.0) +		{ +			x += TWO23; +			x -= TWO23; +		} +		else if (x < 0.0) +		{ +			x = TWO23 - x; +			x = -(x - TWO23); +		} +	} + +	return x; +} + +int fpu_post_test_math2 (void) +{ +	if (rintf (-1.5) != -2.0) { +		post_log ("Error in FPU math2 test\n"); +		return -1; +	} +	return 0; +} + +#endif /* CONFIG_POST & CONFIG_SYS_POST_FPU */ diff --git a/post/lib_powerpc/fpu/20010226-1.c b/post/lib_powerpc/fpu/20010226-1.c new file mode 100644 index 000000000..099ca4a64 --- /dev/null +++ b/post/lib_powerpc/fpu/20010226-1.c @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2007 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ +/* + * This file is originally a part of the GCC testsuite. + */ + +#include <common.h> + +#include <post.h> + +#if CONFIG_POST & CONFIG_SYS_POST_FPU + +GNU_FPOST_ATTR + +int fpu_post_test_math3 (void) +{ +	volatile long double dfrom = 1.1; +	volatile long double m1; +	volatile long double m2; +	volatile unsigned long mant_long; + +	m1 = dfrom / 2.0; +	m2 = m1 * 4294967296.0; +	mant_long = ((unsigned long) m2) & 0xffffffff; + +	if (mant_long != 0x8ccccccc) { +		post_log ("Error in FPU math3 test\n"); +		return -1; +	} +	return 0; +} + +#endif /* CONFIG_POST & CONFIG_SYS_POST_FPU */ diff --git a/post/lib_powerpc/fpu/980619-1.c b/post/lib_powerpc/fpu/980619-1.c new file mode 100644 index 000000000..46a31aec4 --- /dev/null +++ b/post/lib_powerpc/fpu/980619-1.c @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2007 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ +/* + * This file is originally a part of the GCC testsuite. + */ + +#include <common.h> + +#include <post.h> + +#if CONFIG_POST & CONFIG_SYS_POST_FPU + +GNU_FPOST_ATTR + +int fpu_post_test_math4 (void) +{ +	volatile float reale = 1.0f; +	volatile float oneplus; +	int i; + +	if (sizeof (float) != 4) +		return 0; + +	for (i = 0; ; i++) +	{ +		oneplus = 1.0f + reale; +		if (oneplus == 1.0f) +			break; +		reale = reale / 2.0f; +	} +	/* Assumes ieee754 accurate arithmetic above.  */ +	if (i != 24) { +		post_log ("Error in FPU math4 test\n"); +		return -1; +	} +	return 0; +} + +#endif /* CONFIG_POST & CONFIG_SYS_POST_FPU */ diff --git a/post/lib_powerpc/fpu/Makefile b/post/lib_powerpc/fpu/Makefile new file mode 100644 index 000000000..25726db73 --- /dev/null +++ b/post/lib_powerpc/fpu/Makefile @@ -0,0 +1,33 @@ +# +# (C) Copyright 2007 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de. +# +# See file CREDITS for list of people who contributed to this +# project. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, +# MA 02111-1307 USA +# +include $(TOPDIR)/config.mk + +LIB	= libpost$(ARCH)fpu.a + +COBJS-$(CONFIG_HAS_POST)	+= fpu.o 20001122-1.o 20010114-2.o 20010226-1.o 980619-1.o +COBJS-$(CONFIG_HAS_POST)	+= acc1.o compare-fp-1.o mul-subnormal-single-1.o + +include $(TOPDIR)/post/rules.mk + +CFLAGS := $(shell echo $(CFLAGS) | sed s/-msoft-float//) +CFLAGS += -mhard-float -fkeep-inline-functions diff --git a/post/lib_powerpc/fpu/acc1.c b/post/lib_powerpc/fpu/acc1.c new file mode 100644 index 000000000..9fca9b378 --- /dev/null +++ b/post/lib_powerpc/fpu/acc1.c @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2007 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ +/* + * This file is originally a part of the GCC testsuite. + */ + +#include <common.h> + +#include <post.h> + +#if CONFIG_POST & CONFIG_SYS_POST_FPU + +GNU_FPOST_ATTR + +static double func (const double *array) +{ +	double d = *array; + +	if (d == 0.0) +		return d; +	else +		return d + func (array + 1); +} + +int fpu_post_test_math5 (void) +{ +	double values[] = { 0.1e-100, 1.0, -1.0, 0.0 }; + +	if (func (values) != 0.1e-100) { +		post_log ("Error in FPU math5 test\n"); +		return -1; +	} +	return 0; +} + +#endif /* CONFIG_POST & CONFIG_SYS_POST_FPU */ diff --git a/post/lib_powerpc/fpu/compare-fp-1.c b/post/lib_powerpc/fpu/compare-fp-1.c new file mode 100644 index 000000000..f836b29c0 --- /dev/null +++ b/post/lib_powerpc/fpu/compare-fp-1.c @@ -0,0 +1,224 @@ +/* + * Copyright (C) 2007 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ +/* + * Test for correctness of composite floating-point comparisons. + * Written by Paolo Bonzini, 26th May 2004. + * This file is originally a part of the GCC testsuite. + */ + +#include <common.h> + +#include <post.h> + +#if CONFIG_POST & CONFIG_SYS_POST_FPU + +GNU_FPOST_ATTR + +static int failed; + +#define TEST(c) if ((c) != ok) failed++ +#define ORD(a, b) (!__builtin_isunordered ((a), (b))) +#define UNORD(a, b) (__builtin_isunordered ((a), (b))) +#define UNEQ(a, b) (__builtin_isunordered ((a), (b)) || ((a) == (b))) +#define UNLT(a, b) (__builtin_isunordered ((a), (b)) || ((a) < (b))) +#define UNLE(a, b) (__builtin_isunordered ((a), (b)) || ((a) <= (b))) +#define UNGT(a, b) (__builtin_isunordered ((a), (b)) || ((a) > (b))) +#define UNGE(a, b) (__builtin_isunordered ((a), (b)) || ((a) >= (b))) +#define LTGT(a, b) (__builtin_islessgreater ((a), (b))) + +static float pinf; +static float ninf; +static float NaN; + +static void iuneq (float x, float y, int ok) +{ +	TEST (UNEQ (x, y)); +	TEST (!LTGT (x, y)); +	TEST (UNLE (x, y) && UNGE (x,y)); +} + +static void ieq (float x, float y, int ok) +{ +	TEST (ORD (x, y) && UNEQ (x, y)); +} + +static void iltgt (float x, float y, int ok) +{ +	TEST (!UNEQ (x, y)); /* Not optimizable. */ +	TEST (LTGT (x, y)); /* Same, __builtin_islessgreater does not trap. */ +	TEST (ORD (x, y) && (UNLT (x, y) || UNGT (x,y))); +} + +static void ine (float x, float y, int ok) +{ +	TEST (UNLT (x, y) || UNGT (x, y)); +} + +static void iunlt (float x, float y, int ok) +{ +	TEST (UNLT (x, y)); +	TEST (UNORD (x, y) || (x < y)); +} + +static void ilt (float x, float y, int ok) +{ +	TEST (ORD (x, y) && UNLT (x, y)); /* Not optimized */ +	TEST ((x <= y) && (x != y)); +	TEST ((x <= y) && (y != x)); +	TEST ((x != y) && (x <= y)); /* Not optimized */ +	TEST ((y != x) && (x <= y)); /* Not optimized */ +} + +static void iunle (float x, float y, int ok) +{ +	TEST (UNLE (x, y)); +	TEST (UNORD (x, y) || (x <= y)); +} + +static void ile (float x, float y, int ok) +{ +	TEST (ORD (x, y) && UNLE (x, y)); /* Not optimized */ +	TEST ((x < y) || (x == y)); +	TEST ((y > x) || (x == y)); +	TEST ((x == y) || (x < y)); /* Not optimized */ +	TEST ((y == x) || (x < y)); /* Not optimized */ +} + +static void iungt (float x, float y, int ok) +{ +	TEST (UNGT (x, y)); +	TEST (UNORD (x, y) || (x > y)); +} + +static void igt (float x, float y, int ok) +{ +	TEST (ORD (x, y) && UNGT (x, y)); /* Not optimized */ +	TEST ((x >= y) && (x != y)); +	TEST ((x >= y) && (y != x)); +	TEST ((x != y) && (x >= y)); /* Not optimized */ +	TEST ((y != x) && (x >= y)); /* Not optimized */ +} + +static void iunge (float x, float y, int ok) +{ +	TEST (UNGE (x, y)); +	TEST (UNORD (x, y) || (x >= y)); +} + +static void ige (float x, float y, int ok) +{ +	TEST (ORD (x, y) && UNGE (x, y)); /* Not optimized */ +	TEST ((x > y) || (x == y)); +	TEST ((y < x) || (x == y)); +	TEST ((x == y) || (x > y)); /* Not optimized */ +	TEST ((y == x) || (x > y)); /* Not optimized */ +} + +int fpu_post_test_math6 (void) +{ +	pinf = __builtin_inf (); +	ninf = -__builtin_inf (); +	NaN = __builtin_nan (""); + +	iuneq (ninf, pinf, 0); +	iuneq (NaN, NaN, 1); +	iuneq (pinf, ninf, 0); +	iuneq (1, 4, 0); +	iuneq (3, 3, 1); +	iuneq (5, 2, 0); + +	ieq (1, 4, 0); +	ieq (3, 3, 1); +	ieq (5, 2, 0); + +	iltgt (ninf, pinf, 1); +	iltgt (NaN, NaN, 0); +	iltgt (pinf, ninf, 1); +	iltgt (1, 4, 1); +	iltgt (3, 3, 0); +	iltgt (5, 2, 1); + +	ine (1, 4, 1); +	ine (3, 3, 0); +	ine (5, 2, 1); + +	iunlt (NaN, ninf, 1); +	iunlt (pinf, NaN, 1); +	iunlt (pinf, ninf, 0); +	iunlt (pinf, pinf, 0); +	iunlt (ninf, ninf, 0); +	iunlt (1, 4, 1); +	iunlt (3, 3, 0); +	iunlt (5, 2, 0); + +	ilt (1, 4, 1); +	ilt (3, 3, 0); +	ilt (5, 2, 0); + +	iunle (NaN, ninf, 1); +	iunle (pinf, NaN, 1); +	iunle (pinf, ninf, 0); +	iunle (pinf, pinf, 1); +	iunle (ninf, ninf, 1); +	iunle (1, 4, 1); +	iunle (3, 3, 1); +	iunle (5, 2, 0); + +	ile (1, 4, 1); +	ile (3, 3, 1); +	ile (5, 2, 0); + +	iungt (NaN, ninf, 1); +	iungt (pinf, NaN, 1); +	iungt (pinf, ninf, 1); +	iungt (pinf, pinf, 0); +	iungt (ninf, ninf, 0); +	iungt (1, 4, 0); +	iungt (3, 3, 0); +	iungt (5, 2, 1); + +	igt (1, 4, 0); +	igt (3, 3, 0); +	igt (5, 2, 1); + +	iunge (NaN, ninf, 1); +	iunge (pinf, NaN, 1); +	iunge (ninf, pinf, 0); +	iunge (pinf, pinf, 1); +	iunge (ninf, ninf, 1); +	iunge (1, 4, 0); +	iunge (3, 3, 1); +	iunge (5, 2, 1); + +	ige (1, 4, 0); +	ige (3, 3, 1); +	ige (5, 2, 1); + +	if (failed) { +		post_log ("Error in FPU math6 test\n"); +		return -1; +	} +	return 0; +} + +#endif /* CONFIG_POST & CONFIG_SYS_POST_FPU */ diff --git a/post/lib_powerpc/fpu/fpu.c b/post/lib_powerpc/fpu/fpu.c new file mode 100644 index 000000000..3f3adea19 --- /dev/null +++ b/post/lib_powerpc/fpu/fpu.c @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2007 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * Author: Sergei Poselenov <sposelenov@emcraft.com> + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> + +/* + * FPU test + * + * This test checks the arithmetic logic unit (ALU) of CPU. + * It tests independently various groups of instructions using + * run-time modification of the code to reduce the memory footprint. + * For more details refer to post/cpu/ *.c files. + */ + +#include <post.h> + +#if CONFIG_POST & CONFIG_SYS_POST_FPU + +#include <watchdog.h> + +GNU_FPOST_ATTR + +extern int fpu_status (void); +extern void fpu_enable (void); +extern void fpu_disable (void); + +extern int fpu_post_test_math1 (void); +extern int fpu_post_test_math2 (void); +extern int fpu_post_test_math3 (void); +extern int fpu_post_test_math4 (void); +extern int fpu_post_test_math5 (void); +extern int fpu_post_test_math6 (void); +extern int fpu_post_test_math7 (void); + +int fpu_post_test (int flags) +{ +	int fpu = fpu_status (); + +	int ret = 0; + +	WATCHDOG_RESET (); + +	if (!fpu) +		fpu_enable (); + +	if (ret == 0) +		ret = fpu_post_test_math1 (); +	if (ret == 0) +		ret = fpu_post_test_math2 (); +	if (ret == 0) +		ret = fpu_post_test_math3 (); +	if (ret == 0) +		ret = fpu_post_test_math4 (); +	if (ret == 0) +		ret = fpu_post_test_math5 (); +	if (ret == 0) +		ret = fpu_post_test_math6 (); +	if (ret == 0) +		ret = fpu_post_test_math7 (); + +	if (!fpu) +		fpu_disable (); + +	WATCHDOG_RESET (); + +	return ret; +} + +#endif /* CONFIG_POST & CONFIG_SYS_POST_FPU */ diff --git a/post/lib_powerpc/fpu/mul-subnormal-single-1.c b/post/lib_powerpc/fpu/mul-subnormal-single-1.c new file mode 100644 index 000000000..1f3732d92 --- /dev/null +++ b/post/lib_powerpc/fpu/mul-subnormal-single-1.c @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2007 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ +/* + * This file is originally a part of the GCC testsuite. + * Check that certain subnormal numbers (formerly known as denormalized + * numbers) are rounded to within 0.5 ulp.  PR other/14354. + */ + +#include <common.h> + +#include <post.h> + +#if CONFIG_POST & CONFIG_SYS_POST_FPU + +GNU_FPOST_ATTR + +union uf +{ +	unsigned int u; +	float f; +}; + +static float +u2f (unsigned int v) +{ +	union uf u; +	u.u = v; +	return u.f; +} + +static unsigned int +f2u (float v) +{ +	union uf u; +	u.f = v; +	return u.u; +} + +static int ok = 1; + +static void +tstmul (unsigned int ux, unsigned int uy, unsigned int ur) +{ +	float x = u2f (ux); +	float y = u2f (uy); + +	if (f2u (x * y) != ur) +	/* Set a variable rather than aborting here, to simplify tracing when +	   several computations are wrong.  */ +		ok = 0; +} + +/* We don't want to make this const and static, or else we risk inlining +   causing the test to fold as constants at compile-time.  */ +struct +{ +  unsigned int p1, p2, res; +} static volatile expected[] = +{ +	{0xfff, 0x3f800400, 0xfff}, +	{0xf, 0x3fc88888, 0x17}, +	{0xf, 0x3f844444, 0xf} +}; + +int fpu_post_test_math7 (void) +{ +	unsigned int i; + +	for (i = 0; i < sizeof (expected) / sizeof (expected[0]); i++) +	{ +		tstmul (expected[i].p1, expected[i].p2, expected[i].res); +		tstmul (expected[i].p2, expected[i].p1, expected[i].res); +	} + +	if (!ok) { +		post_log ("Error in FPU math7 test\n"); +		return -1; +	} +	return 0; +} + +#endif /* CONFIG_POST & CONFIG_SYS_POST_FPU */ |