blis_src/
lib.rs

1#![doc = include_str!("../README.md")]
2
3#[cfg(test)]
4mod tests {
5
6    extern crate libc;
7    use self::libc::*;
8
9    extern "C" {
10        pub fn bli_info_get_version_str() -> *const c_char;
11        pub fn sgemm_(
12            transa: *const c_char,
13            transb: *const c_char,
14            m: *const c_int,
15            n: *const c_int,
16            k: *const c_int,
17            alpha: *const c_float,
18            a: *const c_float,
19            lda: *const c_int,
20            b: *const c_float,
21            ldb: *const c_int,
22            beta: *const c_float,
23            c: *mut c_float,
24            ldc: *const c_int,
25        );
26    }
27
28    #[test]
29    fn it_links() {
30        use std::ffi::CStr;
31        unsafe {
32            let s = CStr::from_ptr(bli_info_get_version_str());
33            println!("blis version: {:?}", s);
34        }
35    }
36
37    #[test]
38    fn sgemm() {
39        let a = [1.0];
40        let b = [2.0];
41        let mut c = [12.0];
42
43        unsafe {
44            sgemm_(
45                &(b'N' as i8),
46                &(b'N' as i8),
47                &1,
48                &1,
49                &1,
50                &1.0,
51                a.as_ptr(),
52                &1,
53                b.as_ptr(),
54                &1,
55                &0.0,
56                c.as_mut_ptr(),
57                &1,
58            );
59        }
60        assert_eq!(&c, &[2.0]);
61    }
62}