keccak/
unroll.rs

1/// unroll5
2#[cfg(not(feature = "no_unroll"))]
3#[macro_export]
4macro_rules! unroll5 {
5    ($var:ident, $body:block) => {
6        { const $var: usize = 0; $body; }
7        { const $var: usize = 1; $body; }
8        { const $var: usize = 2; $body; }
9        { const $var: usize = 3; $body; }
10        { const $var: usize = 4; $body; }
11    };
12}
13
14/// unroll5
15#[cfg(feature = "no_unroll")]
16#[macro_export]
17macro_rules! unroll5 {
18    ($var:ident, $body:block) => {
19        for $var in 0..5 $body
20    }
21}
22
23/// unroll24
24#[cfg(not(feature = "no_unroll"))]
25#[macro_export]
26macro_rules! unroll24 {
27    ($var: ident, $body: block) => {
28        { const $var: usize = 0; $body; }
29        { const $var: usize = 1; $body; }
30        { const $var: usize = 2; $body; }
31        { const $var: usize = 3; $body; }
32        { const $var: usize = 4; $body; }
33        { const $var: usize = 5; $body; }
34        { const $var: usize = 6; $body; }
35        { const $var: usize = 7; $body; }
36        { const $var: usize = 8; $body; }
37        { const $var: usize = 9; $body; }
38        { const $var: usize = 10; $body; }
39        { const $var: usize = 11; $body; }
40        { const $var: usize = 12; $body; }
41        { const $var: usize = 13; $body; }
42        { const $var: usize = 14; $body; }
43        { const $var: usize = 15; $body; }
44        { const $var: usize = 16; $body; }
45        { const $var: usize = 17; $body; }
46        { const $var: usize = 18; $body; }
47        { const $var: usize = 19; $body; }
48        { const $var: usize = 20; $body; }
49        { const $var: usize = 21; $body; }
50        { const $var: usize = 22; $body; }
51        { const $var: usize = 23; $body; }
52    };
53}
54
55/// unroll24
56#[cfg(feature = "no_unroll")]
57#[macro_export]
58macro_rules! unroll24 {
59    ($var:ident, $body:block) => {
60        for $var in 0..24 $body
61    }
62}