http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56253
--- Comment #3 from Uros Bizjak <ubizjak at gmail dot com> 2013-02-08 12:58:49 UTC --- (In reply to comment #1) > not sure why we use builtins for these basic operations... Because they have to be emitted also for non-SSE math. >From config/i386/sse.md: ;; The standard names for fma is only available with SSE math enabled. (define_expand "fma<mode>4" [(set (match_operand:FMAMODE 0 "register_operand") (fma:FMAMODE (match_operand:FMAMODE 1 "nonimmediate_operand") (match_operand:FMAMODE 2 "nonimmediate_operand") (match_operand:FMAMODE 3 "nonimmediate_operand")))] "(TARGET_FMA || TARGET_FMA4) && TARGET_SSE_MATH") ... ;; The builtin for intrinsics is not constrained by SSE math enabled. (define_expand "fma4i_fmadd_<mode>" [(set (match_operand:FMAMODE 0 "register_operand") (fma:FMAMODE (match_operand:FMAMODE 1 "nonimmediate_operand") (match_operand:FMAMODE 2 "nonimmediate_operand") (match_operand:FMAMODE 3 "nonimmediate_operand")))] "TARGET_FMA || TARGET_FMA4")