diff options
author | Andy Polyakov <appro@openssl.org> | 2016-03-07 23:50:01 +0100 |
---|---|---|
committer | Andy Polyakov <appro@openssl.org> | 2016-03-09 11:21:11 +0100 |
commit | 1a66190888c730f466d9d7ba0c3b044a78a80ded (patch) | |
tree | d687b5ad433f9649d82e22488961d389695ae982 /crypto/ec/asm | |
parent | b5640316771fb776101cf6be8e6ae2ed5cf93d02 (diff) |
ec/asm/ecp_nistz256-sparcv9.pl: get corner logic right.
RT#4284
Reviewed-by: Rich Salz <rsalz@openssl.org>
Diffstat (limited to 'crypto/ec/asm')
-rwxr-xr-x | crypto/ec/asm/ecp_nistz256-sparcv9.pl | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/crypto/ec/asm/ecp_nistz256-sparcv9.pl b/crypto/ec/asm/ecp_nistz256-sparcv9.pl index 29a089b4a2..bd69eea9a0 100755 --- a/crypto/ec/asm/ecp_nistz256-sparcv9.pl +++ b/crypto/ec/asm/ecp_nistz256-sparcv9.pl @@ -722,6 +722,7 @@ ecp_nistz256_point_double: mov $rp,$rp_real mov $ap,$ap_real +.Lpoint_double_shortcut: ld [$ap+32],@acc[0] ld [$ap+32+4],@acc[1] ld [$ap+32+8],@acc[2] @@ -994,7 +995,7 @@ ecp_nistz256_point_add: be,pt %icc,.Ladd_proceed ! (in1infty || in2infty)? nop andcc $t2,$t2,%g0 - be,pt %icc,.Ladd_proceed ! is_equal(S1,S2)? + be,pt %icc,.Ladd_double ! is_equal(S1,S2)? nop ldx [%fp+STACK_BIAS-8],$rp @@ -1026,6 +1027,13 @@ ecp_nistz256_point_add: nop .align 16 +.Ladd_double: + ldx [%fp+STACK_BIAS-8],$rp_real + mov $ap_real,$ap + b .Lpoint_double_shortcut + add %sp,32*(12-4)+32,%sp ! difference in frame sizes + +.align 16 .Ladd_proceed: add %sp,LOCALS+$R,$bp add %sp,LOCALS+$R,$ap @@ -2016,6 +2024,7 @@ ecp_nistz256_point_double_vis3: save %sp,-STACK64_FRAME-32*10,%sp mov $rp,$rp_real +.Ldouble_shortcut_vis3: mov -1,$minus1 mov -2,$poly3 sllx $minus1,32,$poly1 ! 0xFFFFFFFF00000000 @@ -2536,8 +2545,8 @@ ecp_nistz256_point_add_vis3: be,pt %xcc,.Ladd_proceed_vis3 ! (in1infty || in2infty)? nop andcc $t2,$t2,%g0 - be,pt %xcc,.Ladd_proceed_vis3 ! is_equal(S1,S2)? - nop + be,a,pt %xcc,.Ldouble_shortcut_vis3 ! is_equal(S1,S2)? + add %sp,32*(12-10)+32,%sp ! difference in frame sizes st %g0,[$rp_real] st %g0,[$rp_real+4] |