Module Name: src Committed By: christos Date: Tue Jul 31 10:33:45 UTC 2012
Modified Files: src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64: Makefile crypto.inc ghash-sparcv9.S Log Message: - -m64 is needed for ghash - add montgomery multiplication assembly To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/Makefile \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/crypto.inc cvs rdiff -u -r1.1 -r1.2 \ src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/ghash-sparcv9.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/Makefile diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/Makefile:1.2 src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/Makefile:1.3 --- src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/Makefile:1.2 Sun Jun 5 19:09:50 2011 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/Makefile Tue Jul 31 06:33:45 2012 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.2 2011/06/05 23:09:50 spz Exp $ +# $NetBSD: Makefile,v 1.3 2012/07/31 10:33:45 christos Exp $ .include "bsd.own.mk" @@ -9,7 +9,8 @@ regen: for i in $$(find ${OPENSSLSRC} -name \*sparcv9\*.pl); do \ j=$$(basename $$i .pl).S; \ case $$j in \ - sha*) perl $$i > $$j;; \ + ghash*|sha*) perl $$i > $$j;; \ *) perl $$i -m64 > $$j;; \ esac; \ done +foo: Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/crypto.inc diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/crypto.inc:1.2 src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/crypto.inc:1.3 --- src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/crypto.inc:1.2 Mon Jul 30 09:53:19 2012 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/crypto.inc Tue Jul 31 06:33:45 2012 @@ -1,3 +1,3 @@ -CPUID_SRCS = sparcv9cap.c sparccpuid.S +CPUID_SRCS = sparcv9cap.c sparccpuid.S sparcv9-mont.S sparcv9a-mont.S CPUID = yes .include "../../crypto.inc" Index: src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/ghash-sparcv9.S diff -u src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/ghash-sparcv9.S:1.1 src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/ghash-sparcv9.S:1.2 --- src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/ghash-sparcv9.S:1.1 Thu Jul 26 15:58:41 2012 +++ src/crypto/external/bsd/openssl/lib/libcrypto/arch/sparc64/ghash-sparcv9.S Tue Jul 31 06:33:45 2012 @@ -0,0 +1,250 @@ +.section ".text",#alloc,#execinstr + +.align 64 +rem_4bit: + .long 0,0,471859200,0,943718400,0,610271232,0 + .long 1887436800,0,1822425088,0,1220542464,0,1423966208,0 + .long 3774873600,0,4246732800,0,3644850176,0,3311403008,0 + .long 2441084928,0,2376073216,0,2847932416,0,3051356160,0 +.type rem_4bit,#object +.size rem_4bit,(.-rem_4bit) + +.globl gcm_ghash_4bit +.align 32 +gcm_ghash_4bit: + save %sp,-112,%sp + ldub [%i2+15],%l1 + ldub [%i0+15],%l2 + ldub [%i0+14],%l3 + add %i3,%i2,%i3 + add %i1,8,%l6 + +1: call .+8 + add %o7,rem_4bit-1b,%l4 + +.Louter: + xor %l2,%l1,%l1 + and %l1,0xf0,%l0 + and %l1,0x0f,%l1 + sll %l1,4,%l1 + ldx [%l6+%l1],%o1 + ldx [%i1+%l1],%o0 + + ldub [%i2+14],%l1 + + ldx [%l6+%l0],%o3 + and %o1,0xf,%l5 + ldx [%i1+%l0],%o2 + sll %l5,3,%l5 + ldx [%l4+%l5],%o4 + srlx %o1,4,%o1 + mov 13,%l7 + sllx %o0,60,%o5 + xor %o3,%o1,%o1 + srlx %o0,4,%o0 + xor %o1,%o5,%o1 + + xor %l3,%l1,%l1 + and %o1,0xf,%l5 + and %l1,0xf0,%l0 + and %l1,0x0f,%l1 + ba .Lghash_inner + sll %l1,4,%l1 +.align 32 +.Lghash_inner: + ldx [%l6+%l1],%o3 + sll %l5,3,%l5 + xor %o2,%o0,%o0 + ldx [%i1+%l1],%o2 + srlx %o1,4,%o1 + xor %o4,%o0,%o0 + ldx [%l4+%l5],%o4 + sllx %o0,60,%o5 + xor %o3,%o1,%o1 + ldub [%i2+%l7],%l1 + srlx %o0,4,%o0 + xor %o1,%o5,%o1 + ldub [%i0+%l7],%l3 + xor %o2,%o0,%o0 + and %o1,0xf,%l5 + + ldx [%l6+%l0],%o3 + sll %l5,3,%l5 + xor %o4,%o0,%o0 + ldx [%i1+%l0],%o2 + srlx %o1,4,%o1 + ldx [%l4+%l5],%o4 + sllx %o0,60,%o5 + xor %l3,%l1,%l1 + srlx %o0,4,%o0 + and %l1,0xf0,%l0 + addcc %l7,-1,%l7 + xor %o1,%o5,%o1 + and %l1,0x0f,%l1 + xor %o3,%o1,%o1 + sll %l1,4,%l1 + blu .Lghash_inner + and %o1,0xf,%l5 + + ldx [%l6+%l1],%o3 + sll %l5,3,%l5 + xor %o2,%o0,%o0 + ldx [%i1+%l1],%o2 + srlx %o1,4,%o1 + xor %o4,%o0,%o0 + ldx [%l4+%l5],%o4 + sllx %o0,60,%o5 + xor %o3,%o1,%o1 + srlx %o0,4,%o0 + xor %o1,%o5,%o1 + xor %o2,%o0,%o0 + + add %i2,16,%i2 + cmp %i2,%i3 + be,pn %icc,.Ldone + and %o1,0xf,%l5 + + ldx [%l6+%l0],%o3 + sll %l5,3,%l5 + xor %o4,%o0,%o0 + ldx [%i1+%l0],%o2 + srlx %o1,4,%o1 + ldx [%l4+%l5],%o4 + sllx %o0,60,%o5 + xor %o3,%o1,%o1 + ldub [%i2+15],%l1 + srlx %o0,4,%o0 + xor %o1,%o5,%o1 + xor %o2,%o0,%o0 + stx %o1,[%i0+8] + xor %o4,%o0,%o0 + stx %o0,[%i0] + srl %o1,8,%l3 + and %o1,0xff,%l2 + ba .Louter + and %l3,0xff,%l3 +.align 32 +.Ldone: + ldx [%l6+%l0],%o3 + sll %l5,3,%l5 + xor %o4,%o0,%o0 + ldx [%i1+%l0],%o2 + srlx %o1,4,%o1 + ldx [%l4+%l5],%o4 + sllx %o0,60,%o5 + xor %o3,%o1,%o1 + srlx %o0,4,%o0 + xor %o1,%o5,%o1 + xor %o2,%o0,%o0 + stx %o1,[%i0+8] + xor %o4,%o0,%o0 + stx %o0,[%i0] + + ret + restore +.type gcm_ghash_4bit,#function +.size gcm_ghash_4bit,(.-gcm_ghash_4bit) +.globl gcm_gmult_4bit +.align 32 +gcm_gmult_4bit: + save %sp,-112,%sp + ldub [%i0+15],%l1 + add %i1,8,%l6 + +1: call .+8 + add %o7,rem_4bit-1b,%l4 + + and %l1,0xf0,%l0 + and %l1,0x0f,%l1 + sll %l1,4,%l1 + ldx [%l6+%l1],%o1 + ldx [%i1+%l1],%o0 + + ldub [%i0+14],%l1 + + ldx [%l6+%l0],%o3 + and %o1,0xf,%l5 + ldx [%i1+%l0],%o2 + sll %l5,3,%l5 + ldx [%l4+%l5],%o4 + srlx %o1,4,%o1 + mov 13,%l7 + sllx %o0,60,%o5 + xor %o3,%o1,%o1 + srlx %o0,4,%o0 + xor %o1,%o5,%o1 + + and %o1,0xf,%l5 + and %l1,0xf0,%l0 + and %l1,0x0f,%l1 + ba .Lgmult_inner + sll %l1,4,%l1 +.align 32 +.Lgmult_inner: + ldx [%l6+%l1],%o3 + sll %l5,3,%l5 + xor %o2,%o0,%o0 + ldx [%i1+%l1],%o2 + srlx %o1,4,%o1 + xor %o4,%o0,%o0 + ldx [%l4+%l5],%o4 + sllx %o0,60,%o5 + xor %o3,%o1,%o1 + ldub [%i0+%l7],%l1 + srlx %o0,4,%o0 + xor %o1,%o5,%o1 + xor %o2,%o0,%o0 + and %o1,0xf,%l5 + + ldx [%l6+%l0],%o3 + sll %l5,3,%l5 + xor %o4,%o0,%o0 + ldx [%i1+%l0],%o2 + srlx %o1,4,%o1 + ldx [%l4+%l5],%o4 + sllx %o0,60,%o5 + srlx %o0,4,%o0 + and %l1,0xf0,%l0 + addcc %l7,-1,%l7 + xor %o1,%o5,%o1 + and %l1,0x0f,%l1 + xor %o3,%o1,%o1 + sll %l1,4,%l1 + blu .Lgmult_inner + and %o1,0xf,%l5 + + ldx [%l6+%l1],%o3 + sll %l5,3,%l5 + xor %o2,%o0,%o0 + ldx [%i1+%l1],%o2 + srlx %o1,4,%o1 + xor %o4,%o0,%o0 + ldx [%l4+%l5],%o4 + sllx %o0,60,%o5 + xor %o3,%o1,%o1 + srlx %o0,4,%o0 + xor %o1,%o5,%o1 + xor %o2,%o0,%o0 + and %o1,0xf,%l5 + + ldx [%l6+%l0],%o3 + sll %l5,3,%l5 + xor %o4,%o0,%o0 + ldx [%i1+%l0],%o2 + srlx %o1,4,%o1 + ldx [%l4+%l5],%o4 + sllx %o0,60,%o5 + xor %o3,%o1,%o1 + srlx %o0,4,%o0 + xor %o1,%o5,%o1 + xor %o2,%o0,%o0 + stx %o1,[%i0+8] + xor %o4,%o0,%o0 + stx %o0,[%i0] + + ret + restore +.type gcm_gmult_4bit,#function +.size gcm_gmult_4bit,(.-gcm_gmult_4bit) +.asciz "GHASH for SPARCv9, CRYPTOGAMS by <ap...@openssl.org>" +.align 4