Hello Jakub, Uroš,
On 04 Oct 13:41, Uros Bizjak wrote:
> On Wed, Oct 4, 2017 at 10:33 AM, Jakub Jelinek <ja...@redhat.com> wrote:
> > Hi!
> >
> > Most AVX* instructions have the same insn name between VEX and EVEX
> > encoded insns and whether it is EVEX or VEX encoded is determined by
> > the operands by the assembler (if there is masking/broadcast, or
> > %[xy]mm16+ operands are present, or when using 512-bit vectors).
> > This is not the case for the logical instruction, we have VEX
> > encoded VP{AND,OR,XOR,ANDN} and EVEX encoded VP{AND,OR,XOR,ANDN}{D,Q}.
> >
> > Right now we use the d or q suffixes for -mavx512vl even when we could
> > use VEX encoded insn, which results in larger opcode.
> >
> > The following patch fixes that, by emitting the suffix only when needed.
> >
> > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
> >
> > 2017-10-04  Jakub Jelinek  <ja...@redhat.com>
> >
> >         PR target/82370
> >         * config/i386/sse.md (*andnot<mode>3,
> >         <mask_codefor><code><mode>3<mask_name>, *<code><mode>3): Split
> >         (=v,v,vm) alternative into (=x,x,xm) and (=v,v,vm), for 128-bit
> >         and 256-bit vectors, the (=x,x,xm) alternative and when mask is
> >         not applied use empty suffix even for TARGET_AVX512VL.
> >         * config/i386/subst.md (mask_prefix3, mask_prefix4): When mask
> >         is applied, supply evex,evex or evex,evex,evex instead of just
> >         evex.
> 
> LGTM, but Kirill should give the final approval for this patch.
Patch is OK for main trunk. Thanks!

--
K

Reply via email to