| ; 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 |
| } |
| |