; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
; RUN: llc < %s -mtriple=aarch64-- | FileCheck %s --check-prefixes=CHECK

define float @positive_case_fma(float %a0, float %a1, float %a2) {
; CHECK-LABEL: positive_case_fma:
; CHECK:       // %bb.0:
; CHECK-NEXT:    fnmadd s0, s0, s1, s2
; CHECK-NEXT:    ret
  %fma = call float @llvm.fma.f32(float %a0, float %a1, float %a2)
  %freeze = freeze float %fma
  %fneg = fneg float %freeze
  ret float %fneg
}

define float @negative_case_fma(float %a0, float %a1) {
; CHECK-LABEL: negative_case_fma:
; CHECK:       // %bb.0:
; CHECK-NEXT:    fnmadd s0, s0, s1, s0
; CHECK-NEXT:    ret
  %fma = call float @llvm.fma.f32(float %a0, float %a1, float poison)
  %freeze = freeze float %fma
  %fneg = fneg float %freeze
  ret float %fneg
}

define float @positive_case_fmad(float %a0, float %a1, float %a2) {
; CHECK-LABEL: positive_case_fmad:
; CHECK:       // %bb.0:
; CHECK-NEXT:    fnmadd s0, s0, s1, s2
; CHECK-NEXT:    ret
  %fma = call float @llvm.fma.f32(float %a0, float %a1, float %a2)
  %freeze = freeze float %fma
  %fneg = fneg float %freeze
  ret float %fneg
}

define float @negative_case_fmad(float %a0, float %a1) {
; CHECK-LABEL: negative_case_fmad:
; CHECK:       // %bb.0:
; CHECK-NEXT:    fnmadd s0, s0, s1, s0
; CHECK-NEXT:    ret
  %fmad = call float @llvm.fmuladd.f32(float %a0, float %a1, float poison)
  %freeze = freeze float %fmad
  %fneg = fneg float %freeze
  ret float %fneg
}

