Jakub Jelinek <jakub at gcc dot> changed:

           What    |Removed                     |Added
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2018-02-08
                 CC|                            |dje at gcc dot,
                   |                            |jakub at gcc dot
     Ever confirmed|0                           |1

--- Comment #1 from Jakub Jelinek <jakub at gcc dot> ---
Seems the rs6000 backend violates BSWAP requirements:
@item (bswap:@var{m} @var{x})
Represents the value @var{x} with the order of bytes reversed, carried out
in mode @var{m}, which must be a fixed-point machine mode.
The mode of @var{x} must be @var{m} or @code{VOIDmode}.

V2DFmode or V4SFmode are not integral modes.

So, I'd say that instead of using these p9_xxbrd_v2df and p9_xxbrw_v4sf
patterns the backend instead should subreg the operand to v2di or v4si, do
p9_xxbrd_v2di or p9_xxbrw_v4si and finally subreg the result to v2df/v4sf.

Or the documentation needs to be changed and simplify_const_unary_operation
extended to handle that case (possibly by handling it using simplifying const
subreg to corresponding integral mode, doing bswap on the integral mode and
then subreg back.

Reply via email to