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

--- Comment #6 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Roger Sayle <sa...@gcc.gnu.org>:

https://gcc.gnu.org/g:4a9be8d51182076222d707d9d68f6eda78e8ee2c

commit r13-624-g4a9be8d51182076222d707d9d68f6eda78e8ee2c
Author: Roger Sayle <ro...@nextmovesoftware.com>
Date:   Wed May 18 16:23:01 2022 +0100

    Correct ix86_rtx_cost for multi-word multiplication.

    This is the i386 backend specific piece of my revised patch for
    PR middle-end/98865, where Richard Biener has suggested that I perform
    the desired transformation during RTL expansion where the backend can
    control whether it is profitable to convert a multiplication into a
    bit-wise AND and a negation.  This works well for x86_64, but alas
    exposes a latent bug with -m32, where a DImode multiplication incorrectly
    appears to be cheaper than negdi2+anddi3(!?).  The fix to ix86_rtx_costs
    is to report that a DImode (multi-word) multiplication actually requires
    three SImode multiplications and two SImode additions.  This also corrects
    the cost of TImode multiplication on TARGET_64BIT.

    2022-05-18  Roger Sayle  <ro...@nextmovesoftware.com>

    gcc/ChangeLog
            * config/i386/i386.cc (ix86_rtx_costs) [MULT]: When mode size
            is wider than word_mode, a multiplication costs three word_mode
            multiplications and two word_mode additions.

Reply via email to