https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55295
--- Comment #11 from Oleg Endo <olegendo at gcc dot gnu.org> --- A note on the side... As mentioned above, fipr can also be used to do a 3D dot product. However, GCC's vector extensions do not allow specifying vectors of length 3. To support that I guess the easiest way is to do it with a bunch of combine patterns which canonicalize/split into the vector version. Last time I've tried, register allocation was pretty bad for that as mentioned in comment #10. Probably it will require some specific pre-allocation before RA.