linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Neil Russell <caret@c-side.com>
To: diekema_jon <diekema@bucks.si.com>
Cc: all@cideas.com, linuxppc-embedded@lists.linuxppc.org
Subject: Re: Floating Point problems with Linux on the EST SBC8260
Date: Wed, 24 May 2000 13:43:55 -0700	[thread overview]
Message-ID: <20000524134355.B9100@lx.c-side.com> (raw)
In-Reply-To: <m12uh7W-001SyaC@bucks>; from diekema_jon on Wed, May 24, 2000 at 03:47:10PM -0400


On Wed, May 24, 2000 at 03:47:10PM -0400, diekema_jon wrote:
>
> Floating Point problems with Linux on the EST SBC8260:
>
>
> Questions:
>
> - What is the state of floating point support with Linux on the
>   MPC8260?
>
> - Does anybody have hard-float applications running on the MPC8260?
>
> - I am looking for a floating point validation test suite written in
>   C.  The test suite should start with the fundamentals and work out
>   from there.
>
>   Does anybody have any leads?  This is what I have found so far:
>
> 1) TestFloat-2a
>
> Package Overview for TestFloat Release 2a
>
> John R. Hauser
> 1998 December 16
>
>
> TestFloat is a program for testing that a floating-point implementation
> conforms to the IEC/IEEE Standard for Binary Floating-Point Arithmetic.
> TestFloat is distributed in the form of C source code.  The TestFloat
> package actually provides two related programs:
>
> -- The `testfloat' program tests a system's floating-point for conformance
>    to the IEC/IEEE Standard.  This program uses the SoftFloat software
>    floating-point implementation as a basis for comparison.
>
> -- The `testsoftfloat' program tests SoftFloat itself for conformance to
>    the IEC/IEEE Standard.  These tests are performed by comparing against a
>    separate, slower software floating-point that is included in the TestFloat
>    package.
>
> 2) UCBTEST
>
>      UCBTEST is a suite of programs for testing certain difficult cases of
> IEEE 754 floating-point arithmetic.  Some of the difficult test cases are
> obtained from number-theoretic algorithms developed by Turing Award winner
> Prof. W. Kahan, Department of Electrical Engineering and Computer Science,
> University of California, Berkeley, as part of ongoing research into test
> methods for computer arithmetic.
>
>
> Either TestFloat or UCBTEST will require some porting effort to run
> on the PPC.  I would like to work smarter rather than harder. I can't
> even get the rights answers from printf, *, or /.
>
>
> Environment:
>
> Platform: EST SBC8260 w/ MPC8260 Rev A.1 running at 166 Mhz
> Ethernet: 10 Mbs (SCC)
> Linux kernel: 2.3.99-pre9
> root filesystem (NFS mounted): MontaVista Hard Hat Linux version 1.1
> Toolset: Denx Software CDK recompiled with gcc configured for
>          --with-cpu=603e and hard-float (i.e. no --nfp)
>
>
> Application:
>
> Note: The executable was statically linked to pull in the hard-float
>       C runtime libraries.
>
> dell 403} cat z.c
> #include "stdio.h"
>
> double x, y, z;
>
> main ()
>
> {
>   x = 1234.33;
>   printf("x %lf (1234.33) 0x%08lX\n", x , x);
>
>   y = 4444.2;
>   printf("y %lf (4444.2)  0x%08lX\n", y , y);
>
>   z = x * y;
>   printf("z = x * y, %lf %lf %lf\n", x , y, z);
>
>   z = x / y;
>   printf("z = x / y, %lf %lf %lf\n", x , y, z);
> }
>
> dell 404} cat z.s
> 	.file	"z.c"
> gcc2_compiled.:
> 	.section	".rodata"
> 	.align 2
> .LC1:
> 	.string	"x %lf (1234.33) 0x%08lX\n"
> 	.align 2
> .LC3:
> 	.string	"y %lf (4444.2)  0x%08lX\n"
> 	.align 2
> .LC4:
> 	.string	"z = x * y, %lf %lf %lf\n"
> 	.align 2
> .LC5:
> 	.string	"z = x / y, %lf %lf %lf\n"
> 	.align 3
> .LC0:
> 	.long 0x40934951
> 	.long 0xeb851eb8
> 	.align 3
> .LC2:
> 	.long 0x40b15c33
> 	.long 0x33333333
> 	.section	".text"
> 	.align 2
> 	.globl main
> 	.type	 main,@function
> main:
> 	stwu 1,-16(1)
> 	mflr 0
> 	stw 31,12(1)
> 	stw 0,20(1)
> 	mr 31,1
> 	lis 9,x@ha
> 	lis 11,.LC0@ha
> 	lfd 0,.LC0@l(11)
> 	stfd 0,x@l(9)
> 	lis 9,x@ha
> 	lis 11,x@ha
> 	lis 10,.LC1@ha
> 	la 3,.LC1@l(10)
> 	lfd 1,x@l(9)
> 	lfd 2,x@l(11)
> 	creqv 6,6,6
> 	bl printf
> 	lis 9,y@ha
> 	lis 11,.LC2@ha
> 	lfd 0,.LC2@l(11)
> 	stfd 0,y@l(9)
> 	lis 9,y@ha
> 	lis 11,y@ha
> 	lis 10,.LC3@ha
> 	la 3,.LC3@l(10)
> 	lfd 1,y@l(9)
> 	lfd 2,y@l(11)
> 	creqv 6,6,6
> 	bl printf
> 	lis 9,z@ha
> 	lis 11,x@ha
> 	lis 10,y@ha
> 	lfd 0,x@l(11)
> 	lfd 13,y@l(10)
> 	fmul 0,0,13
> 	stfd 0,z@l(9)
> 	lis 9,x@ha
> 	lis 11,y@ha
> 	lis 10,z@ha
> 	lis 8,.LC4@ha
> 	la 3,.LC4@l(8)
> 	lfd 1,x@l(9)
> 	lfd 2,y@l(11)
> 	lfd 3,z@l(10)
> 	creqv 6,6,6
> 	bl printf
> 	lis 9,z@ha
> 	lis 11,x@ha
> 	lis 10,y@ha
> 	lfd 0,x@l(11)
> 	lfd 13,y@l(10)
> 	fdiv 0,0,13
> 	stfd 0,z@l(9)
> 	lis 9,x@ha
> 	lis 11,y@ha
> 	lis 10,z@ha
> 	lis 8,.LC5@ha
> 	la 3,.LC5@l(8)
> 	lfd 1,x@l(9)
> 	lfd 2,y@l(11)
> 	lfd 3,z@l(10)
> 	creqv 6,6,6
> 	bl printf
> .L2:
> 	lwz 11,0(1)
> 	lwz 0,4(11)
> 	mtlr 0
> 	lwz 31,-4(11)
> 	mr 1,11
> 	blr
> .Lfe1:
> 	.size	 main,.Lfe1-main
> 	.comm	x,8,8
> 	.comm	y,8,8
> 	.comm	z,8,8
> 	.ident	"GCC: (GNU) 2.95.2 19991024 (release)"
>
>
> On the target:
>
> > ./a.out
> x nan (1234.33) 0x00000000
> y 0.000000 (4444.2)  0x1003FBCC
> z = x * y, 0.000000 0.000000 0.000000
> z = x / y, 0.000000 0.000000 0.000000
>
>
> The expected results should look something like:
>
> dell 420} ./a.out
> x 1234.330000 (1234.33) 0xEB851EB8
> y 4444.200000 (4444.2)  0x33333333
> z = x * y, 1234.330000 4444.200000 5485609.386000
> z = x / y, 1234.330000 4444.200000 0.277740
>
> We aren't even close to reasonable answers yet.
>

--
Neil Russell <caret@c-side.com>

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/

  parent reply	other threads:[~2000-05-24 20:43 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-05-24 19:47 Floating Point problems with Linux on the EST SBC8260 diekema_jon
2000-05-24 20:42 ` Bill Roman
2000-05-30 15:36   ` diekema_jon
2000-05-24 20:43 ` Neil Russell [this message]
2000-05-24 20:44 ` Neil Russell
2000-05-24 21:31 ` Dan Malek
2000-05-24 23:41   ` diekema_jon
     [not found] <20000524134257.A9100@lx.c-side.com>
     [not found] ` <m12uikI-001SyaC@bucks>
2000-05-24 22:05   ` Neil Russell
2000-05-24 22:26     ` Dan Malek
2000-05-24 23:06       ` Neil Russell
2000-05-25  1:22         ` Dan Malek
2000-05-25  3:17           ` Neil Russell
2000-05-25  3:45             ` Dan Malek
2000-05-25 12:13             ` Geir Frode Raanes
2000-05-25 17:30               ` Dan Malek
2000-05-26 10:01               ` Adrian Cox
2000-05-26 12:49                 ` Geir Frode Raanes
2000-05-26 13:52                   ` Adrian Cox
2000-05-24 23:33     ` diekema_jon
  -- strict thread matches above, loose matches on Subject: below --
2000-05-25 14:44 Gessner, Matt
2000-05-25 16:52 ` Dan Malek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20000524134355.B9100@lx.c-side.com \
    --to=caret@c-side.com \
    --cc=all@cideas.com \
    --cc=diekema@bucks.si.com \
    --cc=linuxppc-embedded@lists.linuxppc.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).