[x86_64 PATCH] Tweak -Os costs for scalar-to-vector pass.

Roger Sayle roger@nextmovesoftware.com
Thu Aug 19 16:00:49 GMT 2021


-----Original Message-----
From: Roger Sayle <roger@nextmovesoftware.com> 
Sent: 19 August 2021 16:59
To: 'GCC Patches' <gcc-patches@gcc.gnu.org>
Subject: [x86_64 PATCH] Tweak -Os costs for scalar-to-vector pass.

Back in June I briefly mentioned in one of my gcc-patches posts that a
change that should have always reduced code size, would mysteriously
occasionally result in slightly larger code (according to CSiBE):

Investigating further, the cause turns out to be that x86_64's
scalar-to-vector (stv) pass is relying on poor estimates of the size
costs/benefits.  This patch tweaks the backend's compute_convert_gain method
to provide slightly more accurate values when compiling with -Os.
Compilation without -Os is (should be) unaffected.  And for completeness,
I'll mention that the stv pass is a net win for code size so it's much
better to improve its heuristics than simply gate the pass on

The net effect of this change is to save 1399 bytes on the CSiBE code size
benchmark when compiling with -Os.

This patch has been tested on x86_64-pc-linux-gnu with "make bootstrap"
and "make -k check" with no new failures.

Ok for mainline?

2021-08-19  Roger Sayle  <roger@nextmovesoftware.com>

	* config/i386/i386-features.c (compute_convert_gain): Provide
	more accurate values for CONST_INT, when optimizing for size.
	* config/i386/i386.c (COSTS_N_BYTES): Move definition from here...
	* config/i386/i386.h (COSTS_N_BYTES): to here.


-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: patchz.txt
URL: <https://gcc.gnu.org/pipermail/gcc-patches/attachments/20210819/dcd91591/attachment.txt>

More information about the Gcc-patches mailing list