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

--- Comment #3 from Richard Bradfield <bradfier at fstab dot me> ---
I bisected forward from a few months ago.

The proximate cause is commit r253934, specifically the reduction in cost of
the SSE Load & Store ops, and the costs of moving SSE to and from integer regs.

There's probably more to this than the tuning constants, but if it helps your
investigation, the minimal change required to restore the old behaviour is the
following:

> @@ -2283,13 +2283,13 @@ struct processor_costs core_cost = {
>    {6, 6},            /* cost of storing MMX registers
>                          in SImode and DImode */
>    2, 2, 4,           /* cost of moving XMM,YMM,ZMM register */
> -  {6, 6, 6, 6, 12},  /* cost of loading SSE registers
> +  {8, 8, 8, 8, 12},  /* cost of loading SSE registers
>                          in 32,64,128,256 and 512-bit */
>    {6, 6, 6, 6, 12},  /* cost of unaligned loads.  */
> -  {6, 6, 6, 6, 12},  /* cost of storing SSE registers
> +  {8, 8, 8, 8, 12},  /* cost of storing SSE registers
>                          in 32,64,128,256 and 512-bit */
>    {6, 6, 6, 6, 12},  /* cost of unaligned stores.  */
> -  2, 2,              /* SSE->integer and integer->SSE moves */
> +  5, 5,              /* SSE->integer and integer->SSE moves */

Reply via email to