Skip to content

Commit

Permalink
CryptoAlg-682: Added check #if __ARM_MAX_ARCH__>=7
Browse files Browse the repository at this point in the history
and generated filed under `generated-src`
  • Loading branch information
nebeid committed Apr 15, 2021
1 parent ffb3560 commit 82c4e35
Show file tree
Hide file tree
Showing 9 changed files with 117 additions and 110 deletions.
2 changes: 2 additions & 0 deletions crypto/fipsmodule/modes/asm/ghashv8-armx.pl
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
$code=<<___;
#include <openssl/arm_arch.h>
#if __ARM_MAX_ARCH__>=7
.text
___
$code.=".arch armv8-a+crypto\n" if ($flavour =~ /64/);
Expand Down Expand Up @@ -698,6 +699,7 @@
$code.=<<___;
.asciz "GHASH for ARMv8, CRYPTOGAMS by <appro\@openssl.org>"
.align 2
#endif
___

if ($flavour =~ /64/) { ######## 64-bit code
Expand Down
2 changes: 2 additions & 0 deletions generated-src/ios-aarch64/crypto/fipsmodule/ghashv8-armx64.S
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#endif
#include <openssl/arm_arch.h>

#if __ARM_MAX_ARCH__>=7
.text

.globl _gcm_init_v8
Expand Down Expand Up @@ -568,4 +569,5 @@ Ldone4x:
.byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,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 2
.align 2
#endif
#endif // !OPENSSL_NO_ASM
69 changes: 34 additions & 35 deletions generated-src/ios-aarch64/crypto/fipsmodule/p256-armv8-asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -135,28 +135,27 @@ _ecp_nistz256_sqr_mont:

// void ecp_nistz256_add(BN_ULONG x0[4],const BN_ULONG x1[4],
// const BN_ULONG x2[4]);
.globl _ecp_nistz256_add
.private_extern _ecp_nistz256_add

.align 4
_ecp_nistz256_add:
.long 0xd503233f // paciasp
stp x29,x30,[sp,#-16]!
add x29,sp,#0

ldp x14,x15,[x1]
ldp x8,x9,[x2]
ldp x16,x17,[x1,#16]
ldp x10,x11,[x2,#16]
ldr x12,Lpoly+8
ldr x13,Lpoly+24

bl __ecp_nistz256_add

ldp x29,x30,[sp],#16
.long 0xd50323bf // autiasp
ret

///.globl ecp_nistz256_add
///.type ecp_nistz256_add,%function
///.align 4
///ecp_nistz256_add:
/// .inst 0xd503233f // paciasp
/// stp x29,x30,[sp,#-16]!
/// add x29,sp,#0
///
/// ldp x14,x15,[x1]
/// ldp x8,x9,[x2]
/// ldp x16,x17,[x1,#16]
/// ldp x10,x11,[x2,#16]
/// ldr x12,.Lpoly+8
/// ldr x13,.Lpoly+24
///
/// bl __ecp_nistz256_add_to
///
/// ldp x29,x30,[sp],#16
/// .inst 0xd50323bf // autiasp
/// ret
///.size ecp_nistz256_add,.-ecp_nistz256_add

// void ecp_nistz256_div_by_2(BN_ULONG x0[4],const BN_ULONG x1[4]);
.globl _ecp_nistz256_div_by_2
Expand Down Expand Up @@ -199,7 +198,7 @@ _ecp_nistz256_mul_by_2:
mov x10,x16
mov x11,x17

bl __ecp_nistz256_add // ret = a+a // 2*a
bl __ecp_nistz256_add_to // ret = a+a // 2*a

ldp x29,x30,[sp],#16
.long 0xd50323bf // autiasp
Expand Down Expand Up @@ -229,14 +228,14 @@ _ecp_nistz256_mul_by_3:
mov x6,x16
mov x7,x17

bl __ecp_nistz256_add // ret = a+a // 2*a
bl __ecp_nistz256_add_to // ret = a+a // 2*a

mov x8,x4
mov x9,x5
mov x10,x6
mov x11,x7

bl __ecp_nistz256_add // ret += a // 2*a+a=3*a
bl __ecp_nistz256_add_to // ret += a // 2*a+a=3*a

ldp x29,x30,[sp],#16
.long 0xd50323bf // autiasp
Expand Down Expand Up @@ -550,12 +549,12 @@ __ecp_nistz256_sqr_mont:
ret


// Note that __ecp_nistz256_add expects both input vectors pre-loaded to
// Note that __ecp_nistz256_add_to expects both input vectors pre-loaded to
// x4-x7 and x8-x11. This is done because it's used in multiple
// contexts, e.g. in multiplication by 2 and 3...

.align 4
__ecp_nistz256_add:
__ecp_nistz256_add_to:
adds x14,x14,x8 // ret = a+b
adcs x15,x15,x9
adcs x16,x16,x10
Expand Down Expand Up @@ -687,7 +686,7 @@ Ldouble_shortcut:
mov x11,x17
ldp x6,x7,[x22,#64+16]
add x0,sp,#0
bl __ecp_nistz256_add // p256_mul_by_2(S, in_y);
bl __ecp_nistz256_add_to // p256_mul_by_2(S, in_y);

add x0,sp,#64
bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Zsqr, in_z);
Expand All @@ -699,7 +698,7 @@ Ldouble_shortcut:
mov x6,x16
mov x7,x17
add x0,sp,#32
bl __ecp_nistz256_add // p256_add(M, Zsqr, in_x);
bl __ecp_nistz256_add_to // p256_add(M, Zsqr, in_x);

add x2,x22,#0
mov x14,x4 // restore Zsqr
Expand Down Expand Up @@ -728,7 +727,7 @@ Ldouble_shortcut:
mov x11,x17
ldp x6,x7,[sp,#0+16]
add x0,x21,#64
bl __ecp_nistz256_add // p256_mul_by_2(res_z, tmp0);
bl __ecp_nistz256_add_to // p256_mul_by_2(res_z, tmp0);

add x0,sp,#96
bl __ecp_nistz256_sqr_mont // p256_sqr_mont(tmp0, S);
Expand All @@ -752,15 +751,15 @@ Ldouble_shortcut:
mov x6,x16
mov x7,x17
add x0,sp,#32
bl __ecp_nistz256_add
bl __ecp_nistz256_add_to
mov x8,x4 // restore M
mov x9,x5
ldr x3,[x22] // forward load for p256_mul_mont
mov x10,x6
ldp x4,x5,[sp,#0]
mov x11,x7
ldp x6,x7,[sp,#0+16]
bl __ecp_nistz256_add // p256_mul_by_3(M, M);
bl __ecp_nistz256_add_to // p256_mul_by_3(M, M);

add x2,x22,#0
add x0,sp,#0
Expand All @@ -773,7 +772,7 @@ Ldouble_shortcut:
mov x11,x17
ldp x6,x7,[sp,#32+16]
add x0,sp,#96
bl __ecp_nistz256_add // p256_mul_by_2(tmp0, S);
bl __ecp_nistz256_add_to // p256_mul_by_2(tmp0, S);

add x0,x21,#0
bl __ecp_nistz256_sqr_mont // p256_sqr_mont(res_x, M);
Expand Down Expand Up @@ -963,7 +962,7 @@ Ladd_proceed:
mov x10,x16
mov x11,x17
add x0,sp,#128
bl __ecp_nistz256_add // p256_mul_by_2(Hsqr, U2);
bl __ecp_nistz256_add_to // p256_mul_by_2(Hsqr, U2);

add x2,sp,#192
add x0,sp,#0
Expand Down Expand Up @@ -1171,7 +1170,7 @@ _ecp_nistz256_point_add_affine:
mov x10,x16
mov x11,x17
add x0,sp,#224
bl __ecp_nistz256_add // p256_mul_by_2(Hsqr, U2);
bl __ecp_nistz256_add_to // p256_mul_by_2(Hsqr, U2);

add x2,sp,#288
add x0,sp,#0
Expand Down
2 changes: 2 additions & 0 deletions generated-src/ios-arm/crypto/fipsmodule/ghashv8-armx32.S
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#endif
#include <openssl/arm_arch.h>

#if __ARM_MAX_ARCH__>=7
.text

.code 32
Expand Down Expand Up @@ -255,4 +256,5 @@ Ldone_v8:
.byte 71,72,65,83,72,32,102,111,114,32,65,82,77,118,56,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 2
.align 2
#endif
#endif // !OPENSSL_NO_ASM
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#endif
#include <openssl/arm_arch.h>

#if __ARM_MAX_ARCH__>=7
.text
.arch armv8-a+crypto
.globl gcm_init_v8
Expand Down Expand Up @@ -570,5 +571,6 @@ gcm_ghash_v8_4x:
.align 2
.align 2
#endif
#endif
#endif // !OPENSSL_NO_ASM
.section .note.GNU-stack,"",%progbits
73 changes: 36 additions & 37 deletions generated-src/linux-aarch64/crypto/fipsmodule/p256-armv8-asm.S
Original file line number Diff line number Diff line change
Expand Up @@ -136,28 +136,27 @@ ecp_nistz256_sqr_mont:

// void ecp_nistz256_add(BN_ULONG x0[4],const BN_ULONG x1[4],
// const BN_ULONG x2[4]);
.globl ecp_nistz256_add
.hidden ecp_nistz256_add
.type ecp_nistz256_add,%function
.align 4
ecp_nistz256_add:
.inst 0xd503233f // paciasp
stp x29,x30,[sp,#-16]!
add x29,sp,#0

ldp x14,x15,[x1]
ldp x8,x9,[x2]
ldp x16,x17,[x1,#16]
ldp x10,x11,[x2,#16]
ldr x12,.Lpoly+8
ldr x13,.Lpoly+24

bl __ecp_nistz256_add

ldp x29,x30,[sp],#16
.inst 0xd50323bf // autiasp
ret
.size ecp_nistz256_add,.-ecp_nistz256_add
///.globl ecp_nistz256_add
///.type ecp_nistz256_add,%function
///.align 4
///ecp_nistz256_add:
/// .inst 0xd503233f // paciasp
/// stp x29,x30,[sp,#-16]!
/// add x29,sp,#0
///
/// ldp x14,x15,[x1]
/// ldp x8,x9,[x2]
/// ldp x16,x17,[x1,#16]
/// ldp x10,x11,[x2,#16]
/// ldr x12,.Lpoly+8
/// ldr x13,.Lpoly+24
///
/// bl __ecp_nistz256_add_to
///
/// ldp x29,x30,[sp],#16
/// .inst 0xd50323bf // autiasp
/// ret
///.size ecp_nistz256_add,.-ecp_nistz256_add

// void ecp_nistz256_div_by_2(BN_ULONG x0[4],const BN_ULONG x1[4]);
.globl ecp_nistz256_div_by_2
Expand Down Expand Up @@ -200,7 +199,7 @@ ecp_nistz256_mul_by_2:
mov x10,x16
mov x11,x17

bl __ecp_nistz256_add // ret = a+a // 2*a
bl __ecp_nistz256_add_to // ret = a+a // 2*a

ldp x29,x30,[sp],#16
.inst 0xd50323bf // autiasp
Expand Down Expand Up @@ -230,14 +229,14 @@ ecp_nistz256_mul_by_3:
mov x6,x16
mov x7,x17

bl __ecp_nistz256_add // ret = a+a // 2*a
bl __ecp_nistz256_add_to // ret = a+a // 2*a

mov x8,x4
mov x9,x5
mov x10,x6
mov x11,x7

bl __ecp_nistz256_add // ret += a // 2*a+a=3*a
bl __ecp_nistz256_add_to // ret += a // 2*a+a=3*a

ldp x29,x30,[sp],#16
.inst 0xd50323bf // autiasp
Expand Down Expand Up @@ -551,12 +550,12 @@ __ecp_nistz256_sqr_mont:
ret
.size __ecp_nistz256_sqr_mont,.-__ecp_nistz256_sqr_mont

// Note that __ecp_nistz256_add expects both input vectors pre-loaded to
// Note that __ecp_nistz256_add_to expects both input vectors pre-loaded to
// x4-x7 and x8-x11. This is done because it's used in multiple
// contexts, e.g. in multiplication by 2 and 3...
.type __ecp_nistz256_add,%function
.type __ecp_nistz256_add_to,%function
.align 4
__ecp_nistz256_add:
__ecp_nistz256_add_to:
adds x14,x14,x8 // ret = a+b
adcs x15,x15,x9
adcs x16,x16,x10
Expand All @@ -577,7 +576,7 @@ __ecp_nistz256_add:
stp x16,x17,[x0,#16]

ret
.size __ecp_nistz256_add,.-__ecp_nistz256_add
.size __ecp_nistz256_add_to,.-__ecp_nistz256_add_to

.type __ecp_nistz256_sub_from,%function
.align 4
Expand Down Expand Up @@ -688,7 +687,7 @@ ecp_nistz256_point_double:
mov x11,x17
ldp x6,x7,[x22,#64+16]
add x0,sp,#0
bl __ecp_nistz256_add // p256_mul_by_2(S, in_y);
bl __ecp_nistz256_add_to // p256_mul_by_2(S, in_y);

add x0,sp,#64
bl __ecp_nistz256_sqr_mont // p256_sqr_mont(Zsqr, in_z);
Expand All @@ -700,7 +699,7 @@ ecp_nistz256_point_double:
mov x6,x16
mov x7,x17
add x0,sp,#32
bl __ecp_nistz256_add // p256_add(M, Zsqr, in_x);
bl __ecp_nistz256_add_to // p256_add(M, Zsqr, in_x);

add x2,x22,#0
mov x14,x4 // restore Zsqr
Expand Down Expand Up @@ -729,7 +728,7 @@ ecp_nistz256_point_double:
mov x11,x17
ldp x6,x7,[sp,#0+16]
add x0,x21,#64
bl __ecp_nistz256_add // p256_mul_by_2(res_z, tmp0);
bl __ecp_nistz256_add_to // p256_mul_by_2(res_z, tmp0);

add x0,sp,#96
bl __ecp_nistz256_sqr_mont // p256_sqr_mont(tmp0, S);
Expand All @@ -753,15 +752,15 @@ ecp_nistz256_point_double:
mov x6,x16
mov x7,x17
add x0,sp,#32
bl __ecp_nistz256_add
bl __ecp_nistz256_add_to
mov x8,x4 // restore M
mov x9,x5
ldr x3,[x22] // forward load for p256_mul_mont
mov x10,x6
ldp x4,x5,[sp,#0]
mov x11,x7
ldp x6,x7,[sp,#0+16]
bl __ecp_nistz256_add // p256_mul_by_3(M, M);
bl __ecp_nistz256_add_to // p256_mul_by_3(M, M);

add x2,x22,#0
add x0,sp,#0
Expand All @@ -774,7 +773,7 @@ ecp_nistz256_point_double:
mov x11,x17
ldp x6,x7,[sp,#32+16]
add x0,sp,#96
bl __ecp_nistz256_add // p256_mul_by_2(tmp0, S);
bl __ecp_nistz256_add_to // p256_mul_by_2(tmp0, S);

add x0,x21,#0
bl __ecp_nistz256_sqr_mont // p256_sqr_mont(res_x, M);
Expand Down Expand Up @@ -964,7 +963,7 @@ ecp_nistz256_point_add:
mov x10,x16
mov x11,x17
add x0,sp,#128
bl __ecp_nistz256_add // p256_mul_by_2(Hsqr, U2);
bl __ecp_nistz256_add_to // p256_mul_by_2(Hsqr, U2);

add x2,sp,#192
add x0,sp,#0
Expand Down Expand Up @@ -1172,7 +1171,7 @@ ecp_nistz256_point_add_affine:
mov x10,x16
mov x11,x17
add x0,sp,#224
bl __ecp_nistz256_add // p256_mul_by_2(Hsqr, U2);
bl __ecp_nistz256_add_to // p256_mul_by_2(Hsqr, U2);

add x2,sp,#288
add x0,sp,#0
Expand Down
Loading

0 comments on commit 82c4e35

Please sign in to comment.