summaryrefslogtreecommitdiff
path: root/emulators/tme/patches/patch-bc
diff options
context:
space:
mode:
Diffstat (limited to 'emulators/tme/patches/patch-bc')
-rw-r--r--emulators/tme/patches/patch-bc65
1 files changed, 65 insertions, 0 deletions
diff --git a/emulators/tme/patches/patch-bc b/emulators/tme/patches/patch-bc
new file mode 100644
index 00000000000..34f3d585455
--- /dev/null
+++ b/emulators/tme/patches/patch-bc
@@ -0,0 +1,65 @@
+$NetBSD: patch-bc,v 1.1 2007/03/17 13:44:20 tsutsui Exp $
+
+--- ic/ieee754/ieee754-ops-auto.sh.orig 2005-03-23 20:47:37.000000000 +0900
++++ ic/ieee754/ieee754-ops-auto.sh 2007-03-14 22:00:59.000000000 +0900
+@@ -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 ;;
+@@ -547,6 +548,15 @@
+ # a builtin operation:
+ #
+ builtin)
++ if test ${name} = "cmp"; then
++
++ echo " if (tme_float_is_inf(src0, TME_FLOAT_FORMAT_IEEE754_${capprecision} ) &"
++ echo " tme_float_is_inf(src1, TME_FLOAT_FORMAT_IEEE754_${capprecision}) &"
++ echo " (tme_float_is_negative(src0, TME_FLOAT_FORMAT_IEEE754_${capprecision}) =="
++ echo " tme_float_is_negative(src1, TME_FLOAT_FORMAT_IEEE754_${capprecision})))"
++ echo " tme_ieee754_${precision}_value_builtin_set(dst, TME_FLOAT_FORMAT_IEEE754_${capprecision}_BUILTIN, 0.0);"
++ echo " else"
++ fi;
+ echo " tme_ieee754_${precision}_value_builtin_set(dst, TME_FLOAT_FORMAT_IEEE754_${capprecision}_BUILTIN, ${op0} ${op_builtin} ${op1});"
+ ;;
+
+--- ic/m68k/m6888x-auto.sh.orig 2006-10-01 08:22:49.000000000 -0400
++++ ic/m68k/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
+