diff options
author | Jan Vesely <jan.vesely@rutgers.edu> | 2014-09-26 01:19:41 +0000 |
---|---|---|
committer | Jan Vesely <jan.vesely@rutgers.edu> | 2014-09-26 01:19:41 +0000 |
commit | b4379f9c2c5de9d407d7a4d989683e2cc2d9fb56 (patch) | |
tree | 77bda992af0d2374b64eff735d14d104d13004c4 /clang/test/CodeGen/builtins.c | |
parent | 0c652c3fbc13ad28f36f6eedcd92ad28a2bebe0b (diff) | |
download | bcm5719-llvm-b4379f9c2c5de9d407d7a4d989683e2cc2d9fb56.tar.gz bcm5719-llvm-b4379f9c2c5de9d407d7a4d989683e2cc2d9fb56.zip |
CGBuiltin: Use frem instruction rather than libcall to implement fmod
AFAICT the semantics of frem match libm's fmod.
Signed-off-by: Jan Vesely <jan.vesely@rutgers.edu>
Reviewed-by: Tom Stellard <tom@stellard.net>
llvm-svn: 218488
Diffstat (limited to 'clang/test/CodeGen/builtins.c')
-rw-r--r-- | clang/test/CodeGen/builtins.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/clang/test/CodeGen/builtins.c b/clang/test/CodeGen/builtins.c index 451ed07c738..6dd749a90bd 100644 --- a/clang/test/CodeGen/builtins.c +++ b/clang/test/CodeGen/builtins.c @@ -197,6 +197,22 @@ void test_float_builtins(float F, double D, long double LD) { // CHECK: and i1 } +// CHECK-LABEL: define void @test_float_builtin_ops +void test_float_builtin_ops(float F, double D, long double LD) { + volatile float resf; + volatile double resd; + volatile long double resld; + + resf = __builtin_fmodf(F,F); + // CHECK: frem float + + resd = __builtin_fmod(D,D); + // CHECK: frem double + + resld = __builtin_fmodl(LD,LD); + // CHECK: frem x86_fp80 +} + // CHECK-LABEL: define void @test_builtin_longjmp void test_builtin_longjmp(void **buffer) { // CHECK: [[BITCAST:%.*]] = bitcast |