pkgsrc-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkg/34571: TME sun3 emulator doesn't consider floating point infinities t...
The following reply was made to PR pkg/34571; it has been noted by GNATS.
From: SigmFSK%aol.com@localhost
To: gnats-bugs%NetBSD.org@localhost
Cc:
Subject: Re: pkg/34571: TME sun3 emulator doesn't consider floating point
infinities t...
Date: Sun, 1 Oct 2006 20:12:13 EDT
I follow with the patches in "diff -u" format and a description of where to
apply them. This includes the one-line fix for the 34616 fneg problem.
go to ieee754 directory, make following patch:
--- ieee754-ops-auto.sh.orig 2006-10-01 08:30:52.000000000 -0400
+++ ieee754-ops-auto.sh 2006-10-01 08:31:01.000000000 -0400
@@ -126,7 +126,7 @@
# generate the operations:
#
- for name in add sub mul div \
+ for name in add cmp sub mul div \
rem sqrt abs neg move \
rint \
cos acos cosh \
@@ -144,7 +144,7 @@
#
monadic=true
case "${name}" in
- add | sub | mul | div | rem | pow | scale)
+ add | cmp | sub | mul | div | rem | pow | scale)
monadic=false
;;
esac
@@ -243,13 +243,14 @@
func_softfloat="${name}"
;;
*-add) op_builtin='+' ;;
+ *-cmp) op_builtin='-' ;;
*-sub) op_builtin='-' ;;
*-mul) op_builtin='*' ;;
*-div) op_builtin='/' ;;
*-sqrt) func_libm=sqrt ;;
partial-abs | unknown-abs) func_libm=fabs ;;
strict-neg) op0=0 ; func_softfloat=sub ; op1=src0 ;;
- partial-neg | unknown-neg) op0=0 ; op_builtin='-'; op1=src0 ;;
+ partial-neg | unknown-neg) op0=-1.0 ; op_builtin='*'; op1=src0 ;;
strict-move) func_softfloat=add ; op1=0 ;;
*-move) type="${level_stricter}-move" ; src0_buffer=false ;;
strict-rint) func_softfloat=round_to_int ;;
notice that above difference includes the one line fix for 34616 / fneg
running make produces the following difference
--- ieee754-ops-auto.h.orig 2006-10-01 08:30:45.000000000 -0400
+++ ieee754-ops-auto.h 2006-10-01 08:31:20.000000000 -0400
@@ -11,6 +11,9 @@
/* this does a single-precision add: */
void (*tme_ieee754_ops_single_add) _TME_P((struct tme_ieee754_ctl *,
_tme_const struct tme_float *, _tme_const struct tme_float *, struct
tme_float *));
+ /* this does a single-precision cmp: */
+ void (*tme_ieee754_ops_single_cmp) _TME_P((struct tme_ieee754_ctl *,
_tme_const struct tme_float *, _tme_const struct tme_float *, struct
tme_float
*));
+
/* this does a single-precision sub: */
void (*tme_ieee754_ops_single_sub) _TME_P((struct tme_ieee754_ctl *,
_tme_const struct tme_float *, _tme_const struct tme_float *, struct
tme_float *));
@@ -113,6 +116,9 @@
/* this does a double-precision add: */
void (*tme_ieee754_ops_double_add) _TME_P((struct tme_ieee754_ctl *,
_tme_const struct tme_float *, _tme_const struct tme_float *, struct
tme_float *));
+ /* this does a double-precision cmp: */
+ void (*tme_ieee754_ops_double_cmp) _TME_P((struct tme_ieee754_ctl *,
_tme_const struct tme_float *, _tme_const struct tme_float *, struct
tme_float
*));
+
/* this does a double-precision sub: */
void (*tme_ieee754_ops_double_sub) _TME_P((struct tme_ieee754_ctl *,
_tme_const struct tme_float *, _tme_const struct tme_float *, struct
tme_float *));
@@ -215,6 +221,9 @@
/* this does a extended80-precision add: */
void (*tme_ieee754_ops_extended80_add) _TME_P((struct tme_ieee754_ctl *,
_tme_const struct tme_float *, _tme_const struct tme_float *, struct
tme_float
*));
+ /* this does a extended80-precision cmp: */
+ void (*tme_ieee754_ops_extended80_cmp) _TME_P((struct tme_ieee754_ctl *,
_tme_const struct tme_float *, _tme_const struct tme_float *, struct
tme_float *));
+
/* this does a extended80-precision sub: */
void (*tme_ieee754_ops_extended80_sub) _TME_P((struct tme_ieee754_ctl *,
_tme_const struct tme_float *, _tme_const struct tme_float *, struct
tme_float
*));
@@ -317,6 +326,9 @@
/* this does a quad-precision add: */
void (*tme_ieee754_ops_quad_add) _TME_P((struct tme_ieee754_ctl *,
_tme_const struct tme_float *, _tme_const struct tme_float *, struct
tme_float *));
+ /* this does a quad-precision cmp: */
+ void (*tme_ieee754_ops_quad_cmp) _TME_P((struct tme_ieee754_ctl *,
_tme_const struct tme_float *, _tme_const struct tme_float *, struct
tme_float *));
+
/* this does a quad-precision sub: */
void (*tme_ieee754_ops_quad_sub) _TME_P((struct tme_ieee754_ctl *,
_tme_const struct tme_float *, _tme_const struct tme_float *, struct
tme_float *));
and make produces the following difference
--- ieee754-ops-auto.c.orig 2006-10-01 08:30:39.000000000 -0400
+++ ieee754-ops-auto.c.orig2 2006-10-01 08:32:20.000000000 -0400
@@ -39,6 +39,25 @@
}
}
+/* this does a strict compliance single-precision cmp: */
+static void
+_tme_ieee754_strict_single_cmp(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
+{
+ int exceptions;
+
+ /* assume that this operation raises no exceptions: */
+ exceptions = 0;
+
+ /* the operation: */
+ tme_ieee754_single_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN,
tme_ieee754_single_value_builtin_get(src0) -
tme_ieee754_single_value_builtin_get(src1));
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
+
+ /* signal any exceptions: */
+ if (exceptions != 0) {
+ (*ieee754_ctl->tme_ieee754_ctl_exception)(ieee754_ctl, exceptions);
+ }
+}
+
/* this does a strict compliance single-precision sub: */
static void
_tme_ieee754_strict_single_sub(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
@@ -553,6 +572,25 @@
}
}
+/* this does a strict compliance double-precision cmp: */
+static void
+_tme_ieee754_strict_double_cmp(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
+{
+ int exceptions;
+
+ /* assume that this operation raises no exceptions: */
+ exceptions = 0;
+
+ /* the operation: */
+ tme_ieee754_double_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN,
tme_ieee754_double_value_builtin_get(src0) -
tme_ieee754_double_value_builtin_get(src1));
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
+
+ /* signal any exceptions: */
+ if (exceptions != 0) {
+ (*ieee754_ctl->tme_ieee754_ctl_exception)(ieee754_ctl, exceptions);
+ }
+}
+
/* this does a strict compliance double-precision sub: */
static void
_tme_ieee754_strict_double_sub(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
@@ -1071,6 +1109,25 @@
#endif /* defined(TME_HAVE_INT64_T) */
+/* this does a strict compliance extended80-precision cmp: */
+static void
+_tme_ieee754_strict_extended80_cmp(struct tme_ieee754_ctl *ieee754_ctl,
const struct tme_float *src0, const struct tme_float *src1, struct tme_float
*dst)
+{
+ int exceptions;
+
+ /* assume that this operation raises no exceptions: */
+ exceptions = 0;
+
+ /* the operation: */
+ tme_ieee754_extended80_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN,
tme_ieee754_extended80_value_builtin_get(src0) -
tme_ieee754_extended80_value_builtin_get(src1));
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
+
+ /* signal any exceptions: */
+ if (exceptions != 0) {
+ (*ieee754_ctl->tme_ieee754_ctl_exception)(ieee754_ctl, exceptions);
+ }
+}
+
#if defined(TME_HAVE_INT64_T)
/* this does a strict compliance extended80-precision sub: */
@@ -1633,6 +1690,25 @@
#endif /* defined(TME_HAVE_INT64_T) */
+/* this does a strict compliance quad-precision cmp: */
+static void
+_tme_ieee754_strict_quad_cmp(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
+{
+ int exceptions;
+
+ /* assume that this operation raises no exceptions: */
+ exceptions = 0;
+
+ /* the operation: */
+ tme_ieee754_quad_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN,
tme_ieee754_quad_value_builtin_get(src0) -
tme_ieee754_quad_value_builtin_get(src1));
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
+
+ /* signal any exceptions: */
+ if (exceptions != 0) {
+ (*ieee754_ctl->tme_ieee754_ctl_exception)(ieee754_ctl, exceptions);
+ }
+}
+
#if defined(TME_HAVE_INT64_T)
/* this does a strict compliance quad-precision sub: */
@@ -2166,6 +2242,9 @@
/* this does a strict compliance single-precision add: */
_tme_ieee754_strict_single_add,
+ /* this does a strict compliance single-precision cmp: */
+ _tme_ieee754_strict_single_cmp,
+
/* this does a strict compliance single-precision sub: */
_tme_ieee754_strict_single_sub,
@@ -2268,6 +2347,9 @@
/* this does a strict compliance double-precision add: */
_tme_ieee754_strict_double_add,
+ /* this does a strict compliance double-precision cmp: */
+ _tme_ieee754_strict_double_cmp,
+
/* this does a strict compliance double-precision sub: */
_tme_ieee754_strict_double_sub,
@@ -2374,6 +2456,9 @@
NULL,
#endif /* !(defined(TME_HAVE_INT64_T)) */
+ /* this does a strict compliance extended80-precision cmp: */
+ _tme_ieee754_strict_extended80_cmp,
+
/* this does a strict compliance extended80-precision sub: */
#if (defined(TME_HAVE_INT64_T))
_tme_ieee754_strict_extended80_sub,
@@ -2524,6 +2609,9 @@
NULL,
#endif /* !(defined(TME_HAVE_INT64_T)) */
+ /* this does a strict compliance quad-precision cmp: */
+ _tme_ieee754_strict_quad_cmp,
+
/* this does a strict compliance quad-precision sub: */
#if (defined(TME_HAVE_INT64_T))
_tme_ieee754_strict_quad_sub,
@@ -2705,6 +2793,41 @@
#if (TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_SINGLE)
+/* this does a partial compliance single-precision cmp: */
+static void
+_tme_ieee754_partial_single_cmp(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
+{
+ int exceptions;
+
+ /* check for a NaN operand: */
+ if (__tme_predict_false(tme_ieee754_single_check_nan_dyadic(ieee754_ctl,
src0, src1, dst))) {
+ return;
+ }
+
+ /* enter native floating-point operation: */
+ tme_float_enter(ieee754_ctl->tme_ieee754_ctl_rounding_mode,
tme_ieee754_exception_float, ieee754_ctl);
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = tme_float_leave;
+
+ /* assume that this operation raises no exceptions: */
+ exceptions = 0;
+
+ /* the operation: */
+ tme_ieee754_single_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN,
tme_ieee754_single_value_builtin_get(src0) -
tme_ieee754_single_value_builtin_get(src1));
+
+ /* leave native floating-point operation: */
+ exceptions |= tme_float_leave();
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
+
+ /* signal any exceptions: */
+ if (exceptions != 0) {
+ (*ieee754_ctl->tme_ieee754_ctl_exception)(ieee754_ctl, exceptions);
+ }
+}
+
+#endif /* (TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_SINGLE) */
+
+#if (TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_SINGLE)
+
/* this does a partial compliance single-precision sub: */
static void
_tme_ieee754_partial_single_sub(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
@@ -2907,7 +3030,7 @@
exceptions = 0;
/* the operation: */
- tme_ieee754_single_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN, 0 -
tme_ieee754_single_value_builtin_get(src0));
+ tme_ieee754_single_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN, -1.0 *
tme_ieee754_single_value_builtin_get(src0));
/* leave native floating-point operation: */
exceptions |= tme_float_leave();
@@ -3188,6 +3311,41 @@
#if (TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_DOUBLE)
+/* this does a partial compliance double-precision cmp: */
+static void
+_tme_ieee754_partial_double_cmp(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
+{
+ int exceptions;
+
+ /* check for a NaN operand: */
+ if (__tme_predict_false(tme_ieee754_double_check_nan_dyadic(ieee754_ctl,
src0, src1, dst))) {
+ return;
+ }
+
+ /* enter native floating-point operation: */
+ tme_float_enter(ieee754_ctl->tme_ieee754_ctl_rounding_mode,
tme_ieee754_exception_float, ieee754_ctl);
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = tme_float_leave;
+
+ /* assume that this operation raises no exceptions: */
+ exceptions = 0;
+
+ /* the operation: */
+ tme_ieee754_double_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN,
tme_ieee754_double_value_builtin_get(src0) -
tme_ieee754_double_value_builtin_get(src1));
+
+ /* leave native floating-point operation: */
+ exceptions |= tme_float_leave();
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
+
+ /* signal any exceptions: */
+ if (exceptions != 0) {
+ (*ieee754_ctl->tme_ieee754_ctl_exception)(ieee754_ctl, exceptions);
+ }
+}
+
+#endif /* (TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_DOUBLE) */
+
+#if (TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_DOUBLE)
+
/* this does a partial compliance double-precision sub: */
static void
_tme_ieee754_partial_double_sub(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
@@ -3390,7 +3548,7 @@
exceptions = 0;
/* the operation: */
- tme_ieee754_double_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN, 0 -
tme_ieee754_double_value_builtin_get(src0));
+ tme_ieee754_double_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN, -1.0 *
tme_ieee754_double_value_builtin_get(src0));
/* leave native floating-point operation: */
exceptions |= tme_float_leave();
@@ -3671,6 +3829,41 @@
#if (TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_EXTENDED80)
+/* this does a partial compliance extended80-precision cmp: */
+static void
+_tme_ieee754_partial_extended80_cmp(struct tme_ieee754_ctl *ieee754_ctl,
const struct tme_float *src0, const struct tme_float *src1, struct tme_float
*dst)
+{
+ int exceptions;
+
+ /* check for a NaN operand: */
+ if
(__tme_predict_false(tme_ieee754_extended80_check_nan_dyadic(ieee754_ctl,
src0, src1, dst))) {
+ return;
+ }
+
+ /* enter native floating-point operation: */
+ tme_float_enter(ieee754_ctl->tme_ieee754_ctl_rounding_mode,
tme_ieee754_exception_float, ieee754_ctl);
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = tme_float_leave;
+
+ /* assume that this operation raises no exceptions: */
+ exceptions = 0;
+
+ /* the operation: */
+ tme_ieee754_extended80_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN,
tme_ieee754_extended80_value_builtin_get(src0) -
tme_ieee754_extended80_value_builtin_get(src1));
+
+ /* leave native floating-point operation: */
+ exceptions |= tme_float_leave();
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
+
+ /* signal any exceptions: */
+ if (exceptions != 0) {
+ (*ieee754_ctl->tme_ieee754_ctl_exception)(ieee754_ctl, exceptions);
+ }
+}
+
+#endif /* (TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_EXTENDED80) */
+
+#if (TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_EXTENDED80)
+
/* this does a partial compliance extended80-precision sub: */
static void
_tme_ieee754_partial_extended80_sub(struct tme_ieee754_ctl *ieee754_ctl,
const struct tme_float *src0, const struct tme_float *src1, struct tme_float
*dst)
@@ -3873,7 +4066,7 @@
exceptions = 0;
/* the operation: */
- tme_ieee754_extended80_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN, 0 -
tme_ieee754_extended80_value_builtin_get(src0));
+ tme_ieee754_extended80_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN, -1.0 *
tme_ieee754_extended80_value_builtin_get(src0));
/* leave native floating-point operation: */
exceptions |= tme_float_leave();
@@ -4154,6 +4347,41 @@
#if (TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN == TME_FLOAT_FORMAT_IEEE754_QUAD)
+/* this does a partial compliance quad-precision cmp: */
+static void
+_tme_ieee754_partial_quad_cmp(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
+{
+ int exceptions;
+
+ /* check for a NaN operand: */
+ if (__tme_predict_false(tme_ieee754_quad_check_nan_dyadic(ieee754_ctl,
src0, src1, dst))) {
+ return;
+ }
+
+ /* enter native floating-point operation: */
+ tme_float_enter(ieee754_ctl->tme_ieee754_ctl_rounding_mode,
tme_ieee754_exception_float, ieee754_ctl);
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = tme_float_leave;
+
+ /* assume that this operation raises no exceptions: */
+ exceptions = 0;
+
+ /* the operation: */
+ tme_ieee754_quad_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN,
tme_ieee754_quad_value_builtin_get(src0) -
tme_ieee754_quad_value_builtin_get(src1));
+
+ /* leave native floating-point operation: */
+ exceptions |= tme_float_leave();
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
+
+ /* signal any exceptions: */
+ if (exceptions != 0) {
+ (*ieee754_ctl->tme_ieee754_ctl_exception)(ieee754_ctl, exceptions);
+ }
+}
+
+#endif /* (TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_QUAD) */
+
+#if (TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN == TME_FLOAT_FORMAT_IEEE754_QUAD)
+
/* this does a partial compliance quad-precision sub: */
static void
_tme_ieee754_partial_quad_sub(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
@@ -4356,7 +4584,7 @@
exceptions = 0;
/* the operation: */
- tme_ieee754_quad_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN, 0 -
tme_ieee754_quad_value_builtin_get(src0));
+ tme_ieee754_quad_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN, -1.0 *
tme_ieee754_quad_value_builtin_get(src0));
/* leave native floating-point operation: */
exceptions |= tme_float_leave();
@@ -4613,6 +4841,13 @@
_tme_ieee754_strict_single_add,
#endif /* !((TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_SINGLE)) */
+ /* this does a partial compliance single-precision cmp: */
+#if ((TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_SINGLE))
+ _tme_ieee754_partial_single_cmp,
+#else /* !((TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_SINGLE)) */
+ _tme_ieee754_strict_single_cmp,
+#endif /* !((TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_SINGLE)) */
+
/* this does a partial compliance single-precision sub: */
#if ((TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_SINGLE))
_tme_ieee754_partial_single_sub,
@@ -4767,6 +5002,13 @@
_tme_ieee754_strict_double_add,
#endif /* !((TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_DOUBLE)) */
+ /* this does a partial compliance double-precision cmp: */
+#if ((TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_DOUBLE))
+ _tme_ieee754_partial_double_cmp,
+#else /* !((TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_DOUBLE)) */
+ _tme_ieee754_strict_double_cmp,
+#endif /* !((TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_DOUBLE)) */
+
/* this does a partial compliance double-precision sub: */
#if ((TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_DOUBLE))
_tme_ieee754_partial_double_sub,
@@ -4925,6 +5167,13 @@
#endif /* !(defined(TME_HAVE_INT64_T)) */
#endif /* !((TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_EXTENDED80)) */
+ /* this does a partial compliance extended80-precision cmp: */
+#if ((TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_EXTENDED80))
+ _tme_ieee754_partial_extended80_cmp,
+#else /* !((TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_EXTENDED80)) */
+ _tme_ieee754_strict_extended80_cmp,
+#endif /* !((TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_EXTENDED80)) */
+
/* this does a partial compliance extended80-precision sub: */
#if ((TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_EXTENDED80))
_tme_ieee754_partial_extended80_sub,
@@ -5127,6 +5376,13 @@
#endif /* !(defined(TME_HAVE_INT64_T)) */
#endif /* !((TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_QUAD)) */
+ /* this does a partial compliance quad-precision cmp: */
+#if ((TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_QUAD))
+ _tme_ieee754_partial_quad_cmp,
+#else /* !((TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_QUAD)) */
+ _tme_ieee754_strict_quad_cmp,
+#endif /* !((TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_QUAD)) */
+
/* this does a partial compliance quad-precision sub: */
#if ((TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN ==
TME_FLOAT_FORMAT_IEEE754_QUAD))
_tme_ieee754_partial_quad_sub,
@@ -5338,6 +5594,25 @@
}
}
+/* this does a unknown compliance single-precision cmp: */
+static void
+_tme_ieee754_unknown_single_cmp(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
+{
+ int exceptions;
+
+ /* assume that this operation raises no exceptions: */
+ exceptions = 0;
+
+ /* the operation: */
+ tme_ieee754_single_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN,
tme_ieee754_single_value_builtin_get(src0) -
tme_ieee754_single_value_builtin_get(src1));
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
+
+ /* signal any exceptions: */
+ if (exceptions != 0) {
+ (*ieee754_ctl->tme_ieee754_ctl_exception)(ieee754_ctl, exceptions);
+ }
+}
+
/* this does a unknown compliance single-precision sub: */
static void
_tme_ieee754_unknown_single_sub(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
@@ -5451,7 +5726,7 @@
exceptions = 0;
/* the operation: */
- tme_ieee754_single_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN, 0 -
tme_ieee754_single_value_builtin_get(src0));
+ tme_ieee754_single_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN, -1.0 *
tme_ieee754_single_value_builtin_get(src0));
ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
/* signal any exceptions: */
@@ -5613,6 +5888,25 @@
}
}
+/* this does a unknown compliance double-precision cmp: */
+static void
+_tme_ieee754_unknown_double_cmp(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
+{
+ int exceptions;
+
+ /* assume that this operation raises no exceptions: */
+ exceptions = 0;
+
+ /* the operation: */
+ tme_ieee754_double_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN,
tme_ieee754_double_value_builtin_get(src0) -
tme_ieee754_double_value_builtin_get(src1));
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
+
+ /* signal any exceptions: */
+ if (exceptions != 0) {
+ (*ieee754_ctl->tme_ieee754_ctl_exception)(ieee754_ctl, exceptions);
+ }
+}
+
/* this does a unknown compliance double-precision sub: */
static void
_tme_ieee754_unknown_double_sub(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
@@ -5726,7 +6020,7 @@
exceptions = 0;
/* the operation: */
- tme_ieee754_double_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN, 0 -
tme_ieee754_double_value_builtin_get(src0));
+ tme_ieee754_double_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN, -1.0 *
tme_ieee754_double_value_builtin_get(src0));
ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
/* signal any exceptions: */
@@ -5888,6 +6182,25 @@
}
}
+/* this does a unknown compliance extended80-precision cmp: */
+static void
+_tme_ieee754_unknown_extended80_cmp(struct tme_ieee754_ctl *ieee754_ctl,
const struct tme_float *src0, const struct tme_float *src1, struct tme_float
*dst)
+{
+ int exceptions;
+
+ /* assume that this operation raises no exceptions: */
+ exceptions = 0;
+
+ /* the operation: */
+ tme_ieee754_extended80_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN,
tme_ieee754_extended80_value_builtin_get(src0) -
tme_ieee754_extended80_value_builtin_get(src1));
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
+
+ /* signal any exceptions: */
+ if (exceptions != 0) {
+ (*ieee754_ctl->tme_ieee754_ctl_exception)(ieee754_ctl, exceptions);
+ }
+}
+
/* this does a unknown compliance extended80-precision sub: */
static void
_tme_ieee754_unknown_extended80_sub(struct tme_ieee754_ctl *ieee754_ctl,
const struct tme_float *src0, const struct tme_float *src1, struct tme_float
*dst)
@@ -6001,7 +6314,7 @@
exceptions = 0;
/* the operation: */
- tme_ieee754_extended80_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN, 0 -
tme_ieee754_extended80_value_builtin_get(src0));
+ tme_ieee754_extended80_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN, -1.0 *
tme_ieee754_extended80_value_builtin_get(src0));
ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
/* signal any exceptions: */
@@ -6163,6 +6476,25 @@
}
}
+/* this does a unknown compliance quad-precision cmp: */
+static void
+_tme_ieee754_unknown_quad_cmp(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
+{
+ int exceptions;
+
+ /* assume that this operation raises no exceptions: */
+ exceptions = 0;
+
+ /* the operation: */
+ tme_ieee754_quad_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN,
tme_ieee754_quad_value_builtin_get(src0) -
tme_ieee754_quad_value_builtin_get(src1));
+ ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
+
+ /* signal any exceptions: */
+ if (exceptions != 0) {
+ (*ieee754_ctl->tme_ieee754_ctl_exception)(ieee754_ctl, exceptions);
+ }
+}
+
/* this does a unknown compliance quad-precision sub: */
static void
_tme_ieee754_unknown_quad_sub(struct tme_ieee754_ctl *ieee754_ctl, const
struct tme_float *src0, const struct tme_float *src1, struct tme_float *dst)
@@ -6276,7 +6608,7 @@
exceptions = 0;
/* the operation: */
- tme_ieee754_quad_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN, 0 -
tme_ieee754_quad_value_builtin_get(src0));
+ tme_ieee754_quad_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN, -1.0 *
tme_ieee754_quad_value_builtin_get(src0));
ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
/* signal any exceptions: */
@@ -6428,6 +6760,9 @@
/* this does a unknown compliance single-precision add: */
_tme_ieee754_unknown_single_add,
+ /* this does a unknown compliance single-precision cmp: */
+ _tme_ieee754_unknown_single_cmp,
+
/* this does a unknown compliance single-precision sub: */
_tme_ieee754_unknown_single_sub,
@@ -6530,6 +6865,9 @@
/* this does a unknown compliance double-precision add: */
_tme_ieee754_unknown_double_add,
+ /* this does a unknown compliance double-precision cmp: */
+ _tme_ieee754_unknown_double_cmp,
+
/* this does a unknown compliance double-precision sub: */
_tme_ieee754_unknown_double_sub,
@@ -6632,6 +6970,9 @@
/* this does a unknown compliance extended80-precision add: */
_tme_ieee754_unknown_extended80_add,
+ /* this does a unknown compliance extended80-precision cmp: */
+ _tme_ieee754_unknown_extended80_cmp,
+
/* this does a unknown compliance extended80-precision sub: */
_tme_ieee754_unknown_extended80_sub,
@@ -6754,6 +7095,9 @@
/* this does a unknown compliance quad-precision add: */
_tme_ieee754_unknown_quad_add,
+ /* this does a unknown compliance quad-precision cmp: */
+ _tme_ieee754_unknown_quad_cmp,
+
/* this does a unknown compliance quad-precision sub: */
_tme_ieee754_unknown_quad_sub,
then I modified the auto-generated file as follows:
--- ieee754-ops-auto.c.orig2 2006-10-01 08:32:20.000000000 -0400
+++ ieee754-ops-auto.c 2006-10-01 08:32:29.000000000 -0400
@@ -48,6 +48,13 @@
/* assume that this operation raises no exceptions: */
exceptions = 0;
+ if (tme_float_is_inf(src0, TME_FLOAT_FORMAT_IEEE754_SINGLE ) &
+ tme_float_is_inf(src1, TME_FLOAT_FORMAT_IEEE754_SINGLE) &
+ (tme_float_is_negative(src0, TME_FLOAT_FORMAT_IEEE754_SINGLE) ==
+ tme_float_is_negative(src1, TME_FLOAT_FORMAT_IEEE754_SINGLE)))
+ tme_ieee754_single_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN, 0.0);
+else
+
/* the operation: */
tme_ieee754_single_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN,
tme_ieee754_single_value_builtin_get(src0) -
tme_ieee754_single_value_builtin_get(src1));
ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
@@ -581,6 +588,13 @@
/* assume that this operation raises no exceptions: */
exceptions = 0;
+ if (tme_float_is_inf(src0, TME_FLOAT_FORMAT_IEEE754_DOUBLE ) &
+ tme_float_is_inf(src1, TME_FLOAT_FORMAT_IEEE754_DOUBLE) &
+ (tme_float_is_negative(src0, TME_FLOAT_FORMAT_IEEE754_DOUBLE) ==
+ tme_float_is_negative(src1, TME_FLOAT_FORMAT_IEEE754_DOUBLE)))
+ tme_ieee754_double_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN, 0.0);
+else
+
/* the operation: */
tme_ieee754_double_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN,
tme_ieee754_double_value_builtin_get(src0) -
tme_ieee754_double_value_builtin_get(src1));
ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
@@ -1118,6 +1132,13 @@
/* assume that this operation raises no exceptions: */
exceptions = 0;
+ if (tme_float_is_inf(src0, TME_FLOAT_FORMAT_IEEE754_EXTENDED80 ) &
+ tme_float_is_inf(src1, TME_FLOAT_FORMAT_IEEE754_EXTENDED80) &
+ (tme_float_is_negative(src0, TME_FLOAT_FORMAT_IEEE754_EXTENDED80) ==
+ tme_float_is_negative(src1, TME_FLOAT_FORMAT_IEEE754_EXTENDED80)))
+ tme_ieee754_extended80_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN, 0.0);
+else
+
/* the operation: */
tme_ieee754_extended80_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN,
tme_ieee754_extended80_value_builtin_get(src0) -
tme_ieee754_extended80_value_builtin_get(src1));
ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
@@ -1699,6 +1720,13 @@
/* assume that this operation raises no exceptions: */
exceptions = 0;
+ if (tme_float_is_inf(src0, TME_FLOAT_FORMAT_IEEE754_QUAD ) &
+ tme_float_is_inf(src1, TME_FLOAT_FORMAT_IEEE754_QUAD) &
+ (tme_float_is_negative(src0, TME_FLOAT_FORMAT_IEEE754_QUAD) ==
+ tme_float_is_negative(src1, TME_FLOAT_FORMAT_IEEE754_QUAD)))
+ tme_ieee754_quad_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN, 0.0);
+else
+
/* the operation: */
tme_ieee754_quad_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN,
tme_ieee754_quad_value_builtin_get(src0) -
tme_ieee754_quad_value_builtin_get(src1));
ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
@@ -2811,6 +2839,13 @@
/* assume that this operation raises no exceptions: */
exceptions = 0;
+ if (tme_float_is_inf(src0, TME_FLOAT_FORMAT_IEEE754_SINGLE ) &
+ tme_float_is_inf(src1, TME_FLOAT_FORMAT_IEEE754_SINGLE) &
+ (tme_float_is_negative(src0, TME_FLOAT_FORMAT_IEEE754_SINGLE) ==
+ tme_float_is_negative(src1, TME_FLOAT_FORMAT_IEEE754_SINGLE)))
+ tme_ieee754_single_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN, 0.0);
+
+else
/* the operation: */
tme_ieee754_single_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN,
tme_ieee754_single_value_builtin_get(src0) -
tme_ieee754_single_value_builtin_get(src1));
@@ -3329,6 +3364,13 @@
/* assume that this operation raises no exceptions: */
exceptions = 0;
+ if (tme_float_is_inf(src0, TME_FLOAT_FORMAT_IEEE754_DOUBLE ) &
+ tme_float_is_inf(src1, TME_FLOAT_FORMAT_IEEE754_DOUBLE) &
+ (tme_float_is_negative(src0, TME_FLOAT_FORMAT_IEEE754_DOUBLE) ==
+ tme_float_is_negative(src1, TME_FLOAT_FORMAT_IEEE754_DOUBLE)))
+ tme_ieee754_double_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN, 0.0);
+else
+
/* the operation: */
tme_ieee754_double_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN,
tme_ieee754_double_value_builtin_get(src0) -
tme_ieee754_double_value_builtin_get(src1));
@@ -3847,6 +3889,13 @@
/* assume that this operation raises no exceptions: */
exceptions = 0;
+ if (tme_float_is_inf(src0, TME_FLOAT_FORMAT_IEEE754_EXTENDED80 ) &
+ tme_float_is_inf(src1, TME_FLOAT_FORMAT_IEEE754_EXTENDED80) &
+ (tme_float_is_negative(src0, TME_FLOAT_FORMAT_IEEE754_EXTENDED80) ==
+ tme_float_is_negative(src1, TME_FLOAT_FORMAT_IEEE754_EXTENDED80)))
+ tme_ieee754_extended80_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN, 0.0);
+else
+
/* the operation: */
tme_ieee754_extended80_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN,
tme_ieee754_extended80_value_builtin_get(src0) -
tme_ieee754_extended80_value_builtin_get(src1));
@@ -4365,6 +4414,13 @@
/* assume that this operation raises no exceptions: */
exceptions = 0;
+ if (tme_float_is_inf(src0, TME_FLOAT_FORMAT_IEEE754_QUAD ) &
+ tme_float_is_inf(src1, TME_FLOAT_FORMAT_IEEE754_QUAD) &
+ (tme_float_is_negative(src0, TME_FLOAT_FORMAT_IEEE754_QUAD) ==
+ tme_float_is_negative(src1, TME_FLOAT_FORMAT_IEEE754_QUAD)))
+ tme_ieee754_quad_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN, 0.0);
+else
+
/* the operation: */
tme_ieee754_quad_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN,
tme_ieee754_quad_value_builtin_get(src0) -
tme_ieee754_quad_value_builtin_get(src1));
@@ -5603,6 +5659,13 @@
/* assume that this operation raises no exceptions: */
exceptions = 0;
+ if (tme_float_is_inf(src0, TME_FLOAT_FORMAT_IEEE754_SINGLE ) &
+ tme_float_is_inf(src1, TME_FLOAT_FORMAT_IEEE754_SINGLE) &
+ (tme_float_is_negative(src0, TME_FLOAT_FORMAT_IEEE754_SINGLE) ==
+ tme_float_is_negative(src1, TME_FLOAT_FORMAT_IEEE754_SINGLE)))
+ tme_ieee754_single_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN, 0.0);
+else
+
/* the operation: */
tme_ieee754_single_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_SINGLE_BUILTIN,
tme_ieee754_single_value_builtin_get(src0) -
tme_ieee754_single_value_builtin_get(src1));
ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
@@ -5897,6 +5960,13 @@
/* assume that this operation raises no exceptions: */
exceptions = 0;
+ if (tme_float_is_inf(src0, TME_FLOAT_FORMAT_IEEE754_DOUBLE ) &
+ tme_float_is_inf(src1, TME_FLOAT_FORMAT_IEEE754_DOUBLE) &
+ (tme_float_is_negative(src0, TME_FLOAT_FORMAT_IEEE754_DOUBLE) ==
+ tme_float_is_negative(src1, TME_FLOAT_FORMAT_IEEE754_DOUBLE)))
+ tme_ieee754_double_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN, 0.0);
+else
+
/* the operation: */
tme_ieee754_double_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_DOUBLE_BUILTIN,
tme_ieee754_double_value_builtin_get(src0) -
tme_ieee754_double_value_builtin_get(src1));
ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
@@ -6191,6 +6261,13 @@
/* assume that this operation raises no exceptions: */
exceptions = 0;
+ if (tme_float_is_inf(src0, TME_FLOAT_FORMAT_IEEE754_EXTENDED80 ) &
+ tme_float_is_inf(src1, TME_FLOAT_FORMAT_IEEE754_EXTENDED80) &
+ (tme_float_is_negative(src0, TME_FLOAT_FORMAT_IEEE754_EXTENDED80) ==
+ tme_float_is_negative(src1, TME_FLOAT_FORMAT_IEEE754_EXTENDED80)))
+ tme_ieee754_extended80_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN, 0.0);
+else
+
/* the operation: */
tme_ieee754_extended80_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_EXTENDED80_BUILTIN,
tme_ieee754_extended80_value_builtin_get(src0) -
tme_ieee754_extended80_value_builtin_get(src1));
ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
@@ -6485,6 +6562,13 @@
/* assume that this operation raises no exceptions: */
exceptions = 0;
+ if (tme_float_is_inf(src0, TME_FLOAT_FORMAT_IEEE754_QUAD ) &
+ tme_float_is_inf(src1, TME_FLOAT_FORMAT_IEEE754_QUAD) &
+ (tme_float_is_negative(src0, TME_FLOAT_FORMAT_IEEE754_QUAD) ==
+ tme_float_is_negative(src1, TME_FLOAT_FORMAT_IEEE754_QUAD)))
+ tme_ieee754_quad_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN, 0.0);
+else
+
/* the operation: */
tme_ieee754_quad_value_builtin_set(dst,
TME_FLOAT_FORMAT_IEEE754_QUAD_BUILTIN,
tme_ieee754_quad_value_builtin_get(src0) -
tme_ieee754_quad_value_builtin_get(src1));
ieee754_ctl->tme_ieee754_ctl_lock_unlock = NULL;
then to the m68k directory and change the script:
--- m6888x-auto.sh.orig 2006-10-01 08:22:49.000000000 -0400
+++ m6888x-auto.sh 2006-10-01 08:22:56.000000000 -0400
@@ -136,7 +136,7 @@
12) name=asin ; fpu_types=TME_M68K_FPU_M6888X ;; # fasin pp 315
10) name=atan ; fpu_types=TME_M68K_FPU_M6888X ;; # fatan pp 318
13) name=atanh ; fpu_types=TME_M68K_FPU_M6888X ;; # fatanh pp 321
- 56) name=cmp ; name_ieee754=sub ; optype=DST_SRC ;; # fcmp pp 326
+ 56) name=cmp ; optype=DST_SRC ;; # fcmp pp 326
29) name=cos ; fpu_types=TME_M68K_FPU_M6888X ;; # fcos pp 329
25) name=cosh ; fpu_types=TME_M68K_FPU_M6888X ;; # fcosh pp 332
did a make to produce the following diff:
--- m6888x-auto.c.orig 2006-10-01 08:23:13.000000000 -0400
+++ m6888x-auto.c 2006-10-01 08:23:17.000000000 -0400
@@ -179,7 +179,7 @@
{ _tme_m6888x_fsincos, 0, TME_M68K_FPU_M6888X, TME_M6888X_OPTYPE_MONADIC,
TME_FLOAT_ROUND_NULL, TME_M6888X_ROUNDING_PRECISION_CTL },
/* opmode 56: */
- { NULL, TME_M6888X_IEEE754_OP(tme_ieee754_ops_extended80_sub),
TME_M68K_FPU_ANY, TME_M6888X_OPTYPE_DYADIC_DST_SRC, TME_FLOAT_ROUND_NULL,
TME_M6888X_ROUNDING_PRECISION_CTL },
+ { NULL, TME_M6888X_IEEE754_OP(tme_ieee754_ops_extended80_cmp),
TME_M68K_FPU_ANY, TME_M6888X_OPTYPE_DYADIC_DST_SRC, TME_FLOAT_ROUND_NULL,
TME_M6888X_ROUNDING_PRECISION_CTL },
/* opmode 57: */
{ NULL, 0, TME_M68K_FPU_NONE, TME_M6888X_OPTYPE_MONADIC,
TME_FLOAT_ROUND_NULL, TME_M6888X_ROUNDING_PRECISION_CTL },
Home |
Main Index |
Thread Index |
Old Index