mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 22:10:13 +00:00
soft-fp: add macro FP_NO_EXCEPTIONS.
This commit is contained in:
parent
8399acaf7c
commit
8edc4a11cf
18
ChangeLog
18
ChangeLog
@ -1,5 +1,23 @@
|
|||||||
2013-10-12 Joseph Myers <joseph@codesourcery.com>
|
2013-10-12 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
* soft-fp/soft-fp.h [FP_NO_EXCEPTIONS] (FP_SET_EXCEPTION):
|
||||||
|
Undefine and redefine.
|
||||||
|
[FP_NO_EXCEPTIONS] (FP_CUR_EXCEPTIONS): Likewise.
|
||||||
|
[FP_NO_EXCEPTIONS] (FP_TRAPPING_EXCEPTIONS): Likewise.
|
||||||
|
[FP_NO_EXCEPTIONS] (FP_ROUNDMODE): Likewise.
|
||||||
|
* soft-fp/floatditf.c (FP_NO_EXCEPTIONS): Define macro.
|
||||||
|
(__floatditf): Don't use FP_DECL_EX or FP_HANDLE_EXCEPTIONS.
|
||||||
|
* soft-fp/floatsidf.c (FP_NO_EXCEPTIONS): Define macro.
|
||||||
|
(__floatsidf): Don't use FP_DECL_EX or FP_HANDLE_EXCEPTIONS.
|
||||||
|
* soft-fp/floatsitf.c (FP_NO_EXCEPTIONS): Define macro.
|
||||||
|
(__floatsitf): Don't use FP_DECL_EX or FP_HANDLE_EXCEPTIONS.
|
||||||
|
* soft-fp/floatunditf.c (FP_NO_EXCEPTIONS): Define macro.
|
||||||
|
(__floatunditf): Don't use FP_DECL_EX or FP_HANDLE_EXCEPTIONS.
|
||||||
|
* soft-fp/floatunsidf.c (FP_NO_EXCEPTIONS): Define macro.
|
||||||
|
(__floatunsidf): Don't use FP_DECL_EX or FP_HANDLE_EXCEPTIONS.
|
||||||
|
* soft-fp/floatunsitf.c (FP_NO_EXCEPTIONS): Define macro.
|
||||||
|
(__floatunsitf): Don't use FP_DECL_EX or FP_HANDLE_EXCEPTIONS.
|
||||||
|
|
||||||
[BZ #16032]
|
[BZ #16032]
|
||||||
* soft-fp/op-2.h (_FP_DIV_MEAT_2_udiv): Shift numerator right
|
* soft-fp/op-2.h (_FP_DIV_MEAT_2_udiv): Shift numerator right
|
||||||
without decrementing exponent if mantissa >= that for the
|
without decrementing exponent if mantissa >= that for the
|
||||||
|
@ -28,18 +28,17 @@
|
|||||||
License along with the GNU C Library; if not, see
|
License along with the GNU C Library; if not, see
|
||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#define FP_NO_EXCEPTIONS
|
||||||
#include "soft-fp.h"
|
#include "soft-fp.h"
|
||||||
#include "quad.h"
|
#include "quad.h"
|
||||||
|
|
||||||
TFtype __floatditf(DItype i)
|
TFtype __floatditf(DItype i)
|
||||||
{
|
{
|
||||||
FP_DECL_EX;
|
|
||||||
FP_DECL_Q(A);
|
FP_DECL_Q(A);
|
||||||
TFtype a;
|
TFtype a;
|
||||||
|
|
||||||
FP_FROM_INT_Q(A, i, DI_BITS, UDItype);
|
FP_FROM_INT_Q(A, i, DI_BITS, UDItype);
|
||||||
FP_PACK_RAW_Q(a, A);
|
FP_PACK_RAW_Q(a, A);
|
||||||
FP_HANDLE_EXCEPTIONS;
|
|
||||||
|
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
@ -28,18 +28,17 @@
|
|||||||
License along with the GNU C Library; if not, see
|
License along with the GNU C Library; if not, see
|
||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#define FP_NO_EXCEPTIONS
|
||||||
#include "soft-fp.h"
|
#include "soft-fp.h"
|
||||||
#include "double.h"
|
#include "double.h"
|
||||||
|
|
||||||
DFtype __floatsidf(SItype i)
|
DFtype __floatsidf(SItype i)
|
||||||
{
|
{
|
||||||
FP_DECL_EX;
|
|
||||||
FP_DECL_D(A);
|
FP_DECL_D(A);
|
||||||
DFtype a;
|
DFtype a;
|
||||||
|
|
||||||
FP_FROM_INT_D(A, i, SI_BITS, USItype);
|
FP_FROM_INT_D(A, i, SI_BITS, USItype);
|
||||||
FP_PACK_RAW_D(a, A);
|
FP_PACK_RAW_D(a, A);
|
||||||
FP_HANDLE_EXCEPTIONS;
|
|
||||||
|
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
@ -28,18 +28,17 @@
|
|||||||
License along with the GNU C Library; if not, see
|
License along with the GNU C Library; if not, see
|
||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#define FP_NO_EXCEPTIONS
|
||||||
#include "soft-fp.h"
|
#include "soft-fp.h"
|
||||||
#include "quad.h"
|
#include "quad.h"
|
||||||
|
|
||||||
TFtype __floatsitf(SItype i)
|
TFtype __floatsitf(SItype i)
|
||||||
{
|
{
|
||||||
FP_DECL_EX;
|
|
||||||
FP_DECL_Q(A);
|
FP_DECL_Q(A);
|
||||||
TFtype a;
|
TFtype a;
|
||||||
|
|
||||||
FP_FROM_INT_Q(A, i, SI_BITS, USItype);
|
FP_FROM_INT_Q(A, i, SI_BITS, USItype);
|
||||||
FP_PACK_RAW_Q(a, A);
|
FP_PACK_RAW_Q(a, A);
|
||||||
FP_HANDLE_EXCEPTIONS;
|
|
||||||
|
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
@ -28,19 +28,18 @@
|
|||||||
License along with the GNU C Library; if not, see
|
License along with the GNU C Library; if not, see
|
||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#define FP_NO_EXCEPTIONS
|
||||||
#include "soft-fp.h"
|
#include "soft-fp.h"
|
||||||
#include "quad.h"
|
#include "quad.h"
|
||||||
|
|
||||||
TFtype
|
TFtype
|
||||||
__floatunditf(UDItype i)
|
__floatunditf(UDItype i)
|
||||||
{
|
{
|
||||||
FP_DECL_EX;
|
|
||||||
FP_DECL_Q(A);
|
FP_DECL_Q(A);
|
||||||
TFtype a;
|
TFtype a;
|
||||||
|
|
||||||
FP_FROM_INT_Q(A, i, DI_BITS, UDItype);
|
FP_FROM_INT_Q(A, i, DI_BITS, UDItype);
|
||||||
FP_PACK_RAW_Q(a, A);
|
FP_PACK_RAW_Q(a, A);
|
||||||
FP_HANDLE_EXCEPTIONS;
|
|
||||||
|
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
@ -28,18 +28,17 @@
|
|||||||
License along with the GNU C Library; if not, see
|
License along with the GNU C Library; if not, see
|
||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#define FP_NO_EXCEPTIONS
|
||||||
#include "soft-fp.h"
|
#include "soft-fp.h"
|
||||||
#include "double.h"
|
#include "double.h"
|
||||||
|
|
||||||
DFtype __floatunsidf(USItype i)
|
DFtype __floatunsidf(USItype i)
|
||||||
{
|
{
|
||||||
FP_DECL_EX;
|
|
||||||
FP_DECL_D(A);
|
FP_DECL_D(A);
|
||||||
DFtype a;
|
DFtype a;
|
||||||
|
|
||||||
FP_FROM_INT_D(A, i, SI_BITS, USItype);
|
FP_FROM_INT_D(A, i, SI_BITS, USItype);
|
||||||
FP_PACK_RAW_D(a, A);
|
FP_PACK_RAW_D(a, A);
|
||||||
FP_HANDLE_EXCEPTIONS;
|
|
||||||
|
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
@ -28,19 +28,18 @@
|
|||||||
License along with the GNU C Library; if not, see
|
License along with the GNU C Library; if not, see
|
||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#define FP_NO_EXCEPTIONS
|
||||||
#include "soft-fp.h"
|
#include "soft-fp.h"
|
||||||
#include "quad.h"
|
#include "quad.h"
|
||||||
|
|
||||||
TFtype
|
TFtype
|
||||||
__floatunsitf(USItype i)
|
__floatunsitf(USItype i)
|
||||||
{
|
{
|
||||||
FP_DECL_EX;
|
|
||||||
FP_DECL_Q(A);
|
FP_DECL_Q(A);
|
||||||
TFtype a;
|
TFtype a;
|
||||||
|
|
||||||
FP_FROM_INT_Q(A, i, SI_BITS, USItype);
|
FP_FROM_INT_Q(A, i, SI_BITS, USItype);
|
||||||
FP_PACK_RAW_Q(a, A);
|
FP_PACK_RAW_Q(a, A);
|
||||||
FP_HANDLE_EXCEPTIONS;
|
|
||||||
|
|
||||||
return a;
|
return a;
|
||||||
}
|
}
|
||||||
|
@ -142,6 +142,30 @@
|
|||||||
#define FP_TRAPPING_EXCEPTIONS 0
|
#define FP_TRAPPING_EXCEPTIONS 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* A file using soft-fp may define FP_NO_EXCEPTIONS before including
|
||||||
|
soft-fp.h to indicate that, although a macro used there could raise
|
||||||
|
exceptions, or do rounding and potentially thereby raise
|
||||||
|
exceptions, for some arguments, for the particular arguments used
|
||||||
|
in that file no exceptions or rounding can occur. Such a file
|
||||||
|
should not itself use macros relating to handling exceptions and
|
||||||
|
rounding modes; this is only for indirect uses (in particular, in
|
||||||
|
_FP_FROM_INT and the macros it calls). */
|
||||||
|
#ifdef FP_NO_EXCEPTIONS
|
||||||
|
|
||||||
|
#undef FP_SET_EXCEPTION
|
||||||
|
#define FP_SET_EXCEPTION(ex) do {} while (0)
|
||||||
|
|
||||||
|
#undef FP_CUR_EXCEPTIONS
|
||||||
|
#define FP_CUR_EXCEPTIONS 0
|
||||||
|
|
||||||
|
#undef FP_TRAPPING_EXCEPTIONS
|
||||||
|
#define FP_TRAPPING_EXCEPTIONS 0
|
||||||
|
|
||||||
|
#undef FP_ROUNDMODE
|
||||||
|
#define FP_ROUNDMODE FP_RND_ZERO
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#define _FP_ROUND_NEAREST(wc, X) \
|
#define _FP_ROUND_NEAREST(wc, X) \
|
||||||
do { \
|
do { \
|
||||||
if ((_FP_FRAC_LOW_##wc(X) & 15) != _FP_WORK_ROUND) \
|
if ((_FP_FRAC_LOW_##wc(X) & 15) != _FP_WORK_ROUND) \
|
||||||
|
Loading…
Reference in New Issue
Block a user