X-Git-Url: https://git.openssl.org/?a=blobdiff_plain;f=crypto%2Fpariscid.pl;h=f82e27ac4c34e8bebd75245f9f097382aecb6aa8;hb=1f5e0f92808b06cb914f69ced71eccd830fb67e3;hp=03895d5cf355663351cb6a162edbba0ddd1434c4;hpb=e0a651945cb5a70a2abd9902c0fd3e9759d35867;p=openssl.git diff --git a/crypto/pariscid.pl b/crypto/pariscid.pl index 03895d5cf3..f82e27ac4c 100644 --- a/crypto/pariscid.pl +++ b/crypto/pariscid.pl @@ -138,6 +138,37 @@ L\$done ___ } { +my ($in1,$in2,$len)=("%r26","%r25","%r24"); + +$code.=<<___; + .EXPORT CRYPTO_memcmp,ENTRY,ARGW0=GR,ARGW1=GR,ARGW1=GR + .ALIGN 8 +CRYPTO_memcmp + .PROC + .CALLINFO NO_CALLS + .ENTRY + cmpib,*= 0,$len,L\$no_data + xor $rv,$rv,$rv + +L\$oop_cmp + ldb 0($in1),%r19 + ldb 0($in2),%r20 + ldo 1($in1),$in1 + ldo 1($in2),$in2 + xor %r19,%r20,%r29 + addib,*<> -1,$len,L\$oop_cmp + or %r29,$rv,$rv + + sub %r0,$rv,%r29 + extru %r29,31,1,$rv +L\$no_data + bv ($rp) + .EXIT + nop + .PROCEND +___ +} +{ my ($out,$cnt,$max)=("%r26","%r25","%r24"); my ($tick,$lasttick)=("%r23","%r22"); my ($diff,$lastdiff)=("%r21","%r20");