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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Uroš Bizjak from comment #5)
> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
> index 1cd1cd8..f718040 100644
> --- a/gcc/config/i386/i386.c
> +++ b/gcc/config/i386/i386.c
> @@ -3417,7 +3417,10 @@ dimode_scalar_chain::compute_convert_gain ()
>                || GET_CODE (src) == AND)
>         {
>           gain += ix86_cost->add;
> -         if (CONST_INT_P (XEXP (src, 0)))
> +         /* Additional gain for andnot.  */
> +         if (GET_CODE (XEXP (src, 0)) == NOT)
> +           gain += ix86_cost->add;
> +         else if (CONST_INT_P (XEXP (src, 0)))

Shouldn't that take into account whether there is a scalar andn or not?
I.e. only bump the gain if !TARGET_BMI?

Reply via email to