[PATCH v1] x86: Support ZHAOXIN GMI instructions
mayshao-oc
mayshao-oc@zhaoxin.com
Mon Oct 14 03:28:12 GMT 2024
Hi Haochen:
Thanks for your review, I comment below.
BR
mayshao
On 10/14/24 11:09, Jiang, Haochen wrote:
>
>
>
>> From: mayshao-oc <mayshao-oc@zhaoxin.com>
>> Sent: Monday, October 14, 2024 10:03 AM
>> To: binutils@sourceware.org
>>
>> This patch adds support for Zhaoxin GMI instructions.
>> The documentation is attached for your reference.
>> Test ok, ok for trunk?
>
> The disassembler part looks extremely weird to me.
>
> I suppose the adding for this is not correct:
>
> @@ -1315,7 +1320,8 @@ enum
> enum
> {
> THREE_BYTE_0F38 = 0,
> - THREE_BYTE_0F3A
> + THREE_BYTE_0F3A,
> + THREE_BYTE_0FA6
> };
>
> My understanding comes following, correct me if I am wrong.
>
> Let's take inst sm2 for example. The full encoding for sm2 is
> 0xf20fa6c0. In the encoding, a6 is opcode and c0 is modrm byte.
> This means a6 should be the "index", not a6c0 in your this part
> of patch:
All GMI instructions are three byte opcode, so for the inst sm2, c0 is
not modrm byte.
>
> @@ -1050,6 +1051,10 @@ enum
> PREFIX_0F7D,
> PREFIX_0F7E,
> PREFIX_0F7F,
> + PREFIX_0FA6C0,
> + PREFIX_0FA6C8,
> + PREFIX_0FA6D0,
> + PREFIX_0FA6E8,
>
> You can translate modrm byte c0 to 11 000 000. Therefore, the REG
> is always 0. That is why montmul occupies the first row of REG_0FA6
> entry, since the opcode for it is 0xf30fa6c0.
>
> The actual change should be something like adding prefix table pass
> for montmul/sm2, since one of them is f2, the other is f3.
>
> Thx,
> Haochen
>
>>
>> BR
>> Mayshao
More information about the Binutils
mailing list