[Bug target/84226] [8 Regression] ICE in simplify_const_unary_operation, at simplify-rtx.c:1974 on ppc64le
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Feb 8 16:06:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84226
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2018-02-08
CC| |dje at gcc dot gnu.org,
| |jakub at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
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.
More information about the Gcc-bugs
mailing list