Fortran 300 times faster than C for computing cosine
    Ian Phillipps 
    igp at cambridge-consultants.co.uk
       
    Thu May 11 13:02:32 AEST 1989
    
    
  
chuck at trantor.harris-atd.com (Chuck Musciano) writes:
>Compare the code generated for "sin(x) + cos(x)" in FORTRAN and C.  In
>FORTRAN (a5@(-0x7ffc) is x):
[ 3 x 68881 instructions ]
>In C (a6@(-12) and a6@(-16) are x):
[ 13 x 68020 + 1 x 68881 instructions]
>Does anyone know of an optimizer which will convert calls to the standard
>math routines to their 68881 instruction counterparts?
Sun provide one! (/usr/lib/inline)
Using
	cc -S -O -f68881 trig.c /usr/lib/f68881.il
We get:
	movl    a6@(12),sp at -	; x
	movl    a6@(8),sp at -
	fcosd   sp@,fp0
	fmoved  fp0,sp@
	movl    sp at +,a6@(-8)
	movl    sp at +,a6@(-4)
	movl    a6@(12),sp at -
	movl    a6@(8),sp at -
	fsind   sp@,fp0
	fmoved  fp0,sp@
	movl    sp at +,d0
	movl    sp@,d1
	movl    d0,sp at -
	fmoved  sp at +,fp0
	faddd   a6@(-8),fp0
	fmoved  fp0,a6@(16)	; assign result
Not very optimised, but at least it does fcosd!
[Note - C gives you DCOS by default]
-- 
UUCP:  igp at camcon.co.uk   | Cambridge Consultants Ltd  |  Ian Phillipps
or:    igp at camcon.uucp    | Science Park, Milton Road  |-----------------
Phone: +44 223 420024     | Cambridge CB4 4DW, England |
    
    
More information about the Comp.sys.sun
mailing list