https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78020

ktkachov at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |INVALID

--- Comment #3 from ktkachov at gcc dot gnu.org ---
(In reply to Yvan Roux from comment #2)
> Christophe, Kyrill
> 
> My understanding of the ARMv8-A Architecture Reference Manual is not the
> same.  For me when the vectors have two elements ZIP, UZIP and TRN
> instruction give the same result.
> 
> for instance if we have:
> 
>    + -----+------+
> Vn |  A1  |  A0  |
>    + -----+------+
> Vm |  B1  |  B0  |
>    + -----+------+
> 
> UZIP1 reads the even-numbered elemenents of Vn (i.e A0), places it in the
> lower half of Vd and then do the same with Vm, thus we have:
> 
>    + -----+------+
> Vd |  B0  |  A0  |
>    + -----+------+
> 
> ZIP1 reads the first pair from Vn (which is only A0 is this case) and places
> it into the lowest element of Vd and then do same with Vm to get them
> interleaved, thus we also have:
> 
>    + -----+------+
> Vd |  B0  |  A0  |
>    + -----+------+
> 
> Maybe the confusion comes from the revision of the manual you looked at,
> which doesn't include detailled explanation of these instructions,
> DDI0487A_k includes figures.
> 
> Kyrill, in the UZP1 figures (C7.2.346) it show that the first unzipped
> vector is from Vn ... but maybe I'm the one who misundertand the description
> ! ;)

Yes, you're right Yvan.
James just went through it with me on a board and they are indeed equivalent.
Sorry for the confusion.

Reply via email to