[PATCH 2/8] Support APX GPR32 with extend evex prefix

Cui, Lili lili.cui@intel.com
Wed Oct 18 07:52:01 GMT 2023



> -----Original Message-----
> From: Jan Beulich <jbeulich@suse.com>
> Sent: Wednesday, October 18, 2023 2:47 PM
> To: Cui, Lili <lili.cui@intel.com>
> Cc: Lu, Hongjiu <hongjiu.lu@intel.com>; binutils@sourceware.org
> Subject: Re: [PATCH 2/8] Support APX GPR32 with extend evex prefix
> 
> On 18.10.2023 08:31, Cui, Lili wrote:
> >>>> Similary I don't think I can spot anywhere that you would check the
> >>>> other bits which need to be zero in extended EVEX. Nor Improper use
> >>>> of EVEX.x4 in certain pre-existing encodings (S/G insns at least;
> >>>> perhaps all
> >> others are okay).
> >>>
> >>> Sorry, I can't get you here, what are S/G insns, could you provide
> >>> more
> >> details here, thanks.
> >>
> >> S/G is scatter/gather (i.e. AVX2 and AVX512).
> >>
> > I think you mean EVEX.V4, scatter/gather has VSIB which needs to reuse
> > this bit (EVEX.x4 is EVEX.p[10] which is fixed value 1), For our current code
> we will reassign that bit and now I changed it to check the upper 16 registers
> of GPR32 , do you think it is ok?
> >
> > @@ -4252,7 +4252,7 @@ build_apx_evex_prefix (void)
> >    if (i.rex2 & REX_R)
> >      i.vex.bytes[1] &= 0xef;
> >    if (i.vex.register_specifier
> > -      && register_number (i.vex.register_specifier) > 0xf)
> > +      && (i.vex.register_specifier->reg_flags & RegRex2))
> >      i.vex.bytes[3] &= 0xf7;
> >    if (i.rex2 & REX_B)
> >      i.vex.bytes[1] |= 0x08;
> 
> First of all my comment was disassembly related; you stripped a little too
> much context for this to remain visible here. And then I think I did mean
> EVEX.x4 - as you say it needs to be fixed-1 in e.g. S/G insns, and the checking
> thereof is what I'm missing.
> 
Ok ,  I will drop the encoder changes, and add an X4 check when instruction has vex_vsib* type in decoder.

Lili.


More information about the Binutils mailing list