From f6db3928253bbf51338ebfccf1be04f1baba78de Mon Sep 17 00:00:00 2001 From: echristo Date: Sun, 27 Nov 2005 02:29:36 +0000 Subject: [PATCH] 2005-11-26 Eric Christopher * 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 | 79 ++++++++++++++++++++++++++----------------------- gcc/config/i386/i386.md | 7 +++-- 2 files changed, 46 insertions(+), 40 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b654b62..c343af9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-11-26 Eric Christopher + + * config/i386/i386.md (*zero_extendqihi2_movzbw): Avoid partial + register stalls by zero extending to the full register. + 2005-11-27 Joseph S. Myers * config/floatunsisf.c, config/floatunsidf.c, @@ -224,8 +229,8 @@ 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 @@ -305,7 +310,7 @@ PR target/24988 * config/rs6000/darwin.h (TARGET_OS_CPP_BUILTINS): Remove call to SUBTARGET_OS_CPP_BUILTINS. - + 2005-11-22 Richard Earnshaw * arm.c (emit_set_insn): New function. @@ -319,7 +324,7 @@ (vfp_emit_fstmx): Likewise. Use plus_constant. (emit_multi_reg_push): Likewise. (emit_sfm): Use plus_constant. - + 2005-11-23 Alan Modra PR target/24954 @@ -354,7 +359,7 @@ * 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, @@ -470,7 +475,7 @@ 2005-11-21 Uros Bizjak - * fold-const.c (fold_binary) : Optimize A / A to 1.0 + * fold-const.c (fold_binary) : Optimize A / A to 1.0 if we don't care about NaNs or Infinities. 2005-11-20 Ian Lance Taylor @@ -599,7 +604,7 @@ * 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 PR target/24914 @@ -936,7 +941,7 @@ 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. @@ -1018,7 +1023,7 @@ 2005-11-13 Razya Ladelsky - * 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 @@ -1129,7 +1134,7 @@ 2005-11-11 Jason Merrill 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 @@ -1169,7 +1174,7 @@ 2005-11-10 Daniel Berlin - * 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. @@ -1294,12 +1299,12 @@ 2005-11-09 Andreas Krebbel 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 @@ -1354,7 +1359,7 @@ 2005-11-09 Per Bothner Uros Bizjak - + PR c/24101 * toplev.c (process_options): Initialize debug_hooks early in case lang_hooks.post_options ends up calling a debug_hook. @@ -1396,7 +1401,7 @@ (oldheapvars): Ditto. (get_constraint_for): Put heap vars on heapvars list. (delete_old_heap_vars): New function. - + 2005-11-08 Jason Merrill * tree.h (CALL_FROM_THUNK_P): Add CALL_EXPR_CHECK. @@ -1501,7 +1506,7 @@ 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, @@ -1541,7 +1546,7 @@ * 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. @@ -1743,7 +1748,7 @@ (collapse_rest_of_var): New function. (do_structure_copy): Collapse if do_simple_structure_copy returns false. - + 2005-11-03 Andrew Pinski PR middle-end/24589 @@ -1861,7 +1866,7 @@ (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. @@ -1884,7 +1889,7 @@ * predict.def (MAX_PRED_LOOP_ITERATIONS): Define. 2005-10-31 Andrew MacLeod - + PR tree-optimization/19097 * tree-ssa-operands.c (correct_use_link): Don't look for modified stmts. @@ -2037,7 +2042,7 @@ PR/24220 * c-common.c (vector_types_convertible_p): Check vector element type. - + 2005-10-21 Kaz Kojima * config/sh/sh.c (prepare_move_operands): Handle the address @@ -2300,7 +2305,7 @@ 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. @@ -2395,7 +2400,7 @@ (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. @@ -2403,26 +2408,26 @@ * 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 @@ -2434,9 +2439,9 @@ * 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. @@ -2505,7 +2510,7 @@ 2005-10-11 Eric Botcazou - 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. @@ -2615,7 +2620,7 @@ 2004-11-22 Mark Mitchell * config.gcc (arm*-*-linux-gnueabi): Use __cxa_atexit. - + 2004-11-19 Mark Mitchell * config.gcc (arm*-*-linux-gnueabi): Add it. * config/arm/bpabi.h (FPUTYPE_DEFAULT): Undefine it before @@ -2713,7 +2718,7 @@ out return_label and naked_return_label. 2005-10-06 Daniel Berlin - + * tree-ssa-structalias.c (check_for_overlaps): Fix bug in last change. @@ -2724,7 +2729,7 @@ being a DECL. 2005-10-06 Daniel Berlin - + Fix PR tree-optimization/22488 * tree-ssa-structalias.c (check_for_overlaps): New function. (create_variable_info_for): Use it. @@ -2788,7 +2793,7 @@ 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 * doc/md.texi (Standard Names): Fix name of pushm1 pattern. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 00ba829..1475e7f 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -3036,13 +3036,14 @@ [(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 -- 2.7.4