diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 25004ba22753c61aa806411b5001060e1059a8f2..750c1c2a2ba15699fc05a5ba0494a6b1324fd0e4 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2000-10-31  Richard Henderson  <rth@redhat.com>
+
+	* config/i386/i386.c (fcmov_comparison_operator): Check for
+	CCFPmode or CCFPUmode instead of CCmode.
+	(ix86_expand_fp_movcc): Call ix86_expand_setcc for most
+	unordered operations as well.
+
 2000-10-31  Richard Henderson  <rth@redhat.com>
 
 	* c-semantics.c (genrtl_do_stmt): Use integer_zerop instead
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index b27edaaf8119d2b257ec77209f16ea4048ef1364..396df6eb7954386ca85ff2ab57d47e4a401693ea 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -1339,7 +1339,7 @@ fcmov_comparison_operator (op, mode)
     case EQ: case NE:
       return 1;
     case LTU: case GTU: case LEU: case ORDERED: case UNORDERED: case GEU:
-      if (inmode == CCmode)
+      if (inmode == CCFPmode || inmode == CCFPUmode)
 	return 1;
       return 0;
     default:
@@ -5600,6 +5600,12 @@ ix86_expand_fp_movcc (operands)
     case LE:
     case GE:
     case GT:
+    case UNEQ:
+    case UNGE:
+    case UNGT:
+    case UNLE:
+    case UNLT:
+    case LTGT:
       tmp = gen_reg_rtx (QImode);
       ix86_expand_setcc (code, tmp);
       code = NE;