aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndreas Krebbel <Andreas.Krebbel@de.ibm.com>2010-02-22 14:05:16 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2010-02-22 14:05:16 +0000
commit0a88561f0a325ea15681c278ab29c065995fc4de (patch)
treeae124c51d73097e4d0e3a18a8fda797ed833cafc /gcc
parent5c91eb02f69fe62678a7bc771bff8fe84e389cd2 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/config/s390/s390.md30
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" "")