aboutsummaryrefslogtreecommitdiff
path: root/vendor/crunchy
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/crunchy')
-rw-r--r--vendor/crunchy/.cargo-checksum.json1
-rw-r--r--vendor/crunchy/Cargo.toml31
-rw-r--r--vendor/crunchy/README.md38
-rw-r--r--vendor/crunchy/build.rs253
-rw-r--r--vendor/crunchy/src/lib.rs36
5 files changed, 0 insertions, 359 deletions
diff --git a/vendor/crunchy/.cargo-checksum.json b/vendor/crunchy/.cargo-checksum.json
deleted file mode 100644
index 225b779..0000000
--- a/vendor/crunchy/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.toml":"5238a96db3efb623481ac00afca51748372d99e472bc4943f2d1762ad4cc6cf0","README.md":"6d402ec0e7baa639139f550f501b26f0fcd7e33d4b5b1184e027c5836cd6ec06","build.rs":"1fae5664addf11f9e703430663950a6f48aa9d48bfe1b80281e0b25999da3814","src/lib.rs":"e9696c988b07c250de57b4b65254869cfd75e24f5acaa0a7dd54d80facfc3fd9"},"package":"7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"} \ No newline at end of file
diff --git a/vendor/crunchy/Cargo.toml b/vendor/crunchy/Cargo.toml
deleted file mode 100644
index b05c686..0000000
--- a/vendor/crunchy/Cargo.toml
+++ /dev/null
@@ -1,31 +0,0 @@
-# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
-#
-# When uploading crates to the registry Cargo will automatically
-# "normalize" Cargo.toml files for maximal compatibility
-# with all versions of Cargo and also rewrite `path` dependencies
-# to registry (e.g., crates.io) dependencies
-#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-name = "crunchy"
-version = "0.2.2"
-authors = ["Vurich <jackefransham@hotmail.co.uk>"]
-build = "build.rs"
-description = "Crunchy unroller: deterministically unroll constant loops"
-license = "MIT"
-
-[dependencies]
-
-[features]
-default = ["limit_128"]
-limit_1024 = []
-limit_128 = []
-limit_2048 = []
-limit_256 = []
-limit_512 = []
-limit_64 = []
-std = []
diff --git a/vendor/crunchy/README.md b/vendor/crunchy/README.md
deleted file mode 100644
index 9036450..0000000
--- a/vendor/crunchy/README.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Crunchy
-
-The crunchy unroller - deterministically unroll constant loops. For number
-"crunching".
-
-The Rust optimizer will unroll constant loops that don't use the loop variable,
-like this:
-
-```rust
-for _ in 0..100 {
- println!("Hello!");
-}
-```
-
-However, using the loop variable will cause it to never unroll the loop. This is
-unfortunate because it means that you can't constant-fold the loop variable, and
-if you end up stomping on the registers it will have to do a load for each
-iteration. This crate ensures that your code is unrolled and const-folded. It
-only works on literals, unfortunately, but there's a work-around:
-
-```rust
-debug_assert_eq!(MY_CONSTANT, 100);
-unroll! {
- for i in 0..100 {
- println!("Iteration {}", i);
- }
-}
-```
-
-This means that your tests will catch if you redefine the constant.
-
-To default maximum number of loops to unroll is `64`, but that can be easily increased using the cargo features:
-
-* `limit_128`
-* `limit_256`
-* `limit_512`
-* `limit_1024`
-* `limit_2048` \ No newline at end of file
diff --git a/vendor/crunchy/build.rs b/vendor/crunchy/build.rs
deleted file mode 100644
index b9c69ae..0000000
--- a/vendor/crunchy/build.rs
+++ /dev/null
@@ -1,253 +0,0 @@
-use std::env;
-use std::fs::File;
-use std::io::Write;
-use std::path::Path;
-
-const LOWER_LIMIT: usize = 16;
-
-fn main() {
- let limit = if cfg!(feature="limit_2048") {
- 2048
- } else if cfg!(feature="limit_1024") {
- 1024
- } else if cfg!(feature="limit_512") {
- 512
- } else if cfg!(feature="limit_256") {
- 256
- } else if cfg!(feature="limit_128") {
- 128
- } else {
- 64
- };
-
- let out_dir = env::var("OUT_DIR").unwrap();
- let dest_path = Path::new(&out_dir).join("lib.rs");
- let mut f = File::create(&dest_path).unwrap();
-
- let mut output = String::new();
-
- output.push_str(r#"
-/// Unroll the given for loop
-///
-/// Example:
-///
-/// ```ignore
-/// unroll! {
-/// for i in 0..5 {
-/// println!("Iteration {}", i);
-/// }
-/// }
-/// ```
-///
-/// will expand into:
-///
-/// ```ignore
-/// { println!("Iteration {}", 0); }
-/// { println!("Iteration {}", 1); }
-/// { println!("Iteration {}", 2); }
-/// { println!("Iteration {}", 3); }
-/// { println!("Iteration {}", 4); }
-/// ```
-#[macro_export]
-macro_rules! unroll {
- (for $v:ident in 0..0 $c:block) => {};
-
- (for $v:ident < $max:tt in ($start:tt..$end:tt).step_by($val:expr) {$($c:tt)*}) => {
- {
- let step = $val;
- let start = $start;
- let end = start + ($end - start) / step;
- unroll! {
- for val < $max in start..end {
- let $v: usize = ((val - start) * step) + start;
-
- $($c)*
- }
- }
- }
- };
-
- (for $v:ident in ($start:tt..$end:tt).step_by($val:expr) {$($c:tt)*}) => {
- unroll! {
- for $v < $end in ($start..$end).step_by($val) {$($c)*}
- }
- };
-
- (for $v:ident in ($start:tt..$end:tt) {$($c:tt)*}) => {
- unroll!{
- for $v in $start..$end {$($c)*}
- }
- };
-
- (for $v:ident in $start:tt..$end:tt {$($c:tt)*}) => {
- #[allow(non_upper_case_globals)]
- #[allow(unused_comparisons)]
- {
- unroll!(@$v, 0, $end, {
- if $v >= $start {$($c)*}
- }
- );
- }
- };
-
- (for $v:ident < $max:tt in $start:tt..$end:tt $c:block) => {
- #[allow(non_upper_case_globals)]
- {
- let range = $start..$end;
- assert!(
- $max >= range.end,
- "`{}` out of range `{:?}`",
- stringify!($max),
- range,
- );
- unroll!(
- @$v,
- 0,
- $max,
- {
- if $v >= range.start && $v < range.end {
- $c
- }
- }
- );
- }
- };
-
- (for $v:ident in 0..$end:tt {$($statement:tt)*}) => {
- #[allow(non_upper_case_globals)]
- { unroll!(@$v, 0, $end, {$($statement)*}); }
- };
-
-"#);
-
- for i in 0..limit + 1 {
- output.push_str(format!(" (@$v:ident, $a:expr, {}, $c:block) => {{\n", i).as_str());
-
- if i <= LOWER_LIMIT {
- output.push_str(format!(" {{ const $v: usize = $a; $c }}\n").as_str());
-
- for a in 1..i {
- output.push_str(format!(" {{ const $v: usize = $a + {}; $c }}\n", a).as_str());
- }
- } else {
- let half = i / 2;
-
- if i % 2 == 0 {
- output.push_str(format!(" unroll!(@$v, $a, {0}, $c);\n", half).as_str());
- output.push_str(format!(" unroll!(@$v, $a + {0}, {0}, $c);\n", half).as_str());
- } else {
- if half > 1 {
- output.push_str(format!(" unroll!(@$v, $a, {}, $c);\n", i - 1).as_str())
- }
-
- output.push_str(format!(" {{ const $v: usize = $a + {}; $c }}\n", i - 1).as_str());
- }
- }
-
- output.push_str(" };\n\n");
- }
-
- output.push_str("}\n\n");
-
- output.push_str(format!(r#"
-#[cfg(all(test, feature = "std"))]
-mod tests {{
- #[test]
- fn invalid_range() {{
- let mut a: Vec<usize> = vec![];
- unroll! {{
- for i in (5..4) {{
- a.push(i);
- }}
- }}
- assert_eq!(a, vec![]);
- }}
-
- #[test]
- fn start_at_one_with_step() {{
- let mut a: Vec<usize> = vec![];
- unroll! {{
- for i in (2..4).step_by(1) {{
- a.push(i);
- }}
- }}
- assert_eq!(a, vec![2, 3]);
- }}
-
- #[test]
- fn start_at_one() {{
- let mut a: Vec<usize> = vec![];
- unroll! {{
- for i in 1..4 {{
- a.push(i);
- }}
- }}
- assert_eq!(a, vec![1, 2, 3]);
- }}
-
- #[test]
- fn test_all() {{
- {{
- let a: Vec<usize> = vec![];
- unroll! {{
- for i in 0..0 {{
- a.push(i);
- }}
- }}
- assert_eq!(a, (0..0).collect::<Vec<usize>>());
- }}
- {{
- let mut a: Vec<usize> = vec![];
- unroll! {{
- for i in 0..1 {{
- a.push(i);
- }}
- }}
- assert_eq!(a, (0..1).collect::<Vec<usize>>());
- }}
- {{
- let mut a: Vec<usize> = vec![];
- unroll! {{
- for i in 0..{0} {{
- a.push(i);
- }}
- }}
- assert_eq!(a, (0..{0}).collect::<Vec<usize>>());
- }}
- {{
- let mut a: Vec<usize> = vec![];
- let start = {0} / 4;
- let end = start * 3;
- unroll! {{
- for i < {0} in start..end {{
- a.push(i);
- }}
- }}
- assert_eq!(a, (start..end).collect::<Vec<usize>>());
- }}
- {{
- let mut a: Vec<usize> = vec![];
- unroll! {{
- for i in (0..{0}).step_by(2) {{
- a.push(i);
- }}
- }}
- assert_eq!(a, (0..{0} / 2).map(|x| x * 2).collect::<Vec<usize>>());
- }}
- {{
- let mut a: Vec<usize> = vec![];
- let start = {0} / 4;
- let end = start * 3;
- unroll! {{
- for i < {0} in (start..end).step_by(2) {{
- a.push(i);
- }}
- }}
- assert_eq!(a, (start..end).filter(|x| x % 2 == 0).collect::<Vec<usize>>());
- }}
- }}
-}}
-"#, limit).as_str());
-
- f.write_all(output.as_bytes()).unwrap();
-}
diff --git a/vendor/crunchy/src/lib.rs b/vendor/crunchy/src/lib.rs
deleted file mode 100644
index 6de39e2..0000000
--- a/vendor/crunchy/src/lib.rs
+++ /dev/null
@@ -1,36 +0,0 @@
-//! The crunchy unroller - deterministically unroll constant loops. For number "crunching".
-//!
-//! The Rust optimizer will unroll constant loops that don't use the loop variable, like this:
-//!
-//! ```ignore
-//! for _ in 0..100 {
-//! println!("Hello!");
-//! }
-//! ```
-//!
-//! However, using the loop variable will cause it to never unroll the loop. This is unfortunate because it means that you can't
-//! constant-fold the loop variable, and if you end up stomping on the registers it will have to do a load for each iteration.
-//! This crate ensures that your code is unrolled and const-folded. It only works on literals,
-//! unfortunately, but there's a work-around:
-//!
-//! ```ignore
-//! debug_assert_eq!(MY_CONSTANT, 100);
-//! unroll! {
-//! for i in 0..100 {
-//! println!("Iteration {}", i);
-//! }
-//! }
-//! ```
-//! This means that your tests will catch if you redefine the constant.
-//!
-//! To default maximum number of loops to unroll is `64`, but that can be easily increased using the cargo features:
-//!
-//! * `limit_128`
-//! * `limit_256`
-//! * `limit_512`
-//! * `limit_1024`
-//! * `limit_2048`
-
-#![cfg_attr(not(feature = "std"), no_std)]
-
-include!(concat!(env!("OUT_DIR"), "/lib.rs"));