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