diff options
author | Andy Polyakov <appro@openssl.org> | 2016-05-15 17:01:15 +0200 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2016-05-19 22:33:00 +0200 |
commit | e33826f01bd78af76e0135c8dfab3387927a82bb (patch) | |
tree | a44459e3859610fe7ce35bc4923d8af6d6110e09 /crypto/s390xcpuid.S | |
parent | 2e6d7799ffc47604d06e0465afeb84b91aff8006 (diff) |
Add assembly CRYPTO_memcmp.
GH: #102
Reviewed-by: Richard Levitte <levitte@openssl.org>
Diffstat (limited to 'crypto/s390xcpuid.S')
-rw-r--r-- | crypto/s390xcpuid.S | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/crypto/s390xcpuid.S b/crypto/s390xcpuid.S index 3efad5506b..df7b35ad70 100644 --- a/crypto/s390xcpuid.S +++ b/crypto/s390xcpuid.S @@ -125,6 +125,33 @@ OPENSSL_cleanse: br %r14 .size OPENSSL_cleanse,.-OPENSSL_cleanse +.globl CRYPTO_memcmp +.type CRYPTO_memcmp,@function +.align 16 +CRYPTO_memcmp: +#if !defined(__s390x__) && !defined(__s390x) + llgfr %r4,%r4 +#endif + lghi %r5,0 + clgr %r4,%r5 + je .Lno_data + +.Loop_cmp: + llc %r0,0(%r2) + la %r2,1(%r2) + llc %r1,0(%r3) + la %r3,1(%r3) + xr %r1,%r0 + or %r5,%r1 + brctg %r4,.Loop_cmp + + lnr %r5,%r5 + srl %r5,31 +.Lno_data: + lgr %r2,%r5 + br %r14 +.size CRYPTO_memcmp,.-CRYPTO_memcmp + .globl OPENSSL_instrument_bus .type OPENSSL_instrument_bus,@function .align 16 |