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")

Reply via email to