[PATCH] x86: have .insn correctly consider AVX10.2's 256-bit embedded rounding

Jiang, Haochen haochen.jiang@intel.com
Thu Jan 16 09:12:26 GMT 2025


> From: Jan Beulich <jbeulich@suse.com>
> Sent: Thursday, January 16, 2025 5:10 PM
> 
> Deriving operand size may no longer assume 512-bit vector size when
> embedded rounding is in use. In fact it was apparently wrong to do so
> in the first place, as that's not correct for scalar insns. Drop the
> rounding type check altogether; we fall back to EVEX.LIG when no
> suitable operand was specified anyway, later in the function (and, btw,
> similarly for VEX encodings).
> ---
> Testcase to be the one from "x86: Ignore rounding for vcvt[,u]si2sd
> under r32 and vcvt[,u]dq2pd instead of reporting bad", with vector size
> zapped from the input.

LGTM since texi actually needs no change after another look at that.

I will adjust my testcase afterwards.

Thx,
Haochen

> 
> --- a/gas/config/tc-i386.c
> +++ b/gas/config/tc-i386.c
> @@ -13923,8 +13923,8 @@ s_insn (int dummy ATTRIBUTE_UNUSED)
>  	{
>  	  if (!i.tm.opcode_modifier.evex)
>  	    {
> -	      /* Do _not_ consider AVX512VL here.  */
> -	      if (i.rounding.type != rc_none || combined.bitfield.zmmword)
> +	      /* Do _not_ consider AVX512VL / AVX10.2 here.  */
> +	      if (combined.bitfield.zmmword)
>  	        i.tm.opcode_modifier.evex = EVEX512;
>  	      else if (combined.bitfield.ymmword)
>  	        i.tm.opcode_modifier.evex = EVEX256;


More information about the Binutils mailing list