diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index c551724..f09853c 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -51,7 +51,7 @@ jobs: env: RUSTFLAGS: -C target-cpu=native steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v2 - name: Install latest nightly uses: actions-rs/toolchain@v1 with: @@ -89,6 +89,19 @@ jobs: with: command: check args: --target armv7-unknown-linux-gnueabihf + aarch64-apple-darwin: + name: Aarch64 Apple Darwin + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + target: aarch64-apple-darwin + - uses: actions-rs/cargo@v1 + with: + command: check + args: --target aarch64-apple-darwin i686-unknown-linux-gnu: name: Linux i686 runs-on: ubuntu-latest diff --git a/Cargo.toml b/Cargo.toml index de42c0b..b340522 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ahash" -version = "0.8.4" +version = "0.8.5" authors = ["Tom Kaitchuck "] license = "MIT OR Apache-2.0" description = "A non-cryptographic hash function using AES-NI for high performance" diff --git a/src/operations.rs b/src/operations.rs index dce83cb..23d4e22 100644 --- a/src/operations.rs +++ b/src/operations.rs @@ -123,10 +123,9 @@ pub(crate) fn aesenc(value: u128, xor: u128) -> u128 { use core::arch::aarch64::*; #[cfg(target_arch = "arm")] use core::arch::arm::*; - unsafe { - let value = transmute!(value); - xor ^ transmute::<_, u128>(vaesmcq_u8(vaeseq_u8(value, transmute!(0u128)))) - } + let res = unsafe { vaesmcq_u8(vaeseq_u8(transmute!(value), transmute!(0u128))) }; + let value: u128 = transmute!(res); + xor ^ value } #[cfg(all(any(target_arch = "x86", target_arch = "x86_64"), target_feature = "aes", not(miri)))] @@ -156,10 +155,9 @@ pub(crate) fn aesdec(value: u128, xor: u128) -> u128 { use core::arch::aarch64::*; #[cfg(target_arch = "arm")] use core::arch::arm::*; - unsafe { - let value = transmute!(value); - xor ^ transmute::<_, u128>(vaesimcq_u8(vaesdq_u8(value, transmute!(0u128)))) - } + let res = unsafe { vaesimcq_u8(vaesdq_u8(transmute!(value), transmute!(0u128))) }; + let value: u128 = transmute!(res); + xor ^ value } #[allow(unused)]