[PATCH v2] x86: fix EVEX no-broadcast disassembly
Jan Beulich
jbeulich@suse.com
Mon Sep 7 15:00:31 GMT 2026
On 07.09.2026 15:59, Rohan Shenoy wrote:
> - EVEX.W=1 alone does not make a valid broadcast. Hence we restrict it to
> x_mode operands only.
> - For the destination-memory-operand check, ins->obufp may not point to
> the start of op_out[0], hence we correct the position of this check.
> - VMOVDQU{8,16} (loads) were incorrectly marked as broadcastable.
>
> Suggested-by: Jan Beulich <jbeulich@suse.com>
Okay. I'll see about getting this in later in the week, albeit with ...
> --- a/opcodes/i386-dis.c
> +++ b/opcodes/i386-dis.c
> @@ -12311,6 +12311,10 @@ OP_E_memory (instr_info *ins, int bytemode, int sizeflag)
> if (ins->vex.evex && ins->evex_type == evex_default)
> {
>
> + /* Broadcast can only ever be valid for memory sources. */
> + if (ins->vex.b && ins->obufp == ins->op_out[0])
> + ins->vex.no_broadcast = true;
> +
> /* Zeroing-masking is invalid for memory destinations. Set the flag
> uniformly, as the consumer will inspect it only for the destination
> operand. */
... absorbing the excess blank line here.
Jan
More information about the Binutils
mailing list