[PATCH v2] Support APX PUSHP/POPP

Jan Beulich jbeulich@suse.com
Thu Dec 7 15:12:58 GMT 2023


On 07.12.2023 15:26, Cui, Lili wrote:
>> On 07.12.2023 09:56, Cui, Lili wrote:
>>> --- a/gas/config/tc-i386.c
>>> +++ b/gas/config/tc-i386.c
>>> @@ -3894,7 +3894,8 @@ is_apx_evex_encoding (void)  static INLINE bool
>>> is_apx_rex2_encoding (void)  {
>>> -  return i.rex2 || i.rex2_encoding;
>>> +  return i.rex2 || i.rex2_encoding
>>> +    || i.tm.opcode_modifier.operandconstraint == REX2_REQUIRED;
>>
>> Nit: Odd indentation.
>>
> 
> Sorry, I didn't find the indentation problem you mentioned.

  return i.rex2 || i.rex2_encoding
         || i.tm.opcode_modifier.operandconstraint == REX2_REQUIRED;

>>> @@ -10621,6 +10624,19 @@ putop (instr_info *ins, const char
>> *in_template, int sizeflag)
>>>  	case 'P':
>>>  	  if (l == 0)
>>>  	    {
>>> +	      if (!cond && ins->last_rex2_prefix >= 0 && (ins->rex & REX_W))
>>> +		{
>>> +		  /* For pushp and popp, p is printed and do not print {rex2}
>>> +		     for them.  */
>>> +		  *ins->obufp++ = 'p';
>>> +		  ins->rex2 |= REX2_SPECIAL;
>>
>> Apart from the two minor cosmetic remarks (one above, one below) the
>> dealing with unused REX2 bits is the main thing needing resolution. H.J.,
>> awaiting your input on that matter.
>>
>> The other remark I have to make: Sending individual patches out of context is
>> certainly irritating, at least to me. In this submission you don't even mention
>> any of the dependencies. Yet this also extends to you sending new versions of
>> individual patches of the earlier 9-patch series. I understand you're eager to
>> make progress, but please also consider the recipients'
>> perspective.
>>
> 
> H.J is back and I just wanted to update our patch so he can see our latest version. Use this as a point to follow up on the APX patches, I mentioned in another email. Otherwise it would be inconvenient to have so many comments superimposed on the old patch.
> No disrespect intended. This morning I sorted out the issues that were previously discussed but unresolved to facilitate follow-up.
> 
>>> +		  break;
>>> +		}
>>> +
>>> +	      /* If "!p" prints nothing in intel_syntax.  */
>>> +	      if (!cond && ins->intel_syntax)
>>> +		break;
>>
>> I'm afraid I can't make sense of the comment here. What is it that you're trying
>> to express?
> 
> For example, if the instruction uses "!p", in the case of intel_syntax we will break.
> 
>   { "push!P",           { RMrAX }, 0 },
>   { "push!P",           { RMrCX }, 0 },
>   { "push!P",           { RMrDX }, 0 },

So perhaps 'For "!P" print nothing else in Intel syntax.' ?

Jan


More information about the Binutils mailing list