https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87555

            Bug ID: 87555
           Summary: There is no need for UNSPEC_FMADDSUB
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
  Target Milestone: ---
            Target: i386,x86-64

sse.md has

;; It would be possible to represent these without the UNSPEC as
;;
;; (vec_merge
;;   (fma op1 op2 op3)
;;   (fma op1 op2 (neg op3)) 
;;   (merge-const))
;;
;; But this doesn't seem useful in practice.

(define_expand "fmaddsub_<mode>"
  [(set (match_operand:VF 0 "register_operand")
        (unspec:VF
          [(match_operand:VF 1 "nonimmediate_operand")
           (match_operand:VF 2 "nonimmediate_operand")
           (match_operand:VF 3 "nonimmediate_operand")]
          UNSPEC_FMADDSUB))]
  "TARGET_FMA || TARGET_FMA4 || TARGET_AVX512F")

There is no need for UNSPEC_FMADDSUB.

Reply via email to