This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug rtl-optimization/26026] power of 2 mod missing optimisation



------- Comment #6 from bergner at gcc dot gnu dot org  2006-10-19 04:05 -------
Subject: Bug 26026

Author: bergner
Date: Thu Oct 19 04:05:34 2006
New Revision: 117877

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=117877
Log:
        * doc/invoke.texi: Add cpu_type power6x
        (RS/6000 and PowerPC Options): Add -mmfpgpr.
        * recog.c (store_data_bypass_p): Add support to allow IN_INSN to
        be a PARALLEL containing sets.  Return false when out_pat is not
        a PARALLEL insn.
        * config/rs6000/aix52.h (ASM_CPU_SPEC): Add power6x.
        * config.gcc: Add cpu_type power6x.
        * configure.ac: Add test for mf{t,f}gpr instructions.
        (HAVE_AS_MFPGPR): New.
        * config.in: Regenerate.
        * configure: Regenerate.
        * config/rs6000/linux64.h (PROCESSOR_DEFAULT): Default to POWER6.
        (PROCESSOR_DEFAULT64): Likewise.
        * config/rs6000/rs6000.md (define_attr "type"): Add insert_dword,
        shift,trap,var_shift_rotate,cntlz,exts, var_delayed_compare, mffgpr
        and mftgpr attributes.
        (define_attr "cpu"): Add power6. Add power6x.
        Change instruction sequences to use new attributes.
        (floatsidf2,fix_truncdfsi2): use TARGET_MFPGPR.
        (fix_truncdfsi2_internal_mfpgpr): New.
        (floatsidf_ppc64_mfpgpr): New.
        (floatsidf_ppc64): Added !TARGET_MFPGPR condition.
        (movdf_hardfloat64_mfpgpr,movdi_internal64_mfpgpr): New.
        (movdf_hardfloat64): Added !TARGET_MFPGPR condition.
        (movdi_internal64): Added !TARGET_MFPGPR and related conditions.
        (fix_truncdfsi2): Use gpc_reg_operand constraint.
        * config/rs6000/{6xx.md,power4.md,8540.md,603.md,mpc.md,
        7xx.md,rios2.md,7450.md,440.md,rios1.md,rs64.md,power5.md,40x.md}:
        Add descriptions for insert_dword, shift,trap,var_shift_rotate,
        cntlz,exts and var_delayed_compare.
        * config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
        _ARCH_PWR6X, if features enabled.
        * config/rs6000/rs6000.opt (mmfpgpr): New.
        * config/rs6000/rs6000.c (rs6000_align_branch_targets): New variable.
        (cached_can_issue_more): New variable.
        (processor_costs): Add power6_cost.
        (rs6000_sched_init): New function.
        (is_dispatch_slot_restricted): Deleted.
        (set_to_load_agen): New function.
        (is_load_insn,is_store_insn): New functions.
        (adjacent_mem_locations): New function.
        (insn_must_be_first_in_group): New function.
        (insn_must_be_last_in_group): New function.
        (rs6000_sched_reorder): New function.
        (rs6000_sched_reorder2): New function.
        (TARGET_SCHED_INIT,TARGET_SCHED_REORDER,
        TARGET_SCHED_REORDER2): Define.
        (processor_target_table): Use PROCESSOR_POWER6 for power6.
        Add power6x. Add MASK_MFPGPR for power6x.
        (POWERPC_MASKS): Add MASK_MFPGPR.
        (rs6000_override_options): Set rs6000_always_hint to false
        for power6.  Set rs6000_align_branch_targets. Replace
        rs6000_sched_groups check with rs6000_align_branch_targets.
        Use PROCESSOR_POWER6.
        (last_scheduled_insn): New variable.
        (load_store_pendulum): New variable.
        (rs6000_variable_issue): Set last_scheduled_insn and
        cached_can_issue_more.
        (rs6000_adjust_cost): Add power6 cost adjustments.
        (rs6000_adjust_priority): Replace is_dispatch_slot_restricted
        with insn_must_be_first_in_group. Add power6 priority adjustments.
        (rs6000_issue_rate): Add CPU_POWER6. Add CPU_POWER6X.
        (insn_terminates_group_p): Use insn_must_be_{first,last}_in_group.
        * config/rs6000/rs6000.h (processor_type): Add PROCESSOR_POWER6.
        (TARGET_MFPGPR): New.
        (SECONDARY_MEMORY_NEEDED): Use TARGET_MFPGPR.
        (ASM_CPU_SPEC): Add power6x. Pass -mpower5 when cpu=power5.
        Pass -mpower5 when cpu=power5+.  Pass -mpower6 when cpu=power6.
        (SECONDARY_MEMORY_NEEDED): Added mode!=DFmode and mode!=DImode
        conditions.
        * config/rs6000/power6.md: New file.

        PR rtl-optimization/26026
        Backport from mainline
        2006-04-19  Alan Modra  <amodra@bigpond.net.au>
        * fold-const.c (fold_binary): Optimize div and mod where the divisor
        is a known power of two shifted left a variable amount.

Added:
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/power6.md
Modified:
    branches/ibm/gcc-4_1-branch/gcc/ChangeLog
    branches/ibm/gcc-4_1-branch/gcc/config.gcc
    branches/ibm/gcc-4_1-branch/gcc/config.in
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/40x.md
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/440.md
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/603.md
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/6xx.md
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/7450.md
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/7xx.md
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/8540.md
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/aix52.h
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/linux64.h
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/mpc.md
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/power4.md
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/power5.md
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/rios1.md
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/rios2.md
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/rs6000-c.c
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/rs6000.c
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/rs6000.h
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/rs6000.md
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/rs6000.opt
    branches/ibm/gcc-4_1-branch/gcc/config/rs6000/rs64.md
    branches/ibm/gcc-4_1-branch/gcc/configure
    branches/ibm/gcc-4_1-branch/gcc/configure.ac
    branches/ibm/gcc-4_1-branch/gcc/doc/invoke.texi
    branches/ibm/gcc-4_1-branch/gcc/fold-const.c
    branches/ibm/gcc-4_1-branch/gcc/recog.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26026


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]