This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: sqrt via SSE2 registers
- From: Jan Hubicka <jh at suse dot cz>
- To: Tom Womack <tom at womack dot net>
- Cc: gcc at gcc dot gnu dot org, Jan Hubicka <jh at suse dot cz>
- Date: Sun, 17 Feb 2002 18:05:16 +0100
- Subject: Re: sqrt via SSE2 registers
- References: <001b01c1b6ff$f11fe6c0$5637f380@maths.nottingham.ac.uk>
> Is there any way of telling gcc that I care so little about precision that
> I'm prepared to have it compute the square roots of objects in SSE2
> registers by using SQRTSD rather than by storing the register to memory,
> loading it onto the FP stack and calling fsqrt?
>
> I've tried (on the principle of sticking in anything that might have an
> effect)
>
> -O3 -march=pentium4 -msse2 -mfpmath=sse{,387} -ffast-math \
> -mno-fancy-math-387
>
> but nonetheless always get the worst-of-both-worlds behavior described
> above.
>
> Am I just being too optimistic about mainline gcc's current level of support
> for the P4? There is a sqrtdf2_1 instruction in i386.md which looks as if it
> should behave correctly.
Isn't this library issue? Some glibc redefine the sqrt as asm statement.
I get:
u-pl5:/tmp/egcs/build/gcc$ more t.c double a;
main()
{
a=sqrt(a);
}
u-pl5:/tmp/egcs/build/gcc$ ./xgcc t.c -O2 -S -B ./ -march=pentium4 -mfpmath=sse -ffast-math
u-pl5:/tmp/egcs/build/gcc$ more t.s .file "t.c"
.text
.align 2
.globl main
.type main,@function
main:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
sqrtsd a, %xmm0
andl $-16, %esp
movsd %xmm0, a
movl %ebp, %esp
popl %ebp
ret
.Lfe1:
.size main,.Lfe1-main
.comm a,8,8
.ident "GCC: (GNU) 3.1 20020217 (experimental)"
u-pl5:/tmp/egcs/build/gcc$