* sparc.md (ffsdi2): Disable. Simplify the expression as well.
authorRichard Henderson <rth@cygnus.com>
Mon, 11 May 1998 17:26:37 +0000 (10:26 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Mon, 11 May 1998 17:26:37 +0000 (10:26 -0700)
From-SVN: r19674

gcc/ChangeLog
gcc/config/sparc/sparc.md

index bc37d39..0eab09a 100644 (file)
@@ -1,3 +1,7 @@
+Mon May 11 17:24:27 1998  Richard Henderson  <rth@cygnus.com>
+
+       * sparc.md (ffsdi2): Disable.  Simplify the expression as well.
+
 Mon May 11 13:30:44 1998  Jim Wilson  <wilson@cygnus.com>
 
        * varasm.c (make_decl_rtl): Disable April 1 change.
index a86434c..02e8a59 100644 (file)
@@ -6123,14 +6123,17 @@ if (! TARGET_ARCH64)
 ;; ??? This should be a define expand, so that the extra instruction have
 ;; a chance of being optimized away.
 
-(define_insn "ffsdi2"
-  [(set (match_operand:DI 0 "register_operand" "=&r")
-       (ffs:DI (match_operand:DI 1 "register_operand" "r")))
-   (clobber (match_scratch:DI 2 "=&r"))]
-  "TARGET_ARCH64"
-  "neg %1,%2\;not %2,%2\;xor %1,%2,%2\;popc %2,%0\;movrz %1,0,%0"
-  [(set_attr "type" "multi")
-   (set_attr "length" "5")])
+;; Disabled because none of the UltraSparcs implement popc.  The HAL R1
+;; does, but no one uses that and we don't have a switch for it.
+;
+;(define_insn "ffsdi2"
+;  [(set (match_operand:DI 0 "register_operand" "=&r")
+;      (ffs:DI (match_operand:DI 1 "register_operand" "r")))
+;   (clobber (match_scratch:DI 2 "=&r"))]
+;  "TARGET_ARCH64"
+;  "neg %1,%2\;xnor %1,%2,%2\;popc %2,%0"
+;  [(set_attr "type" "multi")
+;   (set_attr "length" "3")])
 \f
 ;; Split up troublesome insns for better scheduling.  */