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
This commit is contained in:
Eric Christopher 2005-11-27 02:29:36 +00:00
parent 2a3ebe774c
commit 0d9e72449c
2 changed files with 46 additions and 40 deletions

View 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,
@ -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 <gdr@integrable-solutions.net>
@ -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 <richard.earnshaw@arm.com>
* 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 <amodra@bigpond.net.au>
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 <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>
@ -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 <richard.earnshaw@arm.com>
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 <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>
@ -1129,7 +1134,7 @@
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>
@ -1169,7 +1174,7 @@
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.
@ -1294,12 +1299,12 @@
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>
@ -1354,7 +1359,7 @@
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.
@ -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 <jason@redhat.com>
* 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 <pinskia@physics.uc.edu>
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 <amacleod@redhat.com>
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 <kkojima@gcc.gnu.org>
* 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 <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.
@ -2615,7 +2620,7 @@
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
@ -2713,7 +2718,7 @@
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.
@ -2724,7 +2729,7 @@
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.
@ -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 <echristo@apple.com>
* doc/md.texi (Standard Names): Fix name of pushm1 pattern.

View File

@ -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