RustCrypto / hashes

Collection of cryptographic hash functions written in pure Rust
1.76k stars 239 forks source link

md5: Add inline-asm backend for LoongArch64 targets #505

Closed heiher closed 10 months ago

heiher commented 10 months ago

Tests

default features

$ cargo test

     Running tests/mod.rs (/home/hev/rust/hashes/target/debug/deps/mod-2ce358af9b31889b)

running 2 tests
test md5_main ... ok
test md5_rand ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s

   Doc-tests md5

running 1 test
test md5/src/lib.rs - (line 5) ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.41s

loongarch64_asm feature

$ cargo test -F loongarch64_asm
     Running tests/mod.rs (/home/hev/rust/hashes/target/debug/deps/mod-f553f45e9e6227ed)

running 2 tests
test md5_main ... ok
test md5_rand ... ok

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s

   Doc-tests md5

running 1 test
test md5/src/lib.rs - (line 5) ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.34s

Bench

Without this patch

test md5_10    ... bench:          33 ns/iter (+/- 0) = 303 MB/s
test md5_100   ... bench:         306 ns/iter (+/- 0) = 326 MB/s
test md5_1000  ... bench:       2,518 ns/iter (+/- 1) = 397 MB/s
test md5_10000 ... bench:      24,664 ns/iter (+/- 16) = 405 MB/s

With this patch

test md5_10    ... bench:          28 ns/iter (+/- 0) = 357 MB/s
test md5_100   ... bench:         250 ns/iter (+/- 0) = 400 MB/s
test md5_1000  ... bench:       2,121 ns/iter (+/- 0) = 471 MB/s
test md5_10000 ... bench:      20,835 ns/iter (+/- 2) = 479 MB/s
newpavlov commented 10 months ago

@heiher Can you enable the "Allow edits by maintainers" checkbox? I would like to add minor tweaks before merging.

heiher commented 10 months ago

@heiher Can you enable the "Allow edits by maintainers" checkbox? I would like to add minor tweaks before merging.

I can't do it for existing pull request.

newpavlov commented 10 months ago

I can do it in a separate PR then.