about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc/middle/trans/base.rs180
1 files changed, 90 insertions, 90 deletions
diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs
index 5f5db9b4487..8d2b9d7a0ee 100644
--- a/src/librustc/middle/trans/base.rs
+++ b/src/librustc/middle/trans/base.rs
@@ -2648,10 +2648,10 @@ pub fn p2i(ccx: &CrateContext, v: ValueRef) -> ValueRef {
 }
 
 macro_rules! ifn (
-    ($name:expr, $args:expr, $ret:expr) => ({
+    ($intrinsics:ident, $name:expr, $args:expr, $ret:expr) => ({
         let name = $name;
         let f = decl_cdecl_fn(llmod, name, Type::func($args, &$ret));
-        intrinsics.insert(name, f);
+        $intrinsics.insert(name, f);
     })
 )
 
@@ -2659,135 +2659,135 @@ pub fn declare_intrinsics(llmod: ModuleRef) -> HashMap<&'static str, ValueRef> {
     let i8p = Type::i8p();
     let mut intrinsics = HashMap::new();
 
-    ifn!("llvm.memcpy.p0i8.p0i8.i32",
+    ifn!(intrinsics, "llvm.memcpy.p0i8.p0i8.i32",
          [i8p, i8p, Type::i32(), Type::i32(), Type::i1()], Type::void());
-    ifn!("llvm.memcpy.p0i8.p0i8.i64",
+    ifn!(intrinsics, "llvm.memcpy.p0i8.p0i8.i64",
          [i8p, i8p, Type::i64(), Type::i32(), Type::i1()], Type::void());
-    ifn!("llvm.memmove.p0i8.p0i8.i32",
+    ifn!(intrinsics, "llvm.memmove.p0i8.p0i8.i32",
          [i8p, i8p, Type::i32(), Type::i32(), Type::i1()], Type::void());
-    ifn!("llvm.memmove.p0i8.p0i8.i64",
+    ifn!(intrinsics, "llvm.memmove.p0i8.p0i8.i64",
          [i8p, i8p, Type::i64(), Type::i32(), Type::i1()], Type::void());
-    ifn!("llvm.memset.p0i8.i32",
+    ifn!(intrinsics, "llvm.memset.p0i8.i32",
          [i8p, Type::i8(), Type::i32(), Type::i32(), Type::i1()], Type::void());
-    ifn!("llvm.memset.p0i8.i64",
+    ifn!(intrinsics, "llvm.memset.p0i8.i64",
          [i8p, Type::i8(), Type::i64(), Type::i32(), Type::i1()], Type::void());
 
-    ifn!("llvm.trap", [], Type::void());
-    ifn!("llvm.frameaddress", [Type::i32()], i8p);
-
-    ifn!("llvm.powi.f32", [Type::f32(), Type::i32()], Type::f32());
-    ifn!("llvm.powi.f64", [Type::f64(), Type::i32()], Type::f64());
-    ifn!("llvm.pow.f32",  [Type::f32(), Type::f32()], Type::f32());
-    ifn!("llvm.pow.f64",  [Type::f64(), Type::f64()], Type::f64());
-
-    ifn!("llvm.sqrt.f32", [Type::f32()], Type::f32());
-    ifn!("llvm.sqrt.f64", [Type::f64()], Type::f64());
-    ifn!("llvm.sin.f32",  [Type::f32()], Type::f32());
-    ifn!("llvm.sin.f64",  [Type::f64()], Type::f64());
-    ifn!("llvm.cos.f32",  [Type::f32()], Type::f32());
-    ifn!("llvm.cos.f64",  [Type::f64()], Type::f64());
-    ifn!("llvm.exp.f32",  [Type::f32()], Type::f32());
-    ifn!("llvm.exp.f64",  [Type::f64()], Type::f64());
-    ifn!("llvm.exp2.f32", [Type::f32()], Type::f32());
-    ifn!("llvm.exp2.f64", [Type::f64()], Type::f64());
-    ifn!("llvm.log.f32",  [Type::f32()], Type::f32());
-    ifn!("llvm.log.f64",  [Type::f64()], Type::f64());
-    ifn!("llvm.log10.f32",[Type::f32()], Type::f32());
-    ifn!("llvm.log10.f64",[Type::f64()], Type::f64());
-    ifn!("llvm.log2.f32", [Type::f32()], Type::f32());
-    ifn!("llvm.log2.f64", [Type::f64()], Type::f64());
-
-    ifn!("llvm.fma.f32",  [Type::f32(), Type::f32(), Type::f32()], Type::f32());
-    ifn!("llvm.fma.f64",  [Type::f64(), Type::f64(), Type::f64()], Type::f64());
-
-    ifn!("llvm.fabs.f32", [Type::f32()], Type::f32());
-    ifn!("llvm.fabs.f64", [Type::f64()], Type::f64());
-    ifn!("llvm.floor.f32",[Type::f32()], Type::f32());
-    ifn!("llvm.floor.f64",[Type::f64()], Type::f64());
-    ifn!("llvm.ceil.f32", [Type::f32()], Type::f32());
-    ifn!("llvm.ceil.f64", [Type::f64()], Type::f64());
-    ifn!("llvm.trunc.f32",[Type::f32()], Type::f32());
-    ifn!("llvm.trunc.f64",[Type::f64()], Type::f64());
-
-    ifn!("llvm.ctpop.i8", [Type::i8()], Type::i8());
-    ifn!("llvm.ctpop.i16",[Type::i16()], Type::i16());
-    ifn!("llvm.ctpop.i32",[Type::i32()], Type::i32());
-    ifn!("llvm.ctpop.i64",[Type::i64()], Type::i64());
-
-    ifn!("llvm.ctlz.i8",  [Type::i8() , Type::i1()], Type::i8());
-    ifn!("llvm.ctlz.i16", [Type::i16(), Type::i1()], Type::i16());
-    ifn!("llvm.ctlz.i32", [Type::i32(), Type::i1()], Type::i32());
-    ifn!("llvm.ctlz.i64", [Type::i64(), Type::i1()], Type::i64());
-
-    ifn!("llvm.cttz.i8",  [Type::i8() , Type::i1()], Type::i8());
-    ifn!("llvm.cttz.i16", [Type::i16(), Type::i1()], Type::i16());
-    ifn!("llvm.cttz.i32", [Type::i32(), Type::i1()], Type::i32());
-    ifn!("llvm.cttz.i64", [Type::i64(), Type::i1()], Type::i64());
-
-    ifn!("llvm.bswap.i16",[Type::i16()], Type::i16());
-    ifn!("llvm.bswap.i32",[Type::i32()], Type::i32());
-    ifn!("llvm.bswap.i64",[Type::i64()], Type::i64());
-
-    ifn!("llvm.sadd.with.overflow.i8",
+    ifn!(intrinsics, "llvm.trap", [], Type::void());
+    ifn!(intrinsics, "llvm.frameaddress", [Type::i32()], i8p);
+
+    ifn!(intrinsics, "llvm.powi.f32", [Type::f32(), Type::i32()], Type::f32());
+    ifn!(intrinsics, "llvm.powi.f64", [Type::f64(), Type::i32()], Type::f64());
+    ifn!(intrinsics, "llvm.pow.f32",  [Type::f32(), Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.pow.f64",  [Type::f64(), Type::f64()], Type::f64());
+
+    ifn!(intrinsics, "llvm.sqrt.f32", [Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.sqrt.f64", [Type::f64()], Type::f64());
+    ifn!(intrinsics, "llvm.sin.f32",  [Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.sin.f64",  [Type::f64()], Type::f64());
+    ifn!(intrinsics, "llvm.cos.f32",  [Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.cos.f64",  [Type::f64()], Type::f64());
+    ifn!(intrinsics, "llvm.exp.f32",  [Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.exp.f64",  [Type::f64()], Type::f64());
+    ifn!(intrinsics, "llvm.exp2.f32", [Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.exp2.f64", [Type::f64()], Type::f64());
+    ifn!(intrinsics, "llvm.log.f32",  [Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.log.f64",  [Type::f64()], Type::f64());
+    ifn!(intrinsics, "llvm.log10.f32",[Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.log10.f64",[Type::f64()], Type::f64());
+    ifn!(intrinsics, "llvm.log2.f32", [Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.log2.f64", [Type::f64()], Type::f64());
+
+    ifn!(intrinsics, "llvm.fma.f32",  [Type::f32(), Type::f32(), Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.fma.f64",  [Type::f64(), Type::f64(), Type::f64()], Type::f64());
+
+    ifn!(intrinsics, "llvm.fabs.f32", [Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.fabs.f64", [Type::f64()], Type::f64());
+    ifn!(intrinsics, "llvm.floor.f32",[Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.floor.f64",[Type::f64()], Type::f64());
+    ifn!(intrinsics, "llvm.ceil.f32", [Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.ceil.f64", [Type::f64()], Type::f64());
+    ifn!(intrinsics, "llvm.trunc.f32",[Type::f32()], Type::f32());
+    ifn!(intrinsics, "llvm.trunc.f64",[Type::f64()], Type::f64());
+
+    ifn!(intrinsics, "llvm.ctpop.i8", [Type::i8()], Type::i8());
+    ifn!(intrinsics, "llvm.ctpop.i16",[Type::i16()], Type::i16());
+    ifn!(intrinsics, "llvm.ctpop.i32",[Type::i32()], Type::i32());
+    ifn!(intrinsics, "llvm.ctpop.i64",[Type::i64()], Type::i64());
+
+    ifn!(intrinsics, "llvm.ctlz.i8",  [Type::i8() , Type::i1()], Type::i8());
+    ifn!(intrinsics, "llvm.ctlz.i16", [Type::i16(), Type::i1()], Type::i16());
+    ifn!(intrinsics, "llvm.ctlz.i32", [Type::i32(), Type::i1()], Type::i32());
+    ifn!(intrinsics, "llvm.ctlz.i64", [Type::i64(), Type::i1()], Type::i64());
+
+    ifn!(intrinsics, "llvm.cttz.i8",  [Type::i8() , Type::i1()], Type::i8());
+    ifn!(intrinsics, "llvm.cttz.i16", [Type::i16(), Type::i1()], Type::i16());
+    ifn!(intrinsics, "llvm.cttz.i32", [Type::i32(), Type::i1()], Type::i32());
+    ifn!(intrinsics, "llvm.cttz.i64", [Type::i64(), Type::i1()], Type::i64());
+
+    ifn!(intrinsics, "llvm.bswap.i16",[Type::i16()], Type::i16());
+    ifn!(intrinsics, "llvm.bswap.i32",[Type::i32()], Type::i32());
+    ifn!(intrinsics, "llvm.bswap.i64",[Type::i64()], Type::i64());
+
+    ifn!(intrinsics, "llvm.sadd.with.overflow.i8",
         [Type::i8(), Type::i8()], Type::struct_([Type::i8(), Type::i1()], false));
-    ifn!("llvm.sadd.with.overflow.i16",
+    ifn!(intrinsics, "llvm.sadd.with.overflow.i16",
         [Type::i16(), Type::i16()], Type::struct_([Type::i16(), Type::i1()], false));
-    ifn!("llvm.sadd.with.overflow.i32",
+    ifn!(intrinsics, "llvm.sadd.with.overflow.i32",
         [Type::i32(), Type::i32()], Type::struct_([Type::i32(), Type::i1()], false));
-    ifn!("llvm.sadd.with.overflow.i64",
+    ifn!(intrinsics, "llvm.sadd.with.overflow.i64",
         [Type::i64(), Type::i64()], Type::struct_([Type::i64(), Type::i1()], false));
 
-    ifn!("llvm.uadd.with.overflow.i8",
+    ifn!(intrinsics, "llvm.uadd.with.overflow.i8",
         [Type::i8(), Type::i8()], Type::struct_([Type::i8(), Type::i1()], false));
-    ifn!("llvm.uadd.with.overflow.i16",
+    ifn!(intrinsics, "llvm.uadd.with.overflow.i16",
         [Type::i16(), Type::i16()], Type::struct_([Type::i16(), Type::i1()], false));
-    ifn!("llvm.uadd.with.overflow.i32",
+    ifn!(intrinsics, "llvm.uadd.with.overflow.i32",
         [Type::i32(), Type::i32()], Type::struct_([Type::i32(), Type::i1()], false));
-    ifn!("llvm.uadd.with.overflow.i64",
+    ifn!(intrinsics, "llvm.uadd.with.overflow.i64",
         [Type::i64(), Type::i64()], Type::struct_([Type::i64(), Type::i1()], false));
 
-    ifn!("llvm.ssub.with.overflow.i8",
+    ifn!(intrinsics, "llvm.ssub.with.overflow.i8",
         [Type::i8(), Type::i8()], Type::struct_([Type::i8(), Type::i1()], false));
-    ifn!("llvm.ssub.with.overflow.i16",
+    ifn!(intrinsics, "llvm.ssub.with.overflow.i16",
         [Type::i16(), Type::i16()], Type::struct_([Type::i16(), Type::i1()], false));
-    ifn!("llvm.ssub.with.overflow.i32",
+    ifn!(intrinsics, "llvm.ssub.with.overflow.i32",
         [Type::i32(), Type::i32()], Type::struct_([Type::i32(), Type::i1()], false));
-    ifn!("llvm.ssub.with.overflow.i64",
+    ifn!(intrinsics, "llvm.ssub.with.overflow.i64",
         [Type::i64(), Type::i64()], Type::struct_([Type::i64(), Type::i1()], false));
 
-    ifn!("llvm.usub.with.overflow.i8",
+    ifn!(intrinsics, "llvm.usub.with.overflow.i8",
         [Type::i8(), Type::i8()], Type::struct_([Type::i8(), Type::i1()], false));
-    ifn!("llvm.usub.with.overflow.i16",
+    ifn!(intrinsics, "llvm.usub.with.overflow.i16",
         [Type::i16(), Type::i16()], Type::struct_([Type::i16(), Type::i1()], false));
-    ifn!("llvm.usub.with.overflow.i32",
+    ifn!(intrinsics, "llvm.usub.with.overflow.i32",
         [Type::i32(), Type::i32()], Type::struct_([Type::i32(), Type::i1()], false));
-    ifn!("llvm.usub.with.overflow.i64",
+    ifn!(intrinsics, "llvm.usub.with.overflow.i64",
         [Type::i64(), Type::i64()], Type::struct_([Type::i64(), Type::i1()], false));
 
-    ifn!("llvm.smul.with.overflow.i8",
+    ifn!(intrinsics, "llvm.smul.with.overflow.i8",
         [Type::i8(), Type::i8()], Type::struct_([Type::i8(), Type::i1()], false));
-    ifn!("llvm.smul.with.overflow.i16",
+    ifn!(intrinsics, "llvm.smul.with.overflow.i16",
         [Type::i16(), Type::i16()], Type::struct_([Type::i16(), Type::i1()], false));
-    ifn!("llvm.smul.with.overflow.i32",
+    ifn!(intrinsics, "llvm.smul.with.overflow.i32",
         [Type::i32(), Type::i32()], Type::struct_([Type::i32(), Type::i1()], false));
-    ifn!("llvm.smul.with.overflow.i64",
+    ifn!(intrinsics, "llvm.smul.with.overflow.i64",
         [Type::i64(), Type::i64()], Type::struct_([Type::i64(), Type::i1()], false));
 
-    ifn!("llvm.umul.with.overflow.i8",
+    ifn!(intrinsics, "llvm.umul.with.overflow.i8",
         [Type::i8(), Type::i8()], Type::struct_([Type::i8(), Type::i1()], false));
-    ifn!("llvm.umul.with.overflow.i16",
+    ifn!(intrinsics, "llvm.umul.with.overflow.i16",
         [Type::i16(), Type::i16()], Type::struct_([Type::i16(), Type::i1()], false));
-    ifn!("llvm.umul.with.overflow.i32",
+    ifn!(intrinsics, "llvm.umul.with.overflow.i32",
         [Type::i32(), Type::i32()], Type::struct_([Type::i32(), Type::i1()], false));
-    ifn!("llvm.umul.with.overflow.i64",
+    ifn!(intrinsics, "llvm.umul.with.overflow.i64",
         [Type::i64(), Type::i64()], Type::struct_([Type::i64(), Type::i1()], false));
 
     return intrinsics;
 }
 
 pub fn declare_dbg_intrinsics(llmod: ModuleRef, intrinsics: &mut HashMap<&'static str, ValueRef>) {
-    ifn!("llvm.dbg.declare", [Type::metadata(), Type::metadata()], Type::void());
-    ifn!("llvm.dbg.value",   [Type::metadata(), Type::i64(), Type::metadata()], Type::void());
+    ifn!(intrinsics, "llvm.dbg.declare", [Type::metadata(), Type::metadata()], Type::void());
+    ifn!(intrinsics, "llvm.dbg.value",   [Type::metadata(), Type::i64(), Type::metadata()], Type::void());
 }
 
 pub fn trap(bcx: @mut Block) {