http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46085
--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> 2010-10-19 21:32:05 UTC --- (define_expand "reduc_splus_v8sf" [(match_operand:V8SF 0 "register_operand" "") (match_operand:V8SF 1 "register_operand" "")] "TARGET_AVX" { rtx tmp = gen_reg_rtx (V8SFmode); rtx tmp2 = gen_reg_rtx (V8SFmode); emit_insn (gen_avx_haddv8sf3 (tmp, operands[1], operands[1])); emit_insn (gen_avx_haddv8sf3 (tmp2, operands[1], operands[1])); emit_insn (gen_avx_haddv8sf3 (operands[0], tmp2, tmp2)); DONE; }) and (define_expand "reduc_splus_v4df" [(match_operand:V4DF 0 "register_operand" "") (match_operand:V4DF 1 "register_operand" "")] "TARGET_AVX" { rtx tmp = gen_reg_rtx (V4DFmode); emit_insn (gen_avx_haddv4df3 (tmp, operands[1], operands[1])); emit_insn (gen_avx_haddv4df3 (operands[0], tmp, tmp)); DONE; }) are incorrect.