$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
 
