]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
s390.md ("movqi"): Re-add the mem->mem alternative.
authorAndreas Krebbel <Andreas.Krebbel@de.ibm.com>
Mon, 22 Feb 2010 14:05:16 +0000 (14:05 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Mon, 22 Feb 2010 14:05:16 +0000 (14:05 +0000)
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

gcc/ChangeLog
gcc/config/s390/s390.md

index 995af397fd0ae7f0372f923027a9017a349de6d9..d77f4b0852a2547db209e1e5055694cc30a9644f 100644 (file)
@@ -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
index ff4d01162d08b809f2a8b8da5e2e178a7cc555d1..ab7648675e97b173c15eff8bbdf06b583f59b466 100644 (file)
 })
 
 (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
    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,
                         z10_rec,
                         z10_rec,
                         z10_super,
-                        z10_super")])
+                        z10_super,
+                        *")])
 
 (define_peephole2
   [(set (match_operand:QI 0 "nonimmediate_operand" "")
   "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" "")