[ARM] Adjust how NEON shifts are lowered
[llvm-core.git] / test / CodeGen / ARM / fp-fast.ll
blob7d95a5efe905231ef7ba8b049c96ba4bc027110e
1 ; RUN: llc -mtriple=arm-eabi -mcpu=cortex-a9 -mattr=+vfp4 -enable-unsafe-fp-math %s -o - \
2 ; RUN:  | FileCheck %s
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
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
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
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
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
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
61 declare float @llvm.fma.f32(float, float, float)