126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom#include "arm_arch.h" 226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.text 426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.code 32 526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom#if __ARM_ARCH__>=7 726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.fpu neon 826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.type mul_1x1_neon,%function 1026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.align 5 1126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrommul_1x1_neon: 1226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vshl.u64 d2,d16,#8 @ q1-q3 are slided 1326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vmull.p8 q0,d16,d17 @ a�bb 1426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vshl.u64 d4,d16,#16 1526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vmull.p8 q1,d2,d17 @ a<<8�bb 1626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vshl.u64 d6,d16,#24 1726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vmull.p8 q2,d4,d17 @ a<<16�bb 1826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vshr.u64 d2,#8 1926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vmull.p8 q3,d6,d17 @ a<<24�bb 2026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vshl.u64 d3,#24 2126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom veor d0,d2 2226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vshr.u64 d4,#16 2326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom veor d0,d3 2426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vshl.u64 d5,#16 2526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom veor d0,d4 2626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vshr.u64 d6,#24 2726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom veor d0,d5 2826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vshl.u64 d7,#8 2926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom veor d0,d6 3026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom veor d0,d7 3126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom .word 0xe12fff1e 3226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.size mul_1x1_neon,.-mul_1x1_neon 3326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom#endif 3426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.type mul_1x1_ialu,%function 3526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.align 5 3626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrommul_1x1_ialu: 3726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom mov r4,#0 3826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom bic r5,r1,#3<<30 @ a1=a&0x3fffffff 3926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom str r4,[sp,#0] @ tab[0]=0 4026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom add r6,r5,r5 @ a2=a1<<1 4126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom str r5,[sp,#4] @ tab[1]=a1 4226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r7,r5,r6 @ a1^a2 4326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom str r6,[sp,#8] @ tab[2]=a2 4426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom mov r8,r5,lsl#2 @ a4=a1<<2 4526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom str r7,[sp,#12] @ tab[3]=a1^a2 4626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r9,r5,r8 @ a1^a4 4726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom str r8,[sp,#16] @ tab[4]=a4 4826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r4,r6,r8 @ a2^a4 4926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom str r9,[sp,#20] @ tab[5]=a1^a4 5026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r7,r7,r8 @ a1^a2^a4 5126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom str r4,[sp,#24] @ tab[6]=a2^a4 5226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom and r8,r12,r0,lsl#2 5326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom str r7,[sp,#28] @ tab[7]=a1^a2^a4 5426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 5526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom and r9,r12,r0,lsr#1 5626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldr r5,[sp,r8] @ tab[b & 0x7] 5726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom and r8,r12,r0,lsr#4 5826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldr r7,[sp,r9] @ tab[b >> 3 & 0x7] 5926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom and r9,r12,r0,lsr#7 6026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldr r6,[sp,r8] @ tab[b >> 6 & 0x7] 6126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r5,r5,r7,lsl#3 @ stall 6226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom mov r4,r7,lsr#29 6326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldr r7,[sp,r9] @ tab[b >> 9 & 0x7] 6426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 6526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom and r8,r12,r0,lsr#10 6626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r5,r5,r6,lsl#6 6726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r4,r4,r6,lsr#26 6826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldr r6,[sp,r8] @ tab[b >> 12 & 0x7] 6926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 7026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom and r9,r12,r0,lsr#13 7126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r5,r5,r7,lsl#9 7226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r4,r4,r7,lsr#23 7326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldr r7,[sp,r9] @ tab[b >> 15 & 0x7] 7426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 7526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom and r8,r12,r0,lsr#16 7626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r5,r5,r6,lsl#12 7726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r4,r4,r6,lsr#20 7826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldr r6,[sp,r8] @ tab[b >> 18 & 0x7] 7926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 8026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom and r9,r12,r0,lsr#19 8126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r5,r5,r7,lsl#15 8226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r4,r4,r7,lsr#17 8326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldr r7,[sp,r9] @ tab[b >> 21 & 0x7] 8426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 8526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom and r8,r12,r0,lsr#22 8626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r5,r5,r6,lsl#18 8726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r4,r4,r6,lsr#14 8826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldr r6,[sp,r8] @ tab[b >> 24 & 0x7] 8926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 9026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom and r9,r12,r0,lsr#25 9126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r5,r5,r7,lsl#21 9226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r4,r4,r7,lsr#11 9326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldr r7,[sp,r9] @ tab[b >> 27 & 0x7] 9426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 9526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom tst r1,#1<<30 9626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom and r8,r12,r0,lsr#28 9726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r5,r5,r6,lsl#24 9826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r4,r4,r6,lsr#8 9926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldr r6,[sp,r8] @ tab[b >> 30 ] 10026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 10126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eorne r5,r5,r0,lsl#30 10226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eorne r4,r4,r0,lsr#2 10326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom tst r1,#1<<31 10426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r5,r5,r7,lsl#27 10526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r4,r4,r7,lsr#5 10626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eorne r5,r5,r0,lsl#31 10726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eorne r4,r4,r0,lsr#1 10826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r5,r5,r6,lsl#30 10926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r4,r4,r6,lsr#2 11026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 11126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom mov pc,lr 11226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.size mul_1x1_ialu,.-mul_1x1_ialu 11326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.global bn_GF2m_mul_2x2 11426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.type bn_GF2m_mul_2x2,%function 11526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.align 5 11626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrombn_GF2m_mul_2x2: 11726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom#if __ARM_ARCH__>=7 11826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldr r12,.LOPENSSL_armcap 11926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.Lpic: ldr r12,[pc,r12] 12026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom tst r12,#1 12126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom beq .Lialu 12226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 12326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom veor d18,d18 12426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vmov.32 d19,r3,r3 @ two copies of b1 12526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vmov.32 d18[0],r1 @ a1 12626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 12726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom veor d20,d20 12826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vld1.32 d21[],[sp,:32] @ two copies of b0 12926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vmov.32 d20[0],r2 @ a0 13026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom mov r12,lr 13126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 13226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vmov d16,d18 13326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vmov d17,d19 13426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom bl mul_1x1_neon @ a1�b1 13526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vmov d22,d0 13626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 13726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vmov d16,d20 13826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vmov d17,d21 13926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom bl mul_1x1_neon @ a0�b0 14026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vmov d23,d0 14126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 14226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom veor d16,d20,d18 14326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom veor d17,d21,d19 14426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom veor d20,d23,d22 14526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom bl mul_1x1_neon @ (a0+a1)�(b0+b1) 14626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 14726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom veor d0,d20 @ (a0+a1)�(b0+b1)-a0�b0-a1�b1 14826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vshl.u64 d1,d0,#32 14926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vshr.u64 d0,d0,#32 15026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom veor d23,d1 15126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom veor d22,d0 15226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vst1.32 {d23[0]},[r0,:32]! 15326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vst1.32 {d23[1]},[r0,:32]! 15426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vst1.32 {d22[0]},[r0,:32]! 15526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom vst1.32 {d22[1]},[r0,:32] 15626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom bx r12 15726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.align 4 15826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.Lialu: 15926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom#endif 16026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom stmdb sp!,{r4-r10,lr} 16126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom mov r10,r0 @ reassign 1st argument 16226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom mov r0,r3 @ r0=b1 16326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldr r3,[sp,#32] @ load b0 16426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom mov r12,#7<<2 16526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom sub sp,sp,#32 @ allocate tab[8] 16626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 16726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom bl mul_1x1_ialu @ a1�b1 16826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom str r5,[r10,#8] 16926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom str r4,[r10,#12] 17026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 17126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r0,r0,r3 @ flip b0 and b1 17226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r1,r1,r2 @ flip a0 and a1 17326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r3,r3,r0 17426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r2,r2,r1 17526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r0,r0,r3 17626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r1,r1,r2 17726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom bl mul_1x1_ialu @ a0�b0 17826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom str r5,[r10] 17926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom str r4,[r10,#4] 18026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 18126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r1,r1,r2 18226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r0,r0,r3 18326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom bl mul_1x1_ialu @ (a1+a0)�(b1+b0) 18426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldmia r10,{r6-r9} 18526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r5,r5,r4 18626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r4,r4,r7 18726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r5,r5,r6 18826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r4,r4,r8 18926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r5,r5,r9 19026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r4,r4,r9 19126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom str r4,[r10,#8] 19226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom eor r5,r5,r4 19326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom add sp,sp,#32 @ destroy tab[8] 19426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom str r5,[r10,#4] 19526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 19626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom#if __ARM_ARCH__>=5 19726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldmia sp!,{r4-r10,pc} 19826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom#else 19926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom ldmia sp!,{r4-r10,lr} 20026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom tst lr,#1 20126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom moveq pc,lr @ be binary compatible with V4, yet 20226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom .word 0xe12fff1e @ interoperable with Thumb ISA:-) 20326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom#endif 20426674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.size bn_GF2m_mul_2x2,.-bn_GF2m_mul_2x2 20526674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom#if __ARM_ARCH__>=7 20626674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.align 5 20726674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.LOPENSSL_armcap: 20826674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.word OPENSSL_armcap_P-(.Lpic+8) 20926674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom#endif 21026674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.asciz "GF(2^m) Multiplication for ARMv4/NEON, CRYPTOGAMS by <appro@openssl.org>" 21126674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.align 5 21226674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom 21326674baf1ef727d9c0f12939c08ea90b56f65c26Brian Carlstrom.comm OPENSSL_armcap_P,4,4 214