diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 288f5107940cbc829771853f393fe9fc8f74dd4e..b1094d701e8caf04cb9464f9de4b262684525466 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2002-03-28  Richard Henderson  <rth@redhat.com>
+
+	* config/alpha/alpha.c (alpha_emit_conditional_branch): TFmode NE
+	comparison should be done vs !=0 not >0 return code.  Tidy cases.
+
 2002-03-28  Richard Henderson  <rth@redhat.com>
 
 	* c-decl.c (finish_function): New arg can_defer_p.  Pass it
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 6893677a2066f392fa1730ece86bc4287c268129..73baa891e7e477c24be8bba684118323dd165c97 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -2812,21 +2812,29 @@ alpha_emit_conditional_branch (code)
 	    1  true
 	 Convert the compare against the raw return value.  */
 
-      if (code == UNORDERED || code == ORDERED)
-	cmp_code = EQ;
-      else
-	cmp_code = code;
+      switch (code)
+	{
+	case UNORDERED:
+	  cmp_code = EQ;
+	  code = LT;
+	  break;
+	case ORDERED:
+	  cmp_code = EQ;
+	  code = GE;
+	  break;
+	case NE:
+	  cmp_code = NE;
+	  code = NE;
+	  break;
+	default:
+	  cmp_code = code;
+  code = GT;
+	  break;
+	}
 
       op0 = alpha_emit_xfloating_compare (cmp_code, op0, op1);
       op1 = const0_rtx;
       alpha_compare.fp_p = 0;
-
-      if (code == UNORDERED)
-	code = LT;
-      else if (code == ORDERED)
-	code = GE;
-      else
-        code = GT;
     }
 
   /* The general case: fold the comparison code to the types of compares