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