re PR target/49600 (Bad SSE2 int->float split in i386.md)
authorUros Bizjak <uros@gcc.gnu.org>
Mon, 4 Jul 2011 16:26:08 +0000 (18:26 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Mon, 4 Jul 2011 16:26:08 +0000 (18:26 +0200)
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
gcc/config/i386/i386.md

index 1b56a8f79f88b63dd24945a7176324250f3e16e8..230bc256eadb105df34bcfe6b2bf7dc02f032410 100644 (file)
@@ -1,3 +1,9 @@
+2011-07-04  Uros Bizjak  <ubizjak@gmail.com>
+
+       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  <avr@gjlay.de>
 
        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.
 2011-07-01  Richard Guenther  <rguenther@suse.de>
 
        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  <mjambor@suse.cz>
 
        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.
 
 
        * 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  <Ulrich.Weigand@de.ibm.com>
 
        Detect subregs via recursive descent instead of via SUBREG_LOC.
 
 2011-06-29  Georg-Johann Lay  <avr@gjlay.de>
-       
+
        * config/avr/avr.c (avr_encode_section_info): Dispatch to
        default_encode_section_info.
 
 2011-06-29  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/49567
-       * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTEND>: Give up
-       for non-MODE_INT modes instead of asserting the mode has MODE_INT
-       class.
+       * dwarf2out.c (mem_loc_descriptor) <case ZERO_EXTEND>: Give up for
+       non-MODE_INT modes instead of asserting the mode has MODE_INT class.
 
 2011-06-29  Georg-Johann Lay  <avr@gjlay.de>
-       
+
        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.
        section flag SECTION_WRITE.
 
 2011-06-29  Georg-Johann Lay  <avr@gjlay.de>
-       
+
        * config/avr/t-avr (LIB1ASMFUNCS): Add _mulhisi3, _umulhisi3,
        _xmulhisi3_exit.
        * config/avr/libgcc.S (_xmulhisi3_exit): New Function.
        * 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.
 
 2011-06-28  Kai Tietz  <ktietz@redhat.com>
 
-       * 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  <ramana.radhakrishnan@linaro.org>
 
        (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  <avr@gjlay.de>
 
 
 2011-06-27  Nick Clifton  <nickc@redhat.com>
 
-       * 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  <ebotcazou@adacore.com>
 
 
        * 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  <ebotcazou@adacore.com>
 
        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  <gingold@adacore.com>
 
 
        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  <ak@linux.intel.com>
 
 
        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
 
 2011-06-22  Nathan Sidwell  <nathan@codesourcery.com>
 
-       * 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'.
        * cgraphunit.c (assemble_thunk): Use correct return type.
 
 2011-06-22  Dmitry Plotnikov  <dplotnikov@ispras.ru>
-       Dmitry Melnik  <dm@ispras.ru>
+           Dmitry Melnik  <dm@ispras.ru>
 
        * config/arm/arm.c (neon_immediate_valid_for_shift): New function.
        (neon_output_shift_immediate): Ditto.
        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
        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.
        * 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
        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.
        in the form 'text', not '__text__'.
        (private_is_attribute_p, private_lookup_attribute): New.
        Updated comments.
-       
+
 2011-06-21  Andrew MacLeod  <amacleod@redhat.com>
 
        * builtins.c: Add sync_ or SYNC__ to builtin names.
index 2b1da4c79d2ead0b212439ba1d0bff75d8ed5f5e..a52941bd8569d59426a3d763a82e1aaeb0966a9c 100644 (file)
   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>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. */