Commit 86e11278 authored by Andy Polyakov's avatar Andy Polyakov
Browse files

ec/asm/ecp_nistz256-x86_64.pl: add CFI directives.



Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
parent 79ca382d
Loading
Loading
Loading
Loading
+133 −0
Original line number Original line Diff line number Diff line
@@ -131,8 +131,11 @@ $code.=<<___;
.type	ecp_nistz256_mul_by_2,\@function,2
.type	ecp_nistz256_mul_by_2,\@function,2
.align	64
.align	64
ecp_nistz256_mul_by_2:
ecp_nistz256_mul_by_2:
.cfi_startproc
	push	%r12
	push	%r12
.cfi_push	%r12
	push	%r13
	push	%r13
.cfi_push	%r13
.Lmul_by_2_body:
.Lmul_by_2_body:


	mov	8*0($a_ptr), $a0
	mov	8*0($a_ptr), $a0
@@ -167,10 +170,14 @@ ecp_nistz256_mul_by_2:
	mov	$a3, 8*3($r_ptr)
	mov	$a3, 8*3($r_ptr)


	mov	0(%rsp),%r13
	mov	0(%rsp),%r13
.cfi_restore	%r13
	mov	8(%rsp),%r12
	mov	8(%rsp),%r12
.cfi_restore	%r12
	lea	16(%rsp),%rsp
	lea	16(%rsp),%rsp
.cfi_adjust_cfa_offset	-16
.Lmul_by_2_epilogue:
.Lmul_by_2_epilogue:
	ret
	ret
.cfi_endproc
.size	ecp_nistz256_mul_by_2,.-ecp_nistz256_mul_by_2
.size	ecp_nistz256_mul_by_2,.-ecp_nistz256_mul_by_2


################################################################################
################################################################################
@@ -179,8 +186,11 @@ ecp_nistz256_mul_by_2:
.type	ecp_nistz256_div_by_2,\@function,2
.type	ecp_nistz256_div_by_2,\@function,2
.align	32
.align	32
ecp_nistz256_div_by_2:
ecp_nistz256_div_by_2:
.cfi_startproc
	push	%r12
	push	%r12
.cfi_push	%r12
	push	%r13
	push	%r13
.cfi_push	%r13
.Ldiv_by_2_body:
.Ldiv_by_2_body:


	mov	8*0($a_ptr), $a0
	mov	8*0($a_ptr), $a0
@@ -230,10 +240,14 @@ ecp_nistz256_div_by_2:
	mov	$a3, 8*3($r_ptr)
	mov	$a3, 8*3($r_ptr)


	mov	0(%rsp),%r13
	mov	0(%rsp),%r13
.cfi_restore	%r13
	mov	8(%rsp),%r12
	mov	8(%rsp),%r12
.cfi_restore	%r12
	lea	16(%rsp),%rsp
	lea	16(%rsp),%rsp
.cfi_adjust_cfa_offset	-16
.Ldiv_by_2_epilogue:
.Ldiv_by_2_epilogue:
	ret
	ret
.cfi_endproc
.size	ecp_nistz256_div_by_2,.-ecp_nistz256_div_by_2
.size	ecp_nistz256_div_by_2,.-ecp_nistz256_div_by_2


################################################################################
################################################################################
@@ -242,8 +256,11 @@ ecp_nistz256_div_by_2:
.type	ecp_nistz256_mul_by_3,\@function,2
.type	ecp_nistz256_mul_by_3,\@function,2
.align	32
.align	32
ecp_nistz256_mul_by_3:
ecp_nistz256_mul_by_3:
.cfi_startproc
	push	%r12
	push	%r12
.cfi_push	%r12
	push	%r13
	push	%r13
.cfi_push	%r13
.Lmul_by_3_body:
.Lmul_by_3_body:


	mov	8*0($a_ptr), $a0
	mov	8*0($a_ptr), $a0
@@ -299,10 +316,14 @@ ecp_nistz256_mul_by_3:
	mov	$a3, 8*3($r_ptr)
	mov	$a3, 8*3($r_ptr)


	mov	0(%rsp),%r13
	mov	0(%rsp),%r13
.cfi_restore	%r13
	mov	8(%rsp),%r12
	mov	8(%rsp),%r12
.cfi_restore	%r12
	lea	16(%rsp),%rsp
	lea	16(%rsp),%rsp
.cfi_adjust_cfa_offset	-16
.Lmul_by_3_epilogue:
.Lmul_by_3_epilogue:
	ret
	ret
.cfi_endproc
.size	ecp_nistz256_mul_by_3,.-ecp_nistz256_mul_by_3
.size	ecp_nistz256_mul_by_3,.-ecp_nistz256_mul_by_3


################################################################################
################################################################################
@@ -311,8 +332,11 @@ ecp_nistz256_mul_by_3:
.type	ecp_nistz256_add,\@function,3
.type	ecp_nistz256_add,\@function,3
.align	32
.align	32
ecp_nistz256_add:
ecp_nistz256_add:
.cfi_startproc
	push	%r12
	push	%r12
.cfi_push	%r12
	push	%r13
	push	%r13
.cfi_push	%r13
.Ladd_body:
.Ladd_body:


	mov	8*0($a_ptr), $a0
	mov	8*0($a_ptr), $a0
@@ -348,10 +372,14 @@ ecp_nistz256_add:
	mov	$a3, 8*3($r_ptr)
	mov	$a3, 8*3($r_ptr)


	mov	0(%rsp),%r13
	mov	0(%rsp),%r13
.cfi_restore	%r13
	mov	8(%rsp),%r12
	mov	8(%rsp),%r12
.cfi_restore	%r12
	lea	16(%rsp),%rsp
	lea	16(%rsp),%rsp
.cfi_adjust_cfa_offset	-16
.Ladd_epilogue:
.Ladd_epilogue:
	ret
	ret
.cfi_endproc
.size	ecp_nistz256_add,.-ecp_nistz256_add
.size	ecp_nistz256_add,.-ecp_nistz256_add


################################################################################
################################################################################
@@ -360,8 +388,11 @@ ecp_nistz256_add:
.type	ecp_nistz256_sub,\@function,3
.type	ecp_nistz256_sub,\@function,3
.align	32
.align	32
ecp_nistz256_sub:
ecp_nistz256_sub:
.cfi_startproc
	push	%r12
	push	%r12
.cfi_push	%r12
	push	%r13
	push	%r13
.cfi_push	%r13
.Lsub_body:
.Lsub_body:


	mov	8*0($a_ptr), $a0
	mov	8*0($a_ptr), $a0
@@ -397,10 +428,14 @@ ecp_nistz256_sub:
	mov	$a3, 8*3($r_ptr)
	mov	$a3, 8*3($r_ptr)


	mov	0(%rsp),%r13
	mov	0(%rsp),%r13
.cfi_restore	%r13
	mov	8(%rsp),%r12
	mov	8(%rsp),%r12
.cfi_restore	%r12
	lea	16(%rsp),%rsp
	lea	16(%rsp),%rsp
.cfi_adjust_cfa_offset	-16
.Lsub_epilogue:
.Lsub_epilogue:
	ret
	ret
.cfi_endproc
.size	ecp_nistz256_sub,.-ecp_nistz256_sub
.size	ecp_nistz256_sub,.-ecp_nistz256_sub


################################################################################
################################################################################
@@ -409,8 +444,11 @@ ecp_nistz256_sub:
.type	ecp_nistz256_neg,\@function,2
.type	ecp_nistz256_neg,\@function,2
.align	32
.align	32
ecp_nistz256_neg:
ecp_nistz256_neg:
.cfi_startproc
	push	%r12
	push	%r12
.cfi_push	%r12
	push	%r13
	push	%r13
.cfi_push	%r13
.Lneg_body:
.Lneg_body:


	xor	$a0, $a0
	xor	$a0, $a0
@@ -446,10 +484,14 @@ ecp_nistz256_neg:
	mov	$a3, 8*3($r_ptr)
	mov	$a3, 8*3($r_ptr)


	mov	0(%rsp),%r13
	mov	0(%rsp),%r13
.cfi_restore	%r13
	mov	8(%rsp),%r12
	mov	8(%rsp),%r12
.cfi_restore	%r12
	lea	16(%rsp),%rsp
	lea	16(%rsp),%rsp
.cfi_adjust_cfa_offset	-16
.Lneg_epilogue:
.Lneg_epilogue:
	ret
	ret
.cfi_endproc
.size	ecp_nistz256_neg,.-ecp_nistz256_neg
.size	ecp_nistz256_neg,.-ecp_nistz256_neg
___
___
}
}
@@ -488,6 +530,7 @@ $code.=<<___;
.type	ecp_nistz256_mul_mont,\@function,3
.type	ecp_nistz256_mul_mont,\@function,3
.align	32
.align	32
ecp_nistz256_mul_mont:
ecp_nistz256_mul_mont:
.cfi_startproc
___
___
$code.=<<___	if ($addx);
$code.=<<___	if ($addx);
	mov	\$0x80100, %ecx
	mov	\$0x80100, %ecx
@@ -496,11 +539,17 @@ ___
$code.=<<___;
$code.=<<___;
.Lmul_mont:
.Lmul_mont:
	push	%rbp
	push	%rbp
.cfi_push	%rbp
	push	%rbx
	push	%rbx
.cfi_push	%rbx
	push	%r12
	push	%r12
.cfi_push	%r12
	push	%r13
	push	%r13
.cfi_push	%r13
	push	%r14
	push	%r14
.cfi_push	%r14
	push	%r15
	push	%r15
.cfi_push	%r15
.Lmul_body:
.Lmul_body:
___
___
$code.=<<___	if ($addx);
$code.=<<___	if ($addx);
@@ -535,14 +584,22 @@ ___
$code.=<<___;
$code.=<<___;
.Lmul_mont_done:
.Lmul_mont_done:
	mov	0(%rsp),%r15
	mov	0(%rsp),%r15
.cfi_restore	%r15
	mov	8(%rsp),%r14
	mov	8(%rsp),%r14
.cfi_restore	%r14
	mov	16(%rsp),%r13
	mov	16(%rsp),%r13
.cfi_restore	%r13
	mov	24(%rsp),%r12
	mov	24(%rsp),%r12
.cfi_restore	%r12
	mov	32(%rsp),%rbx
	mov	32(%rsp),%rbx
.cfi_restore	%rbx
	mov	40(%rsp),%rbp
	mov	40(%rsp),%rbp
.cfi_restore	%rbp
	lea	48(%rsp),%rsp
	lea	48(%rsp),%rsp
.cfi_adjust_cfa_offset	-48
.Lmul_epilogue:
.Lmul_epilogue:
	ret
	ret
.cfi_endproc
.size	ecp_nistz256_mul_mont,.-ecp_nistz256_mul_mont
.size	ecp_nistz256_mul_mont,.-ecp_nistz256_mul_mont


.type	__ecp_nistz256_mul_montq,\@abi-omnipotent
.type	__ecp_nistz256_mul_montq,\@abi-omnipotent
@@ -772,6 +829,7 @@ __ecp_nistz256_mul_montq:
.type	ecp_nistz256_sqr_mont,\@function,2
.type	ecp_nistz256_sqr_mont,\@function,2
.align	32
.align	32
ecp_nistz256_sqr_mont:
ecp_nistz256_sqr_mont:
.cfi_startproc
___
___
$code.=<<___	if ($addx);
$code.=<<___	if ($addx);
	mov	\$0x80100, %ecx
	mov	\$0x80100, %ecx
@@ -779,11 +837,17 @@ $code.=<<___ if ($addx);
___
___
$code.=<<___;
$code.=<<___;
	push	%rbp
	push	%rbp
.cfi_push	%rbp
	push	%rbx
	push	%rbx
.cfi_push	%rbx
	push	%r12
	push	%r12
.cfi_push	%r12
	push	%r13
	push	%r13
.cfi_push	%r13
	push	%r14
	push	%r14
.cfi_push	%r14
	push	%r15
	push	%r15
.cfi_push	%r15
.Lsqr_body:
.Lsqr_body:
___
___
$code.=<<___	if ($addx);
$code.=<<___	if ($addx);
@@ -814,14 +878,22 @@ ___
$code.=<<___;
$code.=<<___;
.Lsqr_mont_done:
.Lsqr_mont_done:
	mov	0(%rsp),%r15
	mov	0(%rsp),%r15
.cfi_restore	%r15
	mov	8(%rsp),%r14
	mov	8(%rsp),%r14
.cfi_restore	%r14
	mov	16(%rsp),%r13
	mov	16(%rsp),%r13
.cfi_restore	%r13
	mov	24(%rsp),%r12
	mov	24(%rsp),%r12
.cfi_restore	%r12
	mov	32(%rsp),%rbx
	mov	32(%rsp),%rbx
.cfi_restore	%rbx
	mov	40(%rsp),%rbp
	mov	40(%rsp),%rbp
.cfi_restore	%rbp
	lea	48(%rsp),%rsp
	lea	48(%rsp),%rsp
.cfi_adjust_cfa_offset	-48
.Lsqr_epilogue:
.Lsqr_epilogue:
	ret
	ret
.cfi_endproc
.size	ecp_nistz256_sqr_mont,.-ecp_nistz256_sqr_mont
.size	ecp_nistz256_sqr_mont,.-ecp_nistz256_sqr_mont


.type	__ecp_nistz256_sqr_montq,\@abi-omnipotent
.type	__ecp_nistz256_sqr_montq,\@abi-omnipotent
@@ -1306,8 +1378,11 @@ $code.=<<___;
.type	ecp_nistz256_from_mont,\@function,2
.type	ecp_nistz256_from_mont,\@function,2
.align	32
.align	32
ecp_nistz256_from_mont:
ecp_nistz256_from_mont:
.cfi_startproc
	push	%r12
	push	%r12
.cfi_push	%r12
	push	%r13
	push	%r13
.cfi_push	%r13
.Lfrom_body:
.Lfrom_body:


	mov	8*0($in_ptr), %rax
	mov	8*0($in_ptr), %rax
@@ -1390,10 +1465,14 @@ ecp_nistz256_from_mont:
	mov	$acc3, 8*3($r_ptr)
	mov	$acc3, 8*3($r_ptr)


	mov	0(%rsp),%r13
	mov	0(%rsp),%r13
.cfi_restore	%r13
	mov	8(%rsp),%r12
	mov	8(%rsp),%r12
.cfi_restore	%r12
	lea	16(%rsp),%rsp
	lea	16(%rsp),%rsp
.cfi_adjust_cfa_offset	-16
.Lfrom_epilogue:
.Lfrom_epilogue:
	ret
	ret
.cfi_endproc
.size	ecp_nistz256_from_mont,.-ecp_nistz256_from_mont
.size	ecp_nistz256_from_mont,.-ecp_nistz256_from_mont
___
___
}
}
@@ -2055,6 +2134,7 @@ $code.=<<___;
.type	ecp_nistz256_point_double,\@function,2
.type	ecp_nistz256_point_double,\@function,2
.align	32
.align	32
ecp_nistz256_point_double:
ecp_nistz256_point_double:
.cfi_startproc
___
___
$code.=<<___	if ($addx);
$code.=<<___	if ($addx);
	mov	\$0x80100, %ecx
	mov	\$0x80100, %ecx
@@ -2071,17 +2151,25 @@ $code.=<<___;
.type	ecp_nistz256_point_doublex,\@function,2
.type	ecp_nistz256_point_doublex,\@function,2
.align	32
.align	32
ecp_nistz256_point_doublex:
ecp_nistz256_point_doublex:
.cfi_startproc
.Lpoint_doublex:
.Lpoint_doublex:
___
___
    }
    }
$code.=<<___;
$code.=<<___;
	push	%rbp
	push	%rbp
.cfi_push	%rbp
	push	%rbx
	push	%rbx
.cfi_push	%rbx
	push	%r12
	push	%r12
.cfi_push	%r12
	push	%r13
	push	%r13
.cfi_push	%r13
	push	%r14
	push	%r14
.cfi_push	%r14
	push	%r15
	push	%r15
.cfi_push	%r15
	sub	\$32*5+8, %rsp
	sub	\$32*5+8, %rsp
.cfi_adjust_cfa_offset	32*5+8
.Lpoint_double${x}_body:
.Lpoint_double${x}_body:


.Lpoint_double_shortcut$x:
.Lpoint_double_shortcut$x:
@@ -2254,15 +2342,24 @@ $code.=<<___;
	call	__ecp_nistz256_sub_from$x	# p256_sub(res_y, S, res_y);
	call	__ecp_nistz256_sub_from$x	# p256_sub(res_y, S, res_y);


	lea	32*5+56(%rsp), %rsi
	lea	32*5+56(%rsp), %rsi
.cfi_def_cfa	%rsi,8
	mov	-48(%rsi),%r15
	mov	-48(%rsi),%r15
.cfi_restore	%r15
	mov	-40(%rsi),%r14
	mov	-40(%rsi),%r14
.cfi_restore	%r14
	mov	-32(%rsi),%r13
	mov	-32(%rsi),%r13
.cfi_restore	%r13
	mov	-24(%rsi),%r12
	mov	-24(%rsi),%r12
.cfi_restore	%r12
	mov	-16(%rsi),%rbx
	mov	-16(%rsi),%rbx
.cfi_restore	%rbx
	mov	-8(%rsi),%rbp
	mov	-8(%rsi),%rbp
.cfi_restore	%rbp
	lea	(%rsi),%rsp
	lea	(%rsi),%rsp
.cfi_def_cfa_register	%rsp
.Lpoint_double${x}_epilogue:
.Lpoint_double${x}_epilogue:
	ret
	ret
.cfi_endproc
.size	ecp_nistz256_point_double$sfx,.-ecp_nistz256_point_double$sfx
.size	ecp_nistz256_point_double$sfx,.-ecp_nistz256_point_double$sfx
___
___
}
}
@@ -2288,6 +2385,7 @@ $code.=<<___;
.type	ecp_nistz256_point_add,\@function,3
.type	ecp_nistz256_point_add,\@function,3
.align	32
.align	32
ecp_nistz256_point_add:
ecp_nistz256_point_add:
.cfi_startproc
___
___
$code.=<<___	if ($addx);
$code.=<<___	if ($addx);
	mov	\$0x80100, %ecx
	mov	\$0x80100, %ecx
@@ -2304,17 +2402,25 @@ $code.=<<___;
.type	ecp_nistz256_point_addx,\@function,3
.type	ecp_nistz256_point_addx,\@function,3
.align	32
.align	32
ecp_nistz256_point_addx:
ecp_nistz256_point_addx:
.cfi_startproc
.Lpoint_addx:
.Lpoint_addx:
___
___
    }
    }
$code.=<<___;
$code.=<<___;
	push	%rbp
	push	%rbp
.cfi_push	%rbp
	push	%rbx
	push	%rbx
.cfi_push	%rbx
	push	%r12
	push	%r12
.cfi_push	%r12
	push	%r13
	push	%r13
.cfi_push	%r13
	push	%r14
	push	%r14
.cfi_push	%r14
	push	%r15
	push	%r15
.cfi_push	%r15
	sub	\$32*18+8, %rsp
	sub	\$32*18+8, %rsp
.cfi_adjust_cfa_offset	32*18+8
.Lpoint_add${x}_body:
.Lpoint_add${x}_body:


	movdqu	0x00($a_ptr), %xmm0		# copy	*(P256_POINT *)$a_ptr
	movdqu	0x00($a_ptr), %xmm0		# copy	*(P256_POINT *)$a_ptr
@@ -2625,15 +2731,24 @@ $code.=<<___;


.Ladd_done$x:
.Ladd_done$x:
	lea	32*18+56(%rsp), %rsi
	lea	32*18+56(%rsp), %rsi
.cfi_def_cfa	%rsi,8
	mov	-48(%rsi),%r15
	mov	-48(%rsi),%r15
.cfi_restore	%r15
	mov	-40(%rsi),%r14
	mov	-40(%rsi),%r14
.cfi_restore	%r14
	mov	-32(%rsi),%r13
	mov	-32(%rsi),%r13
.cfi_restore	%r13
	mov	-24(%rsi),%r12
	mov	-24(%rsi),%r12
.cfi_restore	%r12
	mov	-16(%rsi),%rbx
	mov	-16(%rsi),%rbx
.cfi_restore	%rbx
	mov	-8(%rsi),%rbp
	mov	-8(%rsi),%rbp
.cfi_restore	%rbp
	lea	(%rsi),%rsp
	lea	(%rsi),%rsp
.cfi_def_cfa_register	%rsp
.Lpoint_add${x}_epilogue:
.Lpoint_add${x}_epilogue:
	ret
	ret
.cfi_endproc
.size	ecp_nistz256_point_add$sfx,.-ecp_nistz256_point_add$sfx
.size	ecp_nistz256_point_add$sfx,.-ecp_nistz256_point_add$sfx
___
___
}
}
@@ -2658,6 +2773,7 @@ $code.=<<___;
.type	ecp_nistz256_point_add_affine,\@function,3
.type	ecp_nistz256_point_add_affine,\@function,3
.align	32
.align	32
ecp_nistz256_point_add_affine:
ecp_nistz256_point_add_affine:
.cfi_startproc
___
___
$code.=<<___	if ($addx);
$code.=<<___	if ($addx);
	mov	\$0x80100, %ecx
	mov	\$0x80100, %ecx
@@ -2674,17 +2790,25 @@ $code.=<<___;
.type	ecp_nistz256_point_add_affinex,\@function,3
.type	ecp_nistz256_point_add_affinex,\@function,3
.align	32
.align	32
ecp_nistz256_point_add_affinex:
ecp_nistz256_point_add_affinex:
.cfi_startproc
.Lpoint_add_affinex:
.Lpoint_add_affinex:
___
___
    }
    }
$code.=<<___;
$code.=<<___;
	push	%rbp
	push	%rbp
.cfi_push	%rbp
	push	%rbx
	push	%rbx
.cfi_push	%rbx
	push	%r12
	push	%r12
.cfi_push	%r12
	push	%r13
	push	%r13
.cfi_push	%r13
	push	%r14
	push	%r14
.cfi_push	%r14
	push	%r15
	push	%r15
.cfi_push	%r15
	sub	\$32*15+8, %rsp
	sub	\$32*15+8, %rsp
.cfi_adjust_cfa_offset	32*15+8
.Ladd_affine${x}_body:
.Ladd_affine${x}_body:


	movdqu	0x00($a_ptr), %xmm0	# copy	*(P256_POINT *)$a_ptr
	movdqu	0x00($a_ptr), %xmm0	# copy	*(P256_POINT *)$a_ptr
@@ -2931,15 +3055,24 @@ $code.=<<___;
	movdqu	%xmm3, 0x30($r_ptr)
	movdqu	%xmm3, 0x30($r_ptr)


	lea	32*15+56(%rsp), %rsi
	lea	32*15+56(%rsp), %rsi
.cfi_def_cfa	%rsi,8
	mov	-48(%rsi),%r15
	mov	-48(%rsi),%r15
.cfi_restore	%r15
	mov	-40(%rsi),%r14
	mov	-40(%rsi),%r14
.cfi_restore	%r14
	mov	-32(%rsi),%r13
	mov	-32(%rsi),%r13
.cfi_restore	%r13
	mov	-24(%rsi),%r12
	mov	-24(%rsi),%r12
.cfi_restore	%r12
	mov	-16(%rsi),%rbx
	mov	-16(%rsi),%rbx
.cfi_restore	%rbx
	mov	-8(%rsi),%rbp
	mov	-8(%rsi),%rbp
.cfi_restore	%rbp
	lea	(%rsi),%rsp
	lea	(%rsi),%rsp
.cfi_def_cfa_register	%rsp
.Ladd_affine${x}_epilogue:
.Ladd_affine${x}_epilogue:
	ret
	ret
.cfi_endproc
.size	ecp_nistz256_point_add_affine$sfx,.-ecp_nistz256_point_add_affine$sfx
.size	ecp_nistz256_point_add_affine$sfx,.-ecp_nistz256_point_add_affine$sfx
___
___
}
}