For PR1319:
[oota-llvm.git] / test / Transforms / SimplifyLibCalls / floor.ll
1 ; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \
2 ; RUN:    not grep {call.*floor(} &&
3 ; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \
4 ; RUN:    grep {call.*floorf(}
5 ; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \
6 ; RUN:    not grep {call.*ceil(} &&
7 ; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \
8 ; RUN:    grep {call.*ceilf(}
9 ; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \
10 ; RUN:    not grep {call.*nearbyint(} &&
11 ; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \
12 ; RUN:    grep {call.*nearbyintf(}
13 ; XFAIL: sparc
14
15 declare double %floor(double)
16 declare double %ceil(double)
17 declare double %nearbyint(double)
18
19 float %test_floor(float %C) {
20         %D = cast float %C to double
21         %E = call double %floor(double %D)  ; --> floorf
22         %F = cast double %E to float
23         ret float %F
24 }
25
26 float %test_ceil(float %C) {
27         %D = cast float %C to double
28         %E = call double %ceil(double %D)  ; --> ceilf
29         %F = cast double %E to float
30         ret float %F
31 }
32
33 float %test_nearbyint(float %C) {
34         %D = cast float %C to double
35         %E = call double %nearbyint(double %D)  ; --> floorf
36         %F = cast double %E to float
37         ret float %F
38 }
39