On Thu, Jul 03, 2014 at 02:49:10PM +0400, Ilya Enkovich wrote:
> 2014-07-02 20:21 GMT+04:00 Andi Kleen <[email protected]>:
> > Ilya Enkovich <[email protected]> writes:
> >
> >> Silvermont processors have penalty for instructions having 4+ bytes of
> >> prefixes (including escape bytes in opcode). This situation happens
> >> when REX prefix is used in SSE4 instructions. This patch tries to
> >> avoid such situation by preferring xmm0-xmm7 usage over xmm8-xmm15 in
> >> those instructions. I achieved it by adding new tuning flag and new
> >> alternatives affected by tuning.
> >
> > Why make it a tuning flag? Shouldn't this help unconditionally for code
> > size everywhere? Or is there some drawback?
>
> There is already a higher priority for registers not requiring REX.
> My patch affects cases when compiler has to use xmm8-15 and it just
> tries to say LRA to assign them for non SSE4 instructions. I doubt it
> would have some use for other targets than Silvermont.
When it is just a hint, shouldn't there be something like Ya,???x
or Ya,!x or similar in the SSE4 constraints? I mean, xmm{8-15} can be used,
just is costly.
Jakub