about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-10-21 12:01:34 -0700
committerbors <bors@rust-lang.org>2013-10-21 12:01:34 -0700
commitd65dbe230d6e3aac8fa3aef675e56fd906a8083e (patch)
treee3fea76b987edb14da49d93ae5e28abdd9caccd4
parentcf7b9eb51f10fc0b27164c27a30600f80927a1d3 (diff)
parent462a28d0030a52eaaf3233219a4a892903f631b0 (diff)
downloadrust-d65dbe230d6e3aac8fa3aef675e56fd906a8083e.tar.gz
rust-d65dbe230d6e3aac8fa3aef675e56fd906a8083e.zip
auto merge of #9997 : thestinger/rust/float, r=thestinger
-rw-r--r--src/librustc/middle/trans/base.rs16
-rw-r--r--src/librustc/middle/trans/intrinsic.rs14
-rw-r--r--src/librustc/middle/typeck/check/mod.rs4
-rw-r--r--src/libstd/unstable/intrinsics.rs4
4 files changed, 19 insertions, 19 deletions
diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs
index f6a70a373c6..6cb63f9e1a1 100644
--- a/src/librustc/middle/trans/base.rs
+++ b/src/librustc/middle/trans/base.rs
@@ -2797,8 +2797,8 @@ pub fn declare_intrinsics(llmod: ModuleRef) -> HashMap<&'static str, ValueRef> {
 
     ifn!(intrinsics, "llvm.fabs.f32", [Type::f32()], Type::f32());
     ifn!(intrinsics, "llvm.fabs.f64", [Type::f64()], Type::f64());
-    ifn!(intrinsics, "llvm.copysign.f32", [Type::f32()], Type::f32());
-    ifn!(intrinsics, "llvm.copysign.f64", [Type::f64()], Type::f64());
+    ifn!(intrinsics, "llvm.copysign.f32", [Type::f32(), Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.copysign.f64", [Type::f64(), Type::f64()], Type::f64());
 
     ifn!(intrinsics, "llvm.floor.f32",[Type::f32()], Type::f32());
     ifn!(intrinsics, "llvm.floor.f64",[Type::f64()], Type::f64());
@@ -2807,12 +2807,12 @@ pub fn declare_intrinsics(llmod: ModuleRef) -> HashMap<&'static str, ValueRef> {
     ifn!(intrinsics, "llvm.trunc.f32",[Type::f32()], Type::f32());
     ifn!(intrinsics, "llvm.trunc.f64",[Type::f64()], Type::f64());
 
-    ifn!(intrinsics, "llvm.rint.f32",[Type::f64()], Type::f64());
-    ifn!(intrinsics, "llvm.rint.f64",[Type::f64()], Type::f64());
-    ifn!(intrinsics, "llvm.nearbyint.f32",[Type::f64()], Type::f64());
-    ifn!(intrinsics, "llvm.nearbyint.f64",[Type::f64()], Type::f64());
-    ifn!(intrinsics, "llvm.round.f32",[Type::f64()], Type::f64());
-    ifn!(intrinsics, "llvm.round.f64",[Type::f64()], Type::f64());
+    ifn!(intrinsics, "llvm.rint.f32", [Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.rint.f64", [Type::f64()], Type::f64());
+    ifn!(intrinsics, "llvm.nearbyint.f32", [Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.nearbyint.f64", [Type::f64()], Type::f64());
+    ifn!(intrinsics, "llvm.round.f32", [Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.round.f64", [Type::f64()], Type::f64());
 
     ifn!(intrinsics, "llvm.ctpop.i8", [Type::i8()], Type::i8());
     ifn!(intrinsics, "llvm.ctpop.i16",[Type::i16()], Type::i16());
diff --git a/src/librustc/middle/trans/intrinsic.rs b/src/librustc/middle/trans/intrinsic.rs
index a37ec29973a..6334677a406 100644
--- a/src/librustc/middle/trans/intrinsic.rs
+++ b/src/librustc/middle/trans/intrinsic.rs
@@ -460,20 +460,20 @@ pub fn trans_intrinsic(ccx: @mut CrateContext,
         "fmaf64" => simple_llvm_intrinsic(bcx, "llvm.fma.f64", 3),
         "fabsf32" => simple_llvm_intrinsic(bcx, "llvm.fabs.f32", 1),
         "fabsf64" => simple_llvm_intrinsic(bcx, "llvm.fabs.f64", 1),
-        "copysignf32" => simple_llvm_intrinsic(bcx, "llvm.copysign.f32", 1),
-        "copysignf64" => simple_llvm_intrinsic(bcx, "llvm.copysign.f64", 1),
+        "copysignf32" => simple_llvm_intrinsic(bcx, "llvm.copysign.f32", 2),
+        "copysignf64" => simple_llvm_intrinsic(bcx, "llvm.copysign.f64", 2),
         "floorf32" => simple_llvm_intrinsic(bcx, "llvm.floor.f32", 1),
         "floorf64" => simple_llvm_intrinsic(bcx, "llvm.floor.f64", 1),
         "ceilf32" => simple_llvm_intrinsic(bcx, "llvm.ceil.f32", 1),
         "ceilf64" => simple_llvm_intrinsic(bcx, "llvm.ceil.f64", 1),
         "truncf32" => simple_llvm_intrinsic(bcx, "llvm.trunc.f32", 1),
         "truncf64" => simple_llvm_intrinsic(bcx, "llvm.trunc.f64", 1),
-        "rintf64" => simple_llvm_intrinsic(bcx, "llvm.rint.f64", 1),
         "rintf32" => simple_llvm_intrinsic(bcx, "llvm.rint.f32", 1),
-        "nearbyintf32" => simple_llvm_intrinsic(bcx, "llvm.nearbyint.f64", 1),
-        "nearbyintf64" => simple_llvm_intrinsic(bcx, "llvm.nearbyint.f32", 1),
-        "roundf32" => simple_llvm_intrinsic(bcx, "llvm.round.f64", 1),
-        "roundf64" => simple_llvm_intrinsic(bcx, "llvm.round.f32", 1),
+        "rintf64" => simple_llvm_intrinsic(bcx, "llvm.rint.f64", 1),
+        "nearbyintf32" => simple_llvm_intrinsic(bcx, "llvm.nearbyint.f32", 1),
+        "nearbyintf64" => simple_llvm_intrinsic(bcx, "llvm.nearbyint.f64", 1),
+        "roundf32" => simple_llvm_intrinsic(bcx, "llvm.round.f32", 1),
+        "roundf64" => simple_llvm_intrinsic(bcx, "llvm.round.f64", 1),
         "ctpop8" => simple_llvm_intrinsic(bcx, "llvm.ctpop.i8", 1),
         "ctpop16" => simple_llvm_intrinsic(bcx, "llvm.ctpop.i16", 1),
         "ctpop32" => simple_llvm_intrinsic(bcx, "llvm.ctpop.i32", 1),
diff --git a/src/librustc/middle/typeck/check/mod.rs b/src/librustc/middle/typeck/check/mod.rs
index fce24e15bdc..627216ea7b7 100644
--- a/src/librustc/middle/typeck/check/mod.rs
+++ b/src/librustc/middle/typeck/check/mod.rs
@@ -3809,8 +3809,8 @@ pub fn check_intrinsic_type(ccx: @mut CrateCtxt, it: @ast::foreign_item) {
             }
             "fabsf32"      => (0, ~[ ty::mk_f32() ], ty::mk_f32()),
             "fabsf64"      => (0, ~[ ty::mk_f64() ], ty::mk_f64()),
-            "copysignf32"  => (0, ~[ ty::mk_f32() ], ty::mk_f32()),
-            "copysignf64"  => (0, ~[ ty::mk_f64() ], ty::mk_f64()),
+            "copysignf32"  => (0, ~[ ty::mk_f32(), ty::mk_f32() ], ty::mk_f32()),
+            "copysignf64"  => (0, ~[ ty::mk_f64(), ty::mk_f64() ], ty::mk_f64()),
             "floorf32"     => (0, ~[ ty::mk_f32() ], ty::mk_f32()),
             "floorf64"     => (0, ~[ ty::mk_f64() ], ty::mk_f64()),
             "ceilf32"      => (0, ~[ ty::mk_f32() ], ty::mk_f32()),
diff --git a/src/libstd/unstable/intrinsics.rs b/src/libstd/unstable/intrinsics.rs
index 8959d591c37..c9e1b5b3b00 100644
--- a/src/libstd/unstable/intrinsics.rs
+++ b/src/libstd/unstable/intrinsics.rs
@@ -414,9 +414,9 @@ extern "rust-intrinsic" {
     pub fn fabsf64(x: f64) -> f64;
 
     #[cfg(not(stage0))]
-    pub fn copysignf32(x: f32) -> f32;
+    pub fn copysignf32(x: f32, y: f32) -> f32;
     #[cfg(not(stage0))]
-    pub fn copysignf64(x: f64) -> f64;
+    pub fn copysignf64(x: f64, y: f64) -> f64;
 
     pub fn floorf32(x: f32) -> f32;
     pub fn floorf64(x: f64) -> f64;