1; Ensure that floating point operations are lowered to function calls when the
2; FPU is not available in the hardware and that function calls are not used
3; when the FPU is available in the hardware.
4;
5; RUN: llc < %s -march=mblaze | FileCheck -check-prefix=FUN %s
6; RUN: llc < %s -march=mblaze -mattr=+fpu | FileCheck -check-prefix=FPU %s
7
8define float @test_add(float %a, float %b) {
9    ; FUN:        test_add:
10    ; FPU:        test_add:
11
12    %tmp.1 = fadd float %a, %b
13    ; FUN:        brlid
14    ; FPU-NOT:    brlid
15
16    ret float %tmp.1
17    ; FUN:        rtsd
18    ; FPU:        rtsd
19    ; FUN-NOT:    fadd
20    ; FPU-NEXT:   fadd
21}
22
23define float @test_sub(float %a, float %b) {
24    ; FUN:        test_sub:
25    ; FPU:        test_sub:
26
27    %tmp.1 = fsub float %a, %b
28    ; FUN:        brlid
29    ; FPU-NOT:    brlid
30
31    ret float %tmp.1
32    ; FUN:        rtsd
33    ; FPU:        rtsd
34    ; FUN-NOT:    frsub
35    ; FPU-NEXT:   frsub
36}
37
38define float @test_mul(float %a, float %b) {
39    ; FUN:        test_mul:
40    ; FPU:        test_mul:
41
42    %tmp.1 = fmul float %a, %b
43    ; FUN:        brlid
44    ; FPU-NOT:    brlid
45
46    ret float %tmp.1
47    ; FUN:        rtsd
48    ; FPU:        rtsd
49    ; FUN-NOT:    fmul
50    ; FPU-NEXT:   fmul
51}
52
53define float @test_div(float %a, float %b) {
54    ; FUN:        test_div:
55    ; FPU:        test_div:
56
57    %tmp.1 = fdiv float %a, %b
58    ; FUN:        brlid
59    ; FPU-NOT:    brlid
60
61    ret float %tmp.1
62    ; FUN:        rtsd
63    ; FPU:        rtsd
64    ; FUN-NOT:    fdiv
65    ; FPU-NEXT:   fdiv
66}
67