[PATCH 4/8] Support APX NDD
Cui, Lili
lili.cui@intel.com
Wed Oct 25 15:29:53 GMT 2023
> Subject: Re: [PATCH 4/8] Support APX NDD
>
> On 24.10.2023 13:39, Cui, Lili wrote:
> >> Subject: Re: [PATCH 4/8] Support APX NDD
> >>
> >> On 19.09.2023 17:25, Cui, Lili wrote:
> >>> --- a/opcodes/i386-dis-evex-prefix.h
> >>> +++ b/opcodes/i386-dis-evex-prefix.h
> >>> @@ -353,8 +353,8 @@
> >>> /* PREFIX_EVEX_MAP4_66 */
> >>> {
> >>> { MOD_TABLE (MOD_EVEX_MAP4_66_PREFIX_0) },
> >>> - { "adoxS", { Gdq, Edq }, 0 },
> >>> - { "adcxS", { Gdq, Edq }, 0 },
> >>> + { "adoxS", { VexGdq, Gdq, Edq }, 0 },
> >>> + { "adcxS", { VexGdq, Gdq, Edq }, 0 },
> >>
> >> With the OP_VEX() change moved to the earlier patch, you wouldn't
> >> need to alter again right away what was just added there.
> >>
> >
> > As I commented in another email, I want to move instructions like adcx into
> this NDD patch. Do you think it is ok?
>
> Yeah, having ND-capable insns in the ND patch makes sense. I don't care overly
> much about the actual split. It wants to be half-way consistent, and beyond
> that - as said - it helps if code/data added by earlier patches doesn't need re-
> writing altogether in later ones.
>
Ok.
> >>> @@ -13280,6 +13304,14 @@ OP_VEX (instr_info *ins, int bytemode, int
> >> sizeflag ATTRIBUTE_UNUSED)
> >>> if (!ins->need_vex)
> >>> return true;
> >>>
> >>> + if (ins->evex_type == evex_from_legacy)
> >>> + {
> >>> + if (ins->vex.b)
> >>> + ins->evex_used |= EVEX_b_used;
> >>> + else
> >>> + return true;
> >>> + }
> >>
> >> When you reuse fields or definitions in places where their names
> >> don't match their purpose (the field dealt with here is "nd" after
> >> all, not "b"), a comment wants adding. There's also something odd
> >> with indentation here, but I suppose an if/else construct isn't needed in the
> first place.
> >>
> > Added comment and adjusted the formatting, I think we need if/else like
> "adox " which supports EVEX.ND=0/1.
>
> You will need if(), sure, but I'm not convinced of "else". Constructs like
>
> if (cond)
> return;
> else
> whatever;
>
> bother me in general, as adding (even if just slightly) more mental load for the
> reader. Just
>
> if (cond)
> return;
> whatever;
>
> is all you need: Less text, less indentation. In the specific case above yet
> another possibility may exist (without having actually tried
> it):
>
> if (ins->evex_type == evex_from_legacy)
> {
> ins->evex_used |= EVEX_b_used;
> if (!ins->vex.b)
> return true;
> }
>
> I.e. this would be as long as setting EVEX_b_used without EVEX.b set doesn't
> cause any issues.
>
Done.
Thanks,
Lili.
More information about the Binutils
mailing list