https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87064
--- Comment #18 from Jakub Jelinek <jakub at gcc dot gnu.org> --- The comment on the define_insn_and_split says: ;; Combiner patterns with the vector reduction patterns that knows we can get ;; to the top element of the V2DF array without doing an extract. So, the question is, is that ever the case for little endian also? As I said, --- gcc/config/rs6000/vsx.md 2019-01-19 09:39:13.224924063 +0100 +++ gcc/config/rs6000/vsx.md 2019-01-21 22:04:15.372792335 +0100 @@ -4351,7 +4351,7 @@ (match_dup 1)) (parallel [(const_int 1)]))) (clobber (match_scratch:DF 2 "=0,0,&wd,&wa"))] - "VECTOR_UNIT_VSX_P (V2DFmode)" + "BYTES_BIG_ENDIAN && VECTOR_UNIT_VSX_P (V2DFmode)" "#" "" [(const_int 0)] generates much better code at least on this testcase, and from bootstrap/regtest I'm not away of this pattern ever trigging for something different.