Index: /trunk/source/compiler/nx2.lisp
===================================================================
--- /trunk/source/compiler/nx2.lisp	(revision 14737)
+++ /trunk/source/compiler/nx2.lisp	(revision 14738)
@@ -713,4 +713,22 @@
                                         (caddr unwrapped))
                   t))))))))
-                 
+
+(defun acode-optimize-numcmp (seg vreg xfer cc num1 num2 trust-decls &optional (result-type 'boolean))
+  (declare (ignorable result-type))
+  (cond ((and (acode-form-typep num1 *nx-target-fixnum-type* trust-decls)
+              (acode-form-typep num2 *nx-target-fixnum-type* trust-decls))
+         (backend-use-operator (%nx1-operator %i<>) seg vreg xfer cc num1 num2)
+         t)
+        ((and (acode-form-typep num1 *nx-target-natural-type* trust-decls)
+              (acode-form-typep num2 *nx-target-natural-type* trust-decls))
+         (backend-use-operator (%nx1-operator %natural<>) seg vreg xfer cc num1 num2)
+         t)
+        ((and (acode-form-typep num1 'double-float trust-decls)
+              (acode-form-typep num2 'double-float trust-decls))
+         (backend-use-operator (%nx1-operator double-float-compare) seg vreg xfer cc num1 num2)
+         t)
+        ((and (acode-form-typep num1 'single-float trust-decls)
+              (acode-form-typep num2 'single-float trust-decls))
+         (backend-use-operator (%nx1-operator short-float-compare) seg vreg xfer cc num1 num2)
+         t)))
                 
