Meador Inge | 193e035 | 2012-11-13 04:16:17 +0000 | [diff] [blame] | 1 | ; RUN: opt < %s -instcombine -S -mtriple "i386-pc-linux" | FileCheck -check-prefix=DO-SIMPLIFY %s |
| 2 | ; RUN: opt < %s -instcombine -S -mtriple "i386-pc-win32" | FileCheck -check-prefix=DONT-SIMPLIFY %s |
| 3 | ; RUN: opt < %s -instcombine -S -mtriple "x86_64-pc-win32" | FileCheck -check-prefix=C89-SIMPLIFY %s |
| 4 | ; RUN: opt < %s -instcombine -S -mtriple "i386-pc-mingw32" | FileCheck -check-prefix=DO-SIMPLIFY %s |
| 5 | ; RUN: opt < %s -instcombine -S -mtriple "x86_64-pc-mingw32" | FileCheck -check-prefix=DO-SIMPLIFY %s |
| 6 | ; RUN: opt < %s -instcombine -S -mtriple "sparc-sun-solaris" | FileCheck -check-prefix=DO-SIMPLIFY %s |
| 7 | |
| 8 | ; DO-SIMPLIFY: call float @floorf( |
| 9 | ; DO-SIMPLIFY: call float @ceilf( |
| 10 | ; DO-SIMPLIFY: call float @roundf( |
| 11 | ; DO-SIMPLIFY: call float @nearbyintf( |
| 12 | ; DO-SIMPLIFY: call float @truncf( |
| 13 | ; DO-SIMPLIFY: call float @fabsf( |
| 14 | |
| 15 | ; C89-SIMPLIFY: call float @floorf( |
| 16 | ; C89-SIMPLIFY: call float @ceilf( |
| 17 | ; C89-SIMPLIFY: call double @round( |
| 18 | ; C89-SIMPLIFY: call double @nearbyint( |
| 19 | |
| 20 | ; DONT-SIMPLIFY: call double @floor( |
| 21 | ; DONT-SIMPLIFY: call double @ceil( |
| 22 | ; DONT-SIMPLIFY: call double @round( |
| 23 | ; DONT-SIMPLIFY: call double @nearbyint( |
| 24 | ; DONT-SIMPLIFY: call double @trunc( |
| 25 | ; DONT-SIMPLIFY: call double @fabs( |
| 26 | |
| 27 | declare double @floor(double) |
| 28 | declare double @ceil(double) |
| 29 | declare double @round(double) |
| 30 | declare double @nearbyint(double) |
| 31 | declare double @trunc(double) |
| 32 | declare double @fabs(double) |
| 33 | |
| 34 | define float @test_floor(float %C) { |
| 35 | %D = fpext float %C to double |
| 36 | ; --> floorf |
| 37 | %E = call double @floor(double %D) |
| 38 | %F = fptrunc double %E to float |
| 39 | ret float %F |
| 40 | } |
| 41 | |
| 42 | define float @test_ceil(float %C) { |
| 43 | %D = fpext float %C to double |
| 44 | ; --> ceilf |
| 45 | %E = call double @ceil(double %D) |
| 46 | %F = fptrunc double %E to float |
| 47 | ret float %F |
| 48 | } |
| 49 | |
| 50 | define float @test_round(float %C) { |
| 51 | %D = fpext float %C to double |
| 52 | ; --> roundf |
| 53 | %E = call double @round(double %D) |
| 54 | %F = fptrunc double %E to float |
| 55 | ret float %F |
| 56 | } |
| 57 | |
| 58 | define float @test_nearbyint(float %C) { |
| 59 | %D = fpext float %C to double |
| 60 | ; --> nearbyintf |
| 61 | %E = call double @nearbyint(double %D) |
| 62 | %F = fptrunc double %E to float |
| 63 | ret float %F |
| 64 | } |
| 65 | |
| 66 | define float @test_trunc(float %C) { |
| 67 | %D = fpext float %C to double |
| 68 | ; --> truncf |
| 69 | %E = call double @trunc(double %D) |
| 70 | %F = fptrunc double %E to float |
| 71 | ret float %F |
| 72 | } |
| 73 | |
| 74 | define float @test_fabs(float %C) { |
| 75 | %D = fpext float %C to double |
| 76 | ; --> fabsf |
| 77 | %E = call double @fabs(double %D) |
| 78 | %F = fptrunc double %E to float |
| 79 | ret float %F |
| 80 | } |