Home | History | Annotate | Download | only in ARM
      1 ; RUN: llc -mtriple=arm-eabi -mcpu=cortex-a9 -mattr=+vfp4 -enable-unsafe-fp-math %s -o - \
      2 ; RUN:  | FileCheck %s
      3 
      4 ; CHECK: test1
      5 define float @test1(float %x) {
      6 ; CHECK-NOT: vfma
      7 ; CHECK: vmul.f32
      8 ; CHECK-NOT: vfma
      9   %t1 = fmul float %x, 3.0
     10   %t2 = call float @llvm.fma.f32(float %x, float 2.0, float %t1)
     11   ret float %t2
     12 }
     13 
     14 ; CHECK: test2
     15 define float @test2(float %x, float %y) {
     16 ; CHECK-NOT: vmul
     17 ; CHECK: vfma.f32
     18 ; CHECK-NOT: vmul
     19   %t1 = fmul float %x, 3.0
     20   %t2 = call float @llvm.fma.f32(float %t1, float 2.0, float %y)
     21   ret float %t2
     22 }
     23 
     24 ; CHECK: test3
     25 define float @test3(float %x, float %y) {
     26 ; CHECK-NOT: vfma
     27 ; CHECK: vadd.f32
     28 ; CHECK-NOT: vfma
     29   %t2 = call float @llvm.fma.f32(float %x, float 1.0, float %y)
     30   ret float %t2
     31 }
     32 
     33 ; CHECK: test4
     34 define float @test4(float %x, float %y) {
     35 ; CHECK-NOT: vfma
     36 ; CHECK: vsub.f32
     37 ; CHECK-NOT: vfma
     38   %t2 = call float @llvm.fma.f32(float %x, float -1.0, float %y)
     39   ret float %t2
     40 }
     41 
     42 ; CHECK: test5
     43 define float @test5(float %x) {
     44 ; CHECK-NOT: vfma
     45 ; CHECK: vmul.f32
     46 ; CHECK-NOT: vfma
     47   %t2 = call float @llvm.fma.f32(float %x, float 2.0, float %x)
     48   ret float %t2
     49 }
     50 
     51 ; CHECK: test6
     52 define float @test6(float %x) {
     53 ; CHECK-NOT: vfma
     54 ; CHECK: vmul.f32
     55 ; CHECK-NOT: vfma
     56   %t1 = fsub float -0.0, %x
     57   %t2 = call float @llvm.fma.f32(float %x, float 5.0, float %t1)
     58   ret float %t2
     59 }
     60 
     61 declare float @llvm.fma.f32(float, float, float)
     62