Add a prelude
This commit is contained in:
parent
891ba43605
commit
32d9111232
|
@ -11,6 +11,6 @@
|
||||||
#![feature(stdsimd)]
|
#![feature(stdsimd)]
|
||||||
|
|
||||||
pub mod simd;
|
pub mod simd;
|
||||||
|
|
||||||
pub mod util;
|
pub mod util;
|
||||||
pub use util::{array_op, defer_impl, unroll};
|
|
||||||
|
pub mod prelude;
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
pub use crate::simd::SimdBitwise;
|
||||||
|
pub use crate::simd::SimdLoad;
|
||||||
|
pub use crate::simd::SimdSplat;
|
||||||
|
pub use crate::simd::SimdTestAnd;
|
||||||
|
|
||||||
|
pub use crate::util::array_op;
|
||||||
|
pub use crate::util::unroll;
|
13
src/util.rs
13
src/util.rs
|
@ -20,7 +20,7 @@ pub const unsafe fn __array_op__array_assume_init<T, const LEN: usize>(array: [M
|
||||||
/// # Generation
|
/// # Generation
|
||||||
///
|
///
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// # use brisk::array_op;
|
/// # use brisk::util::array_op;
|
||||||
/// const I_TIMES_2: [usize; 8] = array_op!(gen[8] |i| i * 2);
|
/// const I_TIMES_2: [usize; 8] = array_op!(gen[8] |i| i * 2);
|
||||||
///
|
///
|
||||||
/// assert_eq!(I_TIMES_2, [0, 2, 4, 6, 8, 10, 12, 14]);
|
/// assert_eq!(I_TIMES_2, [0, 2, 4, 6, 8, 10, 12, 14]);
|
||||||
|
@ -29,7 +29,7 @@ pub const unsafe fn __array_op__array_assume_init<T, const LEN: usize>(array: [M
|
||||||
/// # Mapping
|
/// # Mapping
|
||||||
///
|
///
|
||||||
/// ```rust
|
/// ```rust
|
||||||
/// # use brisk::array_op;
|
/// # use brisk::util::array_op;
|
||||||
/// # const I_TIMES_2: [usize; 8] = array_op!(gen[8] |i| i * 2);
|
/// # const I_TIMES_2: [usize; 8] = array_op!(gen[8] |i| i * 2);
|
||||||
/// const I_TIMES_2_PLUS_1: [usize; 8] = array_op!(map[8, I_TIMES_2] |i, x| x + 1);
|
/// const I_TIMES_2_PLUS_1: [usize; 8] = array_op!(map[8, I_TIMES_2] |i, x| x + 1);
|
||||||
///
|
///
|
||||||
|
@ -51,7 +51,7 @@ macro_rules! __array_op {
|
||||||
}
|
}
|
||||||
}};
|
}};
|
||||||
(map[$len:expr, $src:expr] |$i:pat_param, $s:pat_param| $val:expr) => {{
|
(map[$len:expr, $src:expr] |$i:pat_param, $s:pat_param| $val:expr) => {{
|
||||||
$crate::array_op!(
|
$crate::util::array_op!(
|
||||||
gen[$len]
|
gen[$len]
|
||||||
| i
|
| i
|
||||||
| match i {
|
| match i {
|
||||||
|
@ -191,10 +191,10 @@ pub unsafe fn alloc_aligned(len: NonZeroUsize, align: usize) -> *mut u8 {
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! __unroll {
|
macro_rules! __unroll {
|
||||||
(let [$( $x:ident ),+] => |$y:pat_param| $expr:expr) => {
|
(let [$( $x:ident ),+] => |$y:pat_param| $expr:expr) => {
|
||||||
$crate::unroll!(let [$( $x: ($x) ),+] => |$y| $expr);
|
$crate::util::unroll!(let [$( $x: ($x) ),+] => |$y| $expr);
|
||||||
};
|
};
|
||||||
(let [$( $id:ident: ($( $x:expr ),+) ),+] => |$( $y:pat_param ),+| $($expr:tt)+) => {
|
(let [$( $id:ident: ($( $x:expr ),+) ),+] => |$( $y:pat_param ),+| $($expr:tt)+) => {
|
||||||
$crate::unroll!(@ [$] [$( $id: ($( $x ),+) ),+] => |$( $y ),+| $($expr)+)
|
$crate::util::unroll!(@ [$] [$( $id: ($( $x ),+) ),+] => |$( $y ),+| $($expr)+)
|
||||||
};
|
};
|
||||||
(@ [$dollar:tt] [$( $id:ident: ($( $x:expr ),+) ),+] => |$( $y:pat_param ),+| $($expr:tt)+) => {
|
(@ [$dollar:tt] [$( $id:ident: ($( $x:expr ),+) ),+] => |$( $y:pat_param ),+| $($expr:tt)+) => {
|
||||||
macro_rules! __unrolled {
|
macro_rules! __unrolled {
|
||||||
|
@ -211,7 +211,7 @@ macro_rules! __unroll {
|
||||||
//)+
|
//)+
|
||||||
};
|
};
|
||||||
([$( ($( $x:expr ),+) ),+] => |$( $y:pat_param ),+| $($expr:tt)+) => {
|
([$( ($( $x:expr ),+) ),+] => |$( $y:pat_param ),+| $($expr:tt)+) => {
|
||||||
$crate::unroll!(@ [$] [$( ($( $x ),+) ),+] => |$( $y ),+| $($expr)+)
|
$crate::util::unroll!(@ [$] [$( ($( $x ),+) ),+] => |$( $y ),+| $($expr)+)
|
||||||
};
|
};
|
||||||
(@ [$dollar:tt] [$( ($( $x:expr ),+) ),+] => |$( $y:pat_param ),+| $($expr:tt)+) => {
|
(@ [$dollar:tt] [$( ($( $x:expr ),+) ),+] => |$( $y:pat_param ),+| $($expr:tt)+) => {
|
||||||
macro_rules! __unrolled {
|
macro_rules! __unrolled {
|
||||||
|
@ -237,7 +237,6 @@ pub use __unroll as unroll;
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod test {
|
mod test {
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::array_op;
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
pub fn test_align_down_to() {
|
pub fn test_align_down_to() {
|
||||||
|
|
Loading…
Reference in New Issue