diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2002-10-24 20:19:10 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@gcc.gnu.org> | 2002-10-24 20:19:10 +0000 |
commit | 84817c5d5bb2c7bac2f4a7d7bd450a00ee6c0b5c (patch) | |
tree | 120bb2a682f82cbea83e4be554608580cdb5eb8a | |
parent | d074905352cfd576f42fbc184d3474a2df80354d (diff) | |
download | gcc-84817c5d5bb2c7bac2f4a7d7bd450a00ee6c0b5c.zip gcc-84817c5d5bb2c7bac2f4a7d7bd450a00ee6c0b5c.tar.gz gcc-84817c5d5bb2c7bac2f4a7d7bd450a00ee6c0b5c.tar.bz2 |
s390.md (movdi, [...]): Add peepholes2 to pull operands out of the literal pool where possible.
* config/s390/s390.md (movdi, movsi, movhi, movqi): Add peepholes2
to pull operands out of the literal pool where possible.
From-SVN: r58504
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/s390/s390.md | 40 |
2 files changed, 45 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f53fd46..6eccff2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2002-10-24 Ulrich Weigand <uweigand@de.ibm.com> + + * config/s390/s390.md (movdi, movsi, movhi, movqi): Add peepholes2 + to pull operands out of the literal pool where possible. + 2002-10-24 Denis Chertykov <denisc@overta.ru> * config/avr/avr.c (init_cumulative_args): Test fntype for zero. diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 475e6fa..a14555d 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -992,6 +992,18 @@ operands[1] = replace_equiv_address (operands[1], addr); }") +(define_peephole2 + [(set (match_operand:DI 0 "register_operand" "") + (mem:DI (match_operand 1 "address_operand" "")))] + "TARGET_64BIT + && !FP_REG_P (operands[0]) + && GET_CODE (operands[1]) == SYMBOL_REF + && CONSTANT_POOL_ADDRESS_P (operands[1]) + && get_pool_mode (operands[1]) == DImode + && legitimate_reload_constant_p (get_pool_constant (operands[1]))" + [(set (match_dup 0) (match_dup 2))] + "operands[2] = get_pool_constant (operands[1]);") + ; ; movsi instruction pattern(s). ; @@ -1074,6 +1086,16 @@ [(set_attr "op_type" "RR,RX,RX,RR,RX,RX,SS") (set_attr "atype" "reg,mem,mem,reg,mem,mem,mem")]) +(define_peephole2 + [(set (match_operand:SI 0 "register_operand" "") + (mem:SI (match_operand 1 "address_operand" "")))] + "!FP_REG_P (operands[0]) + && GET_CODE (operands[1]) == SYMBOL_REF + && CONSTANT_POOL_ADDRESS_P (operands[1]) + && get_pool_mode (operands[1]) == SImode + && legitimate_reload_constant_p (get_pool_constant (operands[1]))" + [(set (match_dup 0) (match_dup 2))] + "operands[2] = get_pool_constant (operands[1]);") ; ; movhi instruction pattern(s). @@ -1092,6 +1114,15 @@ [(set_attr "op_type" "RR,RI,RX,RX,SS") (set_attr "atype" "reg,reg,mem,mem,mem")]) +(define_peephole2 + [(set (match_operand:HI 0 "register_operand" "") + (mem:HI (match_operand 1 "address_operand" "")))] + "GET_CODE (operands[1]) == SYMBOL_REF + && CONSTANT_POOL_ADDRESS_P (operands[1]) + && get_pool_mode (operands[1]) == HImode + && GET_CODE (get_pool_constant (operands[1])) == CONST_INT" + [(set (match_dup 0) (match_dup 2))] + "operands[2] = get_pool_constant (operands[1]);") ; ; movqi instruction pattern(s). @@ -1126,6 +1157,15 @@ [(set_attr "op_type" "RR,RI,RX,RX,SI,SS") (set_attr "atype" "reg,reg,mem,mem,mem,mem")]) +(define_peephole2 + [(set (match_operand:QI 0 "nonimmediate_operand" "") + (mem:QI (match_operand 1 "address_operand" "")))] + "GET_CODE (operands[1]) == SYMBOL_REF + && CONSTANT_POOL_ADDRESS_P (operands[1]) + && get_pool_mode (operands[1]) == QImode + && GET_CODE (get_pool_constant (operands[1])) == CONST_INT" + [(set (match_dup 0) (match_dup 2))] + "operands[2] = get_pool_constant (operands[1]);") ; ; movstrictqi instruction pattern(s). |