File s390-movqi-memmem of Package gcc43

Index: gcc/config/s390/s390.md
===================================================================
*** gcc/config/s390/s390.md.orig
--- gcc/config/s390/s390.md
***************
*** 1861,1868 ****
  })
  
  (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"))]
    ""
    "@
     lr\t%0,%1
--- 1861,1868 ----
  })
  
  (define_insn "*movqi"
!   [(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
***************
*** 1872,1880 ****
     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")
     (set_attr "z10prop" "z10_fr_E1,
                          z10_fwd_A1,
                          z10_super_E1,
--- 1872,1881 ----
     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,SS")
!    (set_attr "type" "lr,*,*,*,store,store,store,store,*")
     (set_attr "z10prop" "z10_fr_E1,
                          z10_fwd_A1,
                          z10_super_E1,
***************
*** 1882,1888 ****
                          z10_rec,
                          z10_rec,
                          z10_super,
!                         z10_super")])
  
  (define_peephole2
    [(set (match_operand:QI 0 "nonimmediate_operand" "")
--- 1883,1890 ----
                          z10_rec,
                          z10_rec,
                          z10_super,
!                         z10_super,
!                         *")])
  
  (define_peephole2
    [(set (match_operand:QI 0 "nonimmediate_operand" "")
***************
*** 2259,2264 ****
--- 2261,2282 ----
    "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" "")
openSUSE Build Service is sponsored by