Commit ef0f4a03 by Uros Bizjak

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
parent add5d998
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> 2010-04-09 Martin Jambor <mjambor@suse.cz>
* ipa-cp.c (ipcp_lats_are_equal): Return true also if the two * ipa-cp.c (ipcp_lats_are_equal): Return true also if the two
...@@ -6,7 +14,7 @@ ...@@ -6,7 +14,7 @@
* ipa-prop.c (ipa_print_node_jump_functions): Likewise. * ipa-prop.c (ipa_print_node_jump_functions): Likewise.
2010-04-09 Eric Botcazou <ebotcazou@adacore.com> 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. * loop-invariant.c (replace_uses): New static function.
(move_invariant_reg): Use it to ensure we can replace the uses. (move_invariant_reg): Use it to ensure we can replace the uses.
...@@ -37,8 +45,7 @@ ...@@ -37,8 +45,7 @@
2010-04-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 2010-04-09 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* config/sparc/sol2-gld.h: Remove SPARC reference. * config/sparc/sol2-gld.h: Remove SPARC reference. Rename ...
Rename ...
* config/sol2-gld.h: ... here. * config/sol2-gld.h: ... here.
* config.gcc (sparc*-*-solaris2*): Reflect this. * config.gcc (sparc*-*-solaris2*): Reflect this.
(i[34567]86-*-solaris2*): Use it. (i[34567]86-*-solaris2*): Use it.
...@@ -80,15 +87,15 @@ ...@@ -80,15 +87,15 @@
2010-04-09 Iain Sandoe <iains@gcc.gnu.org> 2010-04-09 Iain Sandoe <iains@gcc.gnu.org>
PR bootstrap/43684 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. 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. Remove set, but unused, vars.
(rs6000_legitimize_tls_address): Likewise. (rs6000_legitimize_tls_address): Likewise.
(altivec_expand_dst_builtin): Likewise. (altivec_expand_dst_builtin): Likewise.
* config/darwin.c (machopic_classify_symbol): Likewise. * config/darwin.c (machopic_classify_symbol): Likewise.
(machopic_indirection_name): Likewise. (machopic_indirection_name): Likewise.
2010-04-09 Uros Bizjak <ubizjak@gmail.com> 2010-04-09 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (DWI): New mode iterator. * config/i386/i386.md (DWI): New mode iterator.
......
...@@ -9560,17 +9560,23 @@ ...@@ -9560,17 +9560,23 @@
"" ""
"ix86_expand_binary_operator (ASHIFT, <MODE>mode, operands); DONE;") "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") [(set (match_operand:DWI 0 "register_operand" "=&r,r")
(ashift:DWI (match_operand:DWI 1 "reg_or_pm1_operand" "n,0") (ashift:DWI (match_operand:DWI 1 "reg_or_pm1_operand" "n,0")
(match_operand:QI 2 "nonmemory_operand" "<S>c,<S>c"))) (match_operand:QI 2 "nonmemory_operand" "<S>c,<S>c")))
(clobber (reg:CC FLAGS_REG))] (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" "(optimize && flag_peephole2) ? epilogue_completed : reload_completed"
[(const_int 0)] [(const_int 0)]
"ix86_split_ashl (operands, NULL_RTX, <MODE>mode); DONE;" "ix86_split_ashl (operands, NULL_RTX, <MODE>mode); DONE;")
[(set_attr "type" "multi")])
;; By default we don't ask for a scratch register, because when DWImode ;; By default we don't ask for a scratch register, because when DWImode
;; values are manipulated, registers are already at a premium. But if ;; values are manipulated, registers are already at a premium. But if
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment