diff options
author | Andreas Krebbel <Andreas.Krebbel@de.ibm.com> | 2010-02-22 14:05:16 +0000 |
---|---|---|
committer | Andreas Krebbel <krebbel@gcc.gnu.org> | 2010-02-22 14:05:16 +0000 |
commit | 0a88561f0a325ea15681c278ab29c065995fc4de (patch) | |
tree | ae124c51d73097e4d0e3a18a8fda797ed833cafc /gcc | |
parent | 5c91eb02f69fe62678a7bc771bff8fe84e389cd2 (diff) | |
download | gcc-0a88561f0a325ea15681c278ab29c065995fc4de.zip gcc-0a88561f0a325ea15681c278ab29c065995fc4de.tar.gz gcc-0a88561f0a325ea15681c278ab29c065995fc4de.tar.bz2 |
s390.md ("movqi"): Re-add the mem->mem alternative.
2010-02-22 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* config/s390/s390.md ("movqi"): Re-add the mem->mem alternative.
(QI to BLKmode splitter): New splitter.
From-SVN: r156959
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/s390/s390.md | 30 |
2 files changed, 29 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 995af39..d77f4b0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-02-22 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> + + * config/s390/s390.md ("movqi"): Re-add the mem->mem alternative. + (QI to BLKmode splitter): New splitter. + 2010-02-22 H.J. Lu <hongjiu.lu@intel.com> * config/i386/i386.c (initial_ix86_tune_features): Turn on diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index ff4d011..ab76486 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -1834,8 +1834,8 @@ }) (define_insn "*movqi" - [(set (match_operand:QI 0 "nonimmediate_operand" "=d,d,d,d,R,T,Q,S") - (match_operand:QI 1 "general_operand" "d,n,R,T,d,d,n,n"))] + [(set (match_operand:QI 0 "nonimmediate_operand" "=d,d,d,d,R,T,Q,S,?Q") + (match_operand:QI 1 "general_operand" " d,n,R,T,d,d,n,n,?Q"))] "" "@ lr\t%0,%1 @@ -1845,9 +1845,10 @@ stc\t%1,%0 stcy\t%1,%0 mvi\t%S0,%b1 - mviy\t%S0,%b1" - [(set_attr "op_type" "RR,RI,RX,RXY,RX,RXY,SI,SIY") - (set_attr "type" "lr,*,*,*,store,store,store,store") + mviy\t%S0,%b1 + *" + [(set_attr "op_type" "RR,RI,RX,RXY,RX,RXY,SI,SIY,SS") + (set_attr "type" "lr,*,*,*,store,store,store,store,*") (set_attr "z10prop" "z10_fr_E1, z10_fwd_A1, z10_super_E1, @@ -1855,7 +1856,8 @@ z10_rec, z10_rec, z10_super, - z10_super")]) + z10_super, + *")]) (define_peephole2 [(set (match_operand:QI 0 "nonimmediate_operand" "") @@ -2232,6 +2234,22 @@ "mvc\t%O0(%2,%R0),%S1" [(set_attr "op_type" "SS")]) +; This splitter converts a QI to QI mode copy into a BLK mode copy in +; order to have it implemented with mvc. + +(define_split + [(set (match_operand:QI 0 "memory_operand" "") + (match_operand:QI 1 "memory_operand" ""))] + "reload_completed" + [(parallel + [(set (match_dup 0) (match_dup 1)) + (use (const_int 1))])] +{ + operands[0] = adjust_address (operands[0], BLKmode, 0); + operands[1] = adjust_address (operands[1], BLKmode, 0); +}) + + (define_peephole2 [(parallel [(set (match_operand:BLK 0 "memory_operand" "") |