public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: Jan Beulich <jbeulich@suse.com>
To: "Cui, Lili" <lili.cui@intel.com>
Cc: "hjl.tools@gmail.com" <hjl.tools@gmail.com>,
	"binutils@sourceware.org" <binutils@sourceware.org>
Subject: Re: [PATCH 1/2] [PATCH 1/2] Enable Intel AVX512_FP16 instructions
Date: Tue, 13 Jul 2021 09:54:36 +0200	[thread overview]
Message-ID: <e1b76b7d-0dc1-ba9d-f617-e811173f89a7@suse.com> (raw)
In-Reply-To: <BY5PR11MB40085320A6EC04335EFD0C459E149@BY5PR11MB4008.namprd11.prod.outlook.com>

On 13.07.2021 08:58, Cui, Lili wrote:
>> -----Original Message-----
>> From: Jan Beulich <jbeulich@suse.com>
>> Sent: Friday, July 9, 2021 8:17 PM
>> To: Cui, Lili <lili.cui@intel.com>
>> Cc: hjl.tools@gmail.com; binutils@sourceware.org
>> Subject: Re: [PATCH 1/2] [PATCH 1/2] Enable Intel AVX512_FP16 instructions
>>
>> On 09.07.2021 13:47, Cui, Lili wrote:
>>>> -----Original Message-----
>>>> From: Jan Beulich <jbeulich@suse.com>
>>>> Sent: Monday, July 5, 2021 2:30 PM
>>>> To: Cui, Lili <lili.cui@intel.com>; hjl.tools@gmail.com
>>>> Cc: binutils@sourceware.org
>>>> Subject: Re: [PATCH 1/2] [PATCH 1/2] Enable Intel AVX512_FP16
>>>> instructions
>>>>
>>>> On 01.07.2021 09:47, Cui,Lili wrote:
>>>>>  opcodes/i386-opc.tbl           | 376 +++++++++++++++++++++
>>>> VCVT{,T}SH2{,U}SI should have EvexWIG for their non-64bit encodings.
>>>> But really it's unclear why each of them has three templates when the
>>>> corresponding pre-existing SD and SS insns get away with two. I would
>>>> have expected new templates to have been cloned from similar existing
>>>> ones, rather than introducing new ones (with new inconsistencies). Of
>>>> course there's (again) the possibility that you've spotted a bug with
>>>> pre-existing templates, but then - if you don't want to fix those
>>>> right away - I'd expect you to at least point out why you deviate from what
>> we've got.
>>>>
>>> vcvtss2si has two templates because there is a special judgment in
>> check_long_reg function, then the instruction can encode as EVEX.W = 1
>> without explicit VexW1.
>>>
>>> if (intel_syntax
>>>     && i.tm.opcode_modifier.toqword
>>>     && i.types[0].bitfield.class != RegSIMD)
>>>           {
>>>             /* Convert to QWORD.  We want REX byte. */
>>>             i.suffix = QWORD_MNEM_SUFFIX;
>>>           }
>>>
>>> I add a special judgment in check_word_reg function, then VCVT{,T}SH2{,U}SI
>> can also have two templates. I think that in order to reduce the number of
>> templates and make the code less readable, this is a trade-off. I changed it
>> anyway. Jan, what are your thoughts here?
>>>
>>>     else if (i.types[op].bitfield.qword
>>>              && (i.tm.operand_types[op].bitfield.class == Reg
>>>                  || i.tm.operand_types[op].bitfield.instance == Accum)
>>>              && i.tm.operand_types[op].bitfield.qword)
>>>       {
>>>         if (intel_syntax
>>>             && i.tm.opcode_modifier.toqword
>>>             && i.types[0].bitfield.class != RegSIMD)
>>>           {
>>>             /* Convert to QWORD.  We want REX byte. */
>>>             i.suffix = QWORD_MNEM_SUFFIX;
>>>           }
>>>       }
>>
>> I think this is the right thing to do, to keep things as symmetric / consistent as
>> possible. The one part I don't understand though is the check against Accum.
>> I'm also not sure you really need to check both i.types[] and
>> i.tm.operand_types[] for qword: Doesn't this function run after template
>> matching, in which case you only need to check the actual register type, not the
>> one(s) the template permits? And finally - but without seeing the context I may
>> be wrong here - as presented I'd suggest the two nested if()-s to be folded.
>>
> I merged two nested if(), and removed unnecessary checks. 
> 
>     /* For some instructions need encode as EVEX.W=1 without explicit VexW1. */
>     else if (i.types[op].bitfield.qword
>              && i.tm.operand_types[op].bitfield.class == Reg
>              && intel_syntax
>              && i.tm.opcode_modifier.toqword
>              && i.types[0].bitfield.class != RegSIMD)
>       {
>           /* Convert to QWORD.  We want REX byte. */
>           i.suffix = QWORD_MNEM_SUFFIX;
>       }

Before I go look at this in detail - is this expected to be the final
form of the rework following the v1 comments (i.e. is it v2), or are
there yet further changes to be expected? If it is v2, it would be
nice if you could submit it as such, as that would clarify matters.

Thanks, Jan


  reply	other threads:[~2021-07-13  7:54 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-01  7:47 [PATCH 0/2]Enable Intel AVX512_FP16 instructions and add tests for it Cui,Lili
2021-07-01  7:47 ` [PATCH 1/2] [PATCH 1/2] Enable Intel AVX512_FP16 instructions Cui,Lili
2021-07-02 13:42   ` Jan Beulich
2021-07-02 15:46     ` Jan Beulich
2021-07-06 12:42       ` Cui, Lili
2021-07-09 11:52     ` Cui, Lili
2021-07-13  7:25       ` Jan Beulich
2021-07-13  7:35         ` Cui, Lili
2021-07-02 15:08   ` Jan Beulich
2021-07-09 11:50     ` Cui, Lili
2021-07-05  6:30   ` Jan Beulich
2021-07-05 12:38     ` H.J. Lu
2021-07-06 12:48       ` Cui, Lili
2021-07-09 11:47     ` Cui, Lili
2021-07-09 12:16       ` Jan Beulich
2021-07-13  6:58         ` Cui, Lili
2021-07-13  7:54           ` Jan Beulich [this message]
2021-07-13  8:03             ` Cui, Lili
2021-07-13 16:25           ` Jan Beulich
     [not found]             ` <DM6PR11MB4009305D09B37299FC2F282C9EE39@DM6PR11MB4009.namprd11.prod.outlook.com>
2021-07-21 14:29               ` Jan Beulich
2021-07-22  7:05                 ` Cui, Lili
2021-07-14 15:21           ` Jan Beulich
2021-07-20  7:08             ` FW: " Cui, Lili
2021-07-20  8:46               ` Jan Beulich
2021-07-20 11:13                 ` Cui, Lili
2021-07-20 11:26                 ` Cui, Lili
2021-07-20 13:02                   ` Jan Beulich
2021-07-20 13:38                     ` Cui, Lili
2021-07-20 14:15                       ` Jan Beulich
2021-07-20 14:29                         ` Cui, Lili
2021-07-21 10:32             ` Jan Beulich
2021-07-01 15:42 ` [PATCH 0/2]Enable Intel AVX512_FP16 instructions and add tests for it H.J. Lu
2021-07-01 17:46   ` H.J. Lu
2021-07-02  0:13     ` Cui, Lili
     [not found] ` <20210701074736.9534-3-lili.cui@intel.com>
2021-07-02 15:44   ` [PATCH 2/2] [PATCH 2/2] Add tests for Intel AVX512_FP16 instructions Jan Beulich
     [not found]     ` <BY5PR11MB4008FDC77679D0F8FB9E88B39E149@BY5PR11MB4008.namprd11.prod.outlook.com>
2021-07-13 15:59       ` Jan Beulich
2021-07-14 18:01         ` H.J. Lu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e1b76b7d-0dc1-ba9d-f617-e811173f89a7@suse.com \
    --to=jbeulich@suse.com \
    --cc=binutils@sourceware.org \
    --cc=hjl.tools@gmail.com \
    --cc=lili.cui@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).