Add a prelude

This commit is contained in:
Michael Pfaff 2022-12-15 16:42:22 -05:00
parent 891ba43605
commit 32d9111232
Signed by: michael
GPG Key ID: CF402C4A012AA9D4
3 changed files with 15 additions and 9 deletions

View File

@ -11,6 +11,6 @@
#![feature(stdsimd)]
pub mod simd;
pub mod util;
pub use util::{array_op, defer_impl, unroll};
pub mod prelude;

7
src/prelude.rs Normal file
View File

@ -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;

View File

@ -20,7 +20,7 @@ pub const unsafe fn __array_op__array_assume_init<T, const LEN: usize>(array: [M
/// # Generation
///
/// ```rust
/// # use brisk::array_op;
/// # use brisk::util::array_op;
/// 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]);
@ -29,7 +29,7 @@ pub const unsafe fn __array_op__array_assume_init<T, const LEN: usize>(array: [M
/// # Mapping
///
/// ```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_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) => {{
$crate::array_op!(
$crate::util::array_op!(
gen[$len]
| i
| match i {
@ -191,10 +191,10 @@ pub unsafe fn alloc_aligned(len: NonZeroUsize, align: usize) -> *mut u8 {
#[macro_export]
macro_rules! __unroll {
(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)+) => {
$crate::unroll!(@ [$] [$( $id: ($( $x ),+) ),+] => |$( $y ),+| $($expr)+)
$crate::util::unroll!(@ [$] [$( $id: ($( $x ),+) ),+] => |$( $y ),+| $($expr)+)
};
(@ [$dollar:tt] [$( $id:ident: ($( $x:expr ),+) ),+] => |$( $y:pat_param ),+| $($expr:tt)+) => {
macro_rules! __unrolled {
@ -211,7 +211,7 @@ macro_rules! __unroll {
//)+
};
([$( ($( $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)+) => {
macro_rules! __unrolled {
@ -237,7 +237,6 @@ pub use __unroll as unroll;
#[cfg(test)]
mod test {
use super::*;
use crate::array_op;
#[test]
pub fn test_align_down_to() {