summaryrefslogtreecommitdiffstats
path: root/crypto/s390xcpuid.S
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2016-05-15 17:01:15 +0200
committerAndy Polyakov <appro@openssl.org>2016-05-19 22:33:00 +0200
commite33826f01bd78af76e0135c8dfab3387927a82bb (patch)
treea44459e3859610fe7ce35bc4923d8af6d6110e09 /crypto/s390xcpuid.S
parent2e6d7799ffc47604d06e0465afeb84b91aff8006 (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.S27
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