[Bug target/62011] False Data Dependency in popcnt instruction

uros at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Aug 21 18:04:00 GMT 2014


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62011

--- Comment #12 from uros at gcc dot gnu.org ---
Author: uros
Date: Thu Aug 21 18:03:49 2014
New Revision: 214279

URL: https://gcc.gnu.org/viewcvs?rev=214279&root=gcc&view=rev
Log:
    Backport from mainline
    2014-08-19  H.J. Lu  <hongjiu.lu@intel.com>

    * config/i386/i386.md (*ctz<mode>2_falsedep_1): Don't clear
    destination if it is used in source.
    (*clz<mode>2_lzcnt_falsedep_1): Likewise.
    (*popcount<mode>2_falsedep_1): Likewise.

    Backport from mainline
    2014-08-18  Uros Bizjak  <ubizjak@gmail.com>

    PR target/62011
    * config/i386/x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI):
    New tune flag.
    * config/i386/i386.h (TARGET_AVOID_FALSE_DEP_FOR_BMI): New define.
    * config/i386/i386.md (unspec) <UNSPEC_INSN_FALSE_DEP>: New unspec.
    (ffs<mode>2): Do not expand with tzcnt for
    TARGET_AVOID_FALSE_DEP_FOR_BMI.
    (ffssi2_no_cmove): Ditto.
    (*tzcnt<mode>_1): Disable for TARGET_AVOID_FALSE_DEP_FOR_BMI.
    (ctz<mode>2): New expander.
    (*ctz<mode>2_falsedep_1): New insn_and_split pattern.
    (*ctz<mode>2_falsedep): New insn.
    (*ctz<mode>2): Rename from ctz<mode>2.
    (clz<mode>2_lzcnt): New expander.
    (*clz<mode>2_lzcnt_falsedep_1): New insn_and_split pattern.
    (*clz<mode>2_lzcnt_falsedep): New insn.
    (*clz<mode>2): Rename from ctz<mode>2.
    (popcount<mode>2): New expander.
    (*popcount<mode>2_falsedep_1): New insn_and_split pattern.
    (*popcount<mode>2_falsedep): New insn.
    (*popcount<mode>2): Rename from ctz<mode>2.
    (*popcount<mode>2_cmp): Remove.
    (*popcountsi2_cmp_zext): Ditto.


Modified:
    branches/gcc-4_9-branch/gcc/ChangeLog
    branches/gcc-4_9-branch/gcc/config/i386/i386.h
    branches/gcc-4_9-branch/gcc/config/i386/i386.md
    branches/gcc-4_9-branch/gcc/config/i386/x86-tune.def



More information about the Gcc-bugs mailing list