From 6b46ba350d880a6f644b366bc5f31982132682c8 Mon Sep 17 00:00:00 2001 From: Zack Owens Date: Thu, 8 Feb 2024 08:50:01 -0800 Subject: [PATCH] Remove asm for crc32cb instruction (#56) --- src/hw_aarch64.rs | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/hw_aarch64.rs b/src/hw_aarch64.rs index 7f84114..2df8db3 100644 --- a/src/hw_aarch64.rs +++ b/src/hw_aarch64.rs @@ -1,8 +1,6 @@ use crate::hw_tables; use crate::util::{self, U64Le}; - use std::arch::aarch64 as simd; -use std::arch::asm; pub unsafe fn crc32c(crci: u32, buffer: &[u8]) -> u32 { let mut crc0 = !crci; @@ -46,18 +44,10 @@ pub unsafe fn crc32c(crci: u32, buffer: &[u8]) -> u32 { #[inline] #[target_feature(enable = "crc")] -pub unsafe fn __crc32b(mut crc: u32, data: u8) -> u32 { - asm!( - "crc32cb {0:w}, {0:w}, {1:w}", - inout(reg) crc, - in(reg) data, - ); - crc -} - -#[inline] unsafe fn crc_u8(crc: u32, buffer: &[u8]) -> u32 { - buffer.iter().fold(crc, |crc, &next| __crc32b(crc, next)) + buffer + .iter() + .fold(crc, |crc, &next| simd::__crc32cb(crc, next)) } #[inline(always)]