summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authormatt <matt@NetBSD.org>2000-07-14 04:50:58 +0000
committermatt <matt@NetBSD.org>2000-07-14 04:50:58 +0000
commit584a2f53ee2f69b0aa2ea515f9eae0be8677625e (patch)
tree3bb42f97a350fae57adbb508ca83cf67786eae15 /lib
parent77c2009ea026d730dd617d686eebd4f960e46c0f (diff)
Clean up & prepare for ELF. Don't define isnan since it's in libc. Add a
powf (really a wrapper for pow).
Diffstat (limited to 'lib')
-rw-r--r--lib/libm/arch/vax/n_argred.S39
-rw-r--r--lib/libm/arch/vax/n_atan2.S26
-rw-r--r--lib/libm/arch/vax/n_cabs.S34
-rw-r--r--lib/libm/arch/vax/n_cbrt.S28
-rw-r--r--lib/libm/arch/vax/n_infnan.S21
-rw-r--r--lib/libm/arch/vax/n_sincos.S26
-rw-r--r--lib/libm/arch/vax/n_sqrt.S34
-rw-r--r--lib/libm/arch/vax/n_support.S73
-rw-r--r--lib/libm/arch/vax/n_tan.S17
-rw-r--r--lib/libm/noieee_src/n_pow.c8
10 files changed, 133 insertions, 173 deletions
diff --git a/lib/libm/arch/vax/n_argred.S b/lib/libm/arch/vax/n_argred.S
index 21cf6f423a4..18adb7b9c28 100644
--- a/lib/libm/arch/vax/n_argred.S
+++ b/lib/libm/arch/vax/n_argred.S
@@ -1,4 +1,4 @@
-/* $NetBSD: n_argred.S,v 1.4 1999/07/02 15:37:35 simonb Exp $ */
+/* $NetBSD: n_argred.S,v 1.5 2000/07/14 04:50:58 matt Exp $ */
/*
* Copyright (c) 1985, 1993
* The Regents of the University of California. All rights reserved.
@@ -34,6 +34,8 @@
* @(#)argred.s 8.1 (Berkeley) 6/4/93
*/
+#include <machine/asm.h>
+
/*
* libm$argred implements Bob Corbett's argument reduction and
* libm$sincos implements Peter Tang's double precision sin/cos.
@@ -44,14 +46,8 @@
* method: true range reduction to [-pi/4,pi/4], P. Tang & B. Corbett
* S. McDonald, April 4, 1985
*/
- .text
- .globl libm$argred
- .type libm$argred,@label
- .globl libm$sincos
- .type libm$sincos,@label
- .align 1
-libm$argred:
+ENTRY(__libm_argred, 0)
/*
* Compare the argument with the largest possible that can
* be reduced by table lookup. r3 := |x| will be used in table_lookup .
@@ -74,7 +70,8 @@ small_arg:
* r3 contains a F-format extension to the reduced argument;
* r4 contains a 0 or 1 corresponding to a sin or cos entry.
*/
-libm$sincos:
+
+ENTRY(__libm_sincos, 0)
/*
* Compensate for a cosine entry by adding one to the quadrant number.
*/
@@ -109,7 +106,7 @@ sine:
/* cvtfd r4,r4 ... r5 = 0 after a polyd. */
addd2 r4,r0 # S(X) = beta + S(X)
addd2 r6,r0 # S(X) = X + S(X)
- brb done
+ jbr done
cosine:
muld2 r6,r6 # Xsq = X * X
beql zero_arg
@@ -126,8 +123,7 @@ done:
even:
rsb
-.data
-.align 2
+ _ALIGN_TEXT
sin_coef:
.double 0d-7.53080332264191085773e-13 # s7 = 2^-29 -1.a7f2504ffc49f8..
@@ -264,8 +260,9 @@ leading:
twoOverPi:
.double 0d+6.36619772367581343076e-01
+
.text
- .align 1
+ _ALIGN_TEXT
table_lookup:
muld3 r3,twoOverPi,r0
@@ -298,7 +295,7 @@ abs2:
* p.0
*/
.text
- .align 2
+ _ALIGN_TEXT
/*
* Only 256 (actually 225) bits of 2/pi are needed for VAX double
* precision; this was determined by enumerating all the nearest
@@ -450,7 +447,7 @@ more1:
addl2 r1,r5
emul r0,r6,r5,r5
addl2 r0,r6
- brb addbits1
+ jbr addbits1
signoff4:
emul r1,r6,$0,r4
@@ -484,7 +481,7 @@ more2:
emul r0,r6,r4,r5
addl2 r0,r6
- brb addbits2
+ jbr addbits2
signoff5:
emul r0,r6,r4,r5
@@ -557,7 +554,7 @@ small:
*/
ashq r6,r9,r10
ashq r6,r8,r9
- brb mult
+ jbr mult
/* p.13
*
* Test to see if the sign bit of r9 is on.
@@ -571,7 +568,7 @@ tiny:
movl $32,r6
movq r8,r10
tstl r10
- brb mult
+ jbr mult
/* p.14
*
* Test whether r9 is zero. It is probably
@@ -597,7 +594,7 @@ tinier:
*/
ashq r1,r8,r10
ashq r1,r7,r9
- brb mult
+ jbr mult
/* p.15
*
* The following code sets the reduced
@@ -607,7 +604,7 @@ zero:
clrl r1
clrl r2
clrl r3
- brw return
+ jbr return
/* p.16
*
* At this point, r0 contains the octant number,
@@ -735,7 +732,7 @@ chop:
/* subw2 $217,r6 -S.McD */
subw2 $64,r6
insv r6,$7,$8,r3
- brb return
+ jbr return
/* p.21
*
* The following code generates the appropriate
diff --git a/lib/libm/arch/vax/n_atan2.S b/lib/libm/arch/vax/n_atan2.S
index 1e5805927fa..4a5a772fda9 100644
--- a/lib/libm/arch/vax/n_atan2.S
+++ b/lib/libm/arch/vax/n_atan2.S
@@ -1,4 +1,4 @@
-/* $NetBSD: n_atan2.S,v 1.3 1999/07/02 15:37:35 simonb Exp $ */
+/* $NetBSD: n_atan2.S,v 1.4 2000/07/14 04:50:58 matt Exp $ */
/*
* Copyright (c) 1985, 1993
* The Regents of the University of California. All rights reserved.
@@ -34,6 +34,8 @@
* @(#)atan2.s 8.1 (Berkeley) 6/4/93
*/
+#include <machine/asm.h>
+
/*
* ATAN2(Y,X)
* RETURN ARG (X+iY)
@@ -74,12 +76,7 @@
* atan2(y,x) returns the exact ARG(x+iy) nearly rounded.
*/
- .text
- .align 1
- .globl _atan2
- .type _atan2,@function
-_atan2 :
- .word 0x0ff4
+ENTRY(atan2, 0x0fc0)
movq 4(ap),r2 # r2 = y
movq 12(ap),r4 # r4 = x
bicw3 $0x7f,r2,r0
@@ -96,7 +93,7 @@ _atan2 :
movq r2,r0
bicw2 $0x8000,r0 # t = |y|
movq r0,r2 # y = |y|
- brb begin
+ jbr begin
xnot1:
bicw3 $0x807f,r2,r11 # yexp
jeql yeq0 # if y=0 goto yeq0
@@ -137,13 +134,13 @@ L10:
addd2 r10,r2 # 3y
addd2 r4,r2 # 3y+2x
divd2 r2,r0 # (2y-3x)/(2x+3y)
- brw L60
+ jbr L60
L20:
cmpw r0,$0x3280 # t : 2**(-28)
jlss L80
clrq r6 # Hi=r6=0, Lo=r8=0
clrq r8
- brw L60
+ jbr L60
L30:
movq $0xda7b2b0d63383fed,r6 # Hi=.46364760900080611433d0
movq $0xf0ea17b2bf912295,r8 # Lo=.10147340032515978826d-17
@@ -153,7 +150,7 @@ L30:
addw2 $0x80,r4 # 2x
addd2 r2,r4 # 2x+y
divd2 r4,r0 # (2y-x)/(2x+y)
- brb L60
+ jbr L60
L50:
movq $0x68c2a2210fda40c9,r6 # Hi=1.5707963267948966135d1
movq $0x06e0145c26332326,r8 # Lo=.22517417741562176079d-17
@@ -161,7 +158,7 @@ L50:
bgeq L90
divd3 r2,r4,r0
bisw2 $0x8000,r0 # -x/y
- brb L60
+ jbr L60
L40:
movq $0x68c2a2210fda4049,r6 # Hi=.78539816339744830676d0
movq $0x06e0145c263322a6,r8 # Lo=.11258708870781088040d-17
@@ -183,7 +180,7 @@ L80:
ret
L90: # x >= 2**25
movq r6,r0
- brb L80
+ jbr L80
pim:
subd3 r0,$0x68c2a2210fda4149,r0 # pi-t
bisw2 -4(fp),r0
@@ -203,7 +200,8 @@ pio2:
resop:
movq $0x8000,r0 # propagate the reserved operand
ret
- .align 2
+
+ _ALIGN_TEXT
ptable:
.quad 0xb50f5ce96e7abd60
.quad 0x51e44a42c1073e02
diff --git a/lib/libm/arch/vax/n_cabs.S b/lib/libm/arch/vax/n_cabs.S
index 2c9bed1a146..786ce016eb4 100644
--- a/lib/libm/arch/vax/n_cabs.S
+++ b/lib/libm/arch/vax/n_cabs.S
@@ -1,4 +1,4 @@
-/* $NetBSD: n_cabs.S,v 1.2 1998/10/31 02:06:02 matt Exp $ */
+/* $NetBSD: n_cabs.S,v 1.3 2000/07/14 04:50:58 matt Exp $ */
/*
* Copyright (c) 1985, 1993
* The Regents of the University of California. All rights reserved.
@@ -34,6 +34,9 @@
* @(#)cabs.s 8.1 (Berkeley) 6/4/93
*/
+#include <machine/asm.h>
+
+ .globl _C_LABEL(__libm_dsqrt_r5)
/*
* double precision complex absolute value
* CABS by W. Kahan, 9/7/80.
@@ -43,29 +46,15 @@
* output is in r0:r1 (error less than 0.86 ulps)
*/
- .text
- .align 1
- .globl _cabs
- .type _cabs,@function
- .globl _hypot
- .type _hypot,@function
- .globl _z_abs
- .type _z_abs,@function
- .globl libm$cdabs_r6
- .type libm$cdabs_r6,@label
- .globl libm$dsqrt_r5
- .type libm$dsqrt_r5,@label
-
/* entry for c functions cabs and hypot */
-_cabs:
-_hypot:
- .word 0x807c # save r2-r6, enable floating overflow
+ALTENTRY(cabs)
+ENTRY(hypot, 0x8040) # save r6, enable floating overflow
movq 4(ap),r0 # r0:1 = x
movq 12(ap),r2 # r2:3 = y
- jmp cabs2
+ jbr cabs2
+
/* entry for Fortran use, call by: d = abs(z) */
-_z_abs:
- .word 0x807c # save r2-r6, enable floating overflow
+ENTRY(z_abs, 0x8040) # save r6, enable floating overflow
movl 4(ap),r2 # indirect addressing is necessary here
movq (r2)+,r0 # r0:1 = x
movq (r2),r2 # r2:3 = y
@@ -89,7 +78,7 @@ cont:
return:
ret
-libm$cdabs_r6: # ENTRY POINT for cdsqrt
+ENTRY(__libm_cdabs_r6,0) # ENTRY POINT for cdsqrt
# calculates a scaled (factor in r6)
# complex absolute value
@@ -133,6 +122,7 @@ ordered:
addl2 r5,r4
cvtld r4,r2
addd2 r2,r0 # r0:1 = scaled x^2 + y^2
- jmp libm$dsqrt_r5 # r0:1 = dsqrt(x^2+y^2)/2^r6
+ jmp _C_LABEL(__libm_dsqrt_r5)+2
+ # r0:1 = dsqrt(x^2+y^2)/2^r6
retsb:
rsb # error < 0.86 ulp
diff --git a/lib/libm/arch/vax/n_cbrt.S b/lib/libm/arch/vax/n_cbrt.S
index 955374be6e7..193c3f75c13 100644
--- a/lib/libm/arch/vax/n_cbrt.S
+++ b/lib/libm/arch/vax/n_cbrt.S
@@ -1,4 +1,4 @@
-/* $NetBSD: n_cbrt.S,v 1.3 1999/07/02 15:37:35 simonb Exp $ */
+/* $NetBSD: n_cbrt.S,v 1.4 2000/07/14 04:50:58 matt Exp $ */
/*
* Copyright (c) 1985, 1993
* The Regents of the University of California. All rights reserved.
@@ -34,6 +34,8 @@
* @(#)cbrt.s 8.1 (Berkeley) 6/4/93
*/
+#include <machine/asm.h>
+
/*
* double cbrt(double arg)
* W. Kahan, 10/13/80. revised 1/13/84 for keeping sign symmetry
@@ -42,22 +44,12 @@
* Max error less than 0.667 ulps (unit in the last places)
*/
- .globl _cbrt
- .type _cbrt,@function
- .globl _d_cbrt
- .type _d_cbrt,@function
- .globl _dcbrt_
- .type _dcbrt_,@function
- .text
- .align 1
-
-_cbrt:
-_d_cbrt:
- .word 0x00fc # save r2 to r7
+ALTENTRY(cbrt)
+ENTRY(d_cbrt, 0x00c0) # save r6 & r7
movq 4(ap),r0 # r0 = argument x
- jmp dcbrt2
-_dcbrt_:
- .word 0x00fc # save r2 to r7
+ jbr dcbrt2
+
+ENTRY(dcbrt_, 0x00c0) # save r6 & r7
movq *4(ap),r0 # r0 = argument x
dcbrt2: bicw3 $0x807f,r0,r2 # biased exponent of x
@@ -93,12 +85,10 @@ dcbrt2: bicw3 $0x807f,r0,r2 # biased exponent of x
return:
ret # error less than 0.667 ulps
-.data
-.align 2
+ _ALIGN_TEXT
B : .long 721142941 # (86-0.03306235651)*(2^23)
C : .float 0f0.5428571429 # 19/35
D : .float 0f-0.7053061224 # -864/1225
E : .float 0f1.414285714 # 99/70
F : .float 0f1.607142857 # 45/28
G : .float 0f0.3571428571 # 5/14
-
diff --git a/lib/libm/arch/vax/n_infnan.S b/lib/libm/arch/vax/n_infnan.S
index 06aa4fdebbd..084826c2be3 100644
--- a/lib/libm/arch/vax/n_infnan.S
+++ b/lib/libm/arch/vax/n_infnan.S
@@ -1,4 +1,4 @@
-/* $NetBSD: n_infnan.S,v 1.3 1999/07/02 15:37:35 simonb Exp $ */
+/* $NetBSD: n_infnan.S,v 1.4 2000/07/14 04:50:58 matt Exp $ */
/*
* Copyright (c) 1985, 1993
* The Regents of the University of California. All rights reserved.
@@ -33,10 +33,11 @@
*
* @(#)infnan.s 8.1 (Berkeley) 6/4/93
*/
- .data
- .align 2
+#include <machine/asm.h>
+
+ .text
_sccsid:
-.asciz "@(#)infnan.s 1.1 (Berkeley) 8/21/85; 8.1 (ucb.elefunt) 6/4/93"
+ .asciz "@(#)infnan.s\t1.1 (Berkeley) 8/21/85; 8.1 (ucb.elefunt) 6/4/93"
/*
* infnan(arg) int arg;
@@ -48,16 +49,12 @@ _sccsid:
*/
.set EDOM,33
.set ERANGE,34
- .text
- .align 1
- .globl _infnan
- .type _infnan,@function
-_infnan:
- .word 0x0
+
+ENTRY(infnan, 0)
cmpl 4(ap),$ERANGE
bneq 1f
- movl $ERANGE,_errno
+ movl $ERANGE,_C_LABEL(errno)
brb 2f
-1: movl $EDOM,_errno
+1: movl $EDOM,_C_LABEL(errno)
2: emodd $0,$0,$0x8000,r0,r0 # generates the reserved operand fault
ret
diff --git a/lib/libm/arch/vax/n_sincos.S b/lib/libm/arch/vax/n_sincos.S
index 45be868e5a6..bd80852c482 100644
--- a/lib/libm/arch/vax/n_sincos.S
+++ b/lib/libm/arch/vax/n_sincos.S
@@ -1,4 +1,4 @@
-/* $NetBSD: n_sincos.S,v 1.3 1999/07/02 15:37:35 simonb Exp $ */
+/* $NetBSD: n_sincos.S,v 1.4 2000/07/14 04:50:58 matt Exp $ */
/*
* Copyright (c) 1985, 1993
* The Regents of the University of California. All rights reserved.
@@ -49,12 +49,8 @@
* S. McDonald, April 4, 1985
*/
#include <machine/asm.h>
- .text
- .align 1
- .globl _sin
- .type _sin@function
-_sin:
- .word 0xffc # save r2-r11
+
+ENTRY(sin, 0xfc0)
movq 4(ap),r0
bicw3 $0x807f,r0,r2
beql 1f # if x is zero or reserved operand then return x
@@ -70,9 +66,9 @@ _sin:
/*
* Entered by sine ; save 0 in r4 .
*/
- jsb libm$argred
+ jsb _C_LABEL(__libm_argred)+2
movl $0,r4
- jsb libm$sincos
+ jsb _C_LABEL(__libm_sincos)+2
bispsw (sp)+
1: ret
@@ -82,12 +78,8 @@ _sin:
* method: true range reduction to [-pi/4,pi/4], P. Tang & B. Corbett
* S. McDonald, April 4, 1985
*/
- .text
- .align 1
- .globl _cos
- .type _cos,@function
-_cos:
- .word 0xffc # save r2-r11
+
+ENTRY(cos, 0x0fc0)
movq 4(ap),r0
bicw3 $0x7f,r0,r2
cmpw $0x8000,r2
@@ -104,8 +96,8 @@ _cos:
/*
* Entered by cosine ; save 1 in r4 .
*/
- jsb libm$argred
+ jsb _C_LABEL(__libm_argred)+2
movl $1,r4
- jsb libm$sincos
+ jsb _C_LABEL(__libm_sincos)+2
bispsw (sp)+
1: ret
diff --git a/lib/libm/arch/vax/n_sqrt.S b/lib/libm/arch/vax/n_sqrt.S
index 9ba43d0f32b..1f0e24ee174 100644
--- a/lib/libm/arch/vax/n_sqrt.S
+++ b/lib/libm/arch/vax/n_sqrt.S
@@ -1,4 +1,4 @@
-/* $NetBSD: n_sqrt.S,v 1.2 1998/10/31 02:06:02 matt Exp $ */
+/* $NetBSD: n_sqrt.S,v 1.3 2000/07/14 04:50:58 matt Exp $ */
/*
* Copyright (c) 1985, 1993
* The Regents of the University of California. All rights reserved.
@@ -34,6 +34,8 @@
* @(#)sqrt.s 8.1 (Berkeley) 6/4/93
*/
+#include <machine/asm.h>
+
/*
* double sqrt(arg) revised August 15,1982
* double arg;
@@ -45,31 +47,27 @@
* entry points:_d_sqrt address of double arg is on the stack
* _sqrt double arg is on the stack
*/
- .text
- .align 1
- .globl _sqrt
- .type _sqrt,@function
- .globl _d_sqrt
- .type _d_sqrt,@function
- .globl libm$dsqrt_r5
- .type libm$dsqrt_r5,@label
.set EDOM,33
-_d_sqrt:
- .word 0x003c # save r5,r4,r3,r2
+ENTRY(d_sqrt, 0x003c) # save r5,r4,r3,r2
movq *4(ap),r0
- jmp dsqrt2
-_sqrt:
- .word 0x003c # save r5,r4,r3,r2
+ jbr dsqrt2
+
+ENTRY(sqrt, 0x003c) # save r5,r4,r3,r2
movq 4(ap),r0
+
dsqrt2: bicw3 $0x807f,r0,r2 # check exponent of input
jeql noexp # biased exponent is zero -> 0.0 or reserved
- bsbb libm$dsqrt_r5
+ bsbb _C_LABEL(__libm_dsqrt_r5)+2
noexp: ret
/* **************************** internal procedure */
-libm$dsqrt_r5: /* ENTRY POINT FOR cdabs and cdsqrt */
+
+ALTENTRY(__libm_dsqrt_r5)
+ nop
+ nop
+ /* ENTRY POINT FOR cdabs and cdsqrt */
/* returns double square root scaled by */
/* 2^r6 */
@@ -117,8 +115,8 @@ libm$dsqrt_r5: /* ENTRY POINT FOR cdabs and cdsqrt */
rsb # DONE!
nonpos:
jneq negarg
- ret # argument and root are zero
+ ret # argument and root are zero
negarg:
pushl $EDOM
- calls $1,_infnan # generate the reserved op fault
+ calls $1,_C_LABEL(infnan) # generate the reserved op fault
ret
diff --git a/lib/libm/arch/vax/n_support.S b/lib/libm/arch/vax/n_support.S
index 394d2c147ff..b954050b581 100644
--- a/lib/libm/arch/vax/n_support.S
+++ b/lib/libm/arch/vax/n_support.S
@@ -1,4 +1,4 @@
-/* $NetBSD: n_support.S,v 1.2 1999/07/02 15:37:35 simonb Exp $ */
+/* $NetBSD: n_support.S,v 1.3 2000/07/14 04:51:00 matt Exp $ */
/*
* Copyright (c) 1985, 1993
* The Regents of the University of California. All rights reserved.
@@ -33,10 +33,11 @@
*
* @(#)support.s 8.1 (Berkeley) 6/4/93
*/
- .data
- .align 2
+#include <machine/asm.h>
+
+ .text
_sccsid:
-.asciz "@(#)support.s 1.3 (Berkeley) 8/21/85; 8.1 (ucb.elefunt) 6/4/93"
+ .asciz "@(#)support.s\t1.3 (Berkeley) 8/21/85; 8.1 (ucb.elefunt) 6/4/93"
/*
* copysign(x,y),
@@ -49,14 +50,10 @@ _sccsid:
*/
/*
- * double copysign(x,y)
- * double x,y;
+ * double copysign(double x,double y)
*/
- .globl _copysign
- .text
- .align 1
-_copysign:
- .word 0x4
+
+ENTRY(copysign, 0)
movq 4(ap),r0 # load x into r0
bicw3 $0x807f,r0,r2 # mask off the exponent of x
beql Lz # if zero or reserved op then return x
@@ -66,14 +63,9 @@ _copysign:
Lz: ret
/*
- * double logb(x)
- * double x;
+ * double logb(double x);
*/
- .globl _logb
- .text
- .align 1
-_logb:
- .word 0x0
+ENTRY(logb, 0)
bicl3 $0xffff807f,4(ap),r0 # mask off the exponent of x
beql Ln
ashl $-7,r0,r0 # get the bias exponent
@@ -86,14 +78,9 @@ Ln: movq 4(ap),r0 # r0:1 = x (zero or reserved op)
1: ret
/*
- * long finite(x)
- * double x;
+ * long finite(double x);
*/
- .globl _finite
- .text
- .align 1
-_finite:
- .word 0x0000
+ENTRY(finite, 0)
bicw3 $0x7f,4(ap),r0 # mask off the mantissa
cmpw r0,$0x8000 # to see if x is the reserved op
beql 1f # if so, return FALSE (0)
@@ -102,16 +89,27 @@ _finite:
1: clrl r0
ret
+/* int isnan(double x);
+ */
+#if 0
+ENTRY(isnan, 0)
+ clrl r0
+ ret
+#endif
+
+/* int isnanf(float x);
+ */
+ENTRY(isnanf, 0)
+ clrl r0
+ ret
+
/*
* double scalb(x,N)
* double x; double N;
*/
- .globl _scalb
.set ERANGE,34
- .text
- .align 1
-_scalb:
- .word 0x3c
+
+ENTRY(scalb, 0)
movq 4(ap),r0
bicl3 $0xffff807f,r0,r3
beql ret1 # 0 or reserved operand
@@ -129,7 +127,7 @@ _scalb:
addl2 r2,r0
ret
ovfl: pushl $ERANGE
- calls $1,_infnan # if it returns
+ calls $1,_C_LABEL(infnan) # if it returns
bicw3 $0x7fff,4(ap),r2 # get the sign of input arg
bisw2 r2,r0 # re-attach the sign to r0/1
ret
@@ -142,12 +140,9 @@ ret1: ret
* DOUBLE PRECISION (VAX D format 56 bits)
* CODED IN VAX ASSEMBLY LANGUAGE BY K.C. NG, 4/8/85.
*/
- .globl _drem
.set EDOM,33
- .text
- .align 1
-_drem:
- .word 0xffc
+
+ENTRY(drem, 0x0fc0)
subl2 $12,sp
movq 4(ap),r0 #r0=x
movq 12(ap),r2 #r2=y
@@ -192,13 +187,13 @@ C2:
muld2 r8,r6 #n*t1
subd2 r6,r0 #x-n*t1
subd2 r4,r0 #(x-n*t1)-n*(t-t1)
- brb loop
+ jbr loop
E1:
movw -4(fp),r6 #r6=nx
beql C3 #if nx=0 goto C3
addw2 r6,r0 #x:=x*2**57 scale up x by nx
movw $0,-4(fp) #clear nx
- brb loop
+ jbr loop
C3:
movq r2,r4 #r4 = y
subw2 $0x80,r4 #r4 = y/2
@@ -223,7 +218,7 @@ C5:
ret
Rop: #Reserved operand
pushl $EDOM
- calls $1,_infnan #generate reserved op fault
+ calls $1,_C_LABEL(infnan) #generate reserved op fault
ret
Ret:
movq $0x8000,r0 #propagate reserved op
diff --git a/lib/libm/arch/vax/n_tan.S b/lib/libm/arch/vax/n_tan.S
index c8dc9014b66..6e5d06d68d7 100644
--- a/lib/libm/arch/vax/n_tan.S
+++ b/lib/libm/arch/vax/n_tan.S
@@ -1,4 +1,4 @@
-/* $NetBSD: n_tan.S,v 1.3 1999/07/02 15:37:35 simonb Exp $ */
+/* $NetBSD: n_tan.S,v 1.4 2000/07/14 04:51:00 matt Exp $ */
/*
* Copyright (c) 1985, 1993
* The Regents of the University of California. All rights reserved.
@@ -34,6 +34,8 @@
* @(#)tan.s 8.1 (Berkeley) 6/4/93
*/
+#include <machine/asm.h>
+
/* This is the implementation of Peter Tang's double precision
* tangent for the VAX using Bob Corbett's argument reduction.
*
@@ -46,12 +48,7 @@
* method: true range reduction to [-pi/4,pi/4], P. Tang & B. Corbett
* S. McDonald, April 4, 1985
*/
- .text
- .align 1
- .globl _tan
- .type _tan,@function
-
-_tan: .word 0xffc # save r2-r11
+ENTRY(tan, 0x0fc0) # save r6-r11
movq 4(ap),r0
bicw3 $0x807f,r0,r2
beql 1f # if x is zero or reserved operand then return x
@@ -64,7 +61,7 @@ _tan: .word 0xffc # save r2-r11
* Clear the IV & FU bits.
*/
bicpsw $0x0060
- jsb libm$argred
+ jsb _C_LABEL(__libm_argred)+2
/*
* At this point,
* r0 contains the quadrant number, 0, 1, 2, or 3;
@@ -79,7 +76,7 @@ _tan: .word 0xffc # save r2-r11
* Call sine. r4 = 0 implies sine.
*/
movl $0,r4
- jsb libm$sincos
+ jsb _C_LABEL(__libm_sincos)+2
/*
* Save sin(x) in r11/r10 .
*/
@@ -90,7 +87,7 @@ _tan: .word 0xffc # save r2-r11
movq (sp)+,r0
movq (sp)+,r2
movl $1,r4
- jsb libm$sincos
+ jsb _C_LABEL(__libm_sincos)+2
divd3 r0,r10,r0
bispsw (sp)+
1: ret
diff --git a/lib/libm/noieee_src/n_pow.c b/lib/libm/noieee_src/n_pow.c
index fa7da8f6522..184ab91c823 100644
--- a/lib/libm/noieee_src/n_pow.c
+++ b/lib/libm/noieee_src/n_pow.c
@@ -1,4 +1,4 @@
-/* $NetBSD: n_pow.c,v 1.4 1999/07/02 15:37:37 simonb Exp $ */
+/* $NetBSD: n_pow.c,v 1.5 2000/07/14 04:51:01 matt Exp $ */
/*
* Copyright (c) 1985, 1993
* The Regents of the University of California. All rights reserved.
@@ -126,6 +126,12 @@ const static double zero=0.0, one=1.0, two=2.0, negone= -1.0;
static double pow_P __P((double, double));
+float powf(x,y)
+float x,y;
+{
+ return pow((double) x, (double) (y));
+}
+
double pow(x,y)
double x,y;
{