mn10300: Add clzsi2.
authorRichard Henderson <rth@redhat.com>
Wed, 12 Jan 2011 17:53:50 +0000 (09:53 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 12 Jan 2011 17:53:50 +0000 (09:53 -0800)
From-SVN: r168723

gcc/ChangeLog
gcc/config/mn10300/mn10300.md

index 8255b41..690b114 100644 (file)
@@ -1,5 +1,8 @@
 2011-01-12  Richard Henderson  <rth@redhat.com>
 
+       * config/mn10300/mn10300.md (UNSPEC_BSCH): New.
+       (clzsi2, *bsch): New patterns.
+
        * config/mn10300/mn10300.md (INT): New mode iterator.
        (*mov<INT>_clr): New pattern, and peep2 to generate it.
 
index ecabaf9..8ae52c9 100644 (file)
@@ -36,6 +36,8 @@
   (UNSPEC_GOTOFF       3)
   (UNSPEC_PLT          4)
   (UNSPEC_GOTSYM_OFF   5)
+
+  (UNSPEC_BSCH         7)
 ])
 
 (include "predicates.md")
 )
 
 ;; ----------------------------------------------------------------------
+;; MISCELANEOUS
+;; ----------------------------------------------------------------------
+
+(define_expand "clzsi2"
+  [(parallel [(set (match_operand:SI 0 "register_operand" "")
+                  (unspec:SI [(match_operand:SI 1 "register_operand" "")
+                              (const_int 0)] UNSPEC_BSCH))
+             (clobber (reg:CC CC_REG))])]
+  "TARGET_AM33"
+)
+
+(define_insn "*bsch"
+  [(set (match_operand:SI 0 "register_operand" "=r")
+       (unspec:SI [(match_operand:SI 1 "register_operand" "r")
+                   (match_operand:SI 2 "nonmemory_operand" "0")]
+                  UNSPEC_BSCH))
+   (clobber (reg:CC CC_REG))]
+  "TARGET_AM33"
+  "bsch %1,%0"
+)
+
+;; ----------------------------------------------------------------------
 ;; FP INSTRUCTIONS
 ;; ----------------------------------------------------------------------