From f3d9d2e0600f84dec5608464c93f4f6f68649ee5 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 12 Jan 2011 09:53:50 -0800 Subject: [PATCH] mn10300: Add clzsi2. From-SVN: r168723 --- gcc/ChangeLog | 3 +++ gcc/config/mn10300/mn10300.md | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8255b41..690b114 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2011-01-12 Richard Henderson + * config/mn10300/mn10300.md (UNSPEC_BSCH): New. + (clzsi2, *bsch): New patterns. + * config/mn10300/mn10300.md (INT): New mode iterator. (*mov_clr): New pattern, and peep2 to generate it. diff --git a/gcc/config/mn10300/mn10300.md b/gcc/config/mn10300/mn10300.md index ecabaf9..8ae52c9 100644 --- a/gcc/config/mn10300/mn10300.md +++ b/gcc/config/mn10300/mn10300.md @@ -36,6 +36,8 @@ (UNSPEC_GOTOFF 3) (UNSPEC_PLT 4) (UNSPEC_GOTSYM_OFF 5) + + (UNSPEC_BSCH 7) ]) (include "predicates.md") @@ -2353,6 +2355,28 @@ ) ;; ---------------------------------------------------------------------- +;; 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 ;; ---------------------------------------------------------------------- -- 2.7.4