libmd aarch64: Use ands instead of bics to round down the lengthGNU as does not accept bics with two register operands but insteadrequires three register operands. However, clang assembles the bi
libmd aarch64: Use ands instead of bics to round down the lengthGNU as does not accept bics with two register operands but insteadrequires three register operands. However, clang assembles the bicsinstruction to ands anyway, so just use ands directly.Reviewed by: fuzDifferential Revision: https://reviews.freebsd.org/D55155
show more ...
lib/libmd: import aarch64 md5 SIMD implementationReviewed by: andrew, impApproved by: markj (mentor)Differential Revision: https://reviews.freebsd.org/D45670MFC after: 1 month
lib/libmd: fuz@freebsd.org -> fuz@FreeBSD.orgApproved by: markj (mentor)MFC after: 1 week
lib/libmd: add optimised SHA1 implementations for aarch64This provides a scalar implementation and one using the SHA1instruction set extensions.For the scalar implementation, the w array is kept
lib/libmd: add optimised SHA1 implementations for aarch64This provides a scalar implementation and one using the SHA1instruction set extensions.For the scalar implementation, the w array is kept in registers,speeding up the whole operations. For a 10 GiB file on my Windows2023 Dev Kit (ARM Cortex A78C / ARM Cortex X1C):Performance core: pre 43.1s (238 MB/s) generic 41.3s (247 MB/s) scalar 35.0s (293 MB/s) sha1 12.8s (800 MB/s)Efficiency core: pre 54.2s (189 MB/s) generic 55.9s (183 MB/s) scalar 43.0s (238 MB/s) sha1 16.2s (632 MB/s)Reviewed by: getzDifferential Revision: https://reviews.freebsd.org/D45444