[PATCH v1 1/2] Support AVX10_V2_AUX instructions

Jan Beulich jbeulich@suse.com
Mon Jun 29 06:21:58 GMT 2026


On 29.06.2026 05:41, Jiang, Haochen wrote:
>> From: Ganesh Gopalasubramanian <Ganesh.Gopalasubramanian@amd.com>
>> Sent: Saturday, June 27, 2026 5:56 PM
>> +  /* PREFIX_EVEX_MAP5_3C */
>> +  {
>> +    { Bad_Opcode },
>> +    { "vcvthf82hf6s",	{ XM, EXx }, 0 },
>> +  },
> 
> There are several mod table pass missing throughout
> the implementation. You need restrict MOD.R/M as
> 11 here.
> 
> Also, for non-broadcast operands, please use
> EXEvexXNoBcst instead of EXx.

Except that in cases where memory operands aren't allowed in the first place,
that won't be necessary (nor wanted, for adding clutter).

>> --- a/opcodes/i386-dis-evex-w.h
>> +++ b/opcodes/i386-dis-evex-w.h
>> +  /* EVEX_W_MAP5_3E_P_1 */
>> +  {
>> +    { Bad_Opcode },
>> +    { "vcvtbf82bf6s",	{ XM, EXx }, 0 },
>> +  },
> 
> Please pass W table before prefix table to reduce
> potential tree size.

Judging from the name of the identifier in the comment that's the case already?
With major opcodes 0x3c and 0x3e having only a single code point for now, there
may also be no difference in table size.

>> --- a/opcodes/i386-dis-evex.h
>> +++ b/opcodes/i386-dis-evex.h
>> @@ -652,7 +652,7 @@ static const struct dis386 evex_table[][256] = {
>>      { EVEX_LEN_TABLE (EVEX_LEN_0F3A3A) },
>>      { EVEX_LEN_TABLE (EVEX_LEN_0F3A3B) },
>>      { Bad_Opcode },
>> -    { Bad_Opcode },
>> +    { "vunpackb",	{ XM, EXx, Ib }, 0 },
> 
> Missing W and prefix table pass here.

Going through prefix_table[] shouldn't be needed: NO_PREFIX could be used to
"replace" that.

>> --- a/opcodes/i386-opc.tbl
>> +++ b/opcodes/i386-opc.tbl
>> @@ -3620,6 +3620,95 @@ vucomxs<sdh>, 0x<sdh:spfx>2e, AVX10_2,
>> Modrm|EVexLIG|<sdh:spc1>|<sdh:vexw>|Disp8
>>
>>  // AVX10.2 instructions end.
>>
>> +// AVX10_V2_AUX instructions.

AVX10.2-aux

>> +// VCVTPS2BF8, VCVTPS2BF8S, VCVTPS2HF8, VCVTPS2HF8S - narrowing 2-
>> op (F3.MAP5)
>> +// VCVTROPS2HF8, VCVTROPS2HF8S - narrowing 2-op (66.MAP5)

Please limit such commentary to what you find elsewhere. That is, nothing at
all here. Unexpected aspects, anomalies, etc of course want commenting.

>> +<cvtps8:opc:pfx, +
>> +    bf8:39:f3, +
>> +    bf8s:3b:f3, +
>> +    hf8:38:f3, +
>> +    hf8s:3a:f3>
> 
> Why do you need to put pfx in iterator? They are all f3.
> 
> And we could simply separate them as <fp8> and <sat> here, not <cvtps8>,
> <cvtrops8>, <cvtbiasps8>, where <fp8> has the base opcode 38 and 39,
> <sat> add 2 for them when there is saturation.

Splitting likely won't be a benefit here, and we didn't do so for AVX10.1 (see
<cvt8:...> there.

Jan


More information about the Binutils mailing list