blob: 7d95a5efe905231ef7ba8b049c96ba4bc027110e [file] [log] [blame]
Saleem Abdulrasool72587352014-04-03 16:01:44 +00001; RUN: llc -mtriple=arm-eabi -mcpu=cortex-a9 -mattr=+vfp4 -enable-unsafe-fp-math %s -o - \
2; RUN: | FileCheck %s
Owen Anderson90e0eaf2012-09-01 06:04:27 +00003
4; CHECK: test1
5define 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
15define 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
25define 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
34define 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
43define 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
52define 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
61declare float @llvm.fma.f32(float, float, float)