aboutsummaryrefslogtreecommitdiff
path: root/thirdparty/BLAKE3/src/ffi_avx2.rs
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/BLAKE3/src/ffi_avx2.rs')
-rw-r--r--thirdparty/BLAKE3/src/ffi_avx2.rs63
1 files changed, 0 insertions, 63 deletions
diff --git a/thirdparty/BLAKE3/src/ffi_avx2.rs b/thirdparty/BLAKE3/src/ffi_avx2.rs
deleted file mode 100644
index d805e868e..000000000
--- a/thirdparty/BLAKE3/src/ffi_avx2.rs
+++ /dev/null
@@ -1,63 +0,0 @@
-use crate::{CVWords, IncrementCounter, BLOCK_LEN, OUT_LEN};
-
-// Note that there is no AVX2 implementation of compress_in_place or
-// compress_xof.
-
-// Unsafe because this may only be called on platforms supporting AVX2.
-pub unsafe fn hash_many<A: arrayvec::Array<Item = u8>>(
- inputs: &[&A],
- key: &CVWords,
- counter: u64,
- increment_counter: IncrementCounter,
- flags: u8,
- flags_start: u8,
- flags_end: u8,
- out: &mut [u8],
-) {
- // The Rust hash_many implementations do bounds checking on the `out`
- // array, but the C implementations don't. Even though this is an unsafe
- // function, assert the bounds here.
- assert!(out.len() >= inputs.len() * OUT_LEN);
- ffi::blake3_hash_many_avx2(
- inputs.as_ptr() as *const *const u8,
- inputs.len(),
- A::CAPACITY / BLOCK_LEN,
- key.as_ptr(),
- counter,
- increment_counter.yes(),
- flags,
- flags_start,
- flags_end,
- out.as_mut_ptr(),
- )
-}
-
-pub mod ffi {
- extern "C" {
- pub fn blake3_hash_many_avx2(
- inputs: *const *const u8,
- num_inputs: usize,
- blocks: usize,
- key: *const u32,
- counter: u64,
- increment_counter: bool,
- flags: u8,
- flags_start: u8,
- flags_end: u8,
- out: *mut u8,
- );
- }
-}
-
-#[cfg(test)]
-mod test {
- use super::*;
-
- #[test]
- fn test_hash_many() {
- if !crate::platform::avx2_detected() {
- return;
- }
- crate::test::test_hash_many_fn(hash_many, hash_many);
- }
-}