diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2010-04-09 23:12:42 +0200 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2010-04-09 23:12:42 +0200 |
commit | ef0f4a034d93e79a27c570aaff6a6b7180f4b0c2 (patch) | |
tree | e4a1b080813e247d1dfc3ec6881a358dc0ab572f /gcc | |
parent | add5d9980add8cddbfb8079a800e11b1ec640761 (diff) | |
download | gcc-ef0f4a034d93e79a27c570aaff6a6b7180f4b0c2.zip gcc-ef0f4a034d93e79a27c570aaff6a6b7180f4b0c2.tar.gz gcc-ef0f4a034d93e79a27c570aaff6a6b7180f4b0c2.tar.bz2 |
re PR target/43707 (gcc.c-torture/execute/ashldi-1.c)
PR target/43707
PR target/43709
* config/i386/i386.md (*ashl<mode>3_doubleword): Split to insn
and splitter pattern. Change splitter operand 1 predicate to
nonmemory_operand.
From-SVN: r158177
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 19 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 14 |
2 files changed, 23 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1c57d04..74c2c32 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2010-04-09 Uros Bizjak <ubizjak@gmail.com> + + PR target/43707 + PR target/43709 + * config/i386/i386.md (*ashl<mode>3_doubleword): Split to insn + and splitter pattern. Change splitter operand 1 predicate to + nonmemory_operand. + 2010-04-09 Martin Jambor <mjambor@suse.cz> * ipa-cp.c (ipcp_lats_are_equal): Return true also if the two @@ -6,7 +14,7 @@ * ipa-prop.c (ipa_print_node_jump_functions): Likewise. 2010-04-09 Eric Botcazou <ebotcazou@adacore.com> - Bernd Schmidt <bernd.schmidt@codesourcery.com> + Bernd Schmidt <bernd.schmidt@codesourcery.com> * loop-invariant.c (replace_uses): New static function. (move_invariant_reg): Use it to ensure we can replace the uses. @@ -37,8 +45,7 @@ 2010-04-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> - * config/sparc/sol2-gld.h: Remove SPARC reference. - Rename ... + * config/sparc/sol2-gld.h: Remove SPARC reference. Rename ... * config/sol2-gld.h: ... here. * config.gcc (sparc*-*-solaris2*): Reflect this. (i[34567]86-*-solaris2*): Use it. @@ -80,15 +87,15 @@ 2010-04-09 Iain Sandoe <iains@gcc.gnu.org> PR bootstrap/43684 - * varasm.c (default_assemble_visibility): Wrap vars that are + * varasm.c (default_assemble_visibility): Wrap vars that are set, but unused, by targets without GAS. - * config/rs6000/rs6000.c: (paired_emit_vector_compare): + * config/rs6000/rs6000.c: (paired_emit_vector_compare): Remove set, but unused, vars. (rs6000_legitimize_tls_address): Likewise. (altivec_expand_dst_builtin): Likewise. * config/darwin.c (machopic_classify_symbol): Likewise. (machopic_indirection_name): Likewise. - + 2010-04-09 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.md (DWI): New mode iterator. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index b53c01d..25daeff 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -9560,17 +9560,23 @@ "" "ix86_expand_binary_operator (ASHIFT, <MODE>mode, operands); DONE;") -(define_insn_and_split "*ashl<mode>3_doubleword" +(define_insn "*ashl<mode>3_doubleword" [(set (match_operand:DWI 0 "register_operand" "=&r,r") (ashift:DWI (match_operand:DWI 1 "reg_or_pm1_operand" "n,0") (match_operand:QI 2 "nonmemory_operand" "<S>c,<S>c"))) (clobber (reg:CC FLAGS_REG))] - "ix86_binary_operator_ok (ASHIFT, <MODE>mode, operands)" + "" "#" + [(set_attr "type" "multi")]) + +(define_split + [(set (match_operand:DWI 0 "register_operand" "") + (ashift:DWI (match_operand:DWI 1 "nonmemory_operand" "") + (match_operand:QI 2 "nonmemory_operand" ""))) + (clobber (reg:CC FLAGS_REG))] "(optimize && flag_peephole2) ? epilogue_completed : reload_completed" [(const_int 0)] - "ix86_split_ashl (operands, NULL_RTX, <MODE>mode); DONE;" - [(set_attr "type" "multi")]) + "ix86_split_ashl (operands, NULL_RTX, <MODE>mode); DONE;") ;; By default we don't ask for a scratch register, because when DWImode ;; values are manipulated, registers are already at a premium. But if |