You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			292 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			ArmAsm
		
	
			
		
		
	
	
			292 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			ArmAsm
		
	
.text	
 | 
						|
 | 
						|
.type	_mul_1x1,@function
 | 
						|
.align	16
 | 
						|
_mul_1x1:
 | 
						|
	subq	$128+8,%rsp
 | 
						|
	movq	$-1,%r9
 | 
						|
	leaq	(%rax,%rax,1),%rsi
 | 
						|
	shrq	$3,%r9
 | 
						|
	leaq	(,%rax,4),%rdi
 | 
						|
	andq	%rax,%r9
 | 
						|
	leaq	(,%rax,8),%r12
 | 
						|
	sarq	$63,%rax
 | 
						|
	leaq	(%r9,%r9,1),%r10
 | 
						|
	sarq	$63,%rsi
 | 
						|
	leaq	(,%r9,4),%r11
 | 
						|
	andq	%rbp,%rax
 | 
						|
	sarq	$63,%rdi
 | 
						|
	movq	%rax,%rdx
 | 
						|
	shlq	$63,%rax
 | 
						|
	andq	%rbp,%rsi
 | 
						|
	shrq	$1,%rdx
 | 
						|
	movq	%rsi,%rcx
 | 
						|
	shlq	$62,%rsi
 | 
						|
	andq	%rbp,%rdi
 | 
						|
	shrq	$2,%rcx
 | 
						|
	xorq	%rsi,%rax
 | 
						|
	movq	%rdi,%rbx
 | 
						|
	shlq	$61,%rdi
 | 
						|
	xorq	%rcx,%rdx
 | 
						|
	shrq	$3,%rbx
 | 
						|
	xorq	%rdi,%rax
 | 
						|
	xorq	%rbx,%rdx
 | 
						|
 | 
						|
	movq	%r9,%r13
 | 
						|
	movq	$0,0(%rsp)
 | 
						|
	xorq	%r10,%r13
 | 
						|
	movq	%r9,8(%rsp)
 | 
						|
	movq	%r11,%r14
 | 
						|
	movq	%r10,16(%rsp)
 | 
						|
	xorq	%r12,%r14
 | 
						|
	movq	%r13,24(%rsp)
 | 
						|
 | 
						|
	xorq	%r11,%r9
 | 
						|
	movq	%r11,32(%rsp)
 | 
						|
	xorq	%r11,%r10
 | 
						|
	movq	%r9,40(%rsp)
 | 
						|
	xorq	%r11,%r13
 | 
						|
	movq	%r10,48(%rsp)
 | 
						|
	xorq	%r14,%r9
 | 
						|
	movq	%r13,56(%rsp)
 | 
						|
	xorq	%r14,%r10
 | 
						|
 | 
						|
	movq	%r12,64(%rsp)
 | 
						|
	xorq	%r14,%r13
 | 
						|
	movq	%r9,72(%rsp)
 | 
						|
	xorq	%r11,%r9
 | 
						|
	movq	%r10,80(%rsp)
 | 
						|
	xorq	%r11,%r10
 | 
						|
	movq	%r13,88(%rsp)
 | 
						|
 | 
						|
	xorq	%r11,%r13
 | 
						|
	movq	%r14,96(%rsp)
 | 
						|
	movq	%r8,%rsi
 | 
						|
	movq	%r9,104(%rsp)
 | 
						|
	andq	%rbp,%rsi
 | 
						|
	movq	%r10,112(%rsp)
 | 
						|
	shrq	$4,%rbp
 | 
						|
	movq	%r13,120(%rsp)
 | 
						|
	movq	%r8,%rdi
 | 
						|
	andq	%rbp,%rdi
 | 
						|
	shrq	$4,%rbp
 | 
						|
 | 
						|
	movq	(%rsp,%rsi,8),%xmm0
 | 
						|
	movq	%r8,%rsi
 | 
						|
	andq	%rbp,%rsi
 | 
						|
	shrq	$4,%rbp
 | 
						|
	movq	(%rsp,%rdi,8),%rcx
 | 
						|
	movq	%r8,%rdi
 | 
						|
	movq	%rcx,%rbx
 | 
						|
	shlq	$4,%rcx
 | 
						|
	andq	%rbp,%rdi
 | 
						|
	movq	(%rsp,%rsi,8),%xmm1
 | 
						|
	shrq	$60,%rbx
 | 
						|
	xorq	%rcx,%rax
 | 
						|
	pslldq	$1,%xmm1
 | 
						|
	movq	%r8,%rsi
 | 
						|
	shrq	$4,%rbp
 | 
						|
	xorq	%rbx,%rdx
 | 
						|
	andq	%rbp,%rsi
 | 
						|
	shrq	$4,%rbp
 | 
						|
	pxor	%xmm1,%xmm0
 | 
						|
	movq	(%rsp,%rdi,8),%rcx
 | 
						|
	movq	%r8,%rdi
 | 
						|
	movq	%rcx,%rbx
 | 
						|
	shlq	$12,%rcx
 | 
						|
	andq	%rbp,%rdi
 | 
						|
	movq	(%rsp,%rsi,8),%xmm1
 | 
						|
	shrq	$52,%rbx
 | 
						|
	xorq	%rcx,%rax
 | 
						|
	pslldq	$2,%xmm1
 | 
						|
	movq	%r8,%rsi
 | 
						|
	shrq	$4,%rbp
 | 
						|
	xorq	%rbx,%rdx
 | 
						|
	andq	%rbp,%rsi
 | 
						|
	shrq	$4,%rbp
 | 
						|
	pxor	%xmm1,%xmm0
 | 
						|
	movq	(%rsp,%rdi,8),%rcx
 | 
						|
	movq	%r8,%rdi
 | 
						|
	movq	%rcx,%rbx
 | 
						|
	shlq	$20,%rcx
 | 
						|
	andq	%rbp,%rdi
 | 
						|
	movq	(%rsp,%rsi,8),%xmm1
 | 
						|
	shrq	$44,%rbx
 | 
						|
	xorq	%rcx,%rax
 | 
						|
	pslldq	$3,%xmm1
 | 
						|
	movq	%r8,%rsi
 | 
						|
	shrq	$4,%rbp
 | 
						|
	xorq	%rbx,%rdx
 | 
						|
	andq	%rbp,%rsi
 | 
						|
	shrq	$4,%rbp
 | 
						|
	pxor	%xmm1,%xmm0
 | 
						|
	movq	(%rsp,%rdi,8),%rcx
 | 
						|
	movq	%r8,%rdi
 | 
						|
	movq	%rcx,%rbx
 | 
						|
	shlq	$28,%rcx
 | 
						|
	andq	%rbp,%rdi
 | 
						|
	movq	(%rsp,%rsi,8),%xmm1
 | 
						|
	shrq	$36,%rbx
 | 
						|
	xorq	%rcx,%rax
 | 
						|
	pslldq	$4,%xmm1
 | 
						|
	movq	%r8,%rsi
 | 
						|
	shrq	$4,%rbp
 | 
						|
	xorq	%rbx,%rdx
 | 
						|
	andq	%rbp,%rsi
 | 
						|
	shrq	$4,%rbp
 | 
						|
	pxor	%xmm1,%xmm0
 | 
						|
	movq	(%rsp,%rdi,8),%rcx
 | 
						|
	movq	%r8,%rdi
 | 
						|
	movq	%rcx,%rbx
 | 
						|
	shlq	$36,%rcx
 | 
						|
	andq	%rbp,%rdi
 | 
						|
	movq	(%rsp,%rsi,8),%xmm1
 | 
						|
	shrq	$28,%rbx
 | 
						|
	xorq	%rcx,%rax
 | 
						|
	pslldq	$5,%xmm1
 | 
						|
	movq	%r8,%rsi
 | 
						|
	shrq	$4,%rbp
 | 
						|
	xorq	%rbx,%rdx
 | 
						|
	andq	%rbp,%rsi
 | 
						|
	shrq	$4,%rbp
 | 
						|
	pxor	%xmm1,%xmm0
 | 
						|
	movq	(%rsp,%rdi,8),%rcx
 | 
						|
	movq	%r8,%rdi
 | 
						|
	movq	%rcx,%rbx
 | 
						|
	shlq	$44,%rcx
 | 
						|
	andq	%rbp,%rdi
 | 
						|
	movq	(%rsp,%rsi,8),%xmm1
 | 
						|
	shrq	$20,%rbx
 | 
						|
	xorq	%rcx,%rax
 | 
						|
	pslldq	$6,%xmm1
 | 
						|
	movq	%r8,%rsi
 | 
						|
	shrq	$4,%rbp
 | 
						|
	xorq	%rbx,%rdx
 | 
						|
	andq	%rbp,%rsi
 | 
						|
	shrq	$4,%rbp
 | 
						|
	pxor	%xmm1,%xmm0
 | 
						|
	movq	(%rsp,%rdi,8),%rcx
 | 
						|
	movq	%r8,%rdi
 | 
						|
	movq	%rcx,%rbx
 | 
						|
	shlq	$52,%rcx
 | 
						|
	andq	%rbp,%rdi
 | 
						|
	movq	(%rsp,%rsi,8),%xmm1
 | 
						|
	shrq	$12,%rbx
 | 
						|
	xorq	%rcx,%rax
 | 
						|
	pslldq	$7,%xmm1
 | 
						|
	movq	%r8,%rsi
 | 
						|
	shrq	$4,%rbp
 | 
						|
	xorq	%rbx,%rdx
 | 
						|
	andq	%rbp,%rsi
 | 
						|
	shrq	$4,%rbp
 | 
						|
	pxor	%xmm1,%xmm0
 | 
						|
	movq	(%rsp,%rdi,8),%rcx
 | 
						|
	movq	%rcx,%rbx
 | 
						|
	shlq	$60,%rcx
 | 
						|
.byte	102,72,15,126,198
 | 
						|
	shrq	$4,%rbx
 | 
						|
	xorq	%rcx,%rax
 | 
						|
	psrldq	$8,%xmm0
 | 
						|
	xorq	%rbx,%rdx
 | 
						|
.byte	102,72,15,126,199
 | 
						|
	xorq	%rsi,%rax
 | 
						|
	xorq	%rdi,%rdx
 | 
						|
 | 
						|
	addq	$128+8,%rsp
 | 
						|
	.byte	0xf3,0xc3
 | 
						|
.Lend_mul_1x1:
 | 
						|
.size	_mul_1x1,.-_mul_1x1
 | 
						|
 | 
						|
.globl	bn_GF2m_mul_2x2
 | 
						|
.type	bn_GF2m_mul_2x2,@function
 | 
						|
.align	16
 | 
						|
bn_GF2m_mul_2x2:
 | 
						|
	movq	OPENSSL_ia32cap_P(%rip),%rax
 | 
						|
	btq	$33,%rax
 | 
						|
	jnc	.Lvanilla_mul_2x2
 | 
						|
 | 
						|
.byte	102,72,15,110,198
 | 
						|
.byte	102,72,15,110,201
 | 
						|
.byte	102,72,15,110,210
 | 
						|
.byte	102,73,15,110,216
 | 
						|
	movdqa	%xmm0,%xmm4
 | 
						|
	movdqa	%xmm1,%xmm5
 | 
						|
.byte	102,15,58,68,193,0
 | 
						|
	pxor	%xmm2,%xmm4
 | 
						|
	pxor	%xmm3,%xmm5
 | 
						|
.byte	102,15,58,68,211,0
 | 
						|
.byte	102,15,58,68,229,0
 | 
						|
	xorps	%xmm0,%xmm4
 | 
						|
	xorps	%xmm2,%xmm4
 | 
						|
	movdqa	%xmm4,%xmm5
 | 
						|
	pslldq	$8,%xmm4
 | 
						|
	psrldq	$8,%xmm5
 | 
						|
	pxor	%xmm4,%xmm2
 | 
						|
	pxor	%xmm5,%xmm0
 | 
						|
	movdqu	%xmm2,0(%rdi)
 | 
						|
	movdqu	%xmm0,16(%rdi)
 | 
						|
	.byte	0xf3,0xc3
 | 
						|
 | 
						|
.align	16
 | 
						|
.Lvanilla_mul_2x2:
 | 
						|
	leaq	-136(%rsp),%rsp
 | 
						|
	movq	%r14,80(%rsp)
 | 
						|
	movq	%r13,88(%rsp)
 | 
						|
	movq	%r12,96(%rsp)
 | 
						|
	movq	%rbp,104(%rsp)
 | 
						|
	movq	%rbx,112(%rsp)
 | 
						|
.Lbody_mul_2x2:
 | 
						|
	movq	%rdi,32(%rsp)
 | 
						|
	movq	%rsi,40(%rsp)
 | 
						|
	movq	%rdx,48(%rsp)
 | 
						|
	movq	%rcx,56(%rsp)
 | 
						|
	movq	%r8,64(%rsp)
 | 
						|
 | 
						|
	movq	$15,%r8
 | 
						|
	movq	%rsi,%rax
 | 
						|
	movq	%rcx,%rbp
 | 
						|
	call	_mul_1x1		
 | 
						|
	movq	%rax,16(%rsp)
 | 
						|
	movq	%rdx,24(%rsp)
 | 
						|
 | 
						|
	movq	48(%rsp),%rax
 | 
						|
	movq	64(%rsp),%rbp
 | 
						|
	call	_mul_1x1		
 | 
						|
	movq	%rax,0(%rsp)
 | 
						|
	movq	%rdx,8(%rsp)
 | 
						|
 | 
						|
	movq	40(%rsp),%rax
 | 
						|
	movq	56(%rsp),%rbp
 | 
						|
	xorq	48(%rsp),%rax
 | 
						|
	xorq	64(%rsp),%rbp
 | 
						|
	call	_mul_1x1		
 | 
						|
	movq	0(%rsp),%rbx
 | 
						|
	movq	8(%rsp),%rcx
 | 
						|
	movq	16(%rsp),%rdi
 | 
						|
	movq	24(%rsp),%rsi
 | 
						|
	movq	32(%rsp),%rbp
 | 
						|
 | 
						|
	xorq	%rdx,%rax
 | 
						|
	xorq	%rcx,%rdx
 | 
						|
	xorq	%rbx,%rax
 | 
						|
	movq	%rbx,0(%rbp)
 | 
						|
	xorq	%rdi,%rdx
 | 
						|
	movq	%rsi,24(%rbp)
 | 
						|
	xorq	%rsi,%rax
 | 
						|
	xorq	%rsi,%rdx
 | 
						|
	xorq	%rdx,%rax
 | 
						|
	movq	%rdx,16(%rbp)
 | 
						|
	movq	%rax,8(%rbp)
 | 
						|
 | 
						|
	movq	80(%rsp),%r14
 | 
						|
	movq	88(%rsp),%r13
 | 
						|
	movq	96(%rsp),%r12
 | 
						|
	movq	104(%rsp),%rbp
 | 
						|
	movq	112(%rsp),%rbx
 | 
						|
	leaq	136(%rsp),%rsp
 | 
						|
	.byte	0xf3,0xc3
 | 
						|
.Lend_mul_2x2:
 | 
						|
.size	bn_GF2m_mul_2x2,.-bn_GF2m_mul_2x2
 | 
						|
.byte	71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
 | 
						|
.align	16
 |