From 0d5e0c1bf0e68323091e3f3152ad4676cd59e53d Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Mon, 4 Jul 2011 18:26:08 +0200 Subject: [PATCH] re PR target/49600 (Bad SSE2 int->float split in i386.md) PR target/49600 * config/i386/i386.md (SSE2 int->float split): Push operand 1 in general register to memory for !TARGET_INTER_UNIT_MOVES. From-SVN: r175817 --- gcc/ChangeLog | 90 ++++++++++++++++++----------------------- gcc/config/i386/i386.md | 15 +++++-- 2 files changed, 52 insertions(+), 53 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1b56a8f79f8..230bc256ead 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-07-04 Uros Bizjak + + PR target/49600 + * config/i386/i386.md (SSE2 int->float split): Push operand 1 in + general register to memory for !TARGET_INTER_UNIT_MOVES. + 2011-07-04 Georg-Johann Lay PR target/44643 @@ -8,8 +14,7 @@ * doc/extend.texi (AVR Built-in Functions): Update documentation of __builtin_avr_fmul*. - * config/avr/avr.c (avr_init_builtins): Don't depend on - AVR_HAVE_MUL. + * config/avr/avr.c (avr_init_builtins): Don't depend on AVR_HAVE_MUL. * config/avr/avr-c.c (avr_cpu_cpp_builtins): Ditto. * config/avr/avr.md (fmul): Rename to fmul_insn. (fmuls): Rename to fmuls_insn. @@ -107,8 +112,7 @@ 2011-07-01 Richard Guenther PR tree-optimization/49603 - * tree-vect-stmts.c (vectorizable_load): Remove unnecessary - assert. + * tree-vect-stmts.c (vectorizable_load): Remove unnecessary assert. 2011-06-30 Martin Jambor @@ -188,8 +192,7 @@ PR tree-optimization/46787 * tree-data-ref.c (dr_address_invariant_p): Remove. (find_data_references_in_stmt): Invariant accesses are ok now. - * tree-vect-stmts.c (vectorizable_load): Handle invariant - loads. + * tree-vect-stmts.c (vectorizable_load): Handle invariant loads. * tree-vect-data-refs.c (vect_analyze_data_ref_access): Allow invariant loads. @@ -275,9 +278,8 @@ * config/arm/unwind-arm.c (enum __cxa_type_match_result): New. (cxa_type_match): Correct declaration. - (__gnu_unwind_pr_common): Reconstruct - additional indirection when __cxa_type_match returns - succeeded_with_ptr_to_base. + (__gnu_unwind_pr_common): Reconstruct additional indirection + when __cxa_type_match returns succeeded_with_ptr_to_base. 2011-06-29 Ulrich Weigand @@ -293,7 +295,7 @@ Detect subregs via recursive descent instead of via SUBREG_LOC. 2011-06-29 Georg-Johann Lay - + * config/avr/avr.c (avr_encode_section_info): Dispatch to default_encode_section_info. @@ -310,14 +312,13 @@ 2011-06-29 Jakub Jelinek PR debug/49567 - * dwarf2out.c (mem_loc_descriptor) : Give up - for non-MODE_INT modes instead of asserting the mode has MODE_INT - class. + * dwarf2out.c (mem_loc_descriptor) : Give up for + non-MODE_INT modes instead of asserting the mode has MODE_INT class. 2011-06-29 Georg-Johann Lay - + PR target/34734 - * config/avr/avr.c (avr_handle_progmem_attribute): Move warning + * config/avr/avr.c (avr_handle_progmem_attribute): Move warning about uninitialized data attributed 'progmem' from here... (avr_encode_section_info): ...to this new function. (TARGET_ENCODE_SECTION_INFO): New define. @@ -325,7 +326,7 @@ section flag SECTION_WRITE. 2011-06-29 Georg-Johann Lay - + * config/avr/t-avr (LIB1ASMFUNCS): Add _mulhisi3, _umulhisi3, _xmulhisi3_exit. * config/avr/libgcc.S (_xmulhisi3_exit): New Function. @@ -387,13 +388,12 @@ * gcc.c: Include params.h. (set_option_handlers): Also use common_handle_option and target_handle_option. - (main): Call global_init_params, finish_params and - init_options_struct. + (main): Call global_init_params, finish_params and init_options_struct. * opts.c (debug_type_names): Move from toplev.c. (print_filtered_help): Access quiet_flag through opts pointer. - (common_handle_option): Return early in the driver for some - options. Access in_lto_p, dwarf_version and - warn_maybe_uninitialized through opts pointer. + (common_handle_option): Return early in the driver for some options. + Access in_lto_p, dwarf_version and warn_maybe_uninitialized through + opts pointer. * toplev.c (in_lto_p): Move to common.opt. (debug_type_names): Move to opts.c. * Makefile.in (OBJS): Remove opts.o. @@ -402,8 +402,7 @@ 2011-06-28 Kai Tietz - * tree-ssa-forwprop.c (simplify_bitwise_binary): Improve - type sinking. + * tree-ssa-forwprop.c (simplify_bitwise_binary): Improve type sinking. 2011-06-28 Ramana Radhakrishnan @@ -437,8 +436,7 @@ (genprogrtl): Add attr-common. * genattr.c (main): Include insn-attr-common.h. Don't generate definitions of DELAY_SLOTS or INSN_SCHEDULING. - * opts.c: Include insn-attr-common.h instead of rtl.h and - insn-attr.h. + * opts.c: Include insn-attr-common.h instead of rtl.h and insn-attr.h. 2011-06-28 Georg-Johann Lay @@ -535,9 +533,8 @@ 2011-06-27 Nick Clifton - * config/mn10300/mn10300.md (clzsi2): Use XOR after BSCH to - convert bit position of highest bit set into a count of the high - zero bits. + * config/mn10300/mn10300.md (clzsi2): Use XOR after BSCH to convert + bit position of highest bit set into a count of the high zero bits. 2011-06-27 Eric Botcazou @@ -559,8 +556,8 @@ * tree-ssa-math-opts.c (do_shift_rotate): Zero bits out of type precision after operation. - (find_bswap): Take for limit value the integer auto- - promotion into account. + (find_bswap): Take for limit value the integer auto-promotion + into account. 2011-06-27 Eric Botcazou @@ -590,8 +587,7 @@ clear some builtins on VMS. Calls vms_patch_builtins. (ia64_asm_output_external): Remove DO_CRTL_NAME. * config/ia64/vms64.h: Do not include vms-crtl-64.h - * config.gcc (*-*-*vms*): Define extra_objs, target_gtfiles, - tm_p_file. + * config.gcc (*-*-*vms*): Define extra_objs, target_gtfiles, tm_p_file. 2011-06-27 Tristan Gingold @@ -694,8 +690,7 @@ PR target/49335 * config/arm/predicates.md (add_operator): New. - * config/arm/arm.md ("*arith_shiftsi"): Fix for SP reg usage - in Thumb2. + * config/arm/arm.md ("*arith_shiftsi"): Fix for SP reg usage in Thumb2. 2011-06-24 Andi Kleen @@ -791,9 +786,8 @@ PR libgomp/49490 * omp-low.c (expand_omp_for_static_nochunk): Only - use n ceil/ nthreads size for the first - n % nthreads threads in the team instead of - all threads except for the last few ones which + use n ceil/ nthreads size for the first n % nthreads threads in the + team instead of all threads except for the last few ones which get less work or none at all. PR debug/49496 @@ -814,8 +808,7 @@ 2011-06-22 Nathan Sidwell - * config/arm/arm.h (OPTION_DEFAULT_SPECS): Fix -mtls-dialect - typo. + * config/arm/arm.h (OPTION_DEFAULT_SPECS): Fix -mtls-dialect typo. * config.gcc (arm*-*-linux*): Default to gnu tls. (arm*-*-*): Add --with-tls option. (all_defaults): Add 'tls'. @@ -851,7 +844,7 @@ * cgraphunit.c (assemble_thunk): Use correct return type. 2011-06-22 Dmitry Plotnikov - Dmitry Melnik + Dmitry Melnik * config/arm/arm.c (neon_immediate_valid_for_shift): New function. (neon_output_shift_immediate): Ditto. @@ -897,9 +890,8 @@ of base type reference as argument. (resolve_addr_in_expr): Likewise. Fix keep computation. (convert_descriptor_to_signed): Renamed to... - (convert_descriptor_to_mode): ... this. For wider types convert - to unsigned instead of signed, for <= DWARF2_ADDR_SIZE convert to - untyped. + (convert_descriptor_to_mode): ... this. For wider types convert to + unsigned instead of signed, for <= DWARF2_ADDR_SIZE convert to untyped. (typed_binop): New function. (scompare_loc_descriptor, ucompare_loc_descriptor, minmax_loc_descriptor, mem_loc_descriptor): For wider integer modes @@ -952,8 +944,7 @@ debug args vector from old_decl to new_decl. * ipa-prop.c (ipa_modify_call_arguments): For optimized away or modified parameters, add debug bind stmts before call - setting DEBUG_EXPR_DECL which is remembered in debug args - vector. + setting DEBUG_EXPR_DECL which is remembered in debug args vector. * cfgexpand.c (expand_call_stmt): Call expand_debug_expr on DECL_DEBUG_EXPRs from debug args vector. (expand_debug_source_expr): New function. @@ -962,9 +953,8 @@ * var-tracking.c (prepare_call_arguments): Add debug args to call_arguments if any. * dwarf2out.c (dwarf_stack_op_name, size_of_loc_descr, - output_loc_operands, output_loc_operands_raw, - resolve_addr_in_expr, compare_loc_operands): Handle - DW_OP_GNU_parameter_ref. + output_loc_operands, output_loc_operands_raw, resolve_addr_in_expr, + compare_loc_operands): Handle DW_OP_GNU_parameter_ref. (get_ref_die_offset, parameter_ref_descriptor): New functions. (mem_loc_descriptor): Handle DEBUG_PARAMETER_REF. (gen_subprogram_die): Handle parameters identified by @@ -997,7 +987,7 @@ if the function has no attributes. * tree.c (is_attribute_with_length_p): Removed. (is_attribute_p): Removed. - (private_is_attribute_p): New. + (private_is_attribute_p): New. (private_lookup_attribute): New. (lookup_attribute): Removed. (lookup_ident_attribute): New. @@ -1016,7 +1006,7 @@ in the form 'text', not '__text__'. (private_is_attribute_p, private_lookup_attribute): New. Updated comments. - + 2011-06-21 Andrew MacLeod * builtins.c: Add sync_ or SYNC__ to builtin names. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 2b1da4c79d2..a52941bd856 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -5022,11 +5022,20 @@ if (GET_CODE (op1) == SUBREG) op1 = SUBREG_REG (op1); - if (GENERAL_REG_P (op1) && TARGET_INTER_UNIT_MOVES) + if (GENERAL_REG_P (op1)) { operands[4] = simplify_gen_subreg (V4SImode, operands[0], mode, 0); - emit_insn (gen_sse2_loadld (operands[4], - CONST0_RTX (V4SImode), operands[1])); + if (TARGET_INTER_UNIT_MOVES) + emit_insn (gen_sse2_loadld (operands[4], + CONST0_RTX (V4SImode), operands[1])); + else + { + operands[5] = ix86_force_to_memory (GET_MODE (operands[1]), + operands[1]); + emit_insn (gen_sse2_loadld (operands[4], + CONST0_RTX (V4SImode), operands[5])); + ix86_free_from_memory (GET_MODE (operands[1])); + } } /* We can ignore possible trapping value in the high part of SSE register for non-trapping math. */ -- 2.30.2