* config/epiphany/epiphany.md (movmisalign<mode>): New patterns.
authorJoern Rennecke <joern.rennecke@embecosm.com>
Thu, 1 Mar 2012 23:40:57 +0000 (23:40 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Thu, 1 Mar 2012 23:40:57 +0000 (23:40 +0000)
From-SVN: r184766

gcc/ChangeLog
gcc/config/epiphany/epiphany.md

index 8da046483d3d0ee75c04868ea3fafee9f8e1eea5..751ca2bb2f2832912455b34cc4097352ebb8cff3 100644 (file)
@@ -1,3 +1,7 @@
+2012-03-01  Joern Rennecke  <joern.rennecke@embecosm.com>
+
+       * config/epiphany/epiphany.md (movmisalign<mode>): New patterns.
+
 2012-03-01  Jeremy Bennett  <jeremy.bennett@embecosm.com>
            Joern Rennecke  <joern.rennecke@embecosm.com>
 
index 7f8f2a952313a3b57fc993f18d044e13d101b1e1..b192153ccf4d684a7b16570943cc77532c6ca608 100644 (file)
@@ -1,6 +1,6 @@
 ;; Machine description of the Adaptiva epiphany cpu for GNU C compiler
 ;; Copyright (C) 1994, 1997, 1998, 1999, 2000, 2004, 2005, 2007, 2009, 2010,
-;; 2011 Free Software Foundation, Inc.
+;; 2011, 2012 Free Software Foundation, Inc.
 ;; Contributed by Embecosm on behalf of Adapteva, Inc.
 
 ;; This file is part of GCC.
   emit_move_insn (operands[0], operands[1]);
   DONE;
 })
+
+(define_expand "movmisalign<mode>"
+ [(set (match_operand:DWV2MODE 0 "nonimmediate_operand" "")
+       (match_operand:DWV2MODE 1 "general_operand" ""))]
+ ""
+{
+  rtx op00, op01, op10, op11;
+
+  op00 = simplify_gen_subreg (<vmode_PART>mode, operands[0], <MODE>mode, 0);
+  op01 = simplify_gen_subreg (<vmode_PART>mode, operands[0], <MODE>mode,
+                             UNITS_PER_WORD);
+  op10 = simplify_gen_subreg (<vmode_PART>mode, operands[1], <MODE>mode, 0);
+  op11 = simplify_gen_subreg (<vmode_PART>mode, operands[1], <MODE>mode,
+                             UNITS_PER_WORD);
+  emit_move_insn (op00, op10);
+  emit_move_insn (op01, op11);
+  DONE;
+})
 \f
 (define_insn "nop"
   [(const_int 0)]