* config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 12 Apr 2007 15:22:06 +0000 (15:22 +0000)
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 12 Apr 2007 15:22:06 +0000 (15:22 +0000)
movhi_high2low): Delete, merge functionality into...
(packv2hi): ... this pattern.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123749 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/bfin/bfin.md

index ef344f0..f6116d8 100644 (file)
        * config/bfin/bfin.md (umulsi3_highpart, smulsi3_highpart): Emit
        inline sequences when not optimizing for size.
 
+       * config/bfin/bfin.md (movhi_low2high, movhi_high2high, movhi_low2low,
+       movhi_high2low): Delete, merge functionality into...
+       (packv2hi): ... this pattern.
+
        2007-02-11  Jie Zhang  <jie.zhang@analog.com>
        * config/bfin/bfin.opt (msim): New option.
        (mcpu=): New option.
index ed0da5a..e7c41e2 100644 (file)
 
 ;; First, all sorts of move variants
 
-(define_insn "movhi_low2high"
-  [(set (match_operand:V2HI 0 "register_operand" "=d")
-       (vec_concat:V2HI
-        (vec_select:HI (match_operand:V2HI 1 "register_operand" "0")
-                       (parallel [(const_int 0)]))
-        (vec_select:HI (match_operand:V2HI 2 "register_operand" "d")
-                       (parallel [(const_int 0)]))))]
-  ""
-  "%d0 = %h2 << 0%!"
-  [(set_attr "type" "dsp32")])
-
-(define_insn "movhi_high2high"
-  [(set (match_operand:V2HI 0 "register_operand" "=d")
-       (vec_concat:V2HI
-        (vec_select:HI (match_operand:V2HI 1 "register_operand" "0")
-                       (parallel [(const_int 0)]))
-        (vec_select:HI (match_operand:V2HI 2 "register_operand" "d")
-                       (parallel [(const_int 1)]))))]
-  ""
-  "%d0 = %d2 << 0%!"
-  [(set_attr "type" "dsp32")])
-
-(define_insn "movhi_low2low"
-  [(set (match_operand:V2HI 0 "register_operand" "=d")
-       (vec_concat:V2HI
-        (vec_select:HI (match_operand:V2HI 2 "register_operand" "d")
-                       (parallel [(const_int 0)]))
-        (vec_select:HI (match_operand:V2HI 1 "register_operand" "0")
-                       (parallel [(const_int 1)]))))]
-  ""
-  "%h0 = %h2 << 0%!"
-  [(set_attr "type" "dsp32")])
-
-(define_insn "movhi_high2low"
-  [(set (match_operand:V2HI 0 "register_operand" "=d")
-       (vec_concat:V2HI
-        (vec_select:HI (match_operand:V2HI 2 "register_operand" "d")
-                       (parallel [(const_int 1)]))
-        (vec_select:HI (match_operand:V2HI 1 "register_operand" "0")
-                       (parallel [(const_int 1)]))))]
-  ""
-  "%h0 = %d2 << 0%!"
-  [(set_attr "type" "dsp32")])
-
 (define_insn "movhiv2hi_low"
   [(set (match_operand:V2HI 0 "register_operand" "=d")
        (vec_concat:V2HI
 ; Useful on its own, and as a combiner bridge for the multiply and
 ; mac patterns.
 (define_insn "packv2hi"
-  [(set (match_operand:V2HI 0 "register_operand" "=d,d,d,d")
+  [(set (match_operand:V2HI 0 "register_operand" "=d,d,d,d,d,d,d,d")
        (vec_concat:V2HI (vec_select:HI
-                         (match_operand:V2HI 1 "register_operand" "d,d,d,d")
-                         (parallel [(match_operand 3 "const01_operand" "P0,P1,P0,P1")]))
+                         (match_operand:V2HI 1 "register_operand" "0,0,d,d,d,d,d,d")
+                         (parallel [(match_operand 3 "const01_operand" "P0,P0,P0,P1,P0,P1,P0,P1")]))
                         (vec_select:HI
-                         (match_operand:V2HI 2 "register_operand" "d,d,d,d")
-                         (parallel [(match_operand 4 "const01_operand" "P0,P0,P1,P1")]))))]
+                         (match_operand:V2HI 2 "register_operand" "d,d,0,0,d,d,d,d")
+                         (parallel [(match_operand 4 "const01_operand" "P0,P1,P1,P1,P0,P0,P1,P1")]))))]
   ""
   "@
+   %d0 = %h2 << 0%!
+   %d0 = %d2 << 0%!
+   %h0 = %h1 << 0%!
+   %h0 = %d1 << 0%!
    %0 = PACK (%h2,%h1)%!
    %0 = PACK (%h2,%d1)%!
    %0 = PACK (%d2,%h1)%!