Port-vax archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: VAX sin/cos/atan2 vs polyd (Was: Does anyone have a netbsd-5 or earlier VAX to hand?)
On May 27, 2012, at 10:04 AM, David Brownlee wrote:
> Question first, rationale later :)
>
> Question: Does anyone know of an VAX assembler implementation of
> sin/cos and atan2 which avoids the use of POLY?
>
> Rationale:
>
> Thanks to those who ran the sintest program on their VAXen, it
> looks like the issue was VAX CPU architecture specific rather than
> OS revision (I knew POLY rang a bell somewhere :)
>
> The POLY instruction was dropped in Rigel and later CPU variants,
> which is a problem for NetBSD/vax's use of them in
> lib/libm/arch/vax/{n_argred.S,n_atan2.S} - source at
> http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libm/arch/vax/
>
> There are a couple of obvious options to fix this:
> a) Recode the assembly in those routines to avoid use of POLYD
> b) Switch to a plain C implementation
>
> (see question at top of email :)
>
> Combined with a side option of:
> i) Doing one of the above unconditionally
> ii) Having runtime logic to switch versions based on CPU implementation,
> potentially via an ld.so.conf extra library as used by i386 & sparc
> to conditionally load arch specific overlays
>
> Assuming someone has an alternative implementation the side option
> only becomes relevant if it is appreciably slower than the current
> code on earlier VAX CPUs which implement POLY...
If you look at <vax/asm.h> should see gas macros for expanding polyd
and thereby avoiding the instructions.
Home |
Main Index |
Thread Index |
Old Index