ARM test cases contributed by Apple.
[oota-llvm.git] / test / CodeGen / ARM / fp.ll
1 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm &&
2 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 &&
3 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fmsr  | wc -l | grep 4 &&
4 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fsitos &&
5 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fmrs &&
6 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fsitod &&
7 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fmrrd | wc -l | grep 5 &&
8 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fmdrr | wc -l | grep 2 &&
9 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fldd &&
10 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep flds &&
11 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fuitod &&
12 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep fuitos &&
13 ; RUN: llvm-upgrade < %s | llvm-as | llc -march=arm -mattr=+vfp2 | grep 1065353216
14
15 float %f(int %a) {
16 entry:
17         %tmp = cast int %a to float             ; <float> [#uses=1]
18         ret float %tmp
19 }
20
21 double %g(int %a) {
22 entry:
23         %tmp = cast int %a to double            ; <double> [#uses=1]
24         ret double %tmp
25 }
26
27 double %uint_to_double(uint %a) {
28 entry:
29         %tmp = cast uint %a to double
30         ret double %tmp
31 }
32
33 float %uint_to_float(uint %a) {
34 entry:
35         %tmp = cast uint %a to float
36         ret float %tmp
37 }
38
39
40 double %h(double* %v) {
41 entry:
42         %tmp = load double* %v          ; <double> [#uses=1]
43         ret double %tmp
44 }
45
46 float %h() {
47 entry:
48         ret float 1.000000e+00
49 }
50
51 double %f2(double %a) {
52         ret double %a
53 }
54
55 void %f3() {
56 entry:
57         %tmp = call double %f5()                ; <double> [#uses=1]
58         call void %f4(double %tmp )
59         ret void
60 }
61
62 declare void %f4(double)
63 declare double %f5()