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

--- Comment #13 from Hongtao.liu <crazylht at gmail dot com> ---
(In reply to rguent...@suse.de from comment #10)
> On Thu, 25 Apr 2019, crazylht at gmail dot com wrote:
> 
> > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90204
> > 
> > --- Comment #9 from Hongtao.liu <crazylht at gmail dot com> ---
> > Also what's better between aligned load/store of smaller size  VS unaligned 
> > load/store of bigger size?
> > 
> > aligned load/store of smaller size:
> > 
> >         movq    %rdx, (%rdi)
> >         movq    -56(%rsp), %rdx
> >         movq    %rdx, 8(%rdi)
> >         movq    -48(%rsp), %rdx
> >         movq    %rdx, 16(%rdi)
> >         movq    -40(%rsp), %rdx
> >         movq    %rdx, 24(%rdi)
> >         vmovq   %xmm0, 32(%rax)
> >         movq    -24(%rsp), %rdx
> >         movq    %rdx, 40(%rdi)
> >         movq    -16(%rsp), %rdx
> >         movq    %rdx, 48(%rdi)
> >         movq    -8(%rsp), %rdx
> >         movq    %rdx, 56(%rdi)
> > 
> > unaligned load/store of bigger size:
> > 
> >         vmovups %xmm2, (%rdi)
> >         vmovups %xmm3, 16(%rdi)
> >         vmovups %xmm4, 32(%rdi)
> >         vmovups %xmm5, 48(%rdi)
> 
> bigger stores are almost always a win while bigger loads have
> the possibility to run into store-to-load forwarding issues
> (and bigger stores eventually mitigate them).  Based on
> CPU tuning we'd also eventually end up with mov[lh]ps splitting
> unaligned loads/stores.

From
https://software.intel.com/en-us/download/intel-64-and-ia-32-architectures-optimization-reference-manual

14.6.3 Prefer Aligned Stores Over Aligned Loads

Unaligned stores are likely to cause greater performance degradation than
unaligned loads, since there
is a very high penalty on stores to a split cache-line that crosses pages. This
penalty is estimated at 150
cycles. Loads that cross a page boundary are executed at retirement.

Reply via email to