Commit Graph

199 Commits

Author SHA1 Message Date
drochner af7cf00a5a provide an assembler implementation of lrint() for i386 and amd64 2004-07-01 17:30:48 +00:00
mhitch a6d522d13c Add ceilf(), floorf(), and sqrtf() (as wrappers using ceil(), floor(), and
sqrt() repectively).  The fixes PR#22796.
2004-05-13 20:35:40 +00:00
wiz 848e689872 Typo fix, from skrueger at europe com. 2004-03-22 13:41:09 +00:00
lukem f85d2d1c14 Use ${HOST_SH} instead of `sh'.
If necessary, pull in <bsd.sys.mk> to get the definition of HOST_SH;
Makefiles that pull in one of (most of) <bsd.*.mk> will get this anyway.
2003-10-26 07:25:33 +00:00
wennmach be03f9bd59 Avoid the PIC dance. 2003-09-16 18:17:11 +00:00
fvdl 8eb02ce5c0 Make log1p and log1pf work in shared libraries again. 2003-09-14 21:26:14 +00:00
wennmach cf92bf760d Reimplement s_log1p.S and s_log1pf.S to use the fyl2xp1 instruction
where necessary.

The log1p() function is provided to compute an accurate value of
log(1 + x), even for tiny values of x. The i387 FPU provides the
fyl2xp1 instruction for this purpose.

However, since the range of the fyl2xp1 function is limited to
-(1 - (sqrt(2) / 2)) <= x <= sqrt(2) - 1
          (-0.292893 <= x <= 0.414214)
we need to check if the argument is in the valid range.

In order to reduce the cost for testing the range, we only use
fyl2xp1 if the argument is in the range
               -0.25 <= x <= 0.25
which can be checked with just one conditional branch.

Fixes PR lib/22599 by Ray Brownrigg.
2003-09-10 16:45:43 +00:00
agc eb7c1594f1 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22280, verified by myself.
2003-08-07 16:42:00 +00:00
salo 99410184e7 netbsd.org->NetBSD.org 2003-07-26 19:24:24 +00:00
matt 88dc468feb Fix some assembly botches. 2003-02-21 06:40:47 +00:00
lukem ec5dbc56b8 Explicitly move setting of NOxxx and USE_SHLIBDIR to the top of the
Makefile (before including <bsd.own.mk>)
2002-08-19 14:55:14 +00:00
lukem ebb6fc9eb8 Use ${NETBSDSRCDIR}/some/path instead of ${.CURDIR}/../../some/path (etc).
(Reduces make output by ~ 20%)
2002-08-19 09:41:27 +00:00
matt 778e246527 Add sinf/cosf. 2002-07-14 19:55:24 +00:00
matt 5ac19a376b Add finitef 2002-06-23 21:55:12 +00:00
fvdl 059c5712b9 Fix mistake in previous. 2002-03-30 10:03:44 +00:00
fvdl edcf4b63ed Fix stack usage for temporary storage. From Stephen Ma in PR xsrc/15404. 2002-03-26 15:17:37 +00:00
christos 47c5991d7a PR/15748: Ray Brownrigg: exp(log(0)) is broken.
Use FreeBSD's version. Handles inf/nan and rounding modes.
2002-02-27 16:32:46 +00:00
matt 0ce5ca145f Change to use a register prefix. 2002-02-24 01:06:18 +00:00
matt d9dae701a5 Don't bsbb to an external symbol. the dynamic linker won't like it. 2002-02-21 07:49:55 +00:00
lukem efcc9a4c9d * Add user-controlled mk.conf variables
- SHLIBDIR	Location to install shared libraries if ${USE_SHLIBDIR}
			is "yes".  Defaults to "/usr/lib".

	- USE_SHLIBDIR	If "yes", install shared libraries in ${SHLIBDIR}
			instead of ${LIBDIR}.  Defaults to "no".
			Sets ${_LIBSODIR} to the appropriate value.
			This may be set by individual Makefiles as well.

	- SHLINKDIR	Location of shared linker.  Defaults to "/usr/libexec".
			If != "/usr/libexec", change the dynamic-linker
			encoded in shared programs

* Set USE_SHLIBDIR for libraries used by /bin and /sbin:
	libc libcrypt libcrypto libedit libipsec libkvm libm libmi387
	libtermcap libutil libz

* If ${_LIBSODIR} != ${LIBDIR}, add symlinks from ${LIBDIR}/${LIB}.so*
  to ${_LIBSODIR}/${LIB}.so* for compatibility.

* Always install /sbin/init statically (for now)


The net effect of these changes depends on how the variables are set:

  1.)	If nothing is set or changed, there is no change from the
	current behaviour:
		- Static /bin, /sbin, and bits of /usr/*
		- Dynamic rest
		- Shared linker is /usr/libexec/ld*so

  2.)	If the following make variables are set:
		LDSTATIC=
		SHLINKDIR=/lib
		SHLIBDIR=/lib
	Then the behaviour becomes:
		- Dynamic tools
		- .so libraries used by /bin and /sbin are installed to /lib,
		  with symlinks from /usr/lib/lib*so to -> /lib/lib*so
		  where appropriate
		- Shared linker is /lib/ld*so

  3.)	As per 2.), but add the following variable:
		USE_SHLIBDIR=yes
	This forces all .so's to be instaleld in /lib (with compat
	symlinks), not just those tagged by their Makefiles to be.
	Again, compat symlinks are installed
2001-12-28 01:32:37 +00:00
tv 001067bbd1 Readability cleanups; MKfoo=no -> NOfoo. 2001-12-12 00:51:00 +00:00
fvdl d191029b13 2 more bitnumber mistakes fixed while removing sahf. 2001-06-25 16:47:05 +00:00
fvdl c5b64cb062 Oops, when I replaced sahf with a btw, I made it test the wrong bit
(2 vs. 10).
2001-06-25 16:44:34 +00:00
fvdl 120d96874f %rbp -> %rsp in 2 cases. 2001-06-19 17:49:36 +00:00
fvdl 8ecba6c681 Modify the i387 code so that it can be shared between the i386 port
and the x86_64 port. XXX some files should be distinct.
2001-06-19 00:26:29 +00:00
kleink 26c512aade Make these idempotent as far as the FPU register stack is concerned. 2000-09-26 07:28:23 +00:00
matt 94827a09a3 Well, duh! Use indexed addressing since that's why it's there. That way
the code is PIC.  (mmm.  linker warning's about non-PIC code).
2000-07-14 22:26:15 +00:00
matt 584a2f53ee Clean up & prepare for ELF. Don't define isnan since it's in libc. Add a
powf (really a wrapper for pow).
2000-07-14 04:50:58 +00:00
is 7c1da7b0c9 Regenerate, after changing internal label used for linkage to the wrapper
scripts.
2000-05-16 19:07:35 +00:00
is 9ba8ffc293 Change libm-68060 internal, but file external labels (used for linkage between
wrapper functions and the Motorola code) to guarantee consistent protection
of the user namespace.
2000-05-16 19:05:37 +00:00
is 287de693da Regenerated files after this change:
Move each wrapper function to its own source file, such that redefining one
function doesn't give link errors when another one is pulled in from the
library.
Problem discovered by Klaus Klein.
2000-05-12 20:11:11 +00:00
is 183dfce153 Move each wrapper function to its own source file, such that redefining one
function doesn't give link errors when another one is pulled in from the
library.
Problem discovered by Klaus Klein.
2000-05-12 20:08:04 +00:00
is 97df1401a1 Move original Motorola files to the "dist" subdirectory, in response
to PR 9626 by Kris Shannon.
2000-04-14 20:24:29 +00:00
kleink 0c766839fc G/c label orphaned since rev. 1.6. 2000-01-31 18:28:49 +00:00
christos e133a9e685 Makefile and shared library for libm387. 1999-12-13 09:36:29 +00:00
thorpej bebf6897b4 Add register prefixes. 1999-11-10 16:45:33 +00:00
thorpej 627a762f23 Regen; add register prefixes. 1999-11-10 16:34:56 +00:00
thorpej c958703527 Add register prefixes. 1999-11-10 16:32:45 +00:00
is 7afc17a12a Use arch/m68k copies of the common functions even for mc68881 hardware. 1999-08-22 18:28:37 +00:00
is 2dc451b448 *gamma* need k_sin*/k_cos* 1999-08-22 08:25:42 +00:00
is 3f2d2fc0e5 Copied from mc68881/s_rint.S,v 1999-08-21 21:26:40 +00:00
is 455f7bb90c Copied from mc68881/s_floor.S,v 1999-08-21 21:26:28 +00:00
is c78325ae61 Copied from mc68881/s_ceil.S,v 1999-08-21 21:26:16 +00:00
is c81875b78b Copied from mc68881/s_finite.S,v 1999-08-21 21:25:40 +00:00
is 11d34cdce5 Copied from mc68881/s_copysign.S,v 1999-08-21 21:24:46 +00:00
is 9e6d62796f wrap lines in Makefile.list 1999-08-21 21:04:17 +00:00
is a33bf8cb4b Clarify instructions 1999-08-21 20:50:21 +00:00
is 9f72d71dcd Same reason as for ldexp.S: most applications don't scale 0.0. 1999-08-21 17:29:37 +00:00
is 8c65b3f672 Motorola floating point library support package based architecture dependent
code for libm - generated files. Currently, easy functions only.
1999-08-19 21:43:52 +00:00
is 00c9560d0c Motorola 68060 floating point library support package based architecture
dependent code for libm. Currently, easy functions only.
1999-08-19 21:41:35 +00:00
kleink 58bbec2442 Make these SVR4 ABI ready. 1999-08-15 18:45:18 +00:00
simonb 42724dd4d2 More trailing white space. 1999-07-02 15:37:33 +00:00
kristerw 14e0e5307d The scalb* functions left data on the floting point register stack.
Remove it before leaving the function.

The solution is taken from OpenBSD.
1999-01-02 05:15:40 +00:00
matt 5bf0199231 Fix PIC code and fix problem with obj dirs. 1998-11-11 15:26:14 +00:00
matt 93bbcb05b4 Add .type _sym,@foo for shared libraries 1998-10-31 02:06:01 +00:00
is 7c9cfab805 Same reason as for ldexp.S: most applications don't scale 0.0. 1997-10-10 10:40:40 +00:00
jtc 990a11b9c6 Fix files using old TNF copyright notice 1997-07-30 23:53:32 +00:00
thorpej caae5cd93d Use <machine/asm.h> 1996-08-13 17:00:28 +00:00
thorpej 688ff1ddf9 Correct think-o; this is an assembler source file (and the Makefile
expected as such).
1996-07-08 03:27:25 +00:00
jtc ca7561ba59 Fix typo 1996-07-06 00:15:45 +00:00
jtc a5e2dfa95f use one less fp stack slot 1996-07-03 17:31:28 +00:00
jtc 0ab3a0b137 It's necessary to use 64 bit precision to avoid errors in the least
significant bit(s) (for some operands).
1996-07-03 17:27:34 +00:00
jtc 88420f2e4d this simple adaptation exp() does not work 1996-07-03 17:20:16 +00:00
jtc 5f9accdf53 Assembly versions of expf(), logf(),log10f(), scalbf(), expm1() and expm1f(). 1996-07-03 16:50:20 +00:00
jtc 991d9c139a we don't need to branch 1996-06-26 14:44:05 +00:00
jtc 3a2de776bf add m68881 specific fmod() 1996-06-26 14:36:14 +00:00
jtc c13e010e3c Alpha versions of copysign() and copysignf() 1996-06-26 07:29:59 +00:00
jtc 5743dc5d7a Fix from Bruce Evans. Commited to FreeBSD earlier this month, but was
never forwarded to me :-(.

> Clean up the FP stack before returning.  The i387 exp() leaked an FP
> register on its first call.  Subsequent calls reused the register so
> the leak didn't accumulate.
1996-06-25 02:07:09 +00:00
jtc 84fc678011 Use setne instead of setnel, new versions of gas balk at the bad mnemonic.
Wrong mask was used in s_finitef.S.
1996-06-04 18:00:34 +00:00
pk 26646c7969 Setup stack-frame correctly (same as s_ilogb.S). 1995-10-22 20:32:43 +00:00
jtc e2143cf975 Fix from Jochen Pohl, i387 version of ilogb didn't set up the stack
frame correctly (PR #1590).
1995-10-12 15:53:09 +00:00
ragge d76e5e0af8 Machine specific math library files for vax. 1995-10-10 23:40:21 +00:00
jtc 9ae90685f2 Winning Strategies has placed this code in the public domain. 1995-05-11 23:03:44 +00:00
jtc d042a3eb20 Id -> NetBSD 1995-05-10 20:44:22 +00:00
jtc 5abf82e236 Id -> NetBSD 1995-05-08 23:55:16 +00:00
jtc 0898887210 Id -> NetBSD 1995-05-08 23:44:37 +00:00
jtc 750e07c91c i387 float version of atan2() 1995-05-08 23:35:10 +00:00
jtc 684161edae Added i387 remainderf and sqrtf 1995-05-03 14:47:35 +00:00
jtc 5c7208348c Winning Strategies has placed this code into the Public Domain 1995-04-28 22:43:31 +00:00
jtc 8961dd234b Special case 0, as was done in s_scalbn.S.
I'm only doing this for consistancy --- someone really needs to measure
whether this optimization is justified.
1995-02-18 01:39:51 +00:00
jtc 324e516335 68881-assisted versions of these functions. 1995-02-18 01:24:42 +00:00
jtc 9f19de9cde Remove lie (in a comment) about conversion between 80 bit ot 64 bit reals,
since we set up the fpu to do all calculations in 64 bit mode at this time.
1994-08-26 00:20:34 +00:00
jtc 4b2017adfe Assembly language versions of some of the "float" functions. 1994-08-19 03:56:44 +00:00
jtc 1af6796a8d The fyl2xp1 instruction has a limited range:
-(1 - (sqrt(2) / 2)) <= x <= sqrt(2) - 1
so we can't use it.

Also, I'm not sure fyl2xp1's extra precision will
matter once the result is converted from extended
real (80 bits) back to double real (64 bits).
1994-08-19 03:55:57 +00:00
jtc c120d36cd8 Major Bogon: change %ebp to %esp, as I don't set up a stack frame. 1994-08-18 20:42:35 +00:00
jtc bdde9305da Use RCSID macro for RCS ID's. 1994-03-18 23:22:10 +00:00
jtc 6d76330bec Added RCS ID's. ID's use new RCSID macro from <machine/asm.h>. 1994-03-12 01:30:22 +00:00
mycroft 912d356b80 Clean up deleted files. 1994-03-12 01:16:39 +00:00
jtc 41dbc84e05 The hardware sqrt function is supposed to be __ieee754_sqrt(), and live in
e_sqrt.S.
1994-03-12 01:16:38 +00:00
jtc daefb8ce62 converted ceil(), floor(), & rint() from old to new math libraries. 1994-03-12 01:10:51 +00:00
jtc c9566fe572 Replace code that was "truncated" when it was converted from old
math library.
1994-03-12 01:09:29 +00:00
jtc 2ed7077300 Added i387 version of significand(). 1994-03-10 18:13:32 +00:00
jtc aff2eb8384 More i387 libm support. 1994-03-04 17:39:50 +00:00
jtc 0dff3c6f48 Optimize the common case (theta < 2^63). 1994-02-18 17:38:59 +00:00
jtc b365a34dd9 i387 specific ilogb() 1994-02-18 02:50:11 +00:00
jtc c709120244 i387-specific math functions. 1994-02-16 19:21:10 +00:00
jtc 03898350df Functions brought over from the old math library. 1994-02-14 21:55:12 +00:00
jtc 101f9521b3 More i387 math support, too bad we can't enable it 1994-02-12 01:31:52 +00:00
jtc c632d011dd FPU specific math code. 1994-02-11 18:20:17 +00:00