aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/bfin/bfin.md58
2 files changed, 13 insertions, 49 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ef344f0..f6116d8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -22,6 +22,10 @@
* 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.
diff --git a/gcc/config/bfin/bfin.md b/gcc/config/bfin/bfin.md
index ed0da5a..e7c41e2 100644
--- a/gcc/config/bfin/bfin.md
+++ b/gcc/config/bfin/bfin.md
@@ -2734,50 +2734,6 @@
;; 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
@@ -2825,15 +2781,19 @@
; 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)%!