diff options
Diffstat (limited to 'sysdeps/mips/mips32')
-rw-r--r-- | sysdeps/mips/mips32/crti.S | 15 | ||||
-rw-r--r-- | sysdeps/mips/mips32/crtn.S | 2 | ||||
-rw-r--r-- | sysdeps/mips/mips32/fpu/fix-fp-int-convert-overflow.h | 2 | ||||
-rw-r--r-- | sysdeps/mips/mips32/fpu/fpucw-helpers.c | 2 | ||||
-rw-r--r-- | sysdeps/mips/mips32/libm-test-ulps | 204 | ||||
-rw-r--r-- | sysdeps/mips/mips32/libm-test-ulps-name | 1 | ||||
-rw-r--r-- | sysdeps/mips/mips32/nofpu/Implies | 1 | ||||
-rw-r--r-- | sysdeps/mips/mips32/sfp-machine.h | 14 |
8 files changed, 132 insertions, 109 deletions
diff --git a/sysdeps/mips/mips32/crti.S b/sysdeps/mips/mips32/crti.S index 5c0ad7328a..b3e1c4e0d5 100644 --- a/sysdeps/mips/mips32/crti.S +++ b/sysdeps/mips/mips32/crti.S @@ -1,5 +1,5 @@ /* Special .init and .fini section support for MIPS (o32). - Copyright (C) 1995-2016 Free Software Foundation, Inc. + Copyright (C) 1995-2018 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -40,6 +40,12 @@ #include <libc-symbols.h> +#ifdef __mips_micromips +# define JALR_RELOC R_MICROMIPS_JALR +#else +# define JALR_RELOC R_MIPS_JALR +#endif + #ifndef PREINIT_FUNCTION # define PREINIT_FUNCTION __gmon_start__ #endif @@ -59,6 +65,7 @@ .section .init,"ax",@progbits .p2align 2 .globl _init + .hidden _init .type _init, @function _init: .set noreorder @@ -71,18 +78,20 @@ _init: lw $2,%got(PREINIT_FUNCTION)($28) beq $2,$0,.Lno_weak_fn lw $25,%call16(PREINIT_FUNCTION)($28) - .reloc 1f,R_MIPS_JALR,PREINIT_FUNCTION + .reloc 1f,JALR_RELOC,PREINIT_FUNCTION 1: jalr $25 .Lno_weak_fn: + .insn #else lw $25,%got(PREINIT_FUNCTION)($28) - .reloc 1f,R_MIPS_JALR,PREINIT_FUNCTION + .reloc 1f,JALR_RELOC,PREINIT_FUNCTION 1: jalr $25 #endif .section .fini,"ax",@progbits .p2align 2 .globl _fini + .hidden _fini .type _fini, @function _fini: .set noreorder diff --git a/sysdeps/mips/mips32/crtn.S b/sysdeps/mips/mips32/crtn.S index a2f97c85e1..84efcb1938 100644 --- a/sysdeps/mips/mips32/crtn.S +++ b/sysdeps/mips/mips32/crtn.S @@ -1,5 +1,5 @@ /* Special .init and .fini section support for MIPS (o32). - Copyright (C) 1995-2016 Free Software Foundation, Inc. + Copyright (C) 1995-2018 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/mips/mips32/fpu/fix-fp-int-convert-overflow.h b/sysdeps/mips/mips32/fpu/fix-fp-int-convert-overflow.h index b9f4aea488..1afc7f65a6 100644 --- a/sysdeps/mips/mips32/fpu/fix-fp-int-convert-overflow.h +++ b/sysdeps/mips/mips32/fpu/fix-fp-int-convert-overflow.h @@ -1,5 +1,5 @@ /* Fix for conversion of floating point to integer overflow. MIPS version. - Copyright (C) 2015-2016 Free Software Foundation, Inc. + Copyright (C) 2015-2018 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/mips/mips32/fpu/fpucw-helpers.c b/sysdeps/mips/mips32/fpu/fpucw-helpers.c index 2af39e969e..c52d55460e 100644 --- a/sysdeps/mips/mips32/fpu/fpucw-helpers.c +++ b/sysdeps/mips/mips32/fpu/fpucw-helpers.c @@ -1,5 +1,5 @@ /* FPU control word handling, MIPS version, needed by MIPS16 callers. - Copyright (C) 1996-2016 Free Software Foundation, Inc. + Copyright (C) 1996-2018 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/sysdeps/mips/mips32/libm-test-ulps b/sysdeps/mips/mips32/libm-test-ulps index aa3d696863..e62cca3e03 100644 --- a/sysdeps/mips/mips32/libm-test-ulps +++ b/sysdeps/mips/mips32/libm-test-ulps @@ -184,15 +184,15 @@ idouble: 1 ifloat: 2 Function: Imaginary part of "cacos": -double: 1 +double: 2 float: 2 -idouble: 1 +idouble: 2 ifloat: 2 Function: Real part of "cacos_downward": -double: 2 +double: 3 float: 2 -idouble: 2 +idouble: 3 ifloat: 2 Function: Imaginary part of "cacos_downward": @@ -202,9 +202,9 @@ idouble: 5 ifloat: 3 Function: Real part of "cacos_towardzero": -double: 2 +double: 3 float: 2 -idouble: 2 +idouble: 3 ifloat: 2 Function: Imaginary part of "cacos_towardzero": @@ -220,15 +220,15 @@ idouble: 2 ifloat: 2 Function: Imaginary part of "cacos_upward": -double: 4 -float: 4 -idouble: 4 -ifloat: 4 +double: 5 +float: 7 +idouble: 5 +ifloat: 7 Function: Real part of "cacosh": -double: 1 +double: 2 float: 2 -idouble: 1 +idouble: 2 ifloat: 2 Function: Imaginary part of "cacosh": @@ -244,10 +244,10 @@ idouble: 5 ifloat: 3 Function: Imaginary part of "cacosh_downward": -double: 2 -float: 2 -idouble: 2 -ifloat: 2 +double: 3 +float: 3 +idouble: 3 +ifloat: 3 Function: Real part of "cacosh_towardzero": double: 5 @@ -256,9 +256,9 @@ idouble: 5 ifloat: 3 Function: Imaginary part of "cacosh_towardzero": -double: 2 +double: 3 float: 2 -idouble: 2 +idouble: 3 ifloat: 2 Function: Real part of "cacosh_upward": @@ -268,9 +268,9 @@ idouble: 4 ifloat: 4 Function: Imaginary part of "cacosh_upward": -double: 2 +double: 3 float: 2 -idouble: 2 +idouble: 3 ifloat: 2 Function: "carg": @@ -302,16 +302,16 @@ idouble: 1 ifloat: 1 Function: Imaginary part of "casin": -double: 1 +double: 2 float: 2 -idouble: 1 +idouble: 2 ifloat: 2 Function: Real part of "casin_downward": double: 3 -float: 1 +float: 2 idouble: 3 -ifloat: 1 +ifloat: 2 Function: Imaginary part of "casin_downward": double: 5 @@ -332,21 +332,21 @@ idouble: 5 ifloat: 3 Function: Real part of "casin_upward": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 +double: 3 +float: 2 +idouble: 3 +ifloat: 2 Function: Imaginary part of "casin_upward": -double: 4 -float: 4 -idouble: 4 -ifloat: 4 +double: 5 +float: 7 +idouble: 5 +ifloat: 7 Function: Real part of "casinh": -double: 1 +double: 2 float: 2 -idouble: 1 +idouble: 2 ifloat: 2 Function: Imaginary part of "casinh": @@ -363,9 +363,9 @@ ifloat: 3 Function: Imaginary part of "casinh_downward": double: 3 -float: 1 +float: 2 idouble: 3 -ifloat: 1 +ifloat: 2 Function: Real part of "casinh_towardzero": double: 5 @@ -380,19 +380,21 @@ idouble: 3 ifloat: 1 Function: Real part of "casinh_upward": -double: 4 -float: 4 -idouble: 4 -ifloat: 4 +double: 5 +float: 7 +idouble: 5 +ifloat: 7 Function: Imaginary part of "casinh_upward": -double: 2 +double: 3 float: 2 -idouble: 2 +idouble: 3 ifloat: 2 Function: Real part of "catan": +double: 1 float: 1 +idouble: 1 ifloat: 1 Function: Imaginary part of "catan": @@ -403,9 +405,9 @@ ifloat: 1 Function: Real part of "catan_downward": double: 1 -float: 1 +float: 2 idouble: 1 -ifloat: 1 +ifloat: 2 Function: Imaginary part of "catan_downward": double: 2 @@ -415,18 +417,20 @@ ifloat: 2 Function: Real part of "catan_towardzero": double: 1 -float: 1 +float: 2 idouble: 1 -ifloat: 1 +ifloat: 2 Function: Imaginary part of "catan_towardzero": double: 2 -float: 1 +float: 2 idouble: 2 -ifloat: 1 +ifloat: 2 Function: Real part of "catan_upward": +double: 1 float: 1 +idouble: 1 ifloat: 1 Function: Imaginary part of "catan_upward": @@ -442,7 +446,9 @@ idouble: 1 ifloat: 1 Function: Imaginary part of "catanh": +double: 1 float: 1 +idouble: 1 ifloat: 1 Function: Real part of "catanh_downward": @@ -459,9 +465,9 @@ ifloat: 2 Function: Real part of "catanh_towardzero": double: 2 -float: 1 +float: 2 idouble: 2 -ifloat: 1 +ifloat: 2 Function: Imaginary part of "catanh_towardzero": double: 1 @@ -471,12 +477,14 @@ ifloat: 2 Function: Real part of "catanh_upward": double: 4 -float: 3 +float: 4 idouble: 4 -ifloat: 3 +ifloat: 4 Function: Imaginary part of "catanh_upward": +double: 1 float: 1 +idouble: 1 ifloat: 1 Function: "cbrt": @@ -671,9 +679,9 @@ ifloat: 2 Function: Real part of "clog10_downward": double: 5 -float: 4 +float: 5 idouble: 5 -ifloat: 4 +ifloat: 5 Function: Imaginary part of "clog10_downward": double: 2 @@ -742,7 +750,9 @@ idouble: 1 ifloat: 2 Function: "cos": +double: 1 float: 1 +idouble: 1 ifloat: 1 Function: "cos_downward": @@ -789,9 +799,9 @@ ifloat: 2 Function: Real part of "cpow": double: 2 -float: 4 +float: 5 idouble: 2 -ifloat: 4 +ifloat: 5 Function: Imaginary part of "cpow": float: 2 @@ -977,9 +987,9 @@ ifloat: 1 Function: Imaginary part of "ctan": double: 2 -float: 1 +float: 2 idouble: 2 -ifloat: 1 +ifloat: 2 Function: Real part of "ctan_downward": double: 6 @@ -989,9 +999,9 @@ ifloat: 5 Function: Imaginary part of "ctan_downward": double: 2 -float: 1 +float: 2 idouble: 2 -ifloat: 1 +ifloat: 2 Function: Real part of "ctan_towardzero": double: 5 @@ -1007,9 +1017,9 @@ ifloat: 2 Function: Real part of "ctan_upward": double: 2 -float: 3 +float: 4 idouble: 2 -ifloat: 3 +ifloat: 4 Function: Imaginary part of "ctan_upward": double: 2 @@ -1019,9 +1029,9 @@ ifloat: 3 Function: Real part of "ctanh": double: 2 -float: 1 +float: 2 idouble: 2 -ifloat: 1 +ifloat: 2 Function: Imaginary part of "ctanh": double: 2 @@ -1031,9 +1041,9 @@ ifloat: 2 Function: Real part of "ctanh_downward": double: 4 -float: 1 +float: 2 idouble: 4 -ifloat: 1 +ifloat: 2 Function: Imaginary part of "ctanh_downward": double: 6 @@ -1165,15 +1175,21 @@ ifloat: 1 Function: "exp_downward": double: 1 +float: 1 idouble: 1 +ifloat: 1 Function: "exp_towardzero": double: 1 +float: 1 idouble: 1 +ifloat: 1 Function: "exp_upward": double: 1 +float: 1 idouble: 1 +ifloat: 1 Function: "expm1": double: 1 @@ -1247,9 +1263,9 @@ ifloat: 2 Function: "j0_downward": double: 2 -float: 3 +float: 4 idouble: 2 -ifloat: 3 +ifloat: 4 Function: "j0_towardzero": double: 3 @@ -1271,9 +1287,9 @@ ifloat: 2 Function: "j1_downward": double: 3 -float: 2 +float: 3 idouble: 3 -ifloat: 2 +ifloat: 3 Function: "j1_towardzero": double: 3 @@ -1426,29 +1442,9 @@ idouble: 1 ifloat: 2 Function: "pow": +double: 1 float: 1 -ifloat: 1 - -Function: "pow10": -double: 2 -idouble: 2 - -Function: "pow10_downward": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "pow10_towardzero": -double: 2 -float: 1 -idouble: 2 -ifloat: 1 - -Function: "pow10_upward": -double: 2 -float: 1 -idouble: 2 +idouble: 1 ifloat: 1 Function: "pow_downward": @@ -1470,7 +1466,9 @@ idouble: 1 ifloat: 1 Function: "sin": +double: 1 float: 1 +idouble: 1 ifloat: 1 Function: "sin_downward": @@ -1492,7 +1490,9 @@ idouble: 1 ifloat: 2 Function: "sincos": +double: 1 float: 1 +idouble: 1 ifloat: 1 Function: "sincos_downward": @@ -1615,9 +1615,9 @@ ifloat: 1 Function: "y0_downward": double: 3 -float: 2 +float: 4 idouble: 3 -ifloat: 2 +ifloat: 4 Function: "y0_towardzero": double: 3 @@ -1627,9 +1627,9 @@ ifloat: 3 Function: "y0_upward": double: 3 -float: 4 +float: 5 idouble: 3 -ifloat: 4 +ifloat: 5 Function: "y1": double: 3 @@ -1657,15 +1657,15 @@ ifloat: 2 Function: "yn": double: 3 -float: 2 +float: 3 idouble: 3 -ifloat: 2 +ifloat: 3 Function: "yn_downward": double: 3 -float: 2 +float: 4 idouble: 3 -ifloat: 2 +ifloat: 4 Function: "yn_towardzero": double: 3 @@ -1675,8 +1675,8 @@ ifloat: 3 Function: "yn_upward": double: 4 -float: 4 +float: 5 idouble: 4 -ifloat: 4 +ifloat: 5 # end of automatic generation diff --git a/sysdeps/mips/mips32/libm-test-ulps-name b/sysdeps/mips/mips32/libm-test-ulps-name new file mode 100644 index 0000000000..d0622692ce --- /dev/null +++ b/sysdeps/mips/mips32/libm-test-ulps-name @@ -0,0 +1 @@ +MIPS 32-bit diff --git a/sysdeps/mips/mips32/nofpu/Implies b/sysdeps/mips/mips32/nofpu/Implies new file mode 100644 index 0000000000..abcbadb25f --- /dev/null +++ b/sysdeps/mips/mips32/nofpu/Implies @@ -0,0 +1 @@ +ieee754/soft-fp diff --git a/sysdeps/mips/mips32/sfp-machine.h b/sysdeps/mips/mips32/sfp-machine.h index 4e23aa8b26..5215655029 100644 --- a/sysdeps/mips/mips32/sfp-machine.h +++ b/sysdeps/mips/mips32/sfp-machine.h @@ -41,9 +41,20 @@ # define _FP_QNANNEGATEDP 1 #endif +#ifdef __mips_nan2008 +/* NaN payloads should be preserved for NAN2008. */ +# define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ + do \ + { \ + R##_s = X##_s; \ + _FP_FRAC_COPY_##wc (R, X); \ + R##_c = FP_CLS_NAN; \ + } \ + while (0) +#else /* From my experiments it seems X is chosen unless one of the NaNs is sNaN, in which case the result is NANSIGN/NANFRAC. */ -#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ +# define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ do { \ if ((_FP_FRAC_HIGH_RAW_##fs(X) | \ _FP_FRAC_HIGH_RAW_##fs(Y)) & _FP_QNANBIT_##fs) \ @@ -58,6 +69,7 @@ } \ R##_c = FP_CLS_NAN; \ } while (0) +#endif #define FP_EX_INVALID (1 << 4) #define FP_EX_DIVZERO (1 << 3) |