| ; RUN: opt < %s -simplify-libcalls -S > %t |
| ; RUN: not grep {call.*floor(} %t |
| ; RUN: grep {call.*floorf(} %t |
| ; RUN: not grep {call.*ceil(} %t |
| ; RUN: grep {call.*ceilf(} %t |
| ; RUN: not grep {call.*nearbyint(} %t |
| ; RUN: grep {call.*nearbyintf(} %t |
| ; XFAIL: sparc |
| |
| declare double @floor(double) |
| |
| declare double @ceil(double) |
| |
| declare double @nearbyint(double) |
| |
| define float @test_floor(float %C) { |
| %D = fpext float %C to double ; <double> [#uses=1] |
| ; --> floorf |
| %E = call double @floor( double %D ) ; <double> [#uses=1] |
| %F = fptrunc double %E to float ; <float> [#uses=1] |
| ret float %F |
| } |
| |
| define float @test_ceil(float %C) { |
| %D = fpext float %C to double ; <double> [#uses=1] |
| ; --> ceilf |
| %E = call double @ceil( double %D ) ; <double> [#uses=1] |
| %F = fptrunc double %E to float ; <float> [#uses=1] |
| ret float %F |
| } |
| |
| ; PR8466 |
| ; XFAIL: win32 |
| define float @test_nearbyint(float %C) { |
| %D = fpext float %C to double ; <double> [#uses=1] |
| ; --> nearbyintf |
| %E = call double @nearbyint( double %D ) ; <double> [#uses=1] |
| %F = fptrunc double %E to float ; <float> [#uses=1] |
| ret float %F |
| } |
| |