This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, rs6000] don't use unaligned vsx for memset of less than 32 bytes
- From: Segher Boessenkool <segher at kernel dot crashing dot org>
- To: Aaron Sawdey <acsawdey at linux dot ibm dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 26 Jun 2018 11:01:16 -0500
- Subject: Re: [PATCH, rs6000] don't use unaligned vsx for memset of less than 32 bytes
- References: <979a1eeceb7c4c3f7b2068e9b924970760d695ff.camel@linux.ibm.com>
Hi!
On Mon, Jun 25, 2018 at 10:41:32AM -0500, Aaron Sawdey wrote:
> In gcc 8 I added support for unaligned vsx in the builtin expansion of
> memset(x,0,y). Turns out that for memset of less than 32 bytes, this
> doesn't really help much, and it also runs into an egregious load-hit-
> store case in CPU2006 components gcc and hmmer.
>
> This patch reverts to the previous (gcc 7) behavior for memset of 16-31
> bytes, which is to use vsx stores only if the target is 16 byte
> aligned. For 32 bytes or more, unaligned vsx stores will still be used.
> Performance testing of the memset expansion shows that not much is
> given up by using scalar stores for 16-31 bytes, and CPU2006 runs show
> the performance regression is fixed.
>
> Regstrap passes on powerpc64le, ok for trunk and backport to 8?
Yes, okay for both. Thanks!
Segher
> 2018-06-25 Aaron Sawdey <acsawdey@linux.ibm.com>
>
> * config/rs6000/rs6000-string.c (expand_block_clear): Don't use
> unaligned vsx for 16B memset.