https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106770
--- Comment #4 from Jens Seifert <jens.seifert at de dot ibm.com> --- PPCLE with no special option means -mcpu=power8 -maltivec (altivecle to be mor precise). vec_promote(<double value>, 1) should be a noop on ppcle. But value gets splatted to both left and right part of vector register. => 2 unnecesary xxpermdi The rest of the operations are done on left and right part. vec_extract(<vector double>, 1) should be noop on ppcle. But value gets taken from right part of register which requires a xxpermdi Overall 3 unnecessary xxpermdi. Don't know why the right part of register gets "preferred".