aboutsummaryrefslogtreecommitdiff
path: root/src/rust_sse41.rs
diff options
context:
space:
mode:
authorJack O'Connor <[email protected]>2021-05-18 12:28:29 -0400
committerJack O'Connor <[email protected]>2021-05-18 12:28:29 -0400
commit037de38bfec4e813ab6189a50cb7c4cbae47268a (patch)
treeb3278cf3a14c18017350f4173d019e9050ba1397 /src/rust_sse41.rs
parentaa52ce3a4b211292ab2b59d0cb9bd4272d466eec (diff)
upgrade to arrayvec 0.7.0
This version uses const generics, which bumps our minimum supported compiler version to 1.51.
Diffstat (limited to 'src/rust_sse41.rs')
-rw-r--r--src/rust_sse41.rs14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/rust_sse41.rs b/src/rust_sse41.rs
index d5cf0f4..4b27f41 100644
--- a/src/rust_sse41.rs
+++ b/src/rust_sse41.rs
@@ -632,8 +632,8 @@ pub unsafe fn hash4(
}
#[target_feature(enable = "sse4.1")]
-unsafe fn hash1<A: arrayvec::Array<Item = u8>>(
- input: &A,
+unsafe fn hash1<const N: usize>(
+ input: &[u8; N],
key: &CVWords,
counter: u64,
flags: u8,
@@ -641,10 +641,10 @@ unsafe fn hash1<A: arrayvec::Array<Item = u8>>(
flags_end: u8,
out: &mut CVBytes,
) {
- debug_assert_eq!(A::CAPACITY % BLOCK_LEN, 0, "uneven blocks");
+ debug_assert_eq!(N % BLOCK_LEN, 0, "uneven blocks");
let mut cv = *key;
let mut block_flags = flags | flags_start;
- let mut slice = input.as_slice();
+ let mut slice = &input[..];
while slice.len() >= BLOCK_LEN {
if slice.len() == BLOCK_LEN {
block_flags |= flags_end;
@@ -663,8 +663,8 @@ unsafe fn hash1<A: arrayvec::Array<Item = u8>>(
}
#[target_feature(enable = "sse4.1")]
-pub unsafe fn hash_many<A: arrayvec::Array<Item = u8>>(
- mut inputs: &[&A],
+pub unsafe fn hash_many<const N: usize>(
+ mut inputs: &[&[u8; N]],
key: &CVWords,
mut counter: u64,
increment_counter: IncrementCounter,
@@ -678,7 +678,7 @@ pub unsafe fn hash_many<A: arrayvec::Array<Item = u8>>(
// Safe because the layout of arrays is guaranteed, and because the
// `blocks` count is determined statically from the argument type.
let input_ptrs: &[*const u8; DEGREE] = &*(inputs.as_ptr() as *const [*const u8; DEGREE]);
- let blocks = A::CAPACITY / BLOCK_LEN;
+ let blocks = N / BLOCK_LEN;
hash4(
input_ptrs,
blocks,