1*7258735fSSaleem Abdulrasool; RUN: llc -mtriple=arm-eabi -mcpu=cortex-a9 -mattr=+vfp4 -enable-unsafe-fp-math %s -o - \ 2*7258735fSSaleem Abdulrasool; RUN: | FileCheck %s 390e0eaffSOwen Anderson 490e0eaffSOwen Anderson; CHECK: test1 590e0eaffSOwen Andersondefine float @test1(float %x) { 690e0eaffSOwen Anderson; CHECK-NOT: vfma 790e0eaffSOwen Anderson; CHECK: vmul.f32 890e0eaffSOwen Anderson; CHECK-NOT: vfma 990e0eaffSOwen Anderson %t1 = fmul float %x, 3.0 1090e0eaffSOwen Anderson %t2 = call float @llvm.fma.f32(float %x, float 2.0, float %t1) 1190e0eaffSOwen Anderson ret float %t2 1290e0eaffSOwen Anderson} 1390e0eaffSOwen Anderson 1490e0eaffSOwen Anderson; CHECK: test2 1590e0eaffSOwen Andersondefine float @test2(float %x, float %y) { 1690e0eaffSOwen Anderson; CHECK-NOT: vmul 1790e0eaffSOwen Anderson; CHECK: vfma.f32 1890e0eaffSOwen Anderson; CHECK-NOT: vmul 1990e0eaffSOwen Anderson %t1 = fmul float %x, 3.0 2090e0eaffSOwen Anderson %t2 = call float @llvm.fma.f32(float %t1, float 2.0, float %y) 2190e0eaffSOwen Anderson ret float %t2 2290e0eaffSOwen Anderson} 2390e0eaffSOwen Anderson 2490e0eaffSOwen Anderson; CHECK: test3 2590e0eaffSOwen Andersondefine float @test3(float %x, float %y) { 2690e0eaffSOwen Anderson; CHECK-NOT: vfma 2790e0eaffSOwen Anderson; CHECK: vadd.f32 2890e0eaffSOwen Anderson; CHECK-NOT: vfma 2990e0eaffSOwen Anderson %t2 = call float @llvm.fma.f32(float %x, float 1.0, float %y) 3090e0eaffSOwen Anderson ret float %t2 3190e0eaffSOwen Anderson} 3290e0eaffSOwen Anderson 3390e0eaffSOwen Anderson; CHECK: test4 3490e0eaffSOwen Andersondefine float @test4(float %x, float %y) { 3590e0eaffSOwen Anderson; CHECK-NOT: vfma 3690e0eaffSOwen Anderson; CHECK: vsub.f32 3790e0eaffSOwen Anderson; CHECK-NOT: vfma 3890e0eaffSOwen Anderson %t2 = call float @llvm.fma.f32(float %x, float -1.0, float %y) 3990e0eaffSOwen Anderson ret float %t2 4090e0eaffSOwen Anderson} 4190e0eaffSOwen Anderson 4290e0eaffSOwen Anderson; CHECK: test5 4390e0eaffSOwen Andersondefine float @test5(float %x) { 4490e0eaffSOwen Anderson; CHECK-NOT: vfma 4590e0eaffSOwen Anderson; CHECK: vmul.f32 4690e0eaffSOwen Anderson; CHECK-NOT: vfma 4790e0eaffSOwen Anderson %t2 = call float @llvm.fma.f32(float %x, float 2.0, float %x) 4890e0eaffSOwen Anderson ret float %t2 4990e0eaffSOwen Anderson} 5090e0eaffSOwen Anderson 5190e0eaffSOwen Anderson; CHECK: test6 5290e0eaffSOwen Andersondefine float @test6(float %x) { 5390e0eaffSOwen Anderson; CHECK-NOT: vfma 5490e0eaffSOwen Anderson; CHECK: vmul.f32 5590e0eaffSOwen Anderson; CHECK-NOT: vfma 5690e0eaffSOwen Anderson %t1 = fsub float -0.0, %x 5790e0eaffSOwen Anderson %t2 = call float @llvm.fma.f32(float %x, float 5.0, float %t1) 5890e0eaffSOwen Anderson ret float %t2 5990e0eaffSOwen Anderson} 6090e0eaffSOwen Anderson 6190e0eaffSOwen Andersondeclare float @llvm.fma.f32(float, float, float) 62