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" "")