Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha Alpha S...
details: https://anonhg.NetBSD.org/src/rev/03001a5b9c1f
branches: trunk
changeset: 320881:03001a5b9c1f
user: christos <christos%NetBSD.org@localhost>
date: Sun Mar 04 04:00:45 2018 +0000
description:
Alpha Stuff
diffstat:
crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/Makefile | 15 +
crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/alpha-mont.S | 274 +
crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/alphacpuid.S | 232 +
crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/crypto.inc | 10 +
crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/ghash-alpha.S | 576 ++
crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/modes.inc | 6 +
crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/regdef.h | 49 +
crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/sha.inc | 6 +
crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/sha1-alpha.S | 2175 ++++++++++
9 files changed, 3343 insertions(+), 0 deletions(-)
diffs (truncated from 3379 to 300 lines):
diff -r a6e5978b8d60 -r 03001a5b9c1f crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/Makefile
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/Makefile Sun Mar 04 04:00:45 2018 +0000
@@ -0,0 +1,15 @@
+# $NetBSD: Makefile,v 1.1 2018/03/04 04:00:45 christos Exp $
+
+.include "bsd.own.mk"
+
+CRYPTODIST=${NETBSDSRCDIR}/crypto
+.include "${NETBSDSRCDIR}/crypto/Makefile.openssl"
+
+regen:
+ for i in $$(find ${OPENSSLSRC} -name \*alpha\*.pl); do \
+ case $$i in \
+ (*) perl -I${OPENSSLSRC}/crypto/perlasm \
+ -I${OPENSSLSRC}/crypto/bn/asm $$i linux /dev/stdout \
+ > $$(basename $$i .pl).S;; \
+ esac; \
+ done
diff -r a6e5978b8d60 -r 03001a5b9c1f crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/alpha-mont.S
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/alpha-mont.S Sun Mar 04 04:00:45 2018 +0000
@@ -0,0 +1,274 @@
+#ifdef __linux__
+#include <asm/regdef.h>
+#else
+#include <asm.h>
+#include <regdef.h>
+#endif
+
+.text
+
+.set noat
+.set noreorder
+
+.globl bn_mul_mont
+.align 5
+.ent bn_mul_mont
+bn_mul_mont:
+ lda sp,-48(sp)
+ stq ra,0(sp)
+ stq s3,8(sp)
+ stq s4,16(sp)
+ stq s5,24(sp)
+ stq fp,32(sp)
+ mov sp,fp
+ .mask 0x0400f000,-48
+ .frame fp,48,ra
+ .prologue 0
+
+ .align 4
+ .set reorder
+ sextl a5,a5
+ mov 0,v0
+ cmplt a5,4,AT
+ bne AT,.Lexit
+
+ ldq t1,0(a1) # ap[0]
+ s8addq a5,16,AT
+ ldq t4,8(a1)
+ subq sp,AT,sp
+ ldq t5,0(a2) # bp[0]
+ lda AT,-4096(zero) # mov -4096,AT
+ ldq a4,0(a4)
+ and sp,AT,sp
+
+ mulq t1,t5,t0
+ ldq t3,0(a3) # np[0]
+ umulh t1,t5,t1
+ ldq t6,8(a3)
+
+ mulq t0,a4,s5
+
+ mulq t3,s5,t2
+ umulh t3,s5,t3
+
+ addq t2,t0,t2
+ cmpult t2,t0,AT
+ addq t3,AT,t3
+
+ mulq t4,t5,t8
+ mov 2,s4
+ umulh t4,t5,t9
+ mov sp,t7
+
+ mulq t6,s5,t10
+ s8addq s4,a1,t4
+ umulh t6,s5,t11
+ s8addq s4,a3,t6
+.align 4
+.L1st:
+ .set noreorder
+ ldq t4,0(t4)
+ addl s4,1,s4
+ ldq t6,0(t6)
+ lda t7,8(t7)
+
+ addq t8,t1,t0
+ mulq t4,t5,t8
+ cmpult t0,t1,AT
+ addq t10,t3,t2
+
+ mulq t6,s5,t10
+ addq t9,AT,t1
+ cmpult t2,t3,v0
+ cmplt s4,a5,t12
+
+ umulh t4,t5,t9
+ addq t11,v0,t3
+ addq t2,t0,t2
+ s8addq s4,a1,t4
+
+ umulh t6,s5,t11
+ cmpult t2,t0,v0
+ addq t3,v0,t3
+ s8addq s4,a3,t6
+
+ stq t2,-8(t7)
+ nop
+ unop
+ bne t12,.L1st
+ .set reorder
+
+ addq t8,t1,t0
+ addq t10,t3,t2
+ cmpult t0,t1,AT
+ cmpult t2,t3,v0
+ addq t9,AT,t1
+ addq t11,v0,t3
+
+ addq t2,t0,t2
+ cmpult t2,t0,v0
+ addq t3,v0,t3
+
+ stq t2,0(t7)
+
+ addq t3,t1,t3
+ cmpult t3,t1,AT
+ stq t3,8(t7)
+ stq AT,16(t7)
+
+ mov 1,s3
+.align 4
+.Louter:
+ s8addq s3,a2,t5
+ ldq t1,0(a1)
+ ldq t4,8(a1)
+ ldq t5,0(t5)
+ ldq t3,0(a3)
+ ldq t6,8(a3)
+ ldq t12,0(sp)
+
+ mulq t1,t5,t0
+ umulh t1,t5,t1
+
+ addq t0,t12,t0
+ cmpult t0,t12,AT
+ addq t1,AT,t1
+
+ mulq t0,a4,s5
+
+ mulq t3,s5,t2
+ umulh t3,s5,t3
+
+ addq t2,t0,t2
+ cmpult t2,t0,AT
+ mov 2,s4
+ addq t3,AT,t3
+
+ mulq t4,t5,t8
+ mov sp,t7
+ umulh t4,t5,t9
+
+ mulq t6,s5,t10
+ s8addq s4,a1,t4
+ umulh t6,s5,t11
+.align 4
+.Linner:
+ .set noreorder
+ ldq t12,8(t7) #L0
+ nop #U1
+ ldq t4,0(t4) #L1
+ s8addq s4,a3,t6 #U0
+
+ ldq t6,0(t6) #L0
+ nop #U1
+ addq t8,t1,t0 #L1
+ lda t7,8(t7)
+
+ mulq t4,t5,t8 #U1
+ cmpult t0,t1,AT #L0
+ addq t10,t3,t2 #L1
+ addl s4,1,s4
+
+ mulq t6,s5,t10 #U1
+ addq t9,AT,t1 #L0
+ addq t0,t12,t0 #L1
+ cmpult t2,t3,v0 #U0
+
+ umulh t4,t5,t9 #U1
+ cmpult t0,t12,AT #L0
+ addq t2,t0,t2 #L1
+ addq t11,v0,t3 #U0
+
+ umulh t6,s5,t11 #U1
+ s8addq s4,a1,t4 #L0
+ cmpult t2,t0,v0 #L1
+ cmplt s4,a5,t12 #U0 # borrow t12
+
+ addq t1,AT,t1 #L0
+ addq t3,v0,t3 #U1
+ stq t2,-8(t7) #L1
+ bne t12,.Linner #U0
+ .set reorder
+
+ ldq t12,8(t7)
+ addq t8,t1,t0
+ addq t10,t3,t2
+ cmpult t0,t1,AT
+ cmpult t2,t3,v0
+ addq t9,AT,t1
+ addq t11,v0,t3
+
+ addq t0,t12,t0
+ cmpult t0,t12,AT
+ addq t1,AT,t1
+
+ ldq t12,16(t7)
+ addq t2,t0,s4
+ cmpult s4,t0,v0
+ addq t3,v0,t3
+
+ addq t3,t1,t2
+ stq s4,0(t7)
+ cmpult t2,t1,t3
+ addq t2,t12,t2
+ cmpult t2,t12,AT
+ addl s3,1,s3
+ addq t3,AT,t3
+ stq t2,8(t7)
+ cmplt s3,a5,t12 # borrow t12
+ stq t3,16(t7)
+ bne t12,.Louter
+
+ s8addq a5,sp,t12 # &tp[num]
+ mov a0,a2 # put rp aside
+ mov sp,t7
+ mov sp,a1
+ mov 0,t1 # clear borrow bit
+
+.align 4
+.Lsub: ldq t0,0(t7)
+ ldq t2,0(a3)
+ lda t7,8(t7)
+ lda a3,8(a3)
+ subq t0,t2,t2 # tp[i]-np[i]
+ cmpult t0,t2,AT
+ subq t2,t1,t0
+ cmpult t2,t0,t1
+ or t1,AT,t1
+ stq t0,0(a0)
+ cmpult t7,t12,v0
+ lda a0,8(a0)
+ bne v0,.Lsub
+
+ subq t3,t1,t1 # handle upmost overflow bit
+ mov sp,t7
+ mov a2,a0 # restore rp
+
+ and sp,t1,a1
+ bic a2,t1,a2
+ bis a2,a1,a1 # ap=borrow?tp:rp
+
+.align 4
+.Lcopy: ldq t4,0(a1) # copy or in-place refresh
+ lda t7,8(t7)
+ lda a0,8(a0)
+ lda a1,8(a1)
+ stq zero,-8(t7) # zap tp
+ cmpult t7,t12,AT
+ stq t4,-8(a0)
+ bne AT,.Lcopy
+ mov 1,v0
+
+.Lexit:
+ .set noreorder
+ mov fp,sp
+ /*ldq ra,0(sp)*/
+ ldq s3,8(sp)
+ ldq s4,16(sp)
+ ldq s5,24(sp)
+ ldq fp,32(sp)
+ lda sp,48(sp)
+ ret (ra)
+.end bn_mul_mont
+.ascii "Montgomery Multiplication for Alpha, CRYPTOGAMS by <appro%openssl.org@localhost>"
+.align 2
diff -r a6e5978b8d60 -r 03001a5b9c1f crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/alphacpuid.S
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/crypto/external/bsd/openssl/lib/libcrypto/arch/alpha/alphacpuid.S Sun Mar 04 04:00:45 2018 +0000
Home |
Main Index |
Thread Index |
Old Index