mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 10:13:56 -06:00
target/i386: implement SHA instructions
The implementation was validated with OpenSSL and with the test vectors in https://github.com/rust-lang/stdarch/blob/master/crates/core_arch/src/x86/sha.rs. The instructions provide a ~25% improvement on hashing a 64 MiB file: runtime goes down from 1.8 seconds to 1.4 seconds; instruction count on the host goes down from 5.8 billion to 4.8 billion with slightly better IPC too. Good job Intel. ;) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
45b5933f7a
commit
e582b629f0
6 changed files with 209 additions and 1 deletions
|
@ -399,6 +399,20 @@ DEF_HELPER_3(vpermq_ymm, void, Reg, Reg, i32)
|
|||
#endif
|
||||
#endif
|
||||
|
||||
/* SHA helpers */
|
||||
#if SHIFT == 1
|
||||
DEF_HELPER_3(sha1rnds4_f0, void, Reg, Reg, Reg)
|
||||
DEF_HELPER_3(sha1rnds4_f1, void, Reg, Reg, Reg)
|
||||
DEF_HELPER_3(sha1rnds4_f2, void, Reg, Reg, Reg)
|
||||
DEF_HELPER_3(sha1rnds4_f3, void, Reg, Reg, Reg)
|
||||
DEF_HELPER_3(sha1nexte, void, Reg, Reg, Reg)
|
||||
DEF_HELPER_3(sha1msg1, void, Reg, Reg, Reg)
|
||||
DEF_HELPER_3(sha1msg2, void, Reg, Reg, Reg)
|
||||
DEF_HELPER_5(sha256rnds2, void, Reg, Reg, Reg, i32, i32)
|
||||
DEF_HELPER_3(sha256msg1, void, Reg, Reg, Reg)
|
||||
DEF_HELPER_3(sha256msg2, void, Reg, Reg, Reg)
|
||||
#endif
|
||||
|
||||
#undef SHIFT
|
||||
#undef Reg
|
||||
#undef SUFFIX
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue