Commit 0d9e7244 by Eric Christopher

i386.md (*zero_extendqihi2_movzbw): Avoid partial register stalls by zero…

i386.md (*zero_extendqihi2_movzbw): Avoid partial register stalls by zero extending to the full register.

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.

From-SVN: r107559
parent 2a3ebe77
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> 2005-11-27 Joseph S. Myers <joseph@codesourcery.com>
* config/floatunsisf.c, config/floatunsidf.c, * config/floatunsisf.c, config/floatunsidf.c,
...@@ -224,8 +229,8 @@ ...@@ -224,8 +229,8 @@
PR c++/21667 PR c++/21667
* c-typeck.c (build_array_ref): Avoid code duplicate. Use common * c-typeck.c (build_array_ref): Avoid code duplicate. Use common
C/C++ diagnostic function warn_array_subscript_with_type_char. C/C++ diagnostic function warn_array_subscript_with_type_char.
* c-common.h (warn_array_subscript_with_type_char): Declare. * c-common.h (warn_array_subscript_with_type_char): Declare.
* c-common.c (warn_array_subscript_with_type_char): Define. * c-common.c (warn_array_subscript_with_type_char): Define.
2005-11-23 Gabriel Dos Reis <gdr@integrable-solutions.net> 2005-11-23 Gabriel Dos Reis <gdr@integrable-solutions.net>
...@@ -305,7 +310,7 @@ ...@@ -305,7 +310,7 @@
PR target/24988 PR target/24988
* config/rs6000/darwin.h (TARGET_OS_CPP_BUILTINS): Remove call * config/rs6000/darwin.h (TARGET_OS_CPP_BUILTINS): Remove call
to SUBTARGET_OS_CPP_BUILTINS. to SUBTARGET_OS_CPP_BUILTINS.
2005-11-22 Richard Earnshaw <richard.earnshaw@arm.com> 2005-11-22 Richard Earnshaw <richard.earnshaw@arm.com>
* arm.c (emit_set_insn): New function. * arm.c (emit_set_insn): New function.
...@@ -319,7 +324,7 @@ ...@@ -319,7 +324,7 @@
(vfp_emit_fstmx): Likewise. Use plus_constant. (vfp_emit_fstmx): Likewise. Use plus_constant.
(emit_multi_reg_push): Likewise. (emit_multi_reg_push): Likewise.
(emit_sfm): Use plus_constant. (emit_sfm): Use plus_constant.
2005-11-23 Alan Modra <amodra@bigpond.net.au> 2005-11-23 Alan Modra <amodra@bigpond.net.au>
PR target/24954 PR target/24954
...@@ -354,7 +359,7 @@ ...@@ -354,7 +359,7 @@
* c-cppbuiltin.c (c_cpp_builtins): Define __pic__ and __PIC__ when * c-cppbuiltin.c (c_cpp_builtins): Define __pic__ and __PIC__ when
flag_pic is set. flag_pic is set.
* config/alpha/freebsd.h, config/alpha/linux.h, * config/alpha/freebsd.h, config/alpha/linux.h,
config/arm/linux-elf.h, config/bfin/bfin.h, config/arm/linux-elf.h, config/bfin/bfin.h,
config/cris/linux.h, config/darwin.h, config/freebsd-spec.h, config/cris/linux.h, config/darwin.h, config/freebsd-spec.h,
...@@ -470,7 +475,7 @@ ...@@ -470,7 +475,7 @@
2005-11-21 Uros Bizjak <uros@kss-loka.si> 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. if we don't care about NaNs or Infinities.
2005-11-20 Ian Lance Taylor <ian@airs.com> 2005-11-20 Ian Lance Taylor <ian@airs.com>
...@@ -599,7 +604,7 @@ ...@@ -599,7 +604,7 @@
* langhooks-def.h (LANG_HOOKS_LOOKUP_NAME): Add. * langhooks-def.h (LANG_HOOKS_LOOKUP_NAME): Add.
(LANG_HOOKS_DECLS): Add initializer for LANG_HOOKS_LOOKUP_NAME. (LANG_HOOKS_DECLS): Add initializer for LANG_HOOKS_LOOKUP_NAME.
* langhooks.h (lang_hooks_for_decls): Add lookup_name. * langhooks.h (lang_hooks_for_decls): Add lookup_name.
2005-11-18 Richard Earnshaw <richard.earnshaw@arm.com> 2005-11-18 Richard Earnshaw <richard.earnshaw@arm.com>
PR target/24914 PR target/24914
...@@ -936,7 +941,7 @@ ...@@ -936,7 +941,7 @@
as empty. as empty.
* config/darwin.h (STARTFILE_SPEC): Use %(darwin_crt2) to possibly * config/darwin.h (STARTFILE_SPEC): Use %(darwin_crt2) to possibly
link in crt2.o. link in crt2.o.
* config/darwin.h (REAL_LIBGCC_SPEC): Link in shared libgcc depending * config/darwin.h (REAL_LIBGCC_SPEC): Link in shared libgcc depending
on -mmacosx-version-min setting. on -mmacosx-version-min setting.
...@@ -1018,7 +1023,7 @@ ...@@ -1018,7 +1023,7 @@
2005-11-13 Razya Ladelsky <razya@il.ibm.com> 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. checking.
2005-11-13 Jason Merrill <jason@redhat.com> 2005-11-13 Jason Merrill <jason@redhat.com>
...@@ -1129,7 +1134,7 @@ ...@@ -1129,7 +1134,7 @@
2005-11-11 Jason Merrill <jason@redhat.com> 2005-11-11 Jason Merrill <jason@redhat.com>
PR c++/24686 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. the cleanup list.
2005-11-11 Zdenek Dvorak <dvorakz@suse.cz> 2005-11-11 Zdenek Dvorak <dvorakz@suse.cz>
...@@ -1169,7 +1174,7 @@ ...@@ -1169,7 +1174,7 @@
2005-11-10 Daniel Berlin <dberlin@dberlin.org> 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. delete_old_heap_vars.
* tree-dfa.c (referenced_var_remove): Remove function. * tree-dfa.c (referenced_var_remove): Remove function.
* tree-ssa.c (init_tree_ssa): Call init_alias_heapvars. * tree-ssa.c (init_tree_ssa): Call init_alias_heapvars.
...@@ -1294,12 +1299,12 @@ ...@@ -1294,12 +1299,12 @@
2005-11-09 Andreas Krebbel <krebbel1@de.ibm.com> 2005-11-09 Andreas Krebbel <krebbel1@de.ibm.com>
PR 24624 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. first_save_gpr_slot and last_save_gpr_slot.
(cfun_grps_save_area_size, s390_frame_info, s390_emit_prologue, (cfun_grps_save_area_size, s390_frame_info, s390_emit_prologue,
s390_emit_epilogue, s390_initial_elimination_offset): Replaced s390_emit_epilogue, s390_initial_elimination_offset): Replaced
first_save_gpr and last_save_gpr with the _slot variants. 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. last_save_gpr_slot using regs_ever_live.
2005-11-09 Andreas Krebbel <krebbel1@de.ibm.com> 2005-11-09 Andreas Krebbel <krebbel1@de.ibm.com>
...@@ -1354,7 +1359,7 @@ ...@@ -1354,7 +1359,7 @@
2005-11-09 Per Bothner <per@bothner.com> 2005-11-09 Per Bothner <per@bothner.com>
Uros Bizjak <uros@kss-loka.si> Uros Bizjak <uros@kss-loka.si>
PR c/24101 PR c/24101
* toplev.c (process_options): Initialize debug_hooks early * toplev.c (process_options): Initialize debug_hooks early
in case lang_hooks.post_options ends up calling a debug_hook. in case lang_hooks.post_options ends up calling a debug_hook.
...@@ -1396,7 +1401,7 @@ ...@@ -1396,7 +1401,7 @@
(oldheapvars): Ditto. (oldheapvars): Ditto.
(get_constraint_for): Put heap vars on heapvars list. (get_constraint_for): Put heap vars on heapvars list.
(delete_old_heap_vars): New function. (delete_old_heap_vars): New function.
2005-11-08 Jason Merrill <jason@redhat.com> 2005-11-08 Jason Merrill <jason@redhat.com>
* tree.h (CALL_FROM_THUNK_P): Add CALL_EXPR_CHECK. * tree.h (CALL_FROM_THUNK_P): Add CALL_EXPR_CHECK.
...@@ -1501,7 +1506,7 @@ ...@@ -1501,7 +1506,7 @@
DDR_DIST_VECTS. DDR_DIST_VECTS.
(build_classic_dist_vector, build_classic_dir_vector): Push a set (build_classic_dist_vector, build_classic_dir_vector): Push a set
of distance/direction vectors instead of a single one. 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. lambda_vectors with a vec of lambda_vectors.
(DDR_DIR_VECT, DDR_DIST_VECT): Redefined as operations on vec. (DDR_DIR_VECT, DDR_DIST_VECT): Redefined as operations on vec.
(DDR_DIR_VECTS, DDR_DIST_VECTS, DDR_NUM_DIR_VECTS, (DDR_DIR_VECTS, DDR_DIST_VECTS, DDR_NUM_DIR_VECTS,
...@@ -1541,7 +1546,7 @@ ...@@ -1541,7 +1546,7 @@
* predict.c (predict_loops): Use new param. * predict.c (predict_loops): Use new param.
* predict.def (MAX_PRED_LOOP_ITERATIONS): Remove. * 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): cgraph_decide_inlining, cgraph_decide_inlining_incrementally):
Do not hold memory returned by cgraph_node_name across other call. Do not hold memory returned by cgraph_node_name across other call.
...@@ -1743,7 +1748,7 @@ ...@@ -1743,7 +1748,7 @@
(collapse_rest_of_var): New function. (collapse_rest_of_var): New function.
(do_structure_copy): Collapse if do_simple_structure_copy returns (do_structure_copy): Collapse if do_simple_structure_copy returns
false. false.
2005-11-03 Andrew Pinski <pinskia@physics.uc.edu> 2005-11-03 Andrew Pinski <pinskia@physics.uc.edu>
PR middle-end/24589 PR middle-end/24589
...@@ -1861,7 +1866,7 @@ ...@@ -1861,7 +1866,7 @@
(compute_frame_pointer_to_cfa_displacement): Likewise. (compute_frame_pointer_to_cfa_displacement): Likewise.
(gen_subprogram_die): Restore old code for when DWARF2_UNWIND_INFO is (gen_subprogram_die): Restore old code for when DWARF2_UNWIND_INFO is
not defined. not defined.
PR rtl-optimization/17356 PR rtl-optimization/17356
* cfgrtl.c (purge_dead_edges): Undo last change. In EDGE_EH code, * cfgrtl.c (purge_dead_edges): Undo last change. In EDGE_EH code,
add check for CALL_INSN if EDGE_ABRNOMAL_CALL true. add check for CALL_INSN if EDGE_ABRNOMAL_CALL true.
...@@ -1884,7 +1889,7 @@ ...@@ -1884,7 +1889,7 @@
* predict.def (MAX_PRED_LOOP_ITERATIONS): Define. * predict.def (MAX_PRED_LOOP_ITERATIONS): Define.
2005-10-31 Andrew MacLeod <amacleod@redhat.com> 2005-10-31 Andrew MacLeod <amacleod@redhat.com>
PR tree-optimization/19097 PR tree-optimization/19097
* tree-ssa-operands.c (correct_use_link): Don't look for modified stmts. * tree-ssa-operands.c (correct_use_link): Don't look for modified stmts.
...@@ -2037,7 +2042,7 @@ ...@@ -2037,7 +2042,7 @@
PR/24220 PR/24220
* c-common.c (vector_types_convertible_p): Check vector element type. * c-common.c (vector_types_convertible_p): Check vector element type.
2005-10-21 Kaz Kojima <kkojima@gcc.gnu.org> 2005-10-21 Kaz Kojima <kkojima@gcc.gnu.org>
* config/sh/sh.c (prepare_move_operands): Handle the address * config/sh/sh.c (prepare_move_operands): Handle the address
...@@ -2300,7 +2305,7 @@ ...@@ -2300,7 +2305,7 @@
PR 23714 PR 23714
* builtins.c (expand_builtin_trap): Export. * builtins.c (expand_builtin_trap): Export.
* expr.h (expand_builtin_trap): Declare. * 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. from registers that weren't reduced to bitpos.
* tree-cfg.c (mark_array_ref_addressable_1): Remove. * tree-cfg.c (mark_array_ref_addressable_1): Remove.
...@@ -2395,7 +2400,7 @@ ...@@ -2395,7 +2400,7 @@
(struct cxx): Add adjust_class_at_definition target hook. (struct cxx): Add adjust_class_at_definition target hook.
* target-def.h: (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): New define, * target-def.h: (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): New define,
defaulting to hook_bool_tree_true. Add to TARGET_INITIALIZER 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. hook_void_tree. Add to TARGET_CXX.
* tree.h (struct decl_with_vis): Rename non_addr_const_p field to * tree.h (struct decl_with_vis): Rename non_addr_const_p field to
dllimport_flag. dllimport_flag.
...@@ -2403,26 +2408,26 @@ ...@@ -2403,26 +2408,26 @@
* tree.c (merge_dllimport_decl_attributes): Check DECL_DLLIMPORT_P * tree.c (merge_dllimport_decl_attributes): Check DECL_DLLIMPORT_P
instead of attribute. Check for dllexport override. Warn if instead of attribute. Check for dllexport override. Warn if
inconsistent dll linkage. Don't lose old dllimport if decl has 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 (handle_dll_attribute): Check targetm.valid_dllimport_attribute_p
for target specific rules. Don't add dllimport attribute if for target specific rules. Don't add dllimport attribute if
DECL_DECLARED_INLINE_P. Set DECL_DLLIMPORT_P when adding 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. (staticp): Replace DECL_NON_ADDR_CONSTANT_P with DECL_DLLIMPORT_P.
* varasm.c (initializer_constant_valid_p): Replace * varasm.c (initializer_constant_valid_p): Replace
DECL_NON_ADDR_CONSTANT_P with DECL_DLLIMPORT_P DECL_NON_ADDR_CONSTANT_P with DECL_DLLIMPORT_P
PR target/21801 PR target/21801
PR target/23589 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'. 'cxx_target_objs', winnt-stubs,o to 'extra_objs'.
(i[34567]86-*-mingw32*): Likewise. (i[34567]86-*-mingw32*): Likewise.
* doc/tm.texi (TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): Document. * doc/tm.texi (TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): Document.
(TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): Document. (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): Document.
* config/i386/winnt.c (i386_pe_dllimport_p): Factor out * 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. (i386_pe_dllimport_p): Likewise.
(associated_type): Simplify and make language-independent (associated_type): Simplify and make language-independent
(i386_pe_encode_section_info): Replace override of ambiguous (i386_pe_encode_section_info): Replace override of ambiguous
...@@ -2434,9 +2439,9 @@ ...@@ -2434,9 +2439,9 @@
* config/i386/winnt-stubs.c: New file. Define stub versions of * config/i386/winnt-stubs.c: New file. Define stub versions of
lang-specific functions. lang-specific functions.
* config/i386/i386-protos.h: Declare winnt-[cxx|stubs].c 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_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. * config/i386/cygming.h (TARGET_VALID_DLLIMPORT_ATTRIBUTE_P): Define.
(TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): Define. (TARGET_CXX_ADJUST_CLASS_AT_DEFINITION): Define.
* config/i386/t-cygming: Add rules for winnt-cxx.o, winnt-stubs.o. * config/i386/t-cygming: Add rules for winnt-cxx.o, winnt-stubs.o.
...@@ -2505,7 +2510,7 @@ ...@@ -2505,7 +2510,7 @@
2005-10-11 Eric Botcazou <ebotcazou@libertysurf.fr> 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. * convert.c (convert_to_real): Revert 2005-10-05 patch.
Only apply the optimization for rounding builtins if the inner Only apply the optimization for rounding builtins if the inner
cast is also an extension. cast is also an extension.
...@@ -2615,7 +2620,7 @@ ...@@ -2615,7 +2620,7 @@
2004-11-22 Mark Mitchell <mark@codesourcery.com> 2004-11-22 Mark Mitchell <mark@codesourcery.com>
* config.gcc (arm*-*-linux-gnueabi): Use __cxa_atexit. * config.gcc (arm*-*-linux-gnueabi): Use __cxa_atexit.
2004-11-19 Mark Mitchell <mark@codesourcery.com> 2004-11-19 Mark Mitchell <mark@codesourcery.com>
* config.gcc (arm*-*-linux-gnueabi): Add it. * config.gcc (arm*-*-linux-gnueabi): Add it.
* config/arm/bpabi.h (FPUTYPE_DEFAULT): Undefine it before * config/arm/bpabi.h (FPUTYPE_DEFAULT): Undefine it before
...@@ -2713,7 +2718,7 @@ ...@@ -2713,7 +2718,7 @@
out return_label and naked_return_label. out return_label and naked_return_label.
2005-10-06 Daniel Berlin <dberlin@dberlin.org> 2005-10-06 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-structalias.c (check_for_overlaps): Fix bug in last * tree-ssa-structalias.c (check_for_overlaps): Fix bug in last
change. change.
...@@ -2724,7 +2729,7 @@ ...@@ -2724,7 +2729,7 @@
being a DECL. being a DECL.
2005-10-06 Daniel Berlin <dberlin@dberlin.org> 2005-10-06 Daniel Berlin <dberlin@dberlin.org>
Fix PR tree-optimization/22488 Fix PR tree-optimization/22488
* tree-ssa-structalias.c (check_for_overlaps): New function. * tree-ssa-structalias.c (check_for_overlaps): New function.
(create_variable_info_for): Use it. (create_variable_info_for): Use it.
...@@ -2788,7 +2793,7 @@ ...@@ -2788,7 +2793,7 @@
PR Debug/23205 PR Debug/23205
* dbxout.c (dbxout_symbol): Check DECL_RTL_SET_P, after * dbxout.c (dbxout_symbol): Check DECL_RTL_SET_P, after
handling constants. Check NAMESPACE_DECL context for constants. handling constants. Check NAMESPACE_DECL context for constants.
2005-10-05 Eric Christopher <echristo@apple.com> 2005-10-05 Eric Christopher <echristo@apple.com>
* doc/md.texi (Standard Names): Fix name of pushm1 pattern. * doc/md.texi (Standard Names): Fix name of pushm1 pattern.
......
...@@ -3036,13 +3036,14 @@ ...@@ -3036,13 +3036,14 @@
[(set_attr "type" "imovx,alu1") [(set_attr "type" "imovx,alu1")
(set_attr "mode" "HI")]) (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") [(set (match_operand:HI 0 "register_operand" "=r")
(zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "qm")))] (zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "qm")))]
"(!TARGET_ZERO_EXTEND_WITH_AND || optimize_size) && reload_completed" "(!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 "type" "imovx")
(set_attr "mode" "HI")]) (set_attr "mode" "SI")])
;; For the movzbw case strip only the clobber ;; For the movzbw case strip only the clobber
(define_split (define_split
......
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