https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78794
--- Comment #4 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Uroš Bizjak from comment #3)
> Perhaps as simple as:
>
> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
> index 1cd1cd8..6899d4f 100644
> --- a/gcc/config/i386/i386.c
> +++ b/gcc/config/i386/i386.c
> @@ -3424,7 +3424,7 @@ dimode_scalar_chain::compute_convert_gain ()
> }
> else if (GET_CODE (src) == NEG
> || GET_CODE (src) == NOT)
> - gain += ix86_cost->add - COSTS_N_INSNS (1);
> + gain += ix86_cost->add - COSTS_N_INSNS (2);
> else if (GET_CODE (src) == COMPARE)
> {
> /* Assume comparison cost is the same. */
Bah, totally wrong patch.
pandn gain is not modelled at all.