diff options
Diffstat (limited to 'deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/bn/s390x-gf2m.s')
-rw-r--r-- | deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/bn/s390x-gf2m.s | 201 |
1 files changed, 201 insertions, 0 deletions
diff --git a/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/bn/s390x-gf2m.s b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/bn/s390x-gf2m.s new file mode 100644 index 0000000000..b5125a771c --- /dev/null +++ b/deps/openssl/config/archs/linux32-s390x/asm_avx2/crypto/bn/s390x-gf2m.s @@ -0,0 +1,201 @@ +.text + +.type _mul_1x1,@function +.align 16 +_mul_1x1: + lgr %r6,%r3 + sllg %r7,%r3,1 + sllg %r8,%r3,2 + sllg %r9,%r3,3 + + srag %r3,%r6,63 # broadcast 63rd bit + nihh %r6,0x1fff + srag %r12,%r7,63 # broadcast 62nd bit + nihh %r7,0x3fff + srag %r13,%r8,63 # broadcast 61st bit + nihh %r8,0x7fff + ngr %r3,%r5 + ngr %r12,%r5 + ngr %r13,%r5 + + lghi %r0,0 + lgr %r10,%r6 + stg %r0,96(%r15) # tab[0]=0 + xgr %r10,%r7 + stg %r6,104(%r15) # tab[1]=a1 + lgr %r11,%r8 + stg %r7,112(%r15) # tab[2]=a2 + xgr %r11,%r9 + stg %r10,120(%r15) # tab[3]=a1^a2 + xgr %r6,%r8 + + stg %r8,128(%r15) # tab[4]=a4 + xgr %r7,%r8 + stg %r6,136(%r15) # tab[5]=a1^a4 + xgr %r10,%r8 + stg %r7,144(%r15) # tab[6]=a2^a4 + xgr %r6,%r11 + stg %r10,152(%r15) # tab[7]=a1^a2^a4 + xgr %r7,%r11 + + stg %r9,160(%r15) # tab[8]=a8 + xgr %r10,%r11 + stg %r6,168(%r15) # tab[9]=a1^a8 + xgr %r6,%r8 + stg %r7,176(%r15) # tab[10]=a2^a8 + xgr %r7,%r8 + stg %r10,184(%r15) # tab[11]=a1^a2^a8 + + xgr %r10,%r8 + stg %r11,192(%r15) # tab[12]=a4^a8 + srlg %r4,%r3,1 + stg %r6,200(%r15) # tab[13]=a1^a4^a8 + sllg %r3,%r3,63 + stg %r7,208(%r15) # tab[14]=a2^a4^a8 + srlg %r0,%r12,2 + stg %r10,216(%r15) # tab[15]=a1^a2^a4^a8 + + lghi %r9,120 + sllg %r6,%r12,62 + sllg %r12,%r5,3 + srlg %r1,%r13,3 + ngr %r12,%r9 + sllg %r7,%r13,61 + srlg %r13,%r5,4-3 + xgr %r4,%r0 + ngr %r13,%r9 + xgr %r3,%r6 + xgr %r4,%r1 + xgr %r3,%r7 + + xg %r3,96(%r12,%r15) + srlg %r12,%r5,8-3 + ngr %r12,%r9 + lg %r1,96(%r13,%r15) + srlg %r13,%r5,12-3 + sllg %r0,%r1,4 + ngr %r13,%r9 + srlg %r1,%r1,60 + xgr %r3,%r0 + xgr %r4,%r1 + lg %r0,96(%r12,%r15) + srlg %r12,%r5,16-3 + sllg %r1,%r0,8 + ngr %r12,%r9 + srlg %r0,%r0,56 + xgr %r3,%r1 + xgr %r4,%r0 + lg %r1,96(%r13,%r15) + srlg %r13,%r5,20-3 + sllg %r0,%r1,12 + ngr %r13,%r9 + srlg %r1,%r1,52 + xgr %r3,%r0 + xgr %r4,%r1 + lg %r0,96(%r12,%r15) + srlg %r12,%r5,24-3 + sllg %r1,%r0,16 + ngr %r12,%r9 + srlg %r0,%r0,48 + xgr %r3,%r1 + xgr %r4,%r0 + lg %r1,96(%r13,%r15) + srlg %r13,%r5,28-3 + sllg %r0,%r1,20 + ngr %r13,%r9 + srlg %r1,%r1,44 + xgr %r3,%r0 + xgr %r4,%r1 + lg %r0,96(%r12,%r15) + srlg %r12,%r5,32-3 + sllg %r1,%r0,24 + ngr %r12,%r9 + srlg %r0,%r0,40 + xgr %r3,%r1 + xgr %r4,%r0 + lg %r1,96(%r13,%r15) + srlg %r13,%r5,36-3 + sllg %r0,%r1,28 + ngr %r13,%r9 + srlg %r1,%r1,36 + xgr %r3,%r0 + xgr %r4,%r1 + lg %r0,96(%r12,%r15) + srlg %r12,%r5,40-3 + sllg %r1,%r0,32 + ngr %r12,%r9 + srlg %r0,%r0,32 + xgr %r3,%r1 + xgr %r4,%r0 + lg %r1,96(%r13,%r15) + srlg %r13,%r5,44-3 + sllg %r0,%r1,36 + ngr %r13,%r9 + srlg %r1,%r1,28 + xgr %r3,%r0 + xgr %r4,%r1 + lg %r0,96(%r12,%r15) + srlg %r12,%r5,48-3 + sllg %r1,%r0,40 + ngr %r12,%r9 + srlg %r0,%r0,24 + xgr %r3,%r1 + xgr %r4,%r0 + lg %r1,96(%r13,%r15) + srlg %r13,%r5,52-3 + sllg %r0,%r1,44 + ngr %r13,%r9 + srlg %r1,%r1,20 + xgr %r3,%r0 + xgr %r4,%r1 + lg %r0,96(%r12,%r15) + srlg %r12,%r5,56-3 + sllg %r1,%r0,48 + ngr %r12,%r9 + srlg %r0,%r0,16 + xgr %r3,%r1 + xgr %r4,%r0 + lg %r1,96(%r13,%r15) + srlg %r13,%r5,60-3 + sllg %r0,%r1,52 + ngr %r13,%r9 + srlg %r1,%r1,12 + xgr %r3,%r0 + xgr %r4,%r1 + lg %r0,96(%r12,%r15) + sllg %r1,%r0,56 + srlg %r0,%r0,8 + xgr %r3,%r1 + xgr %r4,%r0 + + lg %r1,96(%r13,%r15) + sllg %r0,%r1,60 + srlg %r1,%r1,4 + xgr %r3,%r0 + xgr %r4,%r1 + + br %r14 +.size _mul_1x1,.-_mul_1x1 + +.globl bn_GF2m_mul_2x2 +.type bn_GF2m_mul_2x2,@function +.align 16 +bn_GF2m_mul_2x2: + stm %r3,%r15,3*4(%r15) + + lghi %r1,-96-128 + la %r0,0(%r15) + la %r15,0(%r1,%r15) # alloca + st %r0,0(%r15) # back chain + sllg %r3,%r3,32 + sllg %r5,%r5,32 + or %r3,%r4 + or %r5,%r6 + bras %r14,_mul_1x1 + rllg %r3,%r3,32 + rllg %r4,%r4,32 + stmg %r3,%r4,0(%r2) + lm %r6,%r15,248(%r15) + br %r14 +.size bn_GF2m_mul_2x2,.-bn_GF2m_mul_2x2 +.string "GF(2^m) Multiplication for s390x, CRYPTOGAMS by <appro@openssl.org>" |