OSDN Git Service

PR target/43707
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Apr 2010 21:12:42 +0000 (21:12 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 00:55:23 +0000 (09:55 +0900)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158177 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/i386.md

index 1c57d04..74c2c32 100644 (file)
@@ -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
 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>
        * 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.
 
        * 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>
 
 
 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.
        * config/sol2-gld.h: ... here.
        * config.gcc (sparc*-*-solaris2*): Reflect this.
        (i[34567]86-*-solaris2*): Use it.
 2010-04-09  Iain Sandoe  <iains@gcc.gnu.org>
 
        PR bootstrap/43684
 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.
        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.
        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.
 2010-04-09  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.md (DWI): New mode iterator.
index b53c01d..25daeff 100644 (file)
   ""
   "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")
        (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))]
   [(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)]
   "(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
 
 ;; By default we don't ask for a scratch register, because when DWImode
 ;; values are manipulated, registers are already at a premium.  But if