OSDN Git Service

* config/i386/i386.c (struct_builtin_description)
[pf3gnuchains/gcc-fork.git] / gcc / ChangeLog
index 6147e35..32ee2a6 100644 (file)
+2008-05-08  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/35714
+       * config/i386/mmx.md (mmx_subv2sf3): New expander.
+       (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
+       (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
+       (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
+       to handle nonimmediate operands.
+       (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
+       (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
+       to handle nonimmediate operands.
+       (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
+       (mmx_pmulhrwv4hi3): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
+       (sse2_umulv1siv1di3): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
+       (mmx_eq<mode>3): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
+       (mmx_uavgv8qi3): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
+       (mmx_uavgv4hi3): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+
+       * config/i386/sse.md
+       (sse_movhlps_exp): New expander.  Use ix86_fixup_binary_operands
+       to handle nonimmediate operands.
+       (sse_movlhps_exp): New expander.  Use ix86_fixup_binary_operands
+       to handle nonimmediate operands.
+       (sse_loadhps_exp): New expander.  Use ix86_fixup_binary_operands
+       to handle nonimmediate operands.
+       (sse_loadlps_exp): New expander.  Use ix86_fixup_binary_operands
+       to handle nonimmediate operands.
+       (sse2_unpckhpd_exp): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (sse2_unpcklpd_exp): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (sse_loadhpd_exp): New expander.  Use ix86_fixup_binary_operands
+       to handle nonimmediate operands.
+       (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
+       to handle nonimmediate operands.
+       (*sse2_<plusminus_insn><mode>3): Rename from
+       sse2_<plusminus_insn><mode>3 insn pattern.
+       (sse2_<plusminus_insn><mode>3): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
+       (sse2_umulv2siv2di3): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
+       (sse4_1_mulv2siv2di3): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
+       (sse2_pmaddwd): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
+       (sse2_eq<mode>3): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
+       (sse4_1_eqv2di3): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
+       (sse2_uavgv16qi3): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
+       (sse2_uavgv16qi3): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
+       (sse2_uavgv8hi3): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
+       (ssse3_pmulhrswv8hi3): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+       (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
+       (ssse3_pmulhrswv4hi3): New expander.  Use
+       ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
+
+       (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
+       (<sse>_vmmul<mode>3): Ditto.
+       (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
+       (divv2df3): Ditto.
+       (ssse3_pmaddubsw128): Use register_operand for operand 1.
+       (ssse3_pmaddubsw): Ditto.
+
+       * config/i386/i386.c (struct_builtin_description)
+       [IX86_BUILTIN_LOADHPS]: Use CODE_FOR_sse_loadhps_exp.
+       [IX86_BUILTIN_STOREHPS]: Use CODE_FOR_sse_loadlps_exp.
+       [IX86_BUILTIN_LOADHPD]: Use CODE_FOR_sse2_loadhpd_exp.
+       [IX86_BUILTIN_LOADLPD]: Use CODE_FOR_sse2_loadlpd_exp.
+       [IX86_BUILTIN_MOVHLPS]: Use CODE_FOR_sse_movhlps_exp.
+       [IX86_BUILTIN_MOVLHPS]: Use CODE_FOR_sse_movlhps_exp.
+       [IX86_BUILTIN_UNPCKHPD]: Use FOR_sse2_unpckhpd_exp.
+       [IX86_BUILTIN_UNPCKLPD]: Use FOR_sse2_unpcklpd_exp.
+       (ix86_fixup_binary_operands): Assert that src1
+       and src2 must have the same mode when swapped.
+       (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
+       and ix86_binary_operator_ok.  Do not force operands in registers
+       when optimizing.
+
+2008-05-07  Jan Hubicka  <jh@suse.cz>
+
+       * cgraph.c (dump_cgraph_node): Update.
+       * cgraph.h (cgraph_local_info): Break out inline summary.
+       * cgraphunit.c (cgraph_process_new_functions): Use inliner analysis
+       hook.
+       * ipa-inline (inline_summary): New accestor function.
+       (cgraph_clone_inlined_nodes, cgraph_check_inline_limits,
+       cgraph_decide_inlining, compute_inline_parameters): Update.
+       * ipa.c (cgraph_remove_unreachable_nodes): Remove statistics.
+
+2008-05-07  Maxim Kuvyrkov  <maxim@codesourcery.com>
+
+       Cleanup ColdFire scheduling support and add V4 pipeline model.
+
+       * config/m68k/m68k.md (UNSPEC_TIE): New constant.
+       (define_attr cpu): Add cfv4 value.
+       (define_attr type, define_attr type1): Merge into a single 'type'
+       attribute.  Update all uses.
+       (define_attr opx_type, define_attr opy_type, define_attr opx_access):
+       Rearrange and update.  Rename value 'reg' to 'Rn', add value 'FPn'.
+       Update all uses.
+       (define_attr opx_mem, define_attr opy_mem): Remove.
+       (define_attr op_mem): Clean up, update comment.
+       (define_attr size): Use specific values instead of general int.
+       (define_attr guess, define_attr split): Remove.  Update all uses.
+       (movdf_internal, tstsi_internal, tsthi_internal, tstqi_internal,
+       tst<mode>_68881, pushexthisi_const, movsi_const0_68000_10,
+       movsi_const0_68040_60, movsi_const0, movsi_cf, movstrictqi_cf,
+       zero_extendhisi2_cf, zero_extendqisi2_cfv4, cfv4_extendhisi2,
+       68k_extendhisi2, extendqihi2, cfv4_extendqisi2, 68k_extendqisi2,
+       floatsi<mode>2_68881, ftrunc<mode>2_68881, ftrunc<mode>2_cf,
+       fix<mode>qi2_68881, fix<mode>hi2_68881, fix<mode>si2_68881,
+       adddi_dishl32, addsi3_5200, add<mode>3_floatsi_68881,
+       add<mode>3_floathi_68881, add<mode>3_floatqi_68881,
+       add<mode>3_68881, add<mode>3_cf, subdi_dishl32, subsi3,
+       sub<mode>3_floatsi_68881, sub<mode>3_floathi_68881,
+       sub<mode>3_floatqi_68881, sub<mode>3_68881, sub<mode>3_cf,
+       mulhi3, mulhisi3, mulhisisi3_s, mulsi3_68020, mulsi3_cf,
+       umulhisi3, mulhisisi3_z, mul<mode>3_floatsi_68881,
+       mul<mode>3_floathi_68881, mul<mode>3_floatqi_68881, fmul<mode>3_cf,
+       div<mode>3_cf, sqrt<mode>2_cf, abs<mode>2_cf, clzsi2,
+       one_cmplsi2_5200, subreghi1ashrdi_const32, ashrsi3, lshrsi3,
+       bsetmemqi, bsetmemqi_ext, bclrmemqi, bclrmemqi_ext,
+       beq, bne, bgt, blt, bordered, bunordered, buneq, bunge, bungt, bunle,
+       bunlt, bltgt, tablejump_internal, call, non_symbolic_call_value,
+       symbolic_call_value_jsr, symbolic_call_value_bsr, link):
+       Update or set attributes.
+       (stack_tie): New fake instruction.
+
+       * config/m68k/m68k.h (TUNE_CFV4): New macro.
+       (m68k_sched_attr_size): Update declaration.
+       (m68k_sched_attr_type2): Remove.
+       (m68k_sched_address_bypass_p, m68k_sched_indexed_address_bypass_p):
+       Declare new bypass predicates.
+
+       * config/m68k/m68k.c (m68k_sched_issue_rate,
+       m68k_sched_first_cycle_multipass_dfa_lookahead): Declare hook
+       implementations.
+       (TARGET_SCHED_ISSUE_RATE,
+       TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Override hooks.
+       (override_options): Handle scheduling for ColdFire V4 core.
+       (m68k_expand_prologue): Emit stack_tie.
+       (enum attr_op_type): Split value 'OP_TYPE_REG' to 'OP_TYPE_RN' and
+       'OP_TYPE_FPN'.  Update all uses.
+       (sched_guess_p): Remove.
+       (sched_address_type): Handle symbolic addresses.
+       (sched_get_operand): New static function.
+       (sched_operand_type): Merge into sched_attr_op_type.
+       (sched_attr_op_type): Handle FP registers, handle quick constants,
+       update.
+       (m68k_sched_attr_opx_type, m68k_sched_attr_opy_type): Update.
+       (m68k_sched_attr_size): Update.  Move logic to ...
+       (sched_get_attr_size_int): New static function.
+       (sched_get_opxy_mem_type): New static function.
+       (m68k_sched_attr_op_mem): Update.
+       (m68k_sched_attr_type2): Remove.
+       (sched_cfv4_bypass_data): New static variable.
+       (m68k_sched_adjust_cost): Handle ColdFire V4 bypass.
+       (m68k_sched_issue_rate): Implement scheduler hook.
+       (struct _sched_ib: enabled_p): New field.
+       (m68k_sched_variable_issue): Update.  Handle V4.
+       (SCHED_DUMP_TODO, SCHED_DUMP_DONE, SCHED_DUMP_NOTHING,
+       sched_dump_class_func_t, sched_dump_split_class,
+       sched_dump_dfa_guess_unit_code, sched_dump_dfa_state,
+       sched_dump_dfa_class, m68k_sched_dump): Remove.
+       (m68k_sched_first_cycle_multipass_dfa_lookahead): Implement scheduler
+       hook.
+       (m68k_sched_init_global): Remove statisctics dumping, introduce
+       sanity check that all instructions have pipeline reservations.  Handle
+       ColdFire V4 core.
+       (m68k_sched_dfa_pre_advance_cycle, m68k_sched_dfa_post_advance_cycle):
+       Handle ColdFire V4 core.
+       (sched_mem_operand_p, sched_get_reg_operand, sched_get_mem_operand):
+       New static functions.
+       (m68k_sched_address_bypass_p): New bypass predicate.
+       (sched_get_indexed_address_scale): New static function.
+       (m68k_sched_indexed_address_bypass_p): New bypass predicate.
+
+       * cf.md: Update comments.
+       (define_attr type2): Remove.  Use 'type' attribute instead.
+       Update all uses.
+       (cf_ib): Rename to cfv123_ib.  Update all uses.
+       (cf_oep): Rename to cfv123_oep.  Update all uses.
+       (cf_chr): Rename to cfv123_chr.  Update all uses.
+       (cf_mem): Rename to cfv123_mem.  Update all uses.
+       (cf_mac): Move to more appropriate place.
+       (cfv123_guess): New automaton and cpu_unit.
+       (cfv123_*, cfv12_*, cfv1_*, cfv2_*, cfv3_*): Use type attribute.
+       Update uses of 'size' attribute.  Handle before reload scheduling.
+       (cfv123_guess): New dummy reservation for unhandled instructions.
+       (cfv4_*): Pipeline description of ColdFire V4 core.
+       (ignore): New reservation to handle 'ignore' type.
+
+2008-05-07  Ian Lance Taylor  <iant@google.com>
+
+       PR middle-end/36013
+       * gimplify.c (find_single_pointer_decl_1): Don't look through
+       indirections.
+       (find_single_pointer_decl): Adjust comments.
+
 2008-05-07  Jakub Jelinek  <jakub@redhat.com>
 
+       PR middle-end/36137
+       * fold-const.c (fold_binary): Use STRIP_SIGN_NOPS instead of
+       STRIP_NOPS on arguments even for MIN_EXPR and MAX_EXPR.
+
        PR middle-end/36106
        * omp-low.c (expand_omp_atomic_pipeline): Load value using the
        integral type rather than floating point, then VIEW_CONVERT_EXPR
        to the floating point type.
 
-       * testsuite/libgomp.c/atomic-5.c: New test.
-       * testsuite/libgomp.c/atomic-6.c: New test.
-       * testsuite/libgomp.c/autopar-1.c: New test.
-
 2008-05-07  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/i386/i386.c (ix86_expand_copysign): Force non-zero constant