Bug: gather/scatter accepts same registers in destination/src and index

Michael V. Zolotukhin michael.v.zolotukhin@gmail.com
Tue Jan 21 11:51:00 GMT 2014


Hi,

Thanks for the review, my answers are below.

> > @@ -4374,11 +4374,9 @@ check_VecOperands (const insn_template *t)
> >        if (i.reg_operands == 2 && !i.mask)
> >  	{
> >  	  gas_assert (i.types[0].bitfield.regxmm
> > -		      || i.types[0].bitfield.regymm
> > -		      || i.types[0].bitfield.regzmm);
> > +		      || i.types[0].bitfield.regymm);
> >  	  gas_assert (i.types[2].bitfield.regxmm
> > -		      || i.types[2].bitfield.regymm
> > -		      || i.types[2].bitfield.regzmm);
> > +		      || i.types[2].bitfield.regymm);
> 
> How come zmm registers would no longer get here?
That check is for AVX gathers, which don't allow ZMM-registers.

> I don't think scatter has as strict requirements as gather, hence
> the message would be misleading if indeed possible to be issued
> for a scatter instruction. Hence _if_ scatter handling can make it
> here, separate messages would be needed; if not, the message
> should be left unchanged.
Thanks, indeed.  Scatters don't need that check.  I'll update the patch shortly.

Michael 
> Jan



More information about the Binutils mailing list