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

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I think the problem is that vec_pack_trunc_optab is a normal OPTAB_D and uses
just the argument mode (V?SFmode in this case) and the result is some floating
point type with half the size.  But that is V?HFmode as well as V?BFmode in
this case, and the pattern can do only one of those.
Doesn't vec_unpack*optab have similar issue when argument is V?DFmode and
result can be say on powerpc* V?{IF,KF,TF}mode ?
Either we should change it to be OPTAB_CD with $a$b modes specified, or need to
manually check the result mode and verify it matches.

Reply via email to