OSDN Git Service

2005-11-26 Eric Christopher <echristo@apple.com>
authorechristo <echristo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 27 Nov 2005 02:29:36 +0000 (02:29 +0000)
committerechristo <echristo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 27 Nov 2005 02:29:36 +0000 (02:29 +0000)
* config/i386/i386.md (*zero_extendqihi2_movzbw): Avoid partial
register stalls by zero extending to the full register.

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

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

index b654b62..c343af9 100644 (file)
@@ -1,3 +1,8 @@
+2005-11-26  Eric Christopher  <echristo@apple.com>
+
+       * config/i386/i386.md (*zero_extendqihi2_movzbw): Avoid partial
+       register stalls by zero extending to the full register.
+
 2005-11-27  Joseph S. Myers  <joseph@codesourcery.com>
 
        * config/floatunsisf.c, config/floatunsidf.c,
 
        PR c++/21667
        * c-typeck.c (build_array_ref): Avoid code duplicate.  Use common
-       C/C++ diagnostic function warn_array_subscript_with_type_char. 
-       * c-common.h (warn_array_subscript_with_type_char): Declare. 
+       C/C++ diagnostic function warn_array_subscript_with_type_char.
+       * c-common.h (warn_array_subscript_with_type_char): Declare.
        * c-common.c (warn_array_subscript_with_type_char): Define.
 
 2005-11-23  Gabriel Dos Reis  <gdr@integrable-solutions.net>
        PR target/24988
        * config/rs6000/darwin.h (TARGET_OS_CPP_BUILTINS): Remove call
        to SUBTARGET_OS_CPP_BUILTINS.
-       
+
 2005-11-22  Richard Earnshaw  <richard.earnshaw@arm.com>
 
        * arm.c (emit_set_insn): New function.
        (vfp_emit_fstmx): Likewise.  Use plus_constant.
        (emit_multi_reg_push): Likewise.
        (emit_sfm): Use plus_constant.
-       
+
 2005-11-23  Alan Modra  <amodra@bigpond.net.au>
 
        PR target/24954
 
        * c-cppbuiltin.c (c_cpp_builtins): Define __pic__ and __PIC__ when
        flag_pic is set.
-       
+
        * config/alpha/freebsd.h, config/alpha/linux.h,
        config/arm/linux-elf.h, config/bfin/bfin.h,
        config/cris/linux.h, config/darwin.h, config/freebsd-spec.h,
 
 2005-11-21  Uros Bizjak  <uros@kss-loka.si>
 
-       * fold-const.c (fold_binary) <RDIV_EXPR>: Optimize A / A to 1.0 
+       * fold-const.c (fold_binary) <RDIV_EXPR>: Optimize A / A to 1.0
        if we don't care about NaNs or Infinities.
 
 2005-11-20  Ian Lance Taylor  <ian@airs.com>
        * langhooks-def.h (LANG_HOOKS_LOOKUP_NAME): Add.
        (LANG_HOOKS_DECLS): Add initializer for LANG_HOOKS_LOOKUP_NAME.
        * langhooks.h (lang_hooks_for_decls): Add lookup_name.
-       
+
 2005-11-18  Richard Earnshaw  <richard.earnshaw@arm.com>
 
        PR target/24914
        as empty.
        * config/darwin.h (STARTFILE_SPEC): Use %(darwin_crt2) to possibly
        link in crt2.o.
-       
+
        * config/darwin.h (REAL_LIBGCC_SPEC): Link in shared libgcc depending
        on -mmacosx-version-min setting.
 
 
 2005-11-13  Razya Ladelsky <razya@il.ibm.com>
 
-        * ipa-prop.c (ipa_callsite_compute_param ): Removed obsolete type 
+        * ipa-prop.c (ipa_callsite_compute_param ): Removed obsolete type
        checking.
 
 2005-11-13  Jason Merrill  <jason@redhat.com>
 2005-11-11  Jason Merrill  <jason@redhat.com>
 
        PR c++/24686
-       * gimplify.c (gimplify_cleanup_point_expr): Also save and restore 
+       * gimplify.c (gimplify_cleanup_point_expr): Also save and restore
        the cleanup list.
 
 2005-11-11  Zdenek Dvorak  <dvorakz@suse.cz>
 
 2005-11-10  Daniel Berlin  <dberlin@dberlin.org>
 
-       * tree-ssa-alias.c (compute_may_aliases): Remove call to 
+       * tree-ssa-alias.c (compute_may_aliases): Remove call to
        delete_old_heap_vars.
        * tree-dfa.c (referenced_var_remove): Remove function.
        * tree-ssa.c (init_tree_ssa): Call init_alias_heapvars.
 2005-11-09  Andreas Krebbel  <krebbel1@de.ibm.com>
 
        PR 24624
-       * config/s390/s390.c (struct s390_frame_layout): New fields 
+       * config/s390/s390.c (struct s390_frame_layout): New fields
        first_save_gpr_slot and last_save_gpr_slot.
-       (cfun_grps_save_area_size, s390_frame_info, s390_emit_prologue,  
-       s390_emit_epilogue, s390_initial_elimination_offset): Replaced 
+       (cfun_grps_save_area_size, s390_frame_info, s390_emit_prologue,
+       s390_emit_epilogue, s390_initial_elimination_offset): Replaced
        first_save_gpr and last_save_gpr with the _slot variants.
-       (s390_register_info): Calculate first_save_gpr_slot and 
+       (s390_register_info): Calculate first_save_gpr_slot and
        last_save_gpr_slot using regs_ever_live.
 
 2005-11-09  Andreas Krebbel  <krebbel1@de.ibm.com>
 
 2005-11-09  Per Bothner  <per@bothner.com>
            Uros Bizjak  <uros@kss-loka.si>
-       
+
        PR c/24101
        * toplev.c (process_options): Initialize debug_hooks early
        in case lang_hooks.post_options ends up calling a debug_hook.
        (oldheapvars): Ditto.
        (get_constraint_for): Put heap vars on heapvars list.
        (delete_old_heap_vars): New function.
-       
+
 2005-11-08  Jason Merrill  <jason@redhat.com>
 
        * tree.h (CALL_FROM_THUNK_P): Add CALL_EXPR_CHECK.
        DDR_DIST_VECTS.
        (build_classic_dist_vector, build_classic_dir_vector): Push a set
        of distance/direction vectors instead of a single one.
-       * tree-data-ref.h (dir_vects, dist_vects): Replace dir/dist 
+       * tree-data-ref.h (dir_vects, dist_vects): Replace dir/dist
        lambda_vectors with a vec of lambda_vectors.
        (DDR_DIR_VECT, DDR_DIST_VECT): Redefined as operations on vec.
        (DDR_DIR_VECTS, DDR_DIST_VECTS, DDR_NUM_DIR_VECTS,
        * predict.c (predict_loops): Use new param.
        * predict.def (MAX_PRED_LOOP_ITERATIONS): Remove.
 
-       * ipa-inline.c (cgraph_decide_inlining_of_small_function, 
+       * ipa-inline.c (cgraph_decide_inlining_of_small_function,
        cgraph_decide_inlining, cgraph_decide_inlining_incrementally):
        Do not hold memory returned by cgraph_node_name across other call.
 
        (collapse_rest_of_var): New function.
        (do_structure_copy): Collapse if do_simple_structure_copy returns
        false.
-       
+
 2005-11-03  Andrew Pinski  <pinskia@physics.uc.edu>
 
        PR middle-end/24589
        (compute_frame_pointer_to_cfa_displacement): Likewise.
        (gen_subprogram_die): Restore old code for when DWARF2_UNWIND_INFO is
        not defined.
-       
+
        PR rtl-optimization/17356
        *  cfgrtl.c (purge_dead_edges): Undo last change.  In EDGE_EH code,
        add check for CALL_INSN if EDGE_ABRNOMAL_CALL true.
        * predict.def (MAX_PRED_LOOP_ITERATIONS): Define.
 
 2005-10-31  Andrew MacLeod  <amacleod@redhat.com>
-       
+
        PR tree-optimization/19097
        * tree-ssa-operands.c (correct_use_link): Don't look for modified stmts.
 
 
        PR/24220
        * c-common.c (vector_types_convertible_p): Check vector element type.
-       
+
 2005-10-21  Kaz Kojima  <kkojima@gcc.gnu.org>
 
        * config/sh/sh.c (prepare_move_operands): Handle the address
        PR 23714
        * builtins.c (expand_builtin_trap): Export.
        * expr.h (expand_builtin_trap): Declare.
-       * expr.c (expand_assignment): Emit a trap for integral offsets 
+       * expr.c (expand_assignment): Emit a trap for integral offsets
        from registers that weren't reduced to bitpos.
 
        * tree-cfg.c (mark_array_ref_addressable_1): Remove.
        (struct cxx): Add adjust_class_at_definition target hook.
        * target-def.h: (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): New define,
        defaulting to hook_bool_tree_true. Add to TARGET_INITIALIZER
-       (TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): New define, defaulting to 
+       (TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): New define, defaulting to
        hook_void_tree. Add to TARGET_CXX.
        * tree.h (struct decl_with_vis): Rename non_addr_const_p field to
        dllimport_flag.
        * tree.c (merge_dllimport_decl_attributes): Check DECL_DLLIMPORT_P
        instead of attribute. Check for dllexport override.  Warn if
        inconsistent dll linkage. Don't lose old dllimport if decl has
-       had address referenced.   Tweak lookup of dllimport atribute.  
+       had address referenced.   Tweak lookup of dllimport atribute.
        (handle_dll_attribute): Check targetm.valid_dllimport_attribute_p
        for target specific rules.  Don't add dllimport attribute if
        DECL_DECLARED_INLINE_P.  Set DECL_DLLIMPORT_P when adding
-       dllimport attribute. 
+       dllimport attribute.
        (staticp): Replace DECL_NON_ADDR_CONSTANT_P with DECL_DLLIMPORT_P.
        * varasm.c (initializer_constant_valid_p): Replace
        DECL_NON_ADDR_CONSTANT_P with DECL_DLLIMPORT_P
 
        PR target/21801
        PR target/23589
-       * config.gcc (i[34567]86-*-cygwin*): Add winnt-cxx.o to 
+       * config.gcc (i[34567]86-*-cygwin*): Add winnt-cxx.o to
        'cxx_target_objs', winnt-stubs,o to 'extra_objs'.
        (i[34567]86-*-mingw32*): Likewise.
 
        * doc/tm.texi (TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): Document.
        (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): Document.
-                       
+
        * config/i386/winnt.c (i386_pe_dllimport_p): Factor out
-       C++-specific code. Change return value to bool. 
+       C++-specific code. Change return value to bool.
        (i386_pe_dllimport_p): Likewise.
        (associated_type): Simplify and make language-independent
        (i386_pe_encode_section_info): Replace override of ambiguous
        * config/i386/winnt-stubs.c: New file. Define stub versions of
        lang-specific functions.
        * config/i386/i386-protos.h: Declare winnt-[cxx|stubs].c functions
-       i386_pe_type_dllimport_p, i386_pe_type_dllexport_p, 
+       i386_pe_type_dllimport_p, i386_pe_type_dllexport_p,
        i386_pe_adjust_class_at_definition.
-       (i386_pe_valid_dllimport_attribute_p): Declare. 
+       (i386_pe_valid_dllimport_attribute_p): Declare.
        * config/i386/cygming.h (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): Define.
        (TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): Define.
        * config/i386/t-cygming: Add rules for winnt-cxx.o, winnt-stubs.o.
 
 2005-10-11  Eric Botcazou  <ebotcazou@libertysurf.fr>
 
-       PR middle-end/24263 
+       PR middle-end/24263
        * convert.c (convert_to_real): Revert 2005-10-05 patch.
        Only apply the optimization for rounding builtins if the inner
        cast is also an extension.
 
        2004-11-22  Mark Mitchell  <mark@codesourcery.com>
        * config.gcc (arm*-*-linux-gnueabi): Use __cxa_atexit.
+
        2004-11-19  Mark Mitchell  <mark@codesourcery.com>
        * config.gcc (arm*-*-linux-gnueabi): Add it.
        * config/arm/bpabi.h (FPUTYPE_DEFAULT): Undefine it before
        out return_label and naked_return_label.
 
 2005-10-06  Daniel Berlin  <dberlin@dberlin.org>
-       
+
        * tree-ssa-structalias.c (check_for_overlaps): Fix bug in last
        change.
 
        being a DECL.
 
 2005-10-06  Daniel Berlin  <dberlin@dberlin.org>
-       
+
        Fix PR tree-optimization/22488
        * tree-ssa-structalias.c (check_for_overlaps): New function.
        (create_variable_info_for): Use it.
        PR Debug/23205
        * dbxout.c (dbxout_symbol): Check DECL_RTL_SET_P, after
        handling constants. Check NAMESPACE_DECL context for constants.
-       
+
 2005-10-05  Eric Christopher  <echristo@apple.com>
 
        * doc/md.texi (Standard Names): Fix name of pushm1 pattern.
index 00ba829..1475e7f 100644 (file)
   [(set_attr "type" "imovx,alu1")
    (set_attr "mode" "HI")])
 
-(define_insn "*zero_extendqihi2_movzbw"
+; zero extend to SImode here to avoid partial register stalls
+(define_insn "*zero_extendqihi2_movzbl"
   [(set (match_operand:HI 0 "register_operand" "=r")
      (zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "qm")))]
   "(!TARGET_ZERO_EXTEND_WITH_AND || optimize_size) && reload_completed"
-  "movz{bw|x}\t{%1, %0|%0, %1}"
+  "movz{bl|x}\t{%1, %k0|%k0, %k1}"
   [(set_attr "type" "imovx")
-   (set_attr "mode" "HI")])
+   (set_attr "mode" "SI")])
 
 ;; For the movzbw case strip only the clobber
 (define_split