hsblst 0.0.4 → 0.0.5
raw patch · 52 files changed
+3328/−2363 lines, 52 filesdep +ramdep −memorydep ~base16-bytestringdep ~deepseqdep ~textPVP ok
version bump matches the API change (PVP)
Dependencies added: ram
Dependencies removed: memory
Dependency ranges changed: base16-bytestring, deepseq, text
API changes (from Hackage documentation)
Files
- CHANGELOG.md +6/−0
- README.md +4/−0
- c-source/README.md +2/−2
- c-source/bindings/blst.h +9/−7
- c-source/build/cheri/add_mod_256-armv8.S +22/−0
- c-source/build/cheri/add_mod_384-armv8.S +58/−30
- c-source/build/cheri/ct_inverse_mod_256-armv8.S +48/−70
- c-source/build/cheri/ct_inverse_mod_384-armv8.S +224/−151
- c-source/build/cheri/ct_is_square_mod_384-armv8.S +20/−2
- c-source/build/cheri/div3w-armv8.S +21/−0
- c-source/build/cheri/mul_mont_256-armv8.S +25/−6
- c-source/build/cheri/mul_mont_384-armv8.S +52/−32
- c-source/build/cheri/sha256-armv8.S +25/−0
- c-source/build/coff/add_mod_256-armv8.S +4/−0
- c-source/build/coff/add_mod_384-armv8.S +40/−30
- c-source/build/coff/ct_inverse_mod_256-armv8.S +30/−70
- c-source/build/coff/ct_inverse_mod_384-armv8.S +201/−146
- c-source/build/coff/ct_is_square_mod_384-armv8.S +2/−2
- c-source/build/coff/ctq_inverse_mod_384-x86_64.s +212/−145
- c-source/build/coff/ctx_inverse_mod_384-x86_64.s +328/−260
- c-source/build/coff/div3w-armv8.S +3/−0
- c-source/build/coff/mul_mont_256-armv8.S +7/−6
- c-source/build/coff/mul_mont_384-armv8.S +34/−32
- c-source/build/coff/sha256-armv8.S +7/−0
- c-source/build/elf/add_mod_256-armv8.S +22/−0
- c-source/build/elf/add_mod_384-armv8.S +58/−30
- c-source/build/elf/ct_inverse_mod_256-armv8.S +48/−70
- c-source/build/elf/ct_inverse_mod_384-armv8.S +224/−151
- c-source/build/elf/ct_is_square_mod_384-armv8.S +20/−2
- c-source/build/elf/ctq_inverse_mod_384-x86_64.s +201/−134
- c-source/build/elf/ctx_inverse_mod_384-x86_64.s +318/−250
- c-source/build/elf/div3w-armv8.S +21/−0
- c-source/build/elf/mul_mont_256-armv8.S +25/−6
- c-source/build/elf/mul_mont_384-armv8.S +52/−32
- c-source/build/elf/sha256-armv8.S +25/−0
- c-source/build/mach-o/add_mod_256-armv8.S +4/−0
- c-source/build/mach-o/add_mod_384-armv8.S +40/−30
- c-source/build/mach-o/ct_inverse_mod_256-armv8.S +30/−70
- c-source/build/mach-o/ct_inverse_mod_384-armv8.S +198/−143
- c-source/build/mach-o/ct_is_square_mod_384-armv8.S +2/−2
- c-source/build/mach-o/ctq_inverse_mod_384-x86_64.s +193/−126
- c-source/build/mach-o/ctx_inverse_mod_384-x86_64.s +308/−240
- c-source/build/mach-o/div3w-armv8.S +3/−0
- c-source/build/mach-o/mul_mont_256-armv8.S +7/−6
- c-source/build/mach-o/mul_mont_384-armv8.S +34/−32
- c-source/build/mach-o/sha256-armv8.S +7/−0
- c-source/src/cpuid.c +49/−3
- c-source/src/ec_mult.h +1/−2
- c-source/src/multi_scalar.c +33/−14
- c-source/src/recip.c +2/−12
- c-source/src/vect.h +3/−5
- hsblst.cabal +16/−12
CHANGELOG.md view
@@ -3,6 +3,12 @@ - SPDX-License-Identifier: MPL-2.0 --> +## v0.0.5++* Moved to ram instead of memory+* Added ForeignFunctionInterface to extensions for cabal to build successfully+* Bundled blst version bumped to v0.3.16+ ## v0.0.4 * Bundled blst version bumped to v0.3.13
README.md view
@@ -11,6 +11,10 @@ This package includes sources from v0.3.13 version of BLST, licensed under [Apache License 2.0](https://github.com/supranational/blst/blob/master/LICENSE) +## Known Issues++- Fails to build on Windows with GHC 9.12.3, seems to be a GHC bug.+ ## Build Instructions [↑](#hsblst) Run `make` to build everything.
c-source/README.md view
@@ -1,4 +1,4 @@-[](https://travis-ci.com/github/supranational/blst) [](https://github.com/supranational/blst/actions) [](https://github.com/supranational/blst/actions/workflows/codeql-analysis.yml)+[](https://github.com/supranational/blst/actions) [](https://github.com/supranational/blst/actions/workflows/codeql-analysis.yml) <div align="left"> <img src=blst_logo_small.png> </div>@@ -212,7 +212,7 @@ * **Asm** - folder containing Perl scripts that are used to generate assembly code for different hardware platforms including x86 with ADX instructions, x86 without ADX instructions, and ARMv8, and [ABI](https://en.wikipedia.org/wiki/Application_binary_interface)[1] * **Build** - this folder containing a set of pre-generated assembly files for a variety of operating systems and maintenance scripts. * **Cheri** - assembly code for use on [CHERI](https://www.cl.cam.ac.uk/research/security/ctsrd/cheri/) platforms- * **Coff** - assembly code for use on Window systems with GNU toolchain+ * **Coff** - assembly code for use on Windows systems with GNU or LLVM toolchain * **Elf** - assembly code for use on Unix systems * **Mach-o** - assembly code for use on Apple operating systems * **Win64** - assembly code for use on Windows systems with Microsoft toolchain
c-source/bindings/blst.h view
@@ -23,15 +23,17 @@ #ifdef __cplusplus extern "C" {-#elif defined(__BLST_CGO__)+#elif !defined(__STDC_VERSION__) || __STDC_VERSION__<202311+# if defined(__BLST_CGO__) typedef _Bool bool; /* it's assumed that cgo calls modern enough compiler */-#elif !defined(bool)-# if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901-# define bool _Bool-# else-# define bool int+# elif !defined(bool)+# if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901+# define bool _Bool+# else+# define bool int+# endif+# define __blst_h_bool__ # endif-# define __blst_h_bool__ #endif #ifdef SWIG
c-source/build/cheri/add_mod_256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text .globl add_mod_256@@ -5,6 +13,7 @@ .type add_mod_256,%function .align 5 add_mod_256:+ hint #34 ldp x8,x9,[c1] ldp x12,x13,[c2] @@ -39,6 +48,7 @@ .type mul_by_3_mod_256,%function .align 5 mul_by_3_mod_256:+ hint #34 ldp x12,x13,[c1] ldp x14,x15,[c1,#16] @@ -88,6 +98,7 @@ .type lshift_mod_256,%function .align 5 lshift_mod_256:+ hint #34 ldp x8,x9,[c1] ldp x10,x11,[c1,#16] @@ -126,6 +137,7 @@ .type rshift_mod_256,%function .align 5 rshift_mod_256:+ hint #34 ldp x8,x9,[c1] ldp x10,x11,[c1,#16] @@ -377,3 +389,13 @@ ret .size sub_n_check_mod_256,.-sub_n_check_mod_256++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/cheri/add_mod_384-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text .globl add_mod_384@@ -5,7 +13,7 @@ .type add_mod_384,%function .align 5 add_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-6*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -25,7 +33,7 @@ ldp c19,c20,[c29,#2*__SIZEOF_POINTER__] ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldr c29,[csp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size add_mod_384,.-add_mod_384 @@ -71,7 +79,7 @@ .type add_mod_384x,%function .align 5 add_mod_384x:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-6*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -99,7 +107,7 @@ ldp c19,c20,[c29,#2*__SIZEOF_POINTER__] ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldr c29,[csp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size add_mod_384x,.-add_mod_384x @@ -108,7 +116,7 @@ .type rshift_mod_384,%function .align 5 rshift_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-6*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -135,7 +143,7 @@ ldp c19,c20,[c29,#2*__SIZEOF_POINTER__] ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldr c29,[csp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size rshift_mod_384,.-rshift_mod_384 @@ -170,7 +178,7 @@ .type div_by_2_mod_384,%function .align 5 div_by_2_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-6*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -194,7 +202,7 @@ ldp c19,c20,[c29,#2*__SIZEOF_POINTER__] ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldr c29,[csp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size div_by_2_mod_384,.-div_by_2_mod_384 @@ -203,7 +211,7 @@ .type lshift_mod_384,%function .align 5 lshift_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-6*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -230,7 +238,7 @@ ldp c19,c20,[c29,#2*__SIZEOF_POINTER__] ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldr c29,[csp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size lshift_mod_384,.-lshift_mod_384 @@ -268,7 +276,7 @@ .type mul_by_3_mod_384,%function .align 5 mul_by_3_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-6*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -298,7 +306,7 @@ ldp c19,c20,[c29,#2*__SIZEOF_POINTER__] ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldr c29,[csp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_by_3_mod_384,.-mul_by_3_mod_384 @@ -307,7 +315,7 @@ .type mul_by_8_mod_384,%function .align 5 mul_by_8_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-6*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -333,7 +341,7 @@ ldp c19,c20,[c29,#2*__SIZEOF_POINTER__] ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldr c29,[csp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_by_8_mod_384,.-mul_by_8_mod_384 @@ -342,7 +350,7 @@ .type mul_by_3_mod_384x,%function .align 5 mul_by_3_mod_384x:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-6*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -387,7 +395,7 @@ ldp c19,c20,[c29,#2*__SIZEOF_POINTER__] ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldr c29,[csp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_by_3_mod_384x,.-mul_by_3_mod_384x @@ -396,7 +404,7 @@ .type mul_by_8_mod_384x,%function .align 5 mul_by_8_mod_384x:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-6*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -433,7 +441,7 @@ ldp c19,c20,[c29,#2*__SIZEOF_POINTER__] ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldr c29,[csp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_by_8_mod_384x,.-mul_by_8_mod_384x @@ -442,7 +450,7 @@ .type cneg_mod_384,%function .align 5 cneg_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-6*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -484,7 +492,7 @@ ldp c19,c20,[c29,#2*__SIZEOF_POINTER__] ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldr c29,[csp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size cneg_mod_384,.-cneg_mod_384 @@ -493,7 +501,7 @@ .type sub_mod_384,%function .align 5 sub_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-6*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -513,7 +521,7 @@ ldp c19,c20,[c29,#2*__SIZEOF_POINTER__] ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldr c29,[csp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sub_mod_384,.-sub_mod_384 @@ -556,7 +564,7 @@ .type sub_mod_384x,%function .align 5 sub_mod_384x:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-6*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -584,7 +592,7 @@ ldp c19,c20,[c29,#2*__SIZEOF_POINTER__] ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldr c29,[csp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sub_mod_384x,.-sub_mod_384x @@ -593,7 +601,7 @@ .type mul_by_1_plus_i_mod_384x,%function .align 5 mul_by_1_plus_i_mod_384x:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-6*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -626,7 +634,7 @@ ldp c19,c20,[c29,#2*__SIZEOF_POINTER__] ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldr c29,[csp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_by_1_plus_i_mod_384x,.-mul_by_1_plus_i_mod_384x @@ -635,6 +643,7 @@ .type sgn0_pty_mod_384,%function .align 5 sgn0_pty_mod_384:+ hint #34 ldp x10,x11,[c0] ldp x12,x13,[c0,#16] ldp x14,x15,[c0,#32]@@ -672,6 +681,7 @@ .type sgn0_pty_mod_384x,%function .align 5 sgn0_pty_mod_384x:+ hint #34 ldp x10,x11,[c0] ldp x12,x13,[c0,#16] ldp x14,x15,[c0,#32]@@ -753,14 +763,14 @@ .type vec_select_32,%function .align 5 vec_select_32:+ hint #34 dup v6.2d, x3- ld1 {v0.2d, v1.2d, v2.2d}, [c1],#48+ ld1 {v0.2d, v1.2d}, [c1] cmeq v6.2d, v6.2d, #0- ld1 {v3.2d, v4.2d, v5.2d}, [c2],#48+ ld1 {v3.2d, v4.2d}, [c2] bit v0.16b, v3.16b, v6.16b bit v1.16b, v4.16b, v6.16b- bit v2.16b, v5.16b, v6.16b- st1 {v0.2d, v1.2d, v2.2d}, [c0]+ st1 {v0.2d, v1.2d}, [c0] ret .size vec_select_32,.-vec_select_32 .globl vec_select_48@@ -768,6 +778,7 @@ .type vec_select_48,%function .align 5 vec_select_48:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [c1],#48 cmeq v6.2d, v6.2d, #0@@ -783,6 +794,7 @@ .type vec_select_96,%function .align 5 vec_select_96:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [c1],#48 cmeq v6.2d, v6.2d, #0@@ -804,6 +816,7 @@ .type vec_select_192,%function .align 5 vec_select_192:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [c1],#48 cmeq v6.2d, v6.2d, #0@@ -837,6 +850,7 @@ .type vec_select_144,%function .align 5 vec_select_144:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [c1],#48 cmeq v6.2d, v6.2d, #0@@ -864,6 +878,7 @@ .type vec_select_288,%function .align 5 vec_select_288:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [c1],#48 cmeq v6.2d, v6.2d, #0@@ -909,6 +924,7 @@ .type vec_prefetch,%function .align 5 vec_prefetch:+ hint #34 add x1, x1, x0 sub x1, x1, #1 mov x2, #64@@ -949,6 +965,7 @@ .type vec_is_zero_16x,%function .align 5 vec_is_zero_16x:+ hint #34 ld1 {v0.2d}, [c0], #16 lsr x1, x1, #4 sub x1, x1, #1@@ -974,6 +991,7 @@ .type vec_is_equal_16x,%function .align 5 vec_is_equal_16x:+ hint #34 ld1 {v0.2d}, [c0], #16 ld1 {v1.2d}, [c1], #16 lsr x2, x2, #4@@ -998,3 +1016,13 @@ csel x0, x0, xzr, eq ret .size vec_is_equal_16x,.-vec_is_equal_16x++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/cheri/ct_inverse_mod_256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text .globl ct_inverse_mod_256@@ -5,7 +13,7 @@ .type ct_inverse_mod_256, %function .align 5 ct_inverse_mod_256:- .inst 0xd503233f+ hint #PACI_HINT stp c29, c30, [csp,#-10*__SIZEOF_POINTER__]! add c29, csp, #0 stp c19, c20, [csp,#2*__SIZEOF_POINTER__]@@ -48,7 +56,7 @@ mov x13, x15 // |g1| add c0,c0,#8*4 bl __smul_256_n_shift_by_31- str x12, [c0,#8*9] // initialize |v| with |f1|+ str x12, [c0,#8*10] // initialize |v| with |f1| ////////////////////////////////////////// second iteration eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -71,19 +79,17 @@ bl __smul_256_n_shift_by_31 ldr x8, [c1,#8*8] // |u|- ldr x9, [c1,#8*13] // |v|+ ldr x9, [c1,#8*14] // |v| madd x4, x16, x8, xzr // |u|*|f0| madd x4, x17, x9, x4 // |v|*|g0|- str x4, [c0,#8*4] asr x5, x4, #63 // sign extension- stp x5, x5, [c0,#8*5]- stp x5, x5, [c0,#8*7]+ stp x4, x5, [c0,#8*4]+ stp x5, x5, [c0,#8*6] madd x4, x12, x8, xzr // |u|*|f1| madd x4, x13, x9, x4 // |v|*|g1|- str x4, [c0,#8*9] asr x5, x4, #63 // sign extension- stp x5, x5, [c0,#8*10]+ stp x4, x5, [c0,#8*10] stp x5, x5, [c0,#8*12] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__@@ -106,16 +112,10 @@ add c0,c0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [c0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add c0,c0,#8*5+ add c0,c0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [c0,#8*4]- stp x22, x22, [c0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -137,16 +137,10 @@ add c0,c0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [c0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add c0,c0,#8*5+ add c0,c0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [c0,#8*4]- stp x22, x22, [c0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -168,16 +162,10 @@ add c0,c0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [c0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add c0,c0,#8*5+ add c0,c0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [c0,#8*4]- stp x22, x22, [c0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -199,16 +187,10 @@ add c0,c0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [c0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add c0,c0,#8*5+ add c0,c0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [c0,#8*4]- stp x22, x22, [c0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -230,16 +212,10 @@ add c0,c0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [c0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add c0,c0,#8*5+ add c0,c0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [c0,#8*4]- stp x22, x22, [c0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -261,16 +237,15 @@ add c0,c0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [c0,#8*4]-+ asr x24, x24, #63+ str x24, [c0,#8*4] mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add c0,c0,#8*5+ add c0,c0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [c0,#8*4]- stp x22, x22, [c0,#8*6]+ asr x24, x24, #63 // sign extension+ stp x24, x24, [c0,#8*4]+ stp x24, x24, [c0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -294,10 +269,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [c0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add c0,c0,#8*5+ add c0,c0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -323,10 +297,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [c0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add c0,c0,#8*5+ add c0,c0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -352,10 +325,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [c0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add c0,c0,#8*5+ add c0,c0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -381,10 +353,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [c0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add c0,c0,#8*5+ add c0,c0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -410,10 +381,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [c0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add c0,c0,#8*5+ add c0,c0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -439,10 +409,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [c0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add c0,c0,#8*5+ add c0,c0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -468,10 +437,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [c0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add c0,c0,#8*5+ add c0,c0,#8*6 bl __smul_256x63 bl __smul_512x63_tail ////////////////////////////////////////// two[!] last iterations@@ -541,7 +509,7 @@ ldp c23, c24, [c29,#6*__SIZEOF_POINTER__] ldp c25, c26, [c29,#8*__SIZEOF_POINTER__] ldr c29, [csp],#10*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size ct_inverse_mod_256,.-ct_inverse_mod_256 @@ -579,11 +547,11 @@ adcs x6, x6, x20 adcs x24, x24, x21 adc x26, xzr, xzr- ldp x8, x9, [c1,#8*0+104] // load |u| (or |v|)+ ldp x8, x9, [c1,#8*0+112] // load |u| (or |v|) asr x14, x17, #63 // |f_|'s sign as mask (or |g_|'s)- ldp x10, x11, [c1,#8*2+104]+ ldp x10, x11, [c1,#8*2+112] eor x17, x17, x14 // conditionally negate |f_| (or |g_|)- ldr x23, [c1,#8*4+104]+ ldr x23, [c1,#8*4+112] eor x8, x8, x14 // conditionally negate |u| (or |v|) sub x17, x17, x14@@ -625,9 +593,9 @@ .align 5 __smul_512x63_tail: umulh x24, x7, x16- ldp x5, x6, [c1,#8*18] // load rest of |v|+ ldr x5, [c1,#8*19] // load rest of |v| adc x26, x26, xzr- ldr x7, [c1,#8*20]+ ldp x6, x7, [c1,#8*20] and x22, x22, x16 umulh x11, x11, x17 // resume |v|*|g1| chain@@ -878,3 +846,13 @@ ret .size __inner_loop_62_256,.-__inner_loop_62_256++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/cheri/ct_inverse_mod_384-armv8.S view
@@ -1,11 +1,19 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text -.globl ct_inverse_mod_383-.hidden ct_inverse_mod_383-.type ct_inverse_mod_383, %function+.globl ct_inverse_mod_384+.hidden ct_inverse_mod_384+.type ct_inverse_mod_384, %function .align 5-ct_inverse_mod_383:- .inst 0xd503233f+ct_inverse_mod_384:+ hint #PACI_HINT stp c29, c30, [csp,#-16*__SIZEOF_POINTER__]! add c29, csp, #0 stp c19, c20, [csp,#2*__SIZEOF_POINTER__]@@ -47,14 +55,14 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 str x15,[c0,#8*12] // initialize |u| with |f0| mov x15, x17 // |f1| mov x16, x19 // |g1| add c0,c0,#8*6- bl __smul_383_n_shift_by_62- str x15, [c0,#8*12] // initialize |v| with |f1|+ bl __smul_384_n_shift_by_62+ str x15, [c0,#8*14] // initialize |v| with |f1| ////////////////////////////////////////// second iteration eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -68,17 +76,17 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add c0,c0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 ldr x7, [c1,#8*12] // |u|- ldr x8, [c1,#8*18] // |v|+ ldr x8, [c1,#8*20] // |v| mul x3, x20, x7 // |u|*|f0| smulh x4, x20, x7 mul x5, x21, x8 // |v|*|g0|@@ -96,10 +104,10 @@ smulh x6, x16, x8 adds x3, x3, x5 adc x4, x4, x6- stp x3, x4, [c0,#8*12]+ stp x3, x4, [c0,#8*14] asr x5, x4, #63 // sign extension- stp x5, x5, [c0,#8*14] stp x5, x5, [c0,#8*16]+ stp x5, x5, [c0,#8*18] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -111,22 +119,21 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add c0,c0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add c0,c0,#8*6- bl __smul_383x63-+ bl __smul_384x63 mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add c0,c0,#8*6- bl __smul_383x63+ add c0,c0,#8*8+ bl __smul_384x63 eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -138,22 +145,21 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add c0,c0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add c0,c0,#8*6- bl __smul_383x63-+ bl __smul_384x63 mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add c0,c0,#8*6- bl __smul_383x63+ add c0,c0,#8*8+ bl __smul_384x63 eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -165,22 +171,21 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add c0,c0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add c0,c0,#8*6- bl __smul_383x63-+ bl __smul_384x63 mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add c0,c0,#8*6- bl __smul_383x63+ add c0,c0,#8*8+ bl __smul_384x63 eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -192,22 +197,23 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add c0,c0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add c0,c0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ asr x27, x27, #63+ str x27, [c0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add c0,c0,#8*6- bl __smul_383x63+ add c0,c0,#8*8+ bl __smul_384x63 asr x27, x27, #63 // sign extension stp x27, x27, [c0,#8*6] stp x27, x27, [c0,#8*8]@@ -223,23 +229,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add c0,c0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add c0,c0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [c0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add c0,c0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add c0,c0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -251,23 +258,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add c0,c0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add c0,c0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [c0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add c0,c0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add c0,c0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -279,23 +287,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add c0,c0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add c0,c0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [c0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add c0,c0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add c0,c0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -307,23 +316,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add c0,c0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add c0,c0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [c0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add c0,c0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add c0,c0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -335,23 +345,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add c0,c0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add c0,c0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [c0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add c0,c0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add c0,c0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail ////////////////////////////////////////// iteration before last eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__@@ -375,20 +386,22 @@ mov x15, x17 mov x16, x19 add c0,c0,#8*12- bl __smul_383x63+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [c0,#8*6] mov x20, x15 // exact |f1| mov x21, x16 // exact |g1|- add c0,c0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add c0,c0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail ////////////////////////////////////////// last iteration eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1 #endif- mov x2, #22 // 766 % 62+ mov x2, #24 // 768 % 62 //bl __ab_approximation_62 // |a| and |b| are exact, ldr x3, [c1,#8*0] // just load eor x8, x8, x8@@ -399,25 +412,60 @@ mov x20, x17 mov x21, x19 ldp c0, c15, [csp] // original out_ptr and n_ptr- bl __smul_383x63- bl __smul_767x63_tail+ bl __smul_384x63+ bl __smul_768x63_tail ldr c30, [c29,#__SIZEOF_POINTER__] - asr x22, x8, #63 // sign as mask- ldp x9, x10, [c15,#8*0]+ smulh x23, x8, x21 // figure out top-most limb+ adc x26, x26, x28+ ldp x9, x10, [c15,#8*0] // load |mod|+ add x23, x23, x26 // x23 is 1, 0 or -1 ldp x11, x12, [c15,#8*2]+ asr x22, x23, #63 // sign as mask ldp x13, x14, [c15,#8*4] - and x9, x9, x22 // add mod<<384 conditionally- and x10, x10, x22- adds x3, x3, x9- and x11, x11, x22+ and x26, x9, x22 // add mod<<384 conditionally+ and x27, x10, x22+ adds x3, x3, x26+ and x28, x11, x22+ adcs x4, x4, x27+ and x2, x12, x22+ adcs x5, x5, x28+ and x26, x13, x22+ adcs x6, x6, x2+ and x27, x14, x22+ adcs x7, x7, x26+ adcs x8, x25, x27+ adc x23, x23, xzr // x23 is 1, 0 or -1++ neg x22, x23+ orr x23, x23, x22 // excess bit or sign as mask+ asr x22, x22, #63 // excess bit as mask++ and x9, x9, x23 // mask |mod|+ and x10, x10, x23+ and x11, x11, x23+ and x12, x12, x23+ and x13, x13, x23+ and x14, x14, x23++ eor x9, x9, x22 // conditionally negate |mod|+ eor x10, x10, x22+ adds x9, x9, x22, lsr#63+ eor x11, x11, x22+ adcs x10, x10, xzr+ eor x12, x12, x22+ adcs x11, x11, xzr+ eor x13, x13, x22+ adcs x12, x12, xzr+ eor x14, x14, x22+ adcs x13, x13, xzr+ adc x14, x14, xzr++ adds x3, x3, x9 // final adjustment for |mod|<<384 adcs x4, x4, x10- and x12, x12, x22 adcs x5, x5, x11- and x13, x13, x22 adcs x6, x6, x12- and x14, x14, x22 stp x3, x4, [c0,#8*6] adcs x7, x7, x13 stp x5, x6, [c0,#8*8]@@ -431,15 +479,15 @@ ldp c25, c26, [c29,#8*__SIZEOF_POINTER__] ldp c27, c28, [c29,#10*__SIZEOF_POINTER__] ldr c29, [csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret-.size ct_inverse_mod_383,.-ct_inverse_mod_383+.size ct_inverse_mod_384,.-ct_inverse_mod_384 //////////////////////////////////////////////////////////////////////// // see corresponding commentary in ctx_inverse_mod_384-x86_64...-.type __smul_383x63, %function+.type __smul_384x63, %function .align 5-__smul_383x63:+__smul_384x63: ldp x3, x4, [c1,#8*0+96] // load |u| (or |v|) asr x17, x20, #63 // |f_|'s sign as mask (or |g_|'s) ldp x5, x6, [c1,#8*2+96]@@ -447,6 +495,7 @@ ldp x7, x8, [c1,#8*4+96] eor x3, x3, x17 // conditionally negate |u| (or |v|)+ ldr x25, [c1,#8*6+96] sub x20, x20, x17 eor x4, x4, x17 adds x3, x3, x17, lsr#63@@ -461,28 +510,33 @@ umulh x23, x4, x20 adcs x7, x7, xzr umulh x24, x5, x20- adcs x8, x8, xzr- umulh x25, x6, x20- umulh x26, x7, x20+ eor x25, x25, x17 mul x3, x3, x20+ adcs x8, x8, xzr mul x4, x4, x20+ adcs x25, x25, xzr+ cmp x20, #0 mul x5, x5, x20+ csel x25, x25, xzr, ne adds x4, x4, x22- mul x6, x6, x20+ umulh x22, x6, x20 adcs x5, x5, x23+ umulh x23, x7, x20+ mul x6, x6, x20 mul x7, x7, x20 adcs x6, x6, x24 mul x27,x8, x20- adcs x7, x7, x25- adcs x27,x27,x26+ adcs x7, x7, x22+ adcs x27,x27,x23 adc x2, xzr, xzr- ldp x9, x10, [c1,#8*0+144] // load |u| (or |v|)+ ldp x9, x10, [c1,#8*0+160] // load |u| (or |v|) asr x17, x21, #63 // |f_|'s sign as mask (or |g_|'s)- ldp x11, x12, [c1,#8*2+144]+ ldp x11, x12, [c1,#8*2+160] eor x21, x21, x17 // conditionally negate |f_| (or |g_|)- ldp x13, x14, [c1,#8*4+144]+ ldp x13, x14, [c1,#8*4+160] eor x9, x9, x17 // conditionally negate |u| (or |v|)+ ldr x26, [c1,#8*6+160] sub x21, x21, x17 eor x10, x10, x17 adds x9, x9, x17, lsr#63@@ -497,21 +551,25 @@ umulh x23, x10, x21 adcs x13, x13, xzr umulh x24, x11, x21- adcs x14, x14, xzr- umulh x25, x12, x21- adc x19, xzr, xzr // used in __smul_767x63_tail- umulh x26, x13, x21+ eor x26, x26, x17 mul x9, x9, x21+ adcs x14, x14, xzr mul x10, x10, x21+ adcs x26, x26, xzr+ adc x19, xzr, xzr // used in __smul_768x63_tail+ cmp x21, #0 mul x11, x11, x21+ csel x26, x26, xzr, ne adds x10, x10, x22- mul x12, x12, x21+ umulh x22, x12, x21 adcs x11, x11, x23+ umulh x23, x13, x21+ mul x12, x12, x21 mul x13, x13, x21 adcs x12, x12, x24 mul x28,x14, x21- adcs x13, x13, x25- adcs x28,x28,x26+ adcs x13, x13, x22+ adcs x28,x28,x23 adc x2, x2, xzr adds x3, x3, x9@@ -523,41 +581,41 @@ stp x5, x6, [c0,#8*2] adcs x27, x27, x28 stp x7, x27, [c0,#8*4]- adc x28, x2, xzr // used in __smul_767x63_tail ret-.size __smul_383x63,.-__smul_383x63+.size __smul_384x63,.-__smul_384x63 -.type __smul_767x63_tail, %function+.type __smul_768x63_tail, %function .align 5-__smul_767x63_tail:- smulh x27, x8, x20- ldp x3, x4, [c1,#8*24] // load rest of |v|- umulh x14,x14, x21- ldp x5, x6, [c1,#8*26]- ldp x7, x8, [c1,#8*28]+__smul_768x63_tail:+ umulh x27, x8, x20+ ldr x4, [c1,#8*27]// load rest of |v|+ adc x2, x2, xzr+ ldp x5, x6, [c1,#8*28]+ and x25, x25, x20+ ldp x7, x8, [c1,#8*30]+ sub x27, x27, x25 // tie up |u|*|f1| chain - eor x3, x3, x17 // conditionally negate rest of |v|- eor x4, x4, x17+ umulh x14, x14, x21 // resume |v|*|g1| chain+ eor x4, x4, x17 // conditionally negate rest of |v| eor x5, x5, x17- adds x3, x3, x19 eor x6, x6, x17- adcs x4, x4, xzr+ adds x4, x4, x19 eor x7, x7, x17 adcs x5, x5, xzr eor x8, x8, x17 adcs x6, x6, xzr- umulh x22, x3, x21+ umulh x22, x26, x21 adcs x7, x7, xzr umulh x23, x4, x21 adc x8, x8, xzr umulh x24, x5, x21- add x14, x14, x28+ add x14, x14, x2 umulh x25, x6, x21 asr x28, x27, #63- umulh x26, x7, x21- mul x3, x3, x21+ umulh x2, x7, x21+ mul x3, x26, x21 mul x4, x4, x21 mul x5, x5, x21 adds x3, x3, x14@@ -565,10 +623,11 @@ adcs x4, x4, x22 mul x7, x7, x21 adcs x5, x5, x23- mul x8, x8, x21+ mul x22, x8, x21 adcs x6, x6, x24 adcs x7, x7, x25- adc x8, x8, x26+ adcs x25, x22, x2+ adc x26, xzr, xzr // used in the final step adds x3, x3, x27 adcs x4, x4, x28@@ -577,15 +636,15 @@ stp x3, x4, [c0,#8*6] adcs x7, x7, x28 stp x5, x6, [c0,#8*8]- adc x8, x8, x28- stp x7, x8, [c0,#8*10]+ adcs x25, x25, x28 // carry is used in the final step+ stp x7, x25, [c0,#8*10] ret-.size __smul_767x63_tail,.-__smul_767x63_tail+.size __smul_768x63_tail,.-__smul_768x63_tail -.type __smul_383_n_shift_by_62, %function+.type __smul_384_n_shift_by_62, %function .align 5-__smul_383_n_shift_by_62:+__smul_384_n_shift_by_62: ldp x3, x4, [c1,#8*0+0] // load |a| (or |b|) asr x28, x15, #63 // |f0|'s sign as mask (or |g0|'s) ldp x5, x6, [c1,#8*2+0]@@ -605,25 +664,27 @@ adcs x6, x6, xzr umulh x23, x4, x2 eor x8, x8, x28- umulh x24, x5, x2+ mul x3, x3, x2 adcs x7, x7, xzr- umulh x25, x6, x2+ mul x4, x4, x2 adc x8, x8, xzr - umulh x26, x7, x2- smulh x27, x8, x2- mul x3, x3, x2- mul x4, x4, x2- mul x5, x5, x2+ umulh x24, x5, x2+ and x28, x28, x2+ umulh x25, x6, x2 adds x4, x4, x22+ mul x5, x5, x2+ umulh x22, x7, x2+ neg x28, x28 mul x6, x6, x2 adcs x5, x5, x23+ umulh x23, x8, x2 mul x7, x7, x2 adcs x6, x6, x24 mul x8, x8, x2 adcs x7, x7, x25- adcs x8, x8 ,x26- adc x27, x27, xzr+ adcs x8, x8, x22+ adc x27, x23, x28 ldp x9, x10, [c1,#8*0+48] // load |a| (or |b|) asr x28, x16, #63 // |f0|'s sign as mask (or |g0|'s) ldp x11, x12, [c1,#8*2+48]@@ -643,25 +704,27 @@ adcs x12, x12, xzr umulh x23, x10, x2 eor x14, x14, x28- umulh x24, x11, x2+ mul x9, x9, x2 adcs x13, x13, xzr- umulh x25, x12, x2+ mul x10, x10, x2 adc x14, x14, xzr - umulh x26, x13, x2- smulh x28, x14, x2- mul x9, x9, x2- mul x10, x10, x2- mul x11, x11, x2+ umulh x24, x11, x2+ and x28, x28, x2+ umulh x25, x12, x2 adds x10, x10, x22+ mul x11, x11, x2+ umulh x22, x13, x2+ neg x28, x28 mul x12, x12, x2 adcs x11, x11, x23+ umulh x23, x14, x2 mul x13, x13, x2 adcs x12, x12, x24 mul x14, x14, x2 adcs x13, x13, x25- adcs x14, x14 ,x26- adc x28, x28, xzr+ adcs x14, x14, x22+ adc x28, x23, x28 adds x3, x3, x9 adcs x4, x4, x10 adcs x5, x5, x11@@ -700,7 +763,7 @@ sub x16, x16, x28 ret-.size __smul_383_n_shift_by_62,.-__smul_383_n_shift_by_62+.size __smul_384_n_shift_by_62,.-__smul_384_n_shift_by_62 .type __ab_approximation_62, %function .align 4 __ab_approximation_62:@@ -793,3 +856,13 @@ ret .size __inner_loop_62,.-__inner_loop_62++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/cheri/ct_is_square_mod_384-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text .globl ct_is_square_mod_384@@ -5,7 +13,7 @@ .type ct_is_square_mod_384, %function .align 5 ct_is_square_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29, c30, [csp,#-16*__SIZEOF_POINTER__]! add c29, csp, #0 stp c19, c20, [csp,#2*__SIZEOF_POINTER__]@@ -84,7 +92,7 @@ ldp c25, c26, [c29,#8*__SIZEOF_POINTER__] ldp c27, c28, [c29,#10*__SIZEOF_POINTER__] ldr c29, [csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size ct_is_square_mod_384,.-ct_is_square_mod_384 @@ -332,3 +340,13 @@ ret .size __inner_loop_48,.-__inner_loop_48++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/cheri/div3w-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text .globl div_3_limbs@@ -5,6 +13,7 @@ .type div_3_limbs,%function .align 5 div_3_limbs:+ hint #34 ldp x4,x5,[c0] // load R eor x0,x0,x0 // Q = 0 mov x3,#64 // loop counter@@ -39,6 +48,7 @@ .type quot_rem_128,%function .align 5 quot_rem_128:+ hint #34 ldp x3,x4,[c1] mul x5,x3,x2 // divisor[0:1} * quotient@@ -76,6 +86,7 @@ .type quot_rem_64,%function .align 5 quot_rem_64:+ hint #34 ldr x3,[c1] ldr x8,[c0] // load 1 limb of the dividend @@ -89,3 +100,13 @@ ret .size quot_rem_64,.-quot_rem_64++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/cheri/mul_mont_256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text .globl mul_mont_sparse_256@@ -5,6 +13,7 @@ .type mul_mont_sparse_256,%function .align 5 mul_mont_sparse_256:+ hint #34 stp c29,c30,[csp,#-8*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -196,7 +205,7 @@ .type sqr_mont_sparse_256,%function .align 5 sqr_mont_sparse_256:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-6*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -297,7 +306,7 @@ ldp c19,c20,[c29,#2*__SIZEOF_POINTER__] ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldr c29,[csp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sqr_mont_sparse_256,.-sqr_mont_sparse_256 .globl from_mont_256@@ -305,7 +314,7 @@ .type from_mont_256,%function .align 5 from_mont_256:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-2*__SIZEOF_POINTER__]! add c29,csp,#0 @@ -330,7 +339,7 @@ stp x12,x13,[c0,#16] ldr c29,[csp],#2*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size from_mont_256,.-from_mont_256 @@ -339,7 +348,7 @@ .type redc_mont_256,%function .align 5 redc_mont_256:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-2*__SIZEOF_POINTER__]! add c29,csp,#0 @@ -374,7 +383,7 @@ stp x12,x13,[c0,#16] ldr c29,[csp],#2*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size redc_mont_256,.-redc_mont_256 @@ -462,3 +471,13 @@ ret .size __mul_by_1_mont_256,.-__mul_by_1_mont_256++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/cheri/mul_mont_384-armv8.S view
@@ -1,10 +1,19 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text .globl add_mod_384x384+.hidden add_mod_384x384 .type add_mod_384x384,%function .align 5 add_mod_384x384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-8*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -22,7 +31,7 @@ ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldp c23,c24,[c29,#6*__SIZEOF_POINTER__] ldr c29,[csp],#8*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size add_mod_384x384,.-add_mod_384x384 @@ -82,10 +91,11 @@ .size __add_mod_384x384,.-__add_mod_384x384 .globl sub_mod_384x384+.hidden sub_mod_384x384 .type sub_mod_384x384,%function .align 5 sub_mod_384x384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-8*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -103,7 +113,7 @@ ldp c21,c22,[c29,#4*__SIZEOF_POINTER__] ldp c23,c24,[c29,#6*__SIZEOF_POINTER__] ldr c29,[csp],#8*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sub_mod_384x384,.-sub_mod_384x384 @@ -239,7 +249,7 @@ .type mul_mont_384x,%function .align 5 mul_mont_384x:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-16*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -312,7 +322,7 @@ ldp c25,c26,[c29,#8*__SIZEOF_POINTER__] ldp c27,c28,[c29,#10*__SIZEOF_POINTER__] ldr c29,[csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_mont_384x,.-mul_mont_384x @@ -321,7 +331,7 @@ .type sqr_mont_384x,%function .align 5 sqr_mont_384x:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-16*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -397,7 +407,7 @@ ldp c25,c26,[c29,#8*__SIZEOF_POINTER__] ldp c27,c28,[c29,#10*__SIZEOF_POINTER__] ldr c29,[csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sqr_mont_384x,.-sqr_mont_384x @@ -406,7 +416,7 @@ .type mul_mont_384,%function .align 5 mul_mont_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-16*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -438,7 +448,7 @@ ldp c25,c26,[c29,#8*__SIZEOF_POINTER__] ldp c27,c28,[c29,#10*__SIZEOF_POINTER__] ldr c29,[csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_mont_384,.-mul_mont_384 @@ -819,7 +829,7 @@ .type sqr_mont_384,%function .align 5 sqr_mont_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-16*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -856,7 +866,7 @@ ldp c25,c26,[c29,#8*__SIZEOF_POINTER__] ldp c27,c28,[c29,#10*__SIZEOF_POINTER__] ldr c29,[csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sqr_mont_384,.-sqr_mont_384 @@ -865,7 +875,7 @@ .type sqr_n_mul_mont_383,%function .align 5 sqr_n_mul_mont_383:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-16*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -921,7 +931,7 @@ ldp c25,c26,[c29,#8*__SIZEOF_POINTER__] ldp c27,c28,[c29,#10*__SIZEOF_POINTER__] ldr c29,[csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sqr_n_mul_mont_383,.-sqr_n_mul_mont_383 .type __sqr_384,%function@@ -1042,7 +1052,7 @@ .type sqr_384,%function .align 5 sqr_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-16*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -1064,7 +1074,7 @@ ldp c25,c26,[c29,#8*__SIZEOF_POINTER__] ldp c27,c28,[c29,#10*__SIZEOF_POINTER__] ldr c29,[csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sqr_384,.-sqr_384 @@ -1073,7 +1083,7 @@ .type redc_mont_384,%function .align 5 redc_mont_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-16*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -1097,7 +1107,7 @@ ldp c25,c26,[c29,#8*__SIZEOF_POINTER__] ldp c27,c28,[c29,#10*__SIZEOF_POINTER__] ldr c29,[csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size redc_mont_384,.-redc_mont_384 @@ -1106,7 +1116,7 @@ .type from_mont_384,%function .align 5 from_mont_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-16*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -1147,7 +1157,7 @@ ldp c25,c26,[c29,#8*__SIZEOF_POINTER__] ldp c27,c28,[c29,#10*__SIZEOF_POINTER__] ldr c29,[csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size from_mont_384,.-from_mont_384 @@ -1365,7 +1375,7 @@ .type mul_384,%function .align 5 mul_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-16*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -1383,7 +1393,7 @@ ldp c25,c26,[c29,#8*__SIZEOF_POINTER__] ldp c27,c28,[c29,#10*__SIZEOF_POINTER__] ldr c29,[csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_384,.-mul_384 @@ -1569,7 +1579,7 @@ .type mul_382x,%function .align 5 mul_382x:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-16*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -1651,7 +1661,7 @@ ldp c25,c26,[c29,#8*__SIZEOF_POINTER__] ldp c27,c28,[c29,#10*__SIZEOF_POINTER__] ldr c29,[csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_382x,.-mul_382x @@ -1660,7 +1670,7 @@ .type sqr_382x,%function .align 5 sqr_382x:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-16*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -1751,7 +1761,7 @@ ldp c25,c26,[c29,#8*__SIZEOF_POINTER__] ldp c27,c28,[c29,#10*__SIZEOF_POINTER__] ldr c29,[csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sqr_382x,.-sqr_382x @@ -1760,7 +1770,7 @@ .type sqr_mont_382x,%function .align 5 sqr_mont_382x:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-16*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -1875,7 +1885,7 @@ ldp c25,c26,[c29,#8*__SIZEOF_POINTER__] ldp c27,c28,[c29,#10*__SIZEOF_POINTER__] ldr c29,[csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sqr_mont_382x,.-sqr_mont_382x @@ -2224,7 +2234,7 @@ .type sgn0_pty_mont_384,%function .align 5 sgn0_pty_mont_384:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-16*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -2269,7 +2279,7 @@ ldp c25,c26,[c29,#8*__SIZEOF_POINTER__] ldp c27,c28,[c29,#10*__SIZEOF_POINTER__] ldr c29,[csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sgn0_pty_mont_384,.-sgn0_pty_mont_384 @@ -2278,7 +2288,7 @@ .type sgn0_pty_mont_384x,%function .align 5 sgn0_pty_mont_384x:- .inst 0xd503233f+ hint #PACI_HINT stp c29,c30,[csp,#-16*__SIZEOF_POINTER__]! add c29,csp,#0 stp c19,c20,[csp,#2*__SIZEOF_POINTER__]@@ -2367,6 +2377,16 @@ ldp c25,c26,[c29,#8*__SIZEOF_POINTER__] ldp c27,c28,[c29,#10*__SIZEOF_POINTER__] ldr c29,[csp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sgn0_pty_mont_384x,.-sgn0_pty_mont_384x++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/cheri/sha256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ // // Copyright Supranational LLC // Licensed under the Apache License, Version 2.0, see LICENSE for details.@@ -43,9 +51,11 @@ .align 2 .align 2 .globl blst_sha256_block_armv8+.hidden blst_sha256_block_armv8 .type blst_sha256_block_armv8,%function .align 6 blst_sha256_block_armv8:+ hint #34 .Lv8_entry: stp c29,c30,[csp,#-2*__SIZEOF_POINTER__]! add c29,csp,#0@@ -182,9 +192,11 @@ ret .size blst_sha256_block_armv8,.-blst_sha256_block_armv8 .globl blst_sha256_block_data_order+.hidden blst_sha256_block_data_order .type blst_sha256_block_data_order,%function .align 4 blst_sha256_block_data_order:+ hint #34 adrp c16,__blst_platform_cap ldr w16,[c16,#:lo12:__blst_platform_cap] tst w16,#1@@ -1034,6 +1046,7 @@ .type blst_sha256_emit,%function .align 4 blst_sha256_emit:+ hint #34 ldp x4,x5,[c1] ldp x6,x7,[c1,#16] #ifndef __AARCH64EB__@@ -1062,6 +1075,7 @@ .type blst_sha256_bcopy,%function .align 4 blst_sha256_bcopy:+ hint #34 .Loop_bcopy: ldrb w3,[c1],#1 sub x2,x2,#1@@ -1075,9 +1089,20 @@ .type blst_sha256_hcopy,%function .align 4 blst_sha256_hcopy:+ hint #34 ldp x4,x5,[c1] ldp x6,x7,[c1,#16] stp x4,x5,[c0] stp x6,x7,[c0,#16] ret .size blst_sha256_hcopy,.-blst_sha256_hcopy++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/coff/add_mod_256-armv8.S view
@@ -7,6 +7,7 @@ .endef .p2align 5 add_mod_256:+ hint #34 ldp x8,x9,[x1] ldp x12,x13,[x2] @@ -43,6 +44,7 @@ .endef .p2align 5 mul_by_3_mod_256:+ hint #34 ldp x12,x13,[x1] ldp x14,x15,[x1,#16] @@ -94,6 +96,7 @@ .endef .p2align 5 lshift_mod_256:+ hint #34 ldp x8,x9,[x1] ldp x10,x11,[x1,#16] @@ -134,6 +137,7 @@ .endef .p2align 5 rshift_mod_256:+ hint #34 ldp x8,x9,[x1] ldp x10,x11,[x1,#16]
c-source/build/coff/add_mod_384-armv8.S view
@@ -7,7 +7,7 @@ .endef .p2align 5 add_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -27,7 +27,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -77,7 +77,7 @@ .endef .p2align 5 add_mod_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -105,7 +105,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -116,7 +116,7 @@ .endef .p2align 5 rshift_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -143,7 +143,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -182,7 +182,7 @@ .endef .p2align 5 div_by_2_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -206,7 +206,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -217,7 +217,7 @@ .endef .p2align 5 lshift_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -244,7 +244,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -286,7 +286,7 @@ .endef .p2align 5 mul_by_3_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -316,7 +316,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -327,7 +327,7 @@ .endef .p2align 5 mul_by_8_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -353,7 +353,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -364,7 +364,7 @@ .endef .p2align 5 mul_by_3_mod_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -409,7 +409,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -420,7 +420,7 @@ .endef .p2align 5 mul_by_8_mod_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -457,7 +457,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -468,7 +468,7 @@ .endef .p2align 5 cneg_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -510,7 +510,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -521,7 +521,7 @@ .endef .p2align 5 sub_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -541,7 +541,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -588,7 +588,7 @@ .endef .p2align 5 sub_mod_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -616,7 +616,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -627,7 +627,7 @@ .endef .p2align 5 mul_by_1_plus_i_mod_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -660,7 +660,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -671,6 +671,7 @@ .endef .p2align 5 sgn0_pty_mod_384:+ hint #34 ldp x10,x11,[x0] ldp x12,x13,[x0,#16] ldp x14,x15,[x0,#32]@@ -710,6 +711,7 @@ .endef .p2align 5 sgn0_pty_mod_384x:+ hint #34 ldp x10,x11,[x0] ldp x12,x13,[x0,#16] ldp x14,x15,[x0,#32]@@ -793,14 +795,14 @@ .endef .p2align 5 vec_select_32:+ hint #34 dup v6.2d, x3- ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48+ ld1 {v0.2d, v1.2d}, [x1] cmeq v6.2d, v6.2d, #0- ld1 {v3.2d, v4.2d, v5.2d}, [x2],#48+ ld1 {v3.2d, v4.2d}, [x2] bit v0.16b, v3.16b, v6.16b bit v1.16b, v4.16b, v6.16b- bit v2.16b, v5.16b, v6.16b- st1 {v0.2d, v1.2d, v2.2d}, [x0]+ st1 {v0.2d, v1.2d}, [x0] ret .globl vec_select_48@@ -810,6 +812,7 @@ .endef .p2align 5 vec_select_48:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48 cmeq v6.2d, v6.2d, #0@@ -827,6 +830,7 @@ .endef .p2align 5 vec_select_96:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48 cmeq v6.2d, v6.2d, #0@@ -850,6 +854,7 @@ .endef .p2align 5 vec_select_192:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48 cmeq v6.2d, v6.2d, #0@@ -885,6 +890,7 @@ .endef .p2align 5 vec_select_144:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48 cmeq v6.2d, v6.2d, #0@@ -914,6 +920,7 @@ .endef .p2align 5 vec_select_288:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48 cmeq v6.2d, v6.2d, #0@@ -961,6 +968,7 @@ .endef .p2align 5 vec_prefetch:+ hint #34 add x1, x1, x0 sub x1, x1, #1 mov x2, #64@@ -1003,6 +1011,7 @@ .endef .p2align 5 vec_is_zero_16x:+ hint #34 ld1 {v0.2d}, [x0], #16 lsr x1, x1, #4 sub x1, x1, #1@@ -1030,6 +1039,7 @@ .endef .p2align 5 vec_is_equal_16x:+ hint #34 ld1 {v0.2d}, [x0], #16 ld1 {v1.2d}, [x1], #16 lsr x2, x2, #4
c-source/build/coff/ct_inverse_mod_256-armv8.S view
@@ -7,7 +7,7 @@ .endef .p2align 5 ct_inverse_mod_256:-.long 3573752639+ hint #25 stp x29, x30, [sp,#-10*__SIZEOF_POINTER__]! add x29, sp, #0 stp x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -50,7 +50,7 @@ mov x13, x15 // |g1| add x0,x0,#8*4 bl __smul_256_n_shift_by_31- str x12, [x0,#8*9] // initialize |v| with |f1|+ str x12, [x0,#8*10] // initialize |v| with |f1| ////////////////////////////////////////// second iteration eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -73,19 +73,17 @@ bl __smul_256_n_shift_by_31 ldr x8, [x1,#8*8] // |u|- ldr x9, [x1,#8*13] // |v|+ ldr x9, [x1,#8*14] // |v| madd x4, x16, x8, xzr // |u|*|f0| madd x4, x17, x9, x4 // |v|*|g0|- str x4, [x0,#8*4] asr x5, x4, #63 // sign extension- stp x5, x5, [x0,#8*5]- stp x5, x5, [x0,#8*7]+ stp x4, x5, [x0,#8*4]+ stp x5, x5, [x0,#8*6] madd x4, x12, x8, xzr // |u|*|f1| madd x4, x13, x9, x4 // |v|*|g1|- str x4, [x0,#8*9] asr x5, x4, #63 // sign extension- stp x5, x5, [x0,#8*10]+ stp x4, x5, [x0,#8*10] stp x5, x5, [x0,#8*12] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__@@ -108,16 +106,10 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -139,16 +131,10 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -170,16 +156,10 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -201,16 +181,10 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -232,16 +206,10 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -263,16 +231,15 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]-+ asr x24, x24, #63+ str x24, [x0,#8*4] mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6]+ asr x24, x24, #63 // sign extension+ stp x24, x24, [x0,#8*4]+ stp x24, x24, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -296,10 +263,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -325,10 +291,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -354,10 +319,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -383,10 +347,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -412,10 +375,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -441,10 +403,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -470,10 +431,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail ////////////////////////////////////////// two[!] last iterations@@ -543,7 +503,7 @@ ldp x23, x24, [x29,#6*__SIZEOF_POINTER__] ldp x25, x26, [x29,#8*__SIZEOF_POINTER__] ldr x29, [sp],#10*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -583,11 +543,11 @@ adcs x6, x6, x20 adcs x24, x24, x21 adc x26, xzr, xzr- ldp x8, x9, [x1,#8*0+104] // load |u| (or |v|)+ ldp x8, x9, [x1,#8*0+112] // load |u| (or |v|) asr x14, x17, #63 // |f_|'s sign as mask (or |g_|'s)- ldp x10, x11, [x1,#8*2+104]+ ldp x10, x11, [x1,#8*2+112] eor x17, x17, x14 // conditionally negate |f_| (or |g_|)- ldr x23, [x1,#8*4+104]+ ldr x23, [x1,#8*4+112] eor x8, x8, x14 // conditionally negate |u| (or |v|) sub x17, x17, x14@@ -631,9 +591,9 @@ .p2align 5 __smul_512x63_tail: umulh x24, x7, x16- ldp x5, x6, [x1,#8*18] // load rest of |v|+ ldr x5, [x1,#8*19] // load rest of |v| adc x26, x26, xzr- ldr x7, [x1,#8*20]+ ldp x6, x7, [x1,#8*20] and x22, x22, x16 umulh x11, x11, x17 // resume |v|*|g1| chain
c-source/build/coff/ct_inverse_mod_384-armv8.S view
@@ -1,13 +1,13 @@ .text -.globl ct_inverse_mod_383+.globl ct_inverse_mod_384 -.def ct_inverse_mod_383;+.def ct_inverse_mod_384; .type 32; .endef .p2align 5-ct_inverse_mod_383:-.long 3573752639+ct_inverse_mod_384:+ hint #25 stp x29, x30, [sp,#-16*__SIZEOF_POINTER__]! add x29, sp, #0 stp x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -49,14 +49,14 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 str x15,[x0,#8*12] // initialize |u| with |f0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62- str x15, [x0,#8*12] // initialize |v| with |f1|+ bl __smul_384_n_shift_by_62+ str x15, [x0,#8*14] // initialize |v| with |f1| ////////////////////////////////////////// second iteration eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -70,17 +70,17 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 ldr x7, [x1,#8*12] // |u|- ldr x8, [x1,#8*18] // |v|+ ldr x8, [x1,#8*20] // |v| mul x3, x20, x7 // |u|*|f0| smulh x4, x20, x7 mul x5, x21, x8 // |v|*|g0|@@ -98,10 +98,10 @@ smulh x6, x16, x8 adds x3, x3, x5 adc x4, x4, x6- stp x3, x4, [x0,#8*12]+ stp x3, x4, [x0,#8*14] asr x5, x4, #63 // sign extension- stp x5, x5, [x0,#8*14] stp x5, x5, [x0,#8*16]+ stp x5, x5, [x0,#8*18] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -113,22 +113,21 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63 mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63+ add x0,x0,#8*8+ bl __smul_384x63 eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -140,22 +139,21 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63 mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63+ add x0,x0,#8*8+ bl __smul_384x63 eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -167,22 +165,21 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63 mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63+ add x0,x0,#8*8+ bl __smul_384x63 eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -194,22 +191,23 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ asr x27, x27, #63+ str x27, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63+ add x0,x0,#8*8+ bl __smul_384x63 asr x27, x27, #63 // sign extension stp x27, x27, [x0,#8*6] stp x27, x27, [x0,#8*8]@@ -225,23 +223,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -253,23 +252,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -281,23 +281,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -309,23 +310,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -337,23 +339,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail ////////////////////////////////////////// iteration before last eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__@@ -377,20 +380,22 @@ mov x15, x17 mov x16, x19 add x0,x0,#8*12- bl __smul_383x63+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // exact |f1| mov x21, x16 // exact |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail ////////////////////////////////////////// last iteration eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1 #endif- mov x2, #22 // 766 % 62+ mov x2, #24 // 768 % 62 //bl __ab_approximation_62 // |a| and |b| are exact, ldr x3, [x1,#8*0] // just load eor x8, x8, x8@@ -401,25 +406,60 @@ mov x20, x17 mov x21, x19 ldp x0, x15, [sp] // original out_ptr and n_ptr- bl __smul_383x63- bl __smul_767x63_tail+ bl __smul_384x63+ bl __smul_768x63_tail ldr x30, [x29,#__SIZEOF_POINTER__] - asr x22, x8, #63 // sign as mask- ldp x9, x10, [x15,#8*0]+ smulh x23, x8, x21 // figure out top-most limb+ adc x26, x26, x28+ ldp x9, x10, [x15,#8*0] // load |mod|+ add x23, x23, x26 // x23 is 1, 0 or -1 ldp x11, x12, [x15,#8*2]+ asr x22, x23, #63 // sign as mask ldp x13, x14, [x15,#8*4] - and x9, x9, x22 // add mod<<384 conditionally- and x10, x10, x22- adds x3, x3, x9- and x11, x11, x22+ and x26, x9, x22 // add mod<<384 conditionally+ and x27, x10, x22+ adds x3, x3, x26+ and x28, x11, x22+ adcs x4, x4, x27+ and x2, x12, x22+ adcs x5, x5, x28+ and x26, x13, x22+ adcs x6, x6, x2+ and x27, x14, x22+ adcs x7, x7, x26+ adcs x8, x25, x27+ adc x23, x23, xzr // x23 is 1, 0 or -1++ neg x22, x23+ orr x23, x23, x22 // excess bit or sign as mask+ asr x22, x22, #63 // excess bit as mask++ and x9, x9, x23 // mask |mod|+ and x10, x10, x23+ and x11, x11, x23+ and x12, x12, x23+ and x13, x13, x23+ and x14, x14, x23++ eor x9, x9, x22 // conditionally negate |mod|+ eor x10, x10, x22+ adds x9, x9, x22, lsr#63+ eor x11, x11, x22+ adcs x10, x10, xzr+ eor x12, x12, x22+ adcs x11, x11, xzr+ eor x13, x13, x22+ adcs x12, x12, xzr+ eor x14, x14, x22+ adcs x13, x13, xzr+ adc x14, x14, xzr++ adds x3, x3, x9 // final adjustment for |mod|<<384 adcs x4, x4, x10- and x12, x12, x22 adcs x5, x5, x11- and x13, x13, x22 adcs x6, x6, x12- and x14, x14, x22 stp x3, x4, [x0,#8*6] adcs x7, x7, x13 stp x5, x6, [x0,#8*8]@@ -433,17 +473,17 @@ ldp x25, x26, [x29,#8*__SIZEOF_POINTER__] ldp x27, x28, [x29,#10*__SIZEOF_POINTER__] ldr x29, [sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret //////////////////////////////////////////////////////////////////////// // see corresponding commentary in ctx_inverse_mod_384-x86_64...-.def __smul_383x63;+.def __smul_384x63; .type 32; .endef .p2align 5-__smul_383x63:+__smul_384x63: ldp x3, x4, [x1,#8*0+96] // load |u| (or |v|) asr x17, x20, #63 // |f_|'s sign as mask (or |g_|'s) ldp x5, x6, [x1,#8*2+96]@@ -451,6 +491,7 @@ ldp x7, x8, [x1,#8*4+96] eor x3, x3, x17 // conditionally negate |u| (or |v|)+ ldr x25, [x1,#8*6+96] sub x20, x20, x17 eor x4, x4, x17 adds x3, x3, x17, lsr#63@@ -465,28 +506,33 @@ umulh x23, x4, x20 adcs x7, x7, xzr umulh x24, x5, x20- adcs x8, x8, xzr- umulh x25, x6, x20- umulh x26, x7, x20+ eor x25, x25, x17 mul x3, x3, x20+ adcs x8, x8, xzr mul x4, x4, x20+ adcs x25, x25, xzr+ cmp x20, #0 mul x5, x5, x20+ csel x25, x25, xzr, ne adds x4, x4, x22- mul x6, x6, x20+ umulh x22, x6, x20 adcs x5, x5, x23+ umulh x23, x7, x20+ mul x6, x6, x20 mul x7, x7, x20 adcs x6, x6, x24 mul x27,x8, x20- adcs x7, x7, x25- adcs x27,x27,x26+ adcs x7, x7, x22+ adcs x27,x27,x23 adc x2, xzr, xzr- ldp x9, x10, [x1,#8*0+144] // load |u| (or |v|)+ ldp x9, x10, [x1,#8*0+160] // load |u| (or |v|) asr x17, x21, #63 // |f_|'s sign as mask (or |g_|'s)- ldp x11, x12, [x1,#8*2+144]+ ldp x11, x12, [x1,#8*2+160] eor x21, x21, x17 // conditionally negate |f_| (or |g_|)- ldp x13, x14, [x1,#8*4+144]+ ldp x13, x14, [x1,#8*4+160] eor x9, x9, x17 // conditionally negate |u| (or |v|)+ ldr x26, [x1,#8*6+160] sub x21, x21, x17 eor x10, x10, x17 adds x9, x9, x17, lsr#63@@ -501,21 +547,25 @@ umulh x23, x10, x21 adcs x13, x13, xzr umulh x24, x11, x21- adcs x14, x14, xzr- umulh x25, x12, x21- adc x19, xzr, xzr // used in __smul_767x63_tail- umulh x26, x13, x21+ eor x26, x26, x17 mul x9, x9, x21+ adcs x14, x14, xzr mul x10, x10, x21+ adcs x26, x26, xzr+ adc x19, xzr, xzr // used in __smul_768x63_tail+ cmp x21, #0 mul x11, x11, x21+ csel x26, x26, xzr, ne adds x10, x10, x22- mul x12, x12, x21+ umulh x22, x12, x21 adcs x11, x11, x23+ umulh x23, x13, x21+ mul x12, x12, x21 mul x13, x13, x21 adcs x12, x12, x24 mul x28,x14, x21- adcs x13, x13, x25- adcs x28,x28,x26+ adcs x13, x13, x22+ adcs x28,x28,x23 adc x2, x2, xzr adds x3, x3, x9@@ -527,43 +577,43 @@ stp x5, x6, [x0,#8*2] adcs x27, x27, x28 stp x7, x27, [x0,#8*4]- adc x28, x2, xzr // used in __smul_767x63_tail ret -.def __smul_767x63_tail;+.def __smul_768x63_tail; .type 32; .endef .p2align 5-__smul_767x63_tail:- smulh x27, x8, x20- ldp x3, x4, [x1,#8*24] // load rest of |v|- umulh x14,x14, x21- ldp x5, x6, [x1,#8*26]- ldp x7, x8, [x1,#8*28]+__smul_768x63_tail:+ umulh x27, x8, x20+ ldr x4, [x1,#8*27]// load rest of |v|+ adc x2, x2, xzr+ ldp x5, x6, [x1,#8*28]+ and x25, x25, x20+ ldp x7, x8, [x1,#8*30]+ sub x27, x27, x25 // tie up |u|*|f1| chain - eor x3, x3, x17 // conditionally negate rest of |v|- eor x4, x4, x17+ umulh x14, x14, x21 // resume |v|*|g1| chain+ eor x4, x4, x17 // conditionally negate rest of |v| eor x5, x5, x17- adds x3, x3, x19 eor x6, x6, x17- adcs x4, x4, xzr+ adds x4, x4, x19 eor x7, x7, x17 adcs x5, x5, xzr eor x8, x8, x17 adcs x6, x6, xzr- umulh x22, x3, x21+ umulh x22, x26, x21 adcs x7, x7, xzr umulh x23, x4, x21 adc x8, x8, xzr umulh x24, x5, x21- add x14, x14, x28+ add x14, x14, x2 umulh x25, x6, x21 asr x28, x27, #63- umulh x26, x7, x21- mul x3, x3, x21+ umulh x2, x7, x21+ mul x3, x26, x21 mul x4, x4, x21 mul x5, x5, x21 adds x3, x3, x14@@ -571,10 +621,11 @@ adcs x4, x4, x22 mul x7, x7, x21 adcs x5, x5, x23- mul x8, x8, x21+ mul x22, x8, x21 adcs x6, x6, x24 adcs x7, x7, x25- adc x8, x8, x26+ adcs x25, x22, x2+ adc x26, xzr, xzr // used in the final step adds x3, x3, x27 adcs x4, x4, x28@@ -583,17 +634,17 @@ stp x3, x4, [x0,#8*6] adcs x7, x7, x28 stp x5, x6, [x0,#8*8]- adc x8, x8, x28- stp x7, x8, [x0,#8*10]+ adcs x25, x25, x28 // carry is used in the final step+ stp x7, x25, [x0,#8*10] ret -.def __smul_383_n_shift_by_62;+.def __smul_384_n_shift_by_62; .type 32; .endef .p2align 5-__smul_383_n_shift_by_62:+__smul_384_n_shift_by_62: ldp x3, x4, [x1,#8*0+0] // load |a| (or |b|) asr x28, x15, #63 // |f0|'s sign as mask (or |g0|'s) ldp x5, x6, [x1,#8*2+0]@@ -613,25 +664,27 @@ adcs x6, x6, xzr umulh x23, x4, x2 eor x8, x8, x28- umulh x24, x5, x2+ mul x3, x3, x2 adcs x7, x7, xzr- umulh x25, x6, x2+ mul x4, x4, x2 adc x8, x8, xzr - umulh x26, x7, x2- smulh x27, x8, x2- mul x3, x3, x2- mul x4, x4, x2- mul x5, x5, x2+ umulh x24, x5, x2+ and x28, x28, x2+ umulh x25, x6, x2 adds x4, x4, x22+ mul x5, x5, x2+ umulh x22, x7, x2+ neg x28, x28 mul x6, x6, x2 adcs x5, x5, x23+ umulh x23, x8, x2 mul x7, x7, x2 adcs x6, x6, x24 mul x8, x8, x2 adcs x7, x7, x25- adcs x8, x8 ,x26- adc x27, x27, xzr+ adcs x8, x8, x22+ adc x27, x23, x28 ldp x9, x10, [x1,#8*0+48] // load |a| (or |b|) asr x28, x16, #63 // |f0|'s sign as mask (or |g0|'s) ldp x11, x12, [x1,#8*2+48]@@ -651,25 +704,27 @@ adcs x12, x12, xzr umulh x23, x10, x2 eor x14, x14, x28- umulh x24, x11, x2+ mul x9, x9, x2 adcs x13, x13, xzr- umulh x25, x12, x2+ mul x10, x10, x2 adc x14, x14, xzr - umulh x26, x13, x2- smulh x28, x14, x2- mul x9, x9, x2- mul x10, x10, x2- mul x11, x11, x2+ umulh x24, x11, x2+ and x28, x28, x2+ umulh x25, x12, x2 adds x10, x10, x22+ mul x11, x11, x2+ umulh x22, x13, x2+ neg x28, x28 mul x12, x12, x2 adcs x11, x11, x23+ umulh x23, x14, x2 mul x13, x13, x2 adcs x12, x12, x24 mul x14, x14, x2 adcs x13, x13, x25- adcs x14, x14 ,x26- adc x28, x28, xzr+ adcs x14, x14, x22+ adc x28, x23, x28 adds x3, x3, x9 adcs x4, x4, x10 adcs x5, x5, x11
c-source/build/coff/ct_is_square_mod_384-armv8.S view
@@ -7,7 +7,7 @@ .endef .p2align 5 ct_is_square_mod_384:-.long 3573752639+ hint #25 stp x29, x30, [sp,#-16*__SIZEOF_POINTER__]! add x29, sp, #0 stp x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -86,7 +86,7 @@ ldp x25, x26, [x29,#8*__SIZEOF_POINTER__] ldp x27, x28, [x29,#10*__SIZEOF_POINTER__] ldr x29, [sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret
c-source/build/coff/ctq_inverse_mod_384-x86_64.s view
@@ -1,16 +1,16 @@ .comm __blst_platform_cap,4 .text -.globl ct_inverse_mod_383+.globl ct_inverse_mod_384 -.def ct_inverse_mod_383; .scl 2; .type 32; .endef+.def ct_inverse_mod_384; .scl 2; .type 32; .endef .p2align 5-ct_inverse_mod_383:+ct_inverse_mod_384: .byte 0xf3,0x0f,0x1e,0xfa movq %rdi,8(%rsp) movq %rsi,16(%rsp) movq %rsp,%r11-.LSEH_begin_ct_inverse_mod_383:+.LSEH_begin_ct_inverse_mod_384: movq %rcx,%rdi@@ -19,7 +19,7 @@ movq %r9,%rcx #ifdef __BLST_PORTABLE__ testl $1,__blst_platform_cap(%rip)- jnz ct_inverse_mod_383$1+ jnz ct_inverse_mod_384$1 #endif pushq %rbp @@ -35,7 +35,7 @@ subq $1112,%rsp -.LSEH_body_ct_inverse_mod_383:+.LSEH_body_ct_inverse_mod_384: leaq 88+511(%rsp),%rax@@ -82,7 +82,7 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,96(%rdi)@@ -90,10 +90,10 @@ movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 - movq %rdx,96(%rdi)+ movq %rdx,104(%rdi) xorq $256,%rsi@@ -106,19 +106,19 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq 96(%rsi),%rax- movq 144(%rsi),%r11+ movq 152(%rsi),%r11 movq %rdx,%rbx movq %rax,%r10 imulq 56(%rsp)@@ -135,6 +135,7 @@ movq %r9,72(%rdi) movq %r9,80(%rdi) movq %r9,88(%rdi)+ movq %r9,96(%rdi) leaq 96(%rsi),%rsi movq %r10,%rax@@ -145,13 +146,14 @@ imulq %rcx addq %rax,%r8 adcq %rdx,%r9- movq %r8,96(%rdi)- movq %r9,104(%rdi)- sarq $63,%r9+ movq %r8,104(%rdi) movq %r9,112(%rdi)+ sarq $63,%r9 movq %r9,120(%rdi) movq %r9,128(%rdi) movq %r9,136(%rdi)+ movq %r9,144(%rdi)+ movq %r9,152(%rdi) xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -162,14 +164,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -177,12 +179,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_383x63+ leaq 56(%rdi),%rdi+ call __smulq_384x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -193,14 +195,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -208,12 +210,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_383x63+ leaq 56(%rdi),%rdi+ call __smulq_384x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -224,14 +226,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -239,12 +241,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_383x63+ leaq 56(%rdi),%rdi+ call __smulq_384x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -255,14 +257,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -270,19 +272,17 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_383x63- sarq $63,%r13- movq %r13,48(%rdi)- movq %r13,56(%rdi)- movq %r13,64(%rdi)- movq %r13,72(%rdi)- movq %r13,80(%rdi)- movq %r13,88(%rdi)+ leaq 56(%rdi),%rdi+ call __smulq_384x63+ movq %r14,56(%rdi)+ movq %r14,64(%rdi)+ movq %r14,72(%rdi)+ movq %r14,80(%rdi)+ movq %r14,88(%rdi) xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -293,14 +293,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -308,12 +308,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -324,14 +324,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -339,12 +339,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -355,14 +355,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -370,12 +370,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -386,14 +386,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -401,12 +401,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -417,14 +417,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -432,12 +432,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi movl $62,%edi@@ -461,16 +461,16 @@ leaq 96(%rsi),%rsi leaq 96(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi- movl $22,%edi+ movl $24,%edi movq 0(%rsi),%r8 xorq %r9,%r9@@ -493,37 +493,77 @@ movq %r12,%rdx movq %r13,%rcx movq 32(%rsp),%rdi- call __smulq_767x63+ call __smulq_768x63 movq 40(%rsp),%rsi- movq %rax,%rdx- sarq $63,%rax+ movq %rdx,%r13+ sarq $63,%r13 - movq %rax,%r8- movq %rax,%r9- movq %rax,%r10+ movq %r13,%r8+ movq %r13,%r9+ movq %r13,%r10 andq 0(%rsi),%r8 andq 8(%rsi),%r9- movq %rax,%r11+ movq %r13,%r11 andq 16(%rsi),%r10 andq 24(%rsi),%r11- movq %rax,%r12+ movq %r13,%r12 andq 32(%rsi),%r12- andq 40(%rsi),%rax+ andq 40(%rsi),%r13 addq %r8,%r14 adcq %r9,%r15 adcq %r10,%rbx adcq %r11,%rbp adcq %r12,%rcx- adcq %rax,%rdx+ adcq %r13,%rax+ adcq $0,%rdx + movq %rdx,%r13+ negq %rdx+ orq %rdx,%r13+ sarq $63,%rdx++ movq %r13,%r8+ movq %r13,%r9+ movq %r13,%r10+ andq 0(%rsi),%r8+ andq 8(%rsi),%r9+ movq %r13,%r11+ andq 16(%rsi),%r10+ andq 24(%rsi),%r11+ movq %r13,%r12+ andq 32(%rsi),%r12+ andq 40(%rsi),%r13++ xorq %rdx,%r8+ xorq %rsi,%rsi+ xorq %rdx,%r9+ subq %rdx,%rsi+ xorq %rdx,%r10+ xorq %rdx,%r11+ xorq %rdx,%r12+ xorq %rdx,%r13+ addq %rsi,%r8+ adcq $0,%r9+ adcq $0,%r10+ adcq $0,%r11+ adcq $0,%r12+ adcq $0,%r13++ addq %r8,%r14+ adcq %r9,%r15+ adcq %r10,%rbx+ adcq %r11,%rbp+ adcq %r12,%rcx+ adcq %r13,%rax+ movq %r14,48(%rdi) movq %r15,56(%rdi) movq %rbx,64(%rdi) movq %rbp,72(%rdi) movq %rcx,80(%rdi)- movq %rdx,88(%rdi)+ movq %rax,88(%rdi) leaq 1112(%rsp),%r8 movq 0(%r8),%r15@@ -540,7 +580,7 @@ leaq 48(%r8),%rsp -.LSEH_epilogue_ct_inverse_mod_383:+.LSEH_epilogue_ct_inverse_mod_384: mov 8(%rsp),%rdi mov 16(%rsp),%rsi @@ -554,10 +594,10 @@ .byte 0xf3,0xc3 #endif -.LSEH_end_ct_inverse_mod_383:-.def __smulq_767x63; .scl 3; .type 32; .endef+.LSEH_end_ct_inverse_mod_384:+.def __smulq_768x63; .scl 3; .type 32; .endef .p2align 5-__smulq_767x63:+__smulq_768x63: .byte 0xf3,0x0f,0x1e,0xfa movq 0(%rsi),%r8@@ -566,6 +606,7 @@ movq 24(%rsi),%r11 movq 32(%rsi),%r12 movq 40(%rsi),%r13+ movq 48(%rsi),%r14 movq %rdx,%rbp sarq $63,%rdx@@ -574,7 +615,7 @@ movq %rdi,8(%rsp) movq %rsi,16(%rsp)- leaq 48(%rsi),%rsi+ leaq 56(%rsi),%rsi xorq %rdx,%rbp addq %rax,%rbp@@ -585,16 +626,20 @@ xorq %rdx,%r11 xorq %rdx,%r12 xorq %rdx,%r13+ xorq %rdx,%r14 addq %r8,%rax adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12 adcq $0,%r13+ adcq $0,%r14 mulq %rbp movq %rax,0(%rdi) movq %r9,%rax+ andq %rbp,%r14+ negq %r14 movq %rdx,%r9 mulq %rbp addq %rax,%r9@@ -620,14 +665,14 @@ adcq $0,%rdx movq %rdx,%r13 movq %r12,32(%rdi)- imulq %rbp+ mulq %rbp addq %rax,%r13- adcq $0,%rdx+ adcq %rdx,%r14 movq %r13,40(%rdi)- movq %rdx,48(%rdi)- sarq $63,%rdx- movq %rdx,56(%rdi)+ movq %r14,48(%rdi)+ sarq $63,%r14+ movq %r14,56(%rdi) movq %rcx,%rdx movq 0(%rsi),%r8@@ -730,39 +775,41 @@ movq %rdi,%rax adcq $0,%rdx movq %rdx,%rdi- movq 8(%rsp),%rdx- imulq %rsi,%rax- movq 16(%rsp),%rsi+ imulq %rsi+ movq 8(%rsp),%rsi addq %rdi,%rax+ adcq $0,%rdx - addq 0(%rdx),%r8- adcq 8(%rdx),%r9- adcq 16(%rdx),%r10- adcq 24(%rdx),%r11- adcq 32(%rdx),%r12- adcq 40(%rdx),%r13- adcq 48(%rdx),%r14- movq 56(%rdx),%rdi+ addq 0(%rsi),%r8+ adcq 8(%rsi),%r9+ adcq 16(%rsi),%r10+ adcq 24(%rsi),%r11+ adcq 32(%rsi),%r12+ adcq 40(%rsi),%r13+ adcq 48(%rsi),%r14+ movq 56(%rsi),%rdi adcq %rdi,%r15 adcq %rdi,%rbx adcq %rdi,%rbp adcq %rdi,%rcx adcq %rdi,%rax+ adcq %rdi,%rdx - movq %rdx,%rdi+ leaq (%rsi),%rdi+ movq 16(%rsp),%rsi - movq %r8,0(%rdx)- movq %r9,8(%rdx)- movq %r10,16(%rdx)- movq %r11,24(%rdx)- movq %r12,32(%rdx)- movq %r13,40(%rdx)- movq %r14,48(%rdx)- movq %r15,56(%rdx)- movq %rbx,64(%rdx)- movq %rbp,72(%rdx)- movq %rcx,80(%rdx)- movq %rax,88(%rdx)+ movq %r8,0(%rdi)+ movq %r9,8(%rdi)+ movq %r10,16(%rdi)+ movq %r11,24(%rdi)+ movq %r12,32(%rdi)+ movq %r13,40(%rdi)+ movq %r14,48(%rdi)+ movq %r15,56(%rdi)+ movq %rbx,64(%rdi)+ movq %rbp,72(%rdi)+ movq %rcx,80(%rdi)+ movq %rax,88(%rdi) #ifdef __SGX_LVI_HARDENING__@@ -774,9 +821,9 @@ .byte 0xf3,0xc3 #endif -.def __smulq_383x63; .scl 3; .type 32; .endef+.def __smulq_384x63; .scl 3; .type 32; .endef .p2align 5-__smulq_383x63:+__smulq_384x63: .byte 0xf3,0x0f,0x1e,0xfa movq 0(%rsi),%r8@@ -785,6 +832,7 @@ movq 24(%rsi),%r11 movq 32(%rsi),%r12 movq 40(%rsi),%r13+ movq 48(%rsi),%r14 movq %rdx,%rbp sarq $63,%rdx@@ -800,16 +848,20 @@ xorq %rdx,%r11 xorq %rdx,%r12 xorq %rdx,%r13+ xorq %rdx,%r14 addq %r8,%rax adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12 adcq $0,%r13+ adcq $0,%r14 mulq %rbp movq %rax,%r8 movq %r9,%rax+ andq %rbp,%r14+ negq %r14 movq %rdx,%r9 mulq %rbp addq %rax,%r9@@ -831,10 +883,11 @@ movq %r13,%rax adcq $0,%rdx movq %rdx,%r13- imulq %rbp,%rax+ mulq %rbp addq %rax,%r13+ adcq %rdx,%r14 - leaq 48(%rsi),%rsi+ leaq 56(%rsi),%rsi movq %rcx,%rdx movq %r8,0(%rdi)@@ -842,13 +895,15 @@ movq %r10,16(%rdi) movq %r11,24(%rdi) movq %r12,32(%rdi)- movq %r13,40(%rdi)+ movq %r13,%r15+ movq %r14,%rbx movq 0(%rsi),%r8 movq 8(%rsi),%r9 movq 16(%rsi),%r10 movq 24(%rsi),%r11 movq 32(%rsi),%r12 movq 40(%rsi),%r13+ movq 48(%rsi),%r14 movq %rdx,%rbp sarq $63,%rdx@@ -864,16 +919,20 @@ xorq %rdx,%r11 xorq %rdx,%r12 xorq %rdx,%r13+ xorq %rdx,%r14 addq %r8,%rax adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12 adcq $0,%r13+ adcq $0,%r14 mulq %rbp movq %rax,%r8 movq %r9,%rax+ andq %rbp,%r14+ negq %r14 movq %rdx,%r9 mulq %rbp addq %rax,%r9@@ -895,17 +954,19 @@ movq %r13,%rax adcq $0,%rdx movq %rdx,%r13- imulq %rbp,%rax+ mulq %rbp addq %rax,%r13+ adcq %rdx,%r14 - leaq -48(%rsi),%rsi+ leaq -56(%rsi),%rsi addq 0(%rdi),%r8 adcq 8(%rdi),%r9 adcq 16(%rdi),%r10 adcq 24(%rdi),%r11 adcq 32(%rdi),%r12- adcq 40(%rdi),%r13+ adcq %r15,%r13+ adcq %rbx,%r14 movq %r8,0(%rdi) movq %r9,8(%rdi)@@ -913,6 +974,7 @@ movq %r11,24(%rdi) movq %r12,32(%rdi) movq %r13,40(%rdi)+ movq %r14,48(%rdi) #ifdef __SGX_LVI_HARDENING__@@ -924,9 +986,9 @@ .byte 0xf3,0xc3 #endif -.def __smulq_383_n_shift_by_62; .scl 3; .type 32; .endef+.def __smulq_384_n_shift_by_62; .scl 3; .type 32; .endef .p2align 5-__smulq_383_n_shift_by_62:+__smulq_384_n_shift_by_62: .byte 0xf3,0x0f,0x1e,0xfa movq %rdx,%rbx@@ -951,6 +1013,7 @@ xorq %rdx,%r11 xorq %rdx,%r12 xorq %rdx,%r13+ movq %rdx,%r14 addq %r8,%rax adcq $0,%r9 adcq $0,%r10@@ -961,6 +1024,8 @@ mulq %rbp movq %rax,%r8 movq %r9,%rax+ andq %rbp,%r14+ negq %r14 movq %rdx,%r9 mulq %rbp addq %rax,%r9@@ -982,12 +1047,11 @@ movq %r13,%rax adcq $0,%rdx movq %rdx,%r13- imulq %rbp+ mulq %rbp addq %rax,%r13- adcq $0,%rdx+ adcq %rdx,%r14 leaq 48(%rsi),%rsi- movq %rdx,%r14 movq %rcx,%rdx movq %r8,0(%rdi)@@ -1017,6 +1081,7 @@ xorq %rdx,%r11 xorq %rdx,%r12 xorq %rdx,%r13+ movq %rdx,%r15 addq %r8,%rax adcq $0,%r9 adcq $0,%r10@@ -1027,6 +1092,8 @@ mulq %rbp movq %rax,%r8 movq %r9,%rax+ andq %rbp,%r15+ negq %r15 movq %rdx,%r9 mulq %rbp addq %rax,%r9@@ -1048,11 +1115,12 @@ movq %r13,%rax adcq $0,%rdx movq %rdx,%r13- imulq %rbp+ mulq %rbp addq %rax,%r13- adcq $0,%rdx+ adcq %rdx,%r15 leaq -48(%rsi),%rsi+ movq %rbx,%rdx addq 0(%rdi),%r8 adcq 8(%rdi),%r9@@ -1060,8 +1128,7 @@ adcq 24(%rdi),%r11 adcq 32(%rdi),%r12 adcq 40(%rdi),%r13- adcq %rdx,%r14- movq %rbx,%rdx+ adcq %r15,%r14 shrdq $62,%r9,%r8 shrdq $62,%r10,%r9@@ -1236,28 +1303,28 @@ .section .pdata .p2align 2-.rva .LSEH_begin_ct_inverse_mod_383-.rva .LSEH_body_ct_inverse_mod_383-.rva .LSEH_info_ct_inverse_mod_383_prologue+.rva .LSEH_begin_ct_inverse_mod_384+.rva .LSEH_body_ct_inverse_mod_384+.rva .LSEH_info_ct_inverse_mod_384_prologue -.rva .LSEH_body_ct_inverse_mod_383-.rva .LSEH_epilogue_ct_inverse_mod_383-.rva .LSEH_info_ct_inverse_mod_383_body+.rva .LSEH_body_ct_inverse_mod_384+.rva .LSEH_epilogue_ct_inverse_mod_384+.rva .LSEH_info_ct_inverse_mod_384_body -.rva .LSEH_epilogue_ct_inverse_mod_383-.rva .LSEH_end_ct_inverse_mod_383-.rva .LSEH_info_ct_inverse_mod_383_epilogue+.rva .LSEH_epilogue_ct_inverse_mod_384+.rva .LSEH_end_ct_inverse_mod_384+.rva .LSEH_info_ct_inverse_mod_384_epilogue .section .xdata .p2align 3-.LSEH_info_ct_inverse_mod_383_prologue:+.LSEH_info_ct_inverse_mod_384_prologue: .byte 1,0,5,0x0b .byte 0,0x74,1,0 .byte 0,0x64,2,0 .byte 0,0xb3 .byte 0,0 .long 0,0-.LSEH_info_ct_inverse_mod_383_body:+.LSEH_info_ct_inverse_mod_384_body: .byte 1,0,18,0 .byte 0x00,0xf4,0x8b,0x00 .byte 0x00,0xe4,0x8c,0x00@@ -1270,7 +1337,7 @@ .byte 0x00,0x01,0x91,0x00 .byte 0x00,0x00,0x00,0x00 .byte 0x00,0x00,0x00,0x00-.LSEH_info_ct_inverse_mod_383_epilogue:+.LSEH_info_ct_inverse_mod_384_epilogue: .byte 1,0,4,0 .byte 0x00,0x74,0x01,0x00 .byte 0x00,0x64,0x02,0x00
c-source/build/coff/ctx_inverse_mod_384-x86_64.s view
@@ -1,22 +1,22 @@ .text -.globl ctx_inverse_mod_383+.globl ctx_inverse_mod_384 -.def ctx_inverse_mod_383; .scl 2; .type 32; .endef+.def ctx_inverse_mod_384; .scl 2; .type 32; .endef .p2align 5-ctx_inverse_mod_383:+ctx_inverse_mod_384: .byte 0xf3,0x0f,0x1e,0xfa movq %rdi,8(%rsp) movq %rsi,16(%rsp) movq %rsp,%r11-.LSEH_begin_ctx_inverse_mod_383:+.LSEH_begin_ctx_inverse_mod_384: movq %rcx,%rdi movq %rdx,%rsi movq %r8,%rdx movq %r9,%rcx-ct_inverse_mod_383$1:+ct_inverse_mod_384$1: pushq %rbp pushq %rbx@@ -31,7 +31,7 @@ subq $1112,%rsp -.LSEH_body_ctx_inverse_mod_383:+.LSEH_body_ctx_inverse_mod_384: leaq 88+511(%rsp),%rax@@ -81,7 +81,7 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,96(%rdi)@@ -89,10 +89,10 @@ movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 - movq %rdx,96(%rdi)+ movq %rdx,104(%rdi) xorq $256,%rsi@@ -105,19 +105,19 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq 96(%rsi),%rax- movq 144(%rsi),%r11+ movq 152(%rsi),%r11 movq %rdx,%rbx movq %rax,%r10 imulq 56(%rsp)@@ -134,6 +134,7 @@ movq %r9,72(%rdi) movq %r9,80(%rdi) movq %r9,88(%rdi)+ movq %r9,96(%rdi) leaq 96(%rsi),%rsi movq %r10,%rax@@ -144,13 +145,14 @@ imulq %rcx addq %rax,%r8 adcq %rdx,%r9- movq %r8,96(%rdi)- movq %r9,104(%rdi)- sarq $63,%r9+ movq %r8,104(%rdi) movq %r9,112(%rdi)+ sarq $63,%r9 movq %r9,120(%rdi) movq %r9,128(%rdi) movq %r9,136(%rdi)+ movq %r9,144(%rdi)+ movq %r9,152(%rdi) xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -161,14 +163,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -176,12 +178,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -192,14 +194,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -207,12 +209,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -223,14 +225,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -238,12 +240,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -254,14 +256,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -269,12 +271,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -285,14 +287,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -300,12 +302,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -316,14 +318,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -331,12 +333,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -347,14 +349,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -362,12 +364,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -378,14 +380,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -393,12 +395,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -409,14 +411,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -424,12 +426,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -440,14 +442,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -455,19 +457,17 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63- sarq $63,%r13- movq %r13,48(%rdi)- movq %r13,56(%rdi)- movq %r13,64(%rdi)- movq %r13,72(%rdi)- movq %r13,80(%rdi)- movq %r13,88(%rdi)+ leaq 56(%rdi),%rdi+ call __smulx_384x63+ movq %r14,56(%rdi)+ movq %r14,64(%rdi)+ movq %r14,72(%rdi)+ movq %r14,80(%rdi)+ movq %r14,88(%rdi) xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -478,14 +478,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -493,12 +493,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -509,14 +509,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -524,12 +524,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -540,14 +540,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -555,12 +555,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -571,14 +571,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -586,12 +586,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -602,14 +602,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -617,12 +617,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -633,14 +633,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -648,12 +648,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -664,14 +664,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -679,12 +679,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -710,12 +710,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -741,12 +741,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -772,12 +772,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -803,21 +803,21 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi- movl $53,%edi+ movl $55,%edi movq 0(%rsi),%r8 movq 48(%rsi),%r10 - call __tail_loop_53+ call __tail_loop_55 @@ -834,40 +834,80 @@ movq %r12,%rdx movq %r13,%rcx movq 32(%rsp),%rdi- call __smulx_767x63+ call __smulx_768x63 movq 40(%rsp),%rsi- movq %rax,%rdx- sarq $63,%rax+ movq %rdx,%r13+ sarq $63,%r13 - movq %rax,%r8- movq %rax,%r9- movq %rax,%r10+ movq %r13,%r8+ movq %r13,%r9+ movq %r13,%r10 #ifdef __SGX_LVI_HARDENING__ lfence #endif andq 0(%rsi),%r8 andq 8(%rsi),%r9- movq %rax,%r11+ movq %r13,%r11 andq 16(%rsi),%r10 andq 24(%rsi),%r11- movq %rax,%r12+ movq %r13,%r12 andq 32(%rsi),%r12- andq 40(%rsi),%rax+ andq 40(%rsi),%r13 addq %r8,%r14 adcq %r9,%r15 adcq %r10,%rbx adcq %r11,%rbp adcq %r12,%rcx- adcq %rax,%rdx+ adcq %r13,%rax+ adcq $0,%rdx + movq %rdx,%r13+ negq %rdx+ orq %rdx,%r13+ sarq $63,%rdx++ movq %r13,%r8+ movq %r13,%r9+ movq %r13,%r10+ andq 0(%rsi),%r8+ andq 8(%rsi),%r9+ movq %r13,%r11+ andq 16(%rsi),%r10+ andq 24(%rsi),%r11+ movq %r13,%r12+ andq 32(%rsi),%r12+ andq 40(%rsi),%r13++ xorq %rdx,%r8+ xorq %rsi,%rsi+ xorq %rdx,%r9+ subq %rdx,%rsi+ xorq %rdx,%r10+ xorq %rdx,%r11+ xorq %rdx,%r12+ xorq %rdx,%r13+ addq %rsi,%r8+ adcq $0,%r9+ adcq $0,%r10+ adcq $0,%r11+ adcq $0,%r12+ adcq $0,%r13++ addq %r8,%r14+ adcq %r9,%r15+ adcq %r10,%rbx+ adcq %r11,%rbp+ adcq %r12,%rcx+ adcq %r13,%rax+ movq %r14,48(%rdi) movq %r15,56(%rdi) movq %rbx,64(%rdi) movq %rbp,72(%rdi) movq %rcx,80(%rdi)- movq %rdx,88(%rdi)+ movq %rax,88(%rdi) leaq 1112(%rsp),%r8 movq 0(%r8),%r15@@ -884,7 +924,7 @@ leaq 48(%r8),%rsp -.LSEH_epilogue_ctx_inverse_mod_383:+.LSEH_epilogue_ctx_inverse_mod_384: mov 8(%rsp),%rdi mov 16(%rsp),%rsi @@ -898,10 +938,10 @@ .byte 0xf3,0xc3 #endif -.LSEH_end_ctx_inverse_mod_383:-.def __smulx_767x63; .scl 3; .type 32; .endef+.LSEH_end_ctx_inverse_mod_384:+.def __smulx_768x63; .scl 3; .type 32; .endef .p2align 5-__smulx_767x63:+__smulx_768x63: .byte 0xf3,0x0f,0x1e,0xfa movq 0(%rsi),%r8@@ -910,6 +950,7 @@ movq 24(%rsi),%r11 movq 32(%rsi),%r12 movq 40(%rsi),%r13+ movq 48(%rsi),%r14 movq %rdx,%rax sarq $63,%rax@@ -918,7 +959,7 @@ movq %rdi,8(%rsp) movq %rsi,16(%rsp)- leaq 48(%rsi),%rsi+ leaq 56(%rsi),%rsi xorq %rax,%rdx addq %rbp,%rdx@@ -928,37 +969,41 @@ xorq %rax,%r10 xorq %rax,%r11 xorq %rax,%r12- xorq %r13,%rax+ xorq %rax,%r13+ xorq %rax,%r14 addq %rbp,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12- adcq $0,%rax+ adcq $0,%r13+ adcq $0,%r14 + andq %rdx,%r14+ negq %r14+ mulxq %r8,%r8,%rbp- mulxq %r9,%r9,%r13+ mulxq %r9,%r9,%rax addq %rbp,%r9 mulxq %r10,%r10,%rbp- adcq %r13,%r10- mulxq %r11,%r11,%r13+ adcq %rax,%r10+ mulxq %r11,%r11,%rax adcq %rbp,%r11 mulxq %r12,%r12,%rbp- adcq %r13,%r12- adcq $0,%rbp- imulq %rdx- addq %rbp,%rax- adcq $0,%rdx+ adcq %rax,%r12+ mulxq %r13,%r13,%rax+ adcq %rbp,%r13+ adcq %rax,%r14 movq %r8,0(%rdi) movq %r9,8(%rdi) movq %r10,16(%rdi) movq %r11,24(%rdi) movq %r12,32(%rdi)- movq %rax,40(%rdi)- movq %rdx,48(%rdi)- sarq $63,%rdx- movq %rdx,56(%rdi)+ movq %r13,40(%rdi)+ movq %r14,48(%rdi)+ sarq $63,%r14+ movq %r14,56(%rdi) movq %rcx,%rdx movq %rcx,%rax @@ -993,7 +1038,7 @@ xorq %rax,%rbx xorq %rax,%rbp xorq %rax,%rcx- xorq %rax,%rdi+ xorq %rdi,%rax addq %rsi,%r8 adcq $0,%r9 adcq $0,%r10@@ -1005,63 +1050,65 @@ adcq $0,%rbx adcq $0,%rbp adcq $0,%rcx- adcq $0,%rdi-- mulxq %r8,%r8,%rax- mulxq %r9,%r9,%rsi- addq %rax,%r9- mulxq %r10,%r10,%rax- adcq %rsi,%r10- mulxq %r11,%r11,%rsi- adcq %rax,%r11- mulxq %r12,%r12,%rax- adcq %rsi,%r12- mulxq %r13,%r13,%rsi- adcq %rax,%r13- mulxq %r14,%r14,%rax- adcq %rsi,%r14- mulxq %r15,%r15,%rsi- adcq %rax,%r15- mulxq %rbx,%rbx,%rax- adcq %rsi,%rbx- mulxq %rbp,%rbp,%rsi- adcq %rax,%rbp- mulxq %rcx,%rcx,%rax- adcq %rsi,%rcx- mulxq %rdi,%rdi,%rsi- movq 8(%rsp),%rdx- movq 16(%rsp),%rsi- adcq %rdi,%rax+ adcq $0,%rax - addq 0(%rdx),%r8- adcq 8(%rdx),%r9- adcq 16(%rdx),%r10- adcq 24(%rdx),%r11- adcq 32(%rdx),%r12- adcq 40(%rdx),%r13- adcq 48(%rdx),%r14- movq 56(%rdx),%rdi- adcq %rdi,%r15+ mulxq %r8,%r8,%rsi+ mulxq %r9,%r9,%rdi+ addq %rsi,%r9+ mulxq %r10,%r10,%rsi+ adcq %rdi,%r10+ mulxq %r11,%r11,%rdi+ adcq %rsi,%r11+ mulxq %r12,%r12,%rsi+ adcq %rdi,%r12+ mulxq %r13,%r13,%rdi+ adcq %rsi,%r13+ mulxq %r14,%r14,%rsi+ adcq %rdi,%r14+ mulxq %r15,%r15,%rdi+ adcq %rsi,%r15+ mulxq %rbx,%rbx,%rsi adcq %rdi,%rbx- adcq %rdi,%rbp+ mulxq %rbp,%rbp,%rdi+ adcq %rsi,%rbp+ mulxq %rcx,%rcx,%rsi adcq %rdi,%rcx- adcq %rdi,%rax+ movq 8(%rsp),%rdi+ adcq $0,%rsi+ imulq %rdx+ addq %rsi,%rax+ adcq $0,%rdx - movq %rdx,%rdi+ addq 0(%rdi),%r8+ adcq 8(%rdi),%r9+ adcq 16(%rdi),%r10+ adcq 24(%rdi),%r11+ adcq 32(%rdi),%r12+ adcq 40(%rdi),%r13+ adcq 48(%rdi),%r14+ movq 56(%rdi),%rsi+ adcq %rsi,%r15+ adcq %rsi,%rbx+ adcq %rsi,%rbp+ adcq %rsi,%rcx+ adcq %rsi,%rax+ adcq %rsi,%rdx - movq %r8,0(%rdx)- movq %r9,8(%rdx)- movq %r10,16(%rdx)- movq %r11,24(%rdx)- movq %r12,32(%rdx)- movq %r13,40(%rdx)- movq %r14,48(%rdx)- movq %r15,56(%rdx)- movq %rbx,64(%rdx)- movq %rbp,72(%rdx)- movq %rcx,80(%rdx)- movq %rax,88(%rdx)+ movq 16(%rsp),%rsi + movq %r8,0(%rdi)+ movq %r9,8(%rdi)+ movq %r10,16(%rdi)+ movq %r11,24(%rdi)+ movq %r12,32(%rdi)+ movq %r13,40(%rdi)+ movq %r14,48(%rdi)+ movq %r15,56(%rdi)+ movq %rbx,64(%rdi)+ movq %rbp,72(%rdi)+ movq %rcx,80(%rdi)+ movq %rax,88(%rdi)+ #ifdef __SGX_LVI_HARDENING__ popq %r8@@ -1072,9 +1119,9 @@ .byte 0xf3,0xc3 #endif -.def __smulx_383x63; .scl 3; .type 32; .endef+.def __smulx_384x63; .scl 3; .type 32; .endef .p2align 5-__smulx_383x63:+__smulx_384x63: .byte 0xf3,0x0f,0x1e,0xfa movq 0+0(%rsi),%r8@@ -1083,6 +1130,7 @@ movq 0+24(%rsi),%r11 movq 0+32(%rsi),%r12 movq 0+40(%rsi),%r13+ movq 0+48(%rsi),%r14 movq %rdx,%rbp sarq $63,%rbp@@ -1098,13 +1146,18 @@ xorq %rbp,%r11 xorq %rbp,%r12 xorq %rbp,%r13+ xorq %rbp,%r14 addq %rax,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12 adcq $0,%r13+ adcq $0,%r14 + andq %rdx,%r14+ negq %r14+ mulxq %r8,%r8,%rbp mulxq %r9,%r9,%rax addq %rbp,%r9@@ -1117,19 +1170,22 @@ mulxq %r13,%r13,%rax movq %rcx,%rdx adcq %rbp,%r13+ adcq %rax,%r14 movq %r8,0(%rdi) movq %r9,8(%rdi) movq %r10,16(%rdi) movq %r11,24(%rdi) movq %r12,32(%rdi)- movq %r13,40(%rdi)- movq 48+0(%rsi),%r8- movq 48+8(%rsi),%r9- movq 48+16(%rsi),%r10- movq 48+24(%rsi),%r11- movq 48+32(%rsi),%r12- movq 48+40(%rsi),%r13+ movq %r13,%r15+ movq %r14,%rbx+ movq 56+0(%rsi),%r8+ movq 56+8(%rsi),%r9+ movq 56+16(%rsi),%r10+ movq 56+24(%rsi),%r11+ movq 56+32(%rsi),%r12+ movq 56+40(%rsi),%r13+ movq 56+48(%rsi),%r14 movq %rdx,%rbp sarq $63,%rbp@@ -1145,13 +1201,18 @@ xorq %rbp,%r11 xorq %rbp,%r12 xorq %rbp,%r13+ xorq %rbp,%r14 addq %rax,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12 adcq $0,%r13+ adcq $0,%r14 + andq %rdx,%r14+ negq %r14+ mulxq %r8,%r8,%rbp mulxq %r9,%r9,%rax addq %rbp,%r9@@ -1163,13 +1224,15 @@ adcq %rax,%r12 mulxq %r13,%r13,%rax adcq %rbp,%r13+ adcq %rax,%r14 addq 0(%rdi),%r8 adcq 8(%rdi),%r9 adcq 16(%rdi),%r10 adcq 24(%rdi),%r11 adcq 32(%rdi),%r12- adcq 40(%rdi),%r13+ adcq %r15,%r13+ adcq %rbx,%r14 movq %r8,0(%rdi) movq %r9,8(%rdi)@@ -1177,6 +1240,7 @@ movq %r11,24(%rdi) movq %r12,32(%rdi) movq %r13,40(%rdi)+ movq %r14,48(%rdi) #ifdef __SGX_LVI_HARDENING__@@ -1188,13 +1252,12 @@ .byte 0xf3,0xc3 #endif -.def __smulx_383_n_shift_by_31; .scl 3; .type 32; .endef+.def __smulx_384_n_shift_by_31; .scl 3; .type 32; .endef .p2align 5-__smulx_383_n_shift_by_31:+__smulx_384_n_shift_by_31: .byte 0xf3,0x0f,0x1e,0xfa movq %rdx,%rbx- xorq %r14,%r14 movq 0+0(%rsi),%r8 movq 0+8(%rsi),%r9 movq 0+16(%rsi),%r10@@ -1215,27 +1278,29 @@ xorq %rax,%r10 xorq %rax,%r11 xorq %rax,%r12- xorq %r13,%rax+ xorq %rax,%r13 addq %rbp,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12- adcq $0,%rax+ adcq $0,%r13 + andq %rdx,%rax+ negq %rax+ mulxq %r8,%r8,%rbp- mulxq %r9,%r9,%r13+ mulxq %r9,%r9,%r14 addq %rbp,%r9 mulxq %r10,%r10,%rbp- adcq %r13,%r10- mulxq %r11,%r11,%r13+ adcq %r14,%r10+ mulxq %r11,%r11,%r14 adcq %rbp,%r11 mulxq %r12,%r12,%rbp- adcq %r13,%r12- adcq $0,%rbp- imulq %rdx- addq %rbp,%rax- adcq %rdx,%r14+ adcq %r14,%r12+ mulxq %r13,%r13,%r14+ adcq %rbp,%r13+ adcq %rax,%r14 movq %rcx,%rdx @@ -1244,7 +1309,8 @@ movq %r10,16(%rdi) movq %r11,24(%rdi) movq %r12,32(%rdi)- movq %rax,40(%rdi)+ movq %r13,40(%rdi)+ movq %r14,%r15 movq 48+0(%rsi),%r8 movq 48+8(%rsi),%r9 movq 48+16(%rsi),%r10@@ -1265,43 +1331,45 @@ xorq %rax,%r10 xorq %rax,%r11 xorq %rax,%r12- xorq %r13,%rax+ xorq %rax,%r13 addq %rbp,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12- adcq $0,%rax+ adcq $0,%r13 + andq %rdx,%rax+ negq %rax+ mulxq %r8,%r8,%rbp- mulxq %r9,%r9,%r13+ mulxq %r9,%r9,%r14 addq %rbp,%r9 mulxq %r10,%r10,%rbp- adcq %r13,%r10- mulxq %r11,%r11,%r13+ adcq %r14,%r10+ mulxq %r11,%r11,%r14 adcq %rbp,%r11 mulxq %r12,%r12,%rbp- adcq %r13,%r12- adcq $0,%rbp- imulq %rdx- addq %rbp,%rax- adcq $0,%rdx+ adcq %r14,%r12+ mulxq %r13,%r13,%r14+ adcq %rbp,%r13+ adcq %rax,%r14 addq 0(%rdi),%r8 adcq 8(%rdi),%r9 adcq 16(%rdi),%r10 adcq 24(%rdi),%r11 adcq 32(%rdi),%r12- adcq 40(%rdi),%rax- adcq %rdx,%r14+ adcq 40(%rdi),%r13+ adcq %r15,%r14 movq %rbx,%rdx shrdq $31,%r9,%r8 shrdq $31,%r10,%r9 shrdq $31,%r11,%r10 shrdq $31,%r12,%r11- shrdq $31,%rax,%r12- shrdq $31,%r14,%rax+ shrdq $31,%r13,%r12+ shrdq $31,%r14,%r13 sarq $63,%r14 xorq %rbp,%rbp@@ -1312,20 +1380,20 @@ xorq %r14,%r10 xorq %r14,%r11 xorq %r14,%r12- xorq %r14,%rax+ xorq %r14,%r13 addq %rbp,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12- adcq $0,%rax+ adcq $0,%r13 movq %r8,0(%rdi) movq %r9,8(%rdi) movq %r10,16(%rdi) movq %r11,24(%rdi) movq %r12,32(%rdi)- movq %rax,40(%rdi)+ movq %r13,40(%rdi) xorq %r14,%rdx xorq %r14,%rcx@@ -1578,9 +1646,9 @@ #endif -.def __tail_loop_53; .scl 3; .type 32; .endef+.def __tail_loop_55; .scl 3; .type 32; .endef .p2align 5-__tail_loop_53:+__tail_loop_55: .byte 0xf3,0x0f,0x1e,0xfa movq $1,%rdx@@ -1588,7 +1656,7 @@ xorq %r12,%r12 movq $1,%r13 -.Loop_53:+.Loop_55: xorq %rax,%rax testq $1,%r8 movq %r10,%rbx@@ -1615,7 +1683,7 @@ subq %rax,%rdx subq %rbx,%rcx subl $1,%edi- jnz .Loop_53+ jnz .Loop_55 #ifdef __SGX_LVI_HARDENING__@@ -1629,28 +1697,28 @@ .section .pdata .p2align 2-.rva .LSEH_begin_ctx_inverse_mod_383-.rva .LSEH_body_ctx_inverse_mod_383-.rva .LSEH_info_ctx_inverse_mod_383_prologue+.rva .LSEH_begin_ctx_inverse_mod_384+.rva .LSEH_body_ctx_inverse_mod_384+.rva .LSEH_info_ctx_inverse_mod_384_prologue -.rva .LSEH_body_ctx_inverse_mod_383-.rva .LSEH_epilogue_ctx_inverse_mod_383-.rva .LSEH_info_ctx_inverse_mod_383_body+.rva .LSEH_body_ctx_inverse_mod_384+.rva .LSEH_epilogue_ctx_inverse_mod_384+.rva .LSEH_info_ctx_inverse_mod_384_body -.rva .LSEH_epilogue_ctx_inverse_mod_383-.rva .LSEH_end_ctx_inverse_mod_383-.rva .LSEH_info_ctx_inverse_mod_383_epilogue+.rva .LSEH_epilogue_ctx_inverse_mod_384+.rva .LSEH_end_ctx_inverse_mod_384+.rva .LSEH_info_ctx_inverse_mod_384_epilogue .section .xdata .p2align 3-.LSEH_info_ctx_inverse_mod_383_prologue:+.LSEH_info_ctx_inverse_mod_384_prologue: .byte 1,0,5,0x0b .byte 0,0x74,1,0 .byte 0,0x64,2,0 .byte 0,0xb3 .byte 0,0 .long 0,0-.LSEH_info_ctx_inverse_mod_383_body:+.LSEH_info_ctx_inverse_mod_384_body: .byte 1,0,18,0 .byte 0x00,0xf4,0x8b,0x00 .byte 0x00,0xe4,0x8c,0x00@@ -1663,7 +1731,7 @@ .byte 0x00,0x01,0x91,0x00 .byte 0x00,0x00,0x00,0x00 .byte 0x00,0x00,0x00,0x00-.LSEH_info_ctx_inverse_mod_383_epilogue:+.LSEH_info_ctx_inverse_mod_384_epilogue: .byte 1,0,4,0 .byte 0x00,0x74,0x01,0x00 .byte 0x00,0x64,0x02,0x00
c-source/build/coff/div3w-armv8.S view
@@ -7,6 +7,7 @@ .endef .p2align 5 div_3_limbs:+ hint #34 ldp x4,x5,[x0] // load R eor x0,x0,x0 // Q = 0 mov x3,#64 // loop counter@@ -43,6 +44,7 @@ .endef .p2align 5 quot_rem_128:+ hint #34 ldp x3,x4,[x1] mul x5,x3,x2 // divisor[0:1} * quotient@@ -82,6 +84,7 @@ .endef .p2align 5 quot_rem_64:+ hint #34 ldr x3,[x1] ldr x8,[x0] // load 1 limb of the dividend
c-source/build/coff/mul_mont_256-armv8.S view
@@ -7,6 +7,7 @@ .endef .p2align 5 mul_mont_sparse_256:+ hint #34 stp x29,x30,[sp,#-8*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -200,7 +201,7 @@ .endef .p2align 5 sqr_mont_sparse_256:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -301,7 +302,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret .globl from_mont_256@@ -311,7 +312,7 @@ .endef .p2align 5 from_mont_256:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-2*__SIZEOF_POINTER__]! add x29,sp,#0 @@ -336,7 +337,7 @@ stp x12,x13,[x0,#16] ldr x29,[sp],#2*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -347,7 +348,7 @@ .endef .p2align 5 redc_mont_256:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-2*__SIZEOF_POINTER__]! add x29,sp,#0 @@ -382,7 +383,7 @@ stp x12,x13,[x0,#16] ldr x29,[sp],#2*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret
c-source/build/coff/mul_mont_384-armv8.S view
@@ -1,12 +1,13 @@ .text .globl add_mod_384x384+ .def add_mod_384x384; .type 32; .endef .p2align 5 add_mod_384x384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-8*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -24,7 +25,7 @@ ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldp x23,x24,[x29,#6*__SIZEOF_POINTER__] ldr x29,[sp],#8*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -86,12 +87,13 @@ .globl sub_mod_384x384+ .def sub_mod_384x384; .type 32; .endef .p2align 5 sub_mod_384x384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-8*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -109,7 +111,7 @@ ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldp x23,x24,[x29,#6*__SIZEOF_POINTER__] ldr x29,[sp],#8*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -253,7 +255,7 @@ .endef .p2align 5 mul_mont_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -326,7 +328,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -337,7 +339,7 @@ .endef .p2align 5 sqr_mont_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -413,7 +415,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -424,7 +426,7 @@ .endef .p2align 5 mul_mont_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -456,7 +458,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -841,7 +843,7 @@ .endef .p2align 5 sqr_mont_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -878,7 +880,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -889,7 +891,7 @@ .endef .p2align 5 sqr_n_mul_mont_383:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -945,7 +947,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret .def __sqr_384;@@ -1070,7 +1072,7 @@ .endef .p2align 5 sqr_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1092,7 +1094,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -1103,7 +1105,7 @@ .endef .p2align 5 redc_mont_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1127,7 +1129,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -1138,7 +1140,7 @@ .endef .p2align 5 from_mont_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1179,7 +1181,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -1403,7 +1405,7 @@ .endef .p2align 5 mul_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1421,7 +1423,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -1611,7 +1613,7 @@ .endef .p2align 5 mul_382x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1693,7 +1695,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -1704,7 +1706,7 @@ .endef .p2align 5 sqr_382x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1795,7 +1797,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -1806,7 +1808,7 @@ .endef .p2align 5 sqr_mont_382x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1921,7 +1923,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -2274,7 +2276,7 @@ .endef .p2align 5 sgn0_pty_mont_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -2319,7 +2321,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -2330,7 +2332,7 @@ .endef .p2align 5 sgn0_pty_mont_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -2419,6 +2421,6 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret
c-source/build/coff/sha256-armv8.S view
@@ -43,11 +43,13 @@ .align 2 .p2align 2 .globl blst_sha256_block_armv8+ .def blst_sha256_block_armv8; .type 32; .endef .p2align 6 blst_sha256_block_armv8:+ hint #34 .Lv8_entry: stp x29,x30,[sp,#-2*__SIZEOF_POINTER__]! add x29,sp,#0@@ -184,11 +186,13 @@ ret .globl blst_sha256_block_data_order+ .def blst_sha256_block_data_order; .type 32; .endef .p2align 4 blst_sha256_block_data_order:+ hint #34 adrp x16,__blst_platform_cap ldr w16,[x16,#:lo12:__blst_platform_cap] tst w16,#1@@ -1040,6 +1044,7 @@ .endef .p2align 4 blst_sha256_emit:+ hint #34 ldp x4,x5,[x1] ldp x6,x7,[x1,#16] #ifndef __AARCH64EB__@@ -1070,6 +1075,7 @@ .endef .p2align 4 blst_sha256_bcopy:+ hint #34 .Loop_bcopy: ldrb w3,[x1],#1 sub x2,x2,#1@@ -1085,6 +1091,7 @@ .endef .p2align 4 blst_sha256_hcopy:+ hint #34 ldp x4,x5,[x1] ldp x6,x7,[x1,#16] stp x4,x5,[x0]
c-source/build/elf/add_mod_256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text .globl add_mod_256@@ -5,6 +13,7 @@ .type add_mod_256,%function .align 5 add_mod_256:+ hint #34 ldp x8,x9,[x1] ldp x12,x13,[x2] @@ -39,6 +48,7 @@ .type mul_by_3_mod_256,%function .align 5 mul_by_3_mod_256:+ hint #34 ldp x12,x13,[x1] ldp x14,x15,[x1,#16] @@ -88,6 +98,7 @@ .type lshift_mod_256,%function .align 5 lshift_mod_256:+ hint #34 ldp x8,x9,[x1] ldp x10,x11,[x1,#16] @@ -126,6 +137,7 @@ .type rshift_mod_256,%function .align 5 rshift_mod_256:+ hint #34 ldp x8,x9,[x1] ldp x10,x11,[x1,#16] @@ -377,3 +389,13 @@ ret .size sub_n_check_mod_256,.-sub_n_check_mod_256++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/elf/add_mod_384-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text .globl add_mod_384@@ -5,7 +13,7 @@ .type add_mod_384,%function .align 5 add_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -25,7 +33,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size add_mod_384,.-add_mod_384 @@ -71,7 +79,7 @@ .type add_mod_384x,%function .align 5 add_mod_384x:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -99,7 +107,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size add_mod_384x,.-add_mod_384x @@ -108,7 +116,7 @@ .type rshift_mod_384,%function .align 5 rshift_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -135,7 +143,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size rshift_mod_384,.-rshift_mod_384 @@ -170,7 +178,7 @@ .type div_by_2_mod_384,%function .align 5 div_by_2_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -194,7 +202,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size div_by_2_mod_384,.-div_by_2_mod_384 @@ -203,7 +211,7 @@ .type lshift_mod_384,%function .align 5 lshift_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -230,7 +238,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size lshift_mod_384,.-lshift_mod_384 @@ -268,7 +276,7 @@ .type mul_by_3_mod_384,%function .align 5 mul_by_3_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -298,7 +306,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_by_3_mod_384,.-mul_by_3_mod_384 @@ -307,7 +315,7 @@ .type mul_by_8_mod_384,%function .align 5 mul_by_8_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -333,7 +341,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_by_8_mod_384,.-mul_by_8_mod_384 @@ -342,7 +350,7 @@ .type mul_by_3_mod_384x,%function .align 5 mul_by_3_mod_384x:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -387,7 +395,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_by_3_mod_384x,.-mul_by_3_mod_384x @@ -396,7 +404,7 @@ .type mul_by_8_mod_384x,%function .align 5 mul_by_8_mod_384x:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -433,7 +441,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_by_8_mod_384x,.-mul_by_8_mod_384x @@ -442,7 +450,7 @@ .type cneg_mod_384,%function .align 5 cneg_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -484,7 +492,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size cneg_mod_384,.-cneg_mod_384 @@ -493,7 +501,7 @@ .type sub_mod_384,%function .align 5 sub_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -513,7 +521,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sub_mod_384,.-sub_mod_384 @@ -556,7 +564,7 @@ .type sub_mod_384x,%function .align 5 sub_mod_384x:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -584,7 +592,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sub_mod_384x,.-sub_mod_384x @@ -593,7 +601,7 @@ .type mul_by_1_plus_i_mod_384x,%function .align 5 mul_by_1_plus_i_mod_384x:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -626,7 +634,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_by_1_plus_i_mod_384x,.-mul_by_1_plus_i_mod_384x @@ -635,6 +643,7 @@ .type sgn0_pty_mod_384,%function .align 5 sgn0_pty_mod_384:+ hint #34 ldp x10,x11,[x0] ldp x12,x13,[x0,#16] ldp x14,x15,[x0,#32]@@ -672,6 +681,7 @@ .type sgn0_pty_mod_384x,%function .align 5 sgn0_pty_mod_384x:+ hint #34 ldp x10,x11,[x0] ldp x12,x13,[x0,#16] ldp x14,x15,[x0,#32]@@ -753,14 +763,14 @@ .type vec_select_32,%function .align 5 vec_select_32:+ hint #34 dup v6.2d, x3- ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48+ ld1 {v0.2d, v1.2d}, [x1] cmeq v6.2d, v6.2d, #0- ld1 {v3.2d, v4.2d, v5.2d}, [x2],#48+ ld1 {v3.2d, v4.2d}, [x2] bit v0.16b, v3.16b, v6.16b bit v1.16b, v4.16b, v6.16b- bit v2.16b, v5.16b, v6.16b- st1 {v0.2d, v1.2d, v2.2d}, [x0]+ st1 {v0.2d, v1.2d}, [x0] ret .size vec_select_32,.-vec_select_32 .globl vec_select_48@@ -768,6 +778,7 @@ .type vec_select_48,%function .align 5 vec_select_48:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48 cmeq v6.2d, v6.2d, #0@@ -783,6 +794,7 @@ .type vec_select_96,%function .align 5 vec_select_96:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48 cmeq v6.2d, v6.2d, #0@@ -804,6 +816,7 @@ .type vec_select_192,%function .align 5 vec_select_192:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48 cmeq v6.2d, v6.2d, #0@@ -837,6 +850,7 @@ .type vec_select_144,%function .align 5 vec_select_144:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48 cmeq v6.2d, v6.2d, #0@@ -864,6 +878,7 @@ .type vec_select_288,%function .align 5 vec_select_288:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48 cmeq v6.2d, v6.2d, #0@@ -909,6 +924,7 @@ .type vec_prefetch,%function .align 5 vec_prefetch:+ hint #34 add x1, x1, x0 sub x1, x1, #1 mov x2, #64@@ -949,6 +965,7 @@ .type vec_is_zero_16x,%function .align 5 vec_is_zero_16x:+ hint #34 ld1 {v0.2d}, [x0], #16 lsr x1, x1, #4 sub x1, x1, #1@@ -974,6 +991,7 @@ .type vec_is_equal_16x,%function .align 5 vec_is_equal_16x:+ hint #34 ld1 {v0.2d}, [x0], #16 ld1 {v1.2d}, [x1], #16 lsr x2, x2, #4@@ -998,3 +1016,13 @@ csel x0, x0, xzr, eq ret .size vec_is_equal_16x,.-vec_is_equal_16x++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/elf/ct_inverse_mod_256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text .globl ct_inverse_mod_256@@ -5,7 +13,7 @@ .type ct_inverse_mod_256, %function .align 5 ct_inverse_mod_256:- .inst 0xd503233f+ hint #PACI_HINT stp x29, x30, [sp,#-10*__SIZEOF_POINTER__]! add x29, sp, #0 stp x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -48,7 +56,7 @@ mov x13, x15 // |g1| add x0,x0,#8*4 bl __smul_256_n_shift_by_31- str x12, [x0,#8*9] // initialize |v| with |f1|+ str x12, [x0,#8*10] // initialize |v| with |f1| ////////////////////////////////////////// second iteration eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -71,19 +79,17 @@ bl __smul_256_n_shift_by_31 ldr x8, [x1,#8*8] // |u|- ldr x9, [x1,#8*13] // |v|+ ldr x9, [x1,#8*14] // |v| madd x4, x16, x8, xzr // |u|*|f0| madd x4, x17, x9, x4 // |v|*|g0|- str x4, [x0,#8*4] asr x5, x4, #63 // sign extension- stp x5, x5, [x0,#8*5]- stp x5, x5, [x0,#8*7]+ stp x4, x5, [x0,#8*4]+ stp x5, x5, [x0,#8*6] madd x4, x12, x8, xzr // |u|*|f1| madd x4, x13, x9, x4 // |v|*|g1|- str x4, [x0,#8*9] asr x5, x4, #63 // sign extension- stp x5, x5, [x0,#8*10]+ stp x4, x5, [x0,#8*10] stp x5, x5, [x0,#8*12] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__@@ -106,16 +112,10 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -137,16 +137,10 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -168,16 +162,10 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -199,16 +187,10 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -230,16 +212,10 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -261,16 +237,15 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]-+ asr x24, x24, #63+ str x24, [x0,#8*4] mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6]+ asr x24, x24, #63 // sign extension+ stp x24, x24, [x0,#8*4]+ stp x24, x24, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -294,10 +269,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -323,10 +297,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -352,10 +325,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -381,10 +353,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -410,10 +381,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -439,10 +409,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -468,10 +437,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail ////////////////////////////////////////// two[!] last iterations@@ -541,7 +509,7 @@ ldp x23, x24, [x29,#6*__SIZEOF_POINTER__] ldp x25, x26, [x29,#8*__SIZEOF_POINTER__] ldr x29, [sp],#10*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size ct_inverse_mod_256,.-ct_inverse_mod_256 @@ -579,11 +547,11 @@ adcs x6, x6, x20 adcs x24, x24, x21 adc x26, xzr, xzr- ldp x8, x9, [x1,#8*0+104] // load |u| (or |v|)+ ldp x8, x9, [x1,#8*0+112] // load |u| (or |v|) asr x14, x17, #63 // |f_|'s sign as mask (or |g_|'s)- ldp x10, x11, [x1,#8*2+104]+ ldp x10, x11, [x1,#8*2+112] eor x17, x17, x14 // conditionally negate |f_| (or |g_|)- ldr x23, [x1,#8*4+104]+ ldr x23, [x1,#8*4+112] eor x8, x8, x14 // conditionally negate |u| (or |v|) sub x17, x17, x14@@ -625,9 +593,9 @@ .align 5 __smul_512x63_tail: umulh x24, x7, x16- ldp x5, x6, [x1,#8*18] // load rest of |v|+ ldr x5, [x1,#8*19] // load rest of |v| adc x26, x26, xzr- ldr x7, [x1,#8*20]+ ldp x6, x7, [x1,#8*20] and x22, x22, x16 umulh x11, x11, x17 // resume |v|*|g1| chain@@ -878,3 +846,13 @@ ret .size __inner_loop_62_256,.-__inner_loop_62_256++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/elf/ct_inverse_mod_384-armv8.S view
@@ -1,11 +1,19 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text -.globl ct_inverse_mod_383-.hidden ct_inverse_mod_383-.type ct_inverse_mod_383, %function+.globl ct_inverse_mod_384+.hidden ct_inverse_mod_384+.type ct_inverse_mod_384, %function .align 5-ct_inverse_mod_383:- .inst 0xd503233f+ct_inverse_mod_384:+ hint #PACI_HINT stp x29, x30, [sp,#-16*__SIZEOF_POINTER__]! add x29, sp, #0 stp x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -47,14 +55,14 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 str x15,[x0,#8*12] // initialize |u| with |f0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62- str x15, [x0,#8*12] // initialize |v| with |f1|+ bl __smul_384_n_shift_by_62+ str x15, [x0,#8*14] // initialize |v| with |f1| ////////////////////////////////////////// second iteration eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -68,17 +76,17 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 ldr x7, [x1,#8*12] // |u|- ldr x8, [x1,#8*18] // |v|+ ldr x8, [x1,#8*20] // |v| mul x3, x20, x7 // |u|*|f0| smulh x4, x20, x7 mul x5, x21, x8 // |v|*|g0|@@ -96,10 +104,10 @@ smulh x6, x16, x8 adds x3, x3, x5 adc x4, x4, x6- stp x3, x4, [x0,#8*12]+ stp x3, x4, [x0,#8*14] asr x5, x4, #63 // sign extension- stp x5, x5, [x0,#8*14] stp x5, x5, [x0,#8*16]+ stp x5, x5, [x0,#8*18] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -111,22 +119,21 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63 mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63+ add x0,x0,#8*8+ bl __smul_384x63 eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -138,22 +145,21 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63 mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63+ add x0,x0,#8*8+ bl __smul_384x63 eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -165,22 +171,21 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63 mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63+ add x0,x0,#8*8+ bl __smul_384x63 eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -192,22 +197,23 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ asr x27, x27, #63+ str x27, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63+ add x0,x0,#8*8+ bl __smul_384x63 asr x27, x27, #63 // sign extension stp x27, x27, [x0,#8*6] stp x27, x27, [x0,#8*8]@@ -223,23 +229,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -251,23 +258,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -279,23 +287,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -307,23 +316,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -335,23 +345,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail ////////////////////////////////////////// iteration before last eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__@@ -375,20 +386,22 @@ mov x15, x17 mov x16, x19 add x0,x0,#8*12- bl __smul_383x63+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // exact |f1| mov x21, x16 // exact |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail ////////////////////////////////////////// last iteration eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1 #endif- mov x2, #22 // 766 % 62+ mov x2, #24 // 768 % 62 //bl __ab_approximation_62 // |a| and |b| are exact, ldr x3, [x1,#8*0] // just load eor x8, x8, x8@@ -399,25 +412,60 @@ mov x20, x17 mov x21, x19 ldp x0, x15, [sp] // original out_ptr and n_ptr- bl __smul_383x63- bl __smul_767x63_tail+ bl __smul_384x63+ bl __smul_768x63_tail ldr x30, [x29,#__SIZEOF_POINTER__] - asr x22, x8, #63 // sign as mask- ldp x9, x10, [x15,#8*0]+ smulh x23, x8, x21 // figure out top-most limb+ adc x26, x26, x28+ ldp x9, x10, [x15,#8*0] // load |mod|+ add x23, x23, x26 // x23 is 1, 0 or -1 ldp x11, x12, [x15,#8*2]+ asr x22, x23, #63 // sign as mask ldp x13, x14, [x15,#8*4] - and x9, x9, x22 // add mod<<384 conditionally- and x10, x10, x22- adds x3, x3, x9- and x11, x11, x22+ and x26, x9, x22 // add mod<<384 conditionally+ and x27, x10, x22+ adds x3, x3, x26+ and x28, x11, x22+ adcs x4, x4, x27+ and x2, x12, x22+ adcs x5, x5, x28+ and x26, x13, x22+ adcs x6, x6, x2+ and x27, x14, x22+ adcs x7, x7, x26+ adcs x8, x25, x27+ adc x23, x23, xzr // x23 is 1, 0 or -1++ neg x22, x23+ orr x23, x23, x22 // excess bit or sign as mask+ asr x22, x22, #63 // excess bit as mask++ and x9, x9, x23 // mask |mod|+ and x10, x10, x23+ and x11, x11, x23+ and x12, x12, x23+ and x13, x13, x23+ and x14, x14, x23++ eor x9, x9, x22 // conditionally negate |mod|+ eor x10, x10, x22+ adds x9, x9, x22, lsr#63+ eor x11, x11, x22+ adcs x10, x10, xzr+ eor x12, x12, x22+ adcs x11, x11, xzr+ eor x13, x13, x22+ adcs x12, x12, xzr+ eor x14, x14, x22+ adcs x13, x13, xzr+ adc x14, x14, xzr++ adds x3, x3, x9 // final adjustment for |mod|<<384 adcs x4, x4, x10- and x12, x12, x22 adcs x5, x5, x11- and x13, x13, x22 adcs x6, x6, x12- and x14, x14, x22 stp x3, x4, [x0,#8*6] adcs x7, x7, x13 stp x5, x6, [x0,#8*8]@@ -431,15 +479,15 @@ ldp x25, x26, [x29,#8*__SIZEOF_POINTER__] ldp x27, x28, [x29,#10*__SIZEOF_POINTER__] ldr x29, [sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret-.size ct_inverse_mod_383,.-ct_inverse_mod_383+.size ct_inverse_mod_384,.-ct_inverse_mod_384 //////////////////////////////////////////////////////////////////////// // see corresponding commentary in ctx_inverse_mod_384-x86_64...-.type __smul_383x63, %function+.type __smul_384x63, %function .align 5-__smul_383x63:+__smul_384x63: ldp x3, x4, [x1,#8*0+96] // load |u| (or |v|) asr x17, x20, #63 // |f_|'s sign as mask (or |g_|'s) ldp x5, x6, [x1,#8*2+96]@@ -447,6 +495,7 @@ ldp x7, x8, [x1,#8*4+96] eor x3, x3, x17 // conditionally negate |u| (or |v|)+ ldr x25, [x1,#8*6+96] sub x20, x20, x17 eor x4, x4, x17 adds x3, x3, x17, lsr#63@@ -461,28 +510,33 @@ umulh x23, x4, x20 adcs x7, x7, xzr umulh x24, x5, x20- adcs x8, x8, xzr- umulh x25, x6, x20- umulh x26, x7, x20+ eor x25, x25, x17 mul x3, x3, x20+ adcs x8, x8, xzr mul x4, x4, x20+ adcs x25, x25, xzr+ cmp x20, #0 mul x5, x5, x20+ csel x25, x25, xzr, ne adds x4, x4, x22- mul x6, x6, x20+ umulh x22, x6, x20 adcs x5, x5, x23+ umulh x23, x7, x20+ mul x6, x6, x20 mul x7, x7, x20 adcs x6, x6, x24 mul x27,x8, x20- adcs x7, x7, x25- adcs x27,x27,x26+ adcs x7, x7, x22+ adcs x27,x27,x23 adc x2, xzr, xzr- ldp x9, x10, [x1,#8*0+144] // load |u| (or |v|)+ ldp x9, x10, [x1,#8*0+160] // load |u| (or |v|) asr x17, x21, #63 // |f_|'s sign as mask (or |g_|'s)- ldp x11, x12, [x1,#8*2+144]+ ldp x11, x12, [x1,#8*2+160] eor x21, x21, x17 // conditionally negate |f_| (or |g_|)- ldp x13, x14, [x1,#8*4+144]+ ldp x13, x14, [x1,#8*4+160] eor x9, x9, x17 // conditionally negate |u| (or |v|)+ ldr x26, [x1,#8*6+160] sub x21, x21, x17 eor x10, x10, x17 adds x9, x9, x17, lsr#63@@ -497,21 +551,25 @@ umulh x23, x10, x21 adcs x13, x13, xzr umulh x24, x11, x21- adcs x14, x14, xzr- umulh x25, x12, x21- adc x19, xzr, xzr // used in __smul_767x63_tail- umulh x26, x13, x21+ eor x26, x26, x17 mul x9, x9, x21+ adcs x14, x14, xzr mul x10, x10, x21+ adcs x26, x26, xzr+ adc x19, xzr, xzr // used in __smul_768x63_tail+ cmp x21, #0 mul x11, x11, x21+ csel x26, x26, xzr, ne adds x10, x10, x22- mul x12, x12, x21+ umulh x22, x12, x21 adcs x11, x11, x23+ umulh x23, x13, x21+ mul x12, x12, x21 mul x13, x13, x21 adcs x12, x12, x24 mul x28,x14, x21- adcs x13, x13, x25- adcs x28,x28,x26+ adcs x13, x13, x22+ adcs x28,x28,x23 adc x2, x2, xzr adds x3, x3, x9@@ -523,41 +581,41 @@ stp x5, x6, [x0,#8*2] adcs x27, x27, x28 stp x7, x27, [x0,#8*4]- adc x28, x2, xzr // used in __smul_767x63_tail ret-.size __smul_383x63,.-__smul_383x63+.size __smul_384x63,.-__smul_384x63 -.type __smul_767x63_tail, %function+.type __smul_768x63_tail, %function .align 5-__smul_767x63_tail:- smulh x27, x8, x20- ldp x3, x4, [x1,#8*24] // load rest of |v|- umulh x14,x14, x21- ldp x5, x6, [x1,#8*26]- ldp x7, x8, [x1,#8*28]+__smul_768x63_tail:+ umulh x27, x8, x20+ ldr x4, [x1,#8*27]// load rest of |v|+ adc x2, x2, xzr+ ldp x5, x6, [x1,#8*28]+ and x25, x25, x20+ ldp x7, x8, [x1,#8*30]+ sub x27, x27, x25 // tie up |u|*|f1| chain - eor x3, x3, x17 // conditionally negate rest of |v|- eor x4, x4, x17+ umulh x14, x14, x21 // resume |v|*|g1| chain+ eor x4, x4, x17 // conditionally negate rest of |v| eor x5, x5, x17- adds x3, x3, x19 eor x6, x6, x17- adcs x4, x4, xzr+ adds x4, x4, x19 eor x7, x7, x17 adcs x5, x5, xzr eor x8, x8, x17 adcs x6, x6, xzr- umulh x22, x3, x21+ umulh x22, x26, x21 adcs x7, x7, xzr umulh x23, x4, x21 adc x8, x8, xzr umulh x24, x5, x21- add x14, x14, x28+ add x14, x14, x2 umulh x25, x6, x21 asr x28, x27, #63- umulh x26, x7, x21- mul x3, x3, x21+ umulh x2, x7, x21+ mul x3, x26, x21 mul x4, x4, x21 mul x5, x5, x21 adds x3, x3, x14@@ -565,10 +623,11 @@ adcs x4, x4, x22 mul x7, x7, x21 adcs x5, x5, x23- mul x8, x8, x21+ mul x22, x8, x21 adcs x6, x6, x24 adcs x7, x7, x25- adc x8, x8, x26+ adcs x25, x22, x2+ adc x26, xzr, xzr // used in the final step adds x3, x3, x27 adcs x4, x4, x28@@ -577,15 +636,15 @@ stp x3, x4, [x0,#8*6] adcs x7, x7, x28 stp x5, x6, [x0,#8*8]- adc x8, x8, x28- stp x7, x8, [x0,#8*10]+ adcs x25, x25, x28 // carry is used in the final step+ stp x7, x25, [x0,#8*10] ret-.size __smul_767x63_tail,.-__smul_767x63_tail+.size __smul_768x63_tail,.-__smul_768x63_tail -.type __smul_383_n_shift_by_62, %function+.type __smul_384_n_shift_by_62, %function .align 5-__smul_383_n_shift_by_62:+__smul_384_n_shift_by_62: ldp x3, x4, [x1,#8*0+0] // load |a| (or |b|) asr x28, x15, #63 // |f0|'s sign as mask (or |g0|'s) ldp x5, x6, [x1,#8*2+0]@@ -605,25 +664,27 @@ adcs x6, x6, xzr umulh x23, x4, x2 eor x8, x8, x28- umulh x24, x5, x2+ mul x3, x3, x2 adcs x7, x7, xzr- umulh x25, x6, x2+ mul x4, x4, x2 adc x8, x8, xzr - umulh x26, x7, x2- smulh x27, x8, x2- mul x3, x3, x2- mul x4, x4, x2- mul x5, x5, x2+ umulh x24, x5, x2+ and x28, x28, x2+ umulh x25, x6, x2 adds x4, x4, x22+ mul x5, x5, x2+ umulh x22, x7, x2+ neg x28, x28 mul x6, x6, x2 adcs x5, x5, x23+ umulh x23, x8, x2 mul x7, x7, x2 adcs x6, x6, x24 mul x8, x8, x2 adcs x7, x7, x25- adcs x8, x8 ,x26- adc x27, x27, xzr+ adcs x8, x8, x22+ adc x27, x23, x28 ldp x9, x10, [x1,#8*0+48] // load |a| (or |b|) asr x28, x16, #63 // |f0|'s sign as mask (or |g0|'s) ldp x11, x12, [x1,#8*2+48]@@ -643,25 +704,27 @@ adcs x12, x12, xzr umulh x23, x10, x2 eor x14, x14, x28- umulh x24, x11, x2+ mul x9, x9, x2 adcs x13, x13, xzr- umulh x25, x12, x2+ mul x10, x10, x2 adc x14, x14, xzr - umulh x26, x13, x2- smulh x28, x14, x2- mul x9, x9, x2- mul x10, x10, x2- mul x11, x11, x2+ umulh x24, x11, x2+ and x28, x28, x2+ umulh x25, x12, x2 adds x10, x10, x22+ mul x11, x11, x2+ umulh x22, x13, x2+ neg x28, x28 mul x12, x12, x2 adcs x11, x11, x23+ umulh x23, x14, x2 mul x13, x13, x2 adcs x12, x12, x24 mul x14, x14, x2 adcs x13, x13, x25- adcs x14, x14 ,x26- adc x28, x28, xzr+ adcs x14, x14, x22+ adc x28, x23, x28 adds x3, x3, x9 adcs x4, x4, x10 adcs x5, x5, x11@@ -700,7 +763,7 @@ sub x16, x16, x28 ret-.size __smul_383_n_shift_by_62,.-__smul_383_n_shift_by_62+.size __smul_384_n_shift_by_62,.-__smul_384_n_shift_by_62 .type __ab_approximation_62, %function .align 4 __ab_approximation_62:@@ -793,3 +856,13 @@ ret .size __inner_loop_62,.-__inner_loop_62++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/elf/ct_is_square_mod_384-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text .globl ct_is_square_mod_384@@ -5,7 +13,7 @@ .type ct_is_square_mod_384, %function .align 5 ct_is_square_mod_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29, x30, [sp,#-16*__SIZEOF_POINTER__]! add x29, sp, #0 stp x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -84,7 +92,7 @@ ldp x25, x26, [x29,#8*__SIZEOF_POINTER__] ldp x27, x28, [x29,#10*__SIZEOF_POINTER__] ldr x29, [sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size ct_is_square_mod_384,.-ct_is_square_mod_384 @@ -332,3 +340,13 @@ ret .size __inner_loop_48,.-__inner_loop_48++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/elf/ctq_inverse_mod_384-x86_64.s view
@@ -1,18 +1,18 @@ .comm __blst_platform_cap,4 .text -.globl ct_inverse_mod_383-.hidden ct_inverse_mod_383-.type ct_inverse_mod_383,@function+.globl ct_inverse_mod_384+.hidden ct_inverse_mod_384+.type ct_inverse_mod_384,@function .align 32-ct_inverse_mod_383:+ct_inverse_mod_384: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa #ifdef __BLST_PORTABLE__ testl $1,__blst_platform_cap(%rip)- jnz ct_inverse_mod_383$1+ jnz ct_inverse_mod_384$1 #endif pushq %rbp .cfi_adjust_cfa_offset 8@@ -80,7 +80,7 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,96(%rdi)@@ -88,10 +88,10 @@ movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 - movq %rdx,96(%rdi)+ movq %rdx,104(%rdi) xorq $256,%rsi@@ -104,19 +104,19 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq 96(%rsi),%rax- movq 144(%rsi),%r11+ movq 152(%rsi),%r11 movq %rdx,%rbx movq %rax,%r10 imulq 56(%rsp)@@ -133,6 +133,7 @@ movq %r9,72(%rdi) movq %r9,80(%rdi) movq %r9,88(%rdi)+ movq %r9,96(%rdi) leaq 96(%rsi),%rsi movq %r10,%rax@@ -143,13 +144,14 @@ imulq %rcx addq %rax,%r8 adcq %rdx,%r9- movq %r8,96(%rdi)- movq %r9,104(%rdi)- sarq $63,%r9+ movq %r8,104(%rdi) movq %r9,112(%rdi)+ sarq $63,%r9 movq %r9,120(%rdi) movq %r9,128(%rdi) movq %r9,136(%rdi)+ movq %r9,144(%rdi)+ movq %r9,152(%rdi) xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -160,14 +162,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -175,12 +177,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_383x63+ leaq 56(%rdi),%rdi+ call __smulq_384x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -191,14 +193,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -206,12 +208,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_383x63+ leaq 56(%rdi),%rdi+ call __smulq_384x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -222,14 +224,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -237,12 +239,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_383x63+ leaq 56(%rdi),%rdi+ call __smulq_384x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -253,14 +255,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -268,19 +270,17 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_383x63- sarq $63,%r13- movq %r13,48(%rdi)- movq %r13,56(%rdi)- movq %r13,64(%rdi)- movq %r13,72(%rdi)- movq %r13,80(%rdi)- movq %r13,88(%rdi)+ leaq 56(%rdi),%rdi+ call __smulq_384x63+ movq %r14,56(%rdi)+ movq %r14,64(%rdi)+ movq %r14,72(%rdi)+ movq %r14,80(%rdi)+ movq %r14,88(%rdi) xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -291,14 +291,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -306,12 +306,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -322,14 +322,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -337,12 +337,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -353,14 +353,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -368,12 +368,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -384,14 +384,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -399,12 +399,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -415,14 +415,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -430,12 +430,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi movl $62,%edi@@ -459,16 +459,16 @@ leaq 96(%rsi),%rsi leaq 96(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi- movl $22,%edi+ movl $24,%edi movq 0(%rsi),%r8 xorq %r9,%r9@@ -491,37 +491,77 @@ movq %r12,%rdx movq %r13,%rcx movq 32(%rsp),%rdi- call __smulq_767x63+ call __smulq_768x63 movq 40(%rsp),%rsi- movq %rax,%rdx- sarq $63,%rax+ movq %rdx,%r13+ sarq $63,%r13 - movq %rax,%r8- movq %rax,%r9- movq %rax,%r10+ movq %r13,%r8+ movq %r13,%r9+ movq %r13,%r10 andq 0(%rsi),%r8 andq 8(%rsi),%r9- movq %rax,%r11+ movq %r13,%r11 andq 16(%rsi),%r10 andq 24(%rsi),%r11- movq %rax,%r12+ movq %r13,%r12 andq 32(%rsi),%r12- andq 40(%rsi),%rax+ andq 40(%rsi),%r13 addq %r8,%r14 adcq %r9,%r15 adcq %r10,%rbx adcq %r11,%rbp adcq %r12,%rcx- adcq %rax,%rdx+ adcq %r13,%rax+ adcq $0,%rdx + movq %rdx,%r13+ negq %rdx+ orq %rdx,%r13+ sarq $63,%rdx++ movq %r13,%r8+ movq %r13,%r9+ movq %r13,%r10+ andq 0(%rsi),%r8+ andq 8(%rsi),%r9+ movq %r13,%r11+ andq 16(%rsi),%r10+ andq 24(%rsi),%r11+ movq %r13,%r12+ andq 32(%rsi),%r12+ andq 40(%rsi),%r13++ xorq %rdx,%r8+ xorq %rsi,%rsi+ xorq %rdx,%r9+ subq %rdx,%rsi+ xorq %rdx,%r10+ xorq %rdx,%r11+ xorq %rdx,%r12+ xorq %rdx,%r13+ addq %rsi,%r8+ adcq $0,%r9+ adcq $0,%r10+ adcq $0,%r11+ adcq $0,%r12+ adcq $0,%r13++ addq %r8,%r14+ adcq %r9,%r15+ adcq %r10,%rbx+ adcq %r11,%rbp+ adcq %r12,%rcx+ adcq %r13,%rax+ movq %r14,48(%rdi) movq %r15,56(%rdi) movq %rbx,64(%rdi) movq %rbp,72(%rdi) movq %rcx,80(%rdi)- movq %rdx,88(%rdi)+ movq %rax,88(%rdi) leaq 1112(%rsp),%r8 movq 0(%r8),%r15@@ -549,10 +589,10 @@ .byte 0xf3,0xc3 #endif .cfi_endproc -.size ct_inverse_mod_383,.-ct_inverse_mod_383-.type __smulq_767x63,@function+.size ct_inverse_mod_384,.-ct_inverse_mod_384+.type __smulq_768x63,@function .align 32-__smulq_767x63:+__smulq_768x63: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa @@ -562,6 +602,7 @@ movq 24(%rsi),%r11 movq 32(%rsi),%r12 movq 40(%rsi),%r13+ movq 48(%rsi),%r14 movq %rdx,%rbp sarq $63,%rdx@@ -570,7 +611,7 @@ movq %rdi,8(%rsp) movq %rsi,16(%rsp)- leaq 48(%rsi),%rsi+ leaq 56(%rsi),%rsi xorq %rdx,%rbp addq %rax,%rbp@@ -581,16 +622,20 @@ xorq %rdx,%r11 xorq %rdx,%r12 xorq %rdx,%r13+ xorq %rdx,%r14 addq %r8,%rax adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12 adcq $0,%r13+ adcq $0,%r14 mulq %rbp movq %rax,0(%rdi) movq %r9,%rax+ andq %rbp,%r14+ negq %r14 movq %rdx,%r9 mulq %rbp addq %rax,%r9@@ -616,14 +661,14 @@ adcq $0,%rdx movq %rdx,%r13 movq %r12,32(%rdi)- imulq %rbp+ mulq %rbp addq %rax,%r13- adcq $0,%rdx+ adcq %rdx,%r14 movq %r13,40(%rdi)- movq %rdx,48(%rdi)- sarq $63,%rdx- movq %rdx,56(%rdi)+ movq %r14,48(%rdi)+ sarq $63,%r14+ movq %r14,56(%rdi) movq %rcx,%rdx movq 0(%rsi),%r8@@ -726,39 +771,41 @@ movq %rdi,%rax adcq $0,%rdx movq %rdx,%rdi- movq 8(%rsp),%rdx- imulq %rsi,%rax- movq 16(%rsp),%rsi+ imulq %rsi+ movq 8(%rsp),%rsi addq %rdi,%rax+ adcq $0,%rdx - addq 0(%rdx),%r8- adcq 8(%rdx),%r9- adcq 16(%rdx),%r10- adcq 24(%rdx),%r11- adcq 32(%rdx),%r12- adcq 40(%rdx),%r13- adcq 48(%rdx),%r14- movq 56(%rdx),%rdi+ addq 0(%rsi),%r8+ adcq 8(%rsi),%r9+ adcq 16(%rsi),%r10+ adcq 24(%rsi),%r11+ adcq 32(%rsi),%r12+ adcq 40(%rsi),%r13+ adcq 48(%rsi),%r14+ movq 56(%rsi),%rdi adcq %rdi,%r15 adcq %rdi,%rbx adcq %rdi,%rbp adcq %rdi,%rcx adcq %rdi,%rax+ adcq %rdi,%rdx - movq %rdx,%rdi+ leaq (%rsi),%rdi+ movq 16(%rsp),%rsi - movq %r8,0(%rdx)- movq %r9,8(%rdx)- movq %r10,16(%rdx)- movq %r11,24(%rdx)- movq %r12,32(%rdx)- movq %r13,40(%rdx)- movq %r14,48(%rdx)- movq %r15,56(%rdx)- movq %rbx,64(%rdx)- movq %rbp,72(%rdx)- movq %rcx,80(%rdx)- movq %rax,88(%rdx)+ movq %r8,0(%rdi)+ movq %r9,8(%rdi)+ movq %r10,16(%rdi)+ movq %r11,24(%rdi)+ movq %r12,32(%rdi)+ movq %r13,40(%rdi)+ movq %r14,48(%rdi)+ movq %r15,56(%rdi)+ movq %rbx,64(%rdi)+ movq %rbp,72(%rdi)+ movq %rcx,80(%rdi)+ movq %rax,88(%rdi) #ifdef __SGX_LVI_HARDENING__@@ -770,10 +817,10 @@ .byte 0xf3,0xc3 #endif .cfi_endproc-.size __smulq_767x63,.-__smulq_767x63-.type __smulq_383x63,@function+.size __smulq_768x63,.-__smulq_768x63+.type __smulq_384x63,@function .align 32-__smulq_383x63:+__smulq_384x63: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa @@ -783,6 +830,7 @@ movq 24(%rsi),%r11 movq 32(%rsi),%r12 movq 40(%rsi),%r13+ movq 48(%rsi),%r14 movq %rdx,%rbp sarq $63,%rdx@@ -798,16 +846,20 @@ xorq %rdx,%r11 xorq %rdx,%r12 xorq %rdx,%r13+ xorq %rdx,%r14 addq %r8,%rax adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12 adcq $0,%r13+ adcq $0,%r14 mulq %rbp movq %rax,%r8 movq %r9,%rax+ andq %rbp,%r14+ negq %r14 movq %rdx,%r9 mulq %rbp addq %rax,%r9@@ -829,10 +881,11 @@ movq %r13,%rax adcq $0,%rdx movq %rdx,%r13- imulq %rbp,%rax+ mulq %rbp addq %rax,%r13+ adcq %rdx,%r14 - leaq 48(%rsi),%rsi+ leaq 56(%rsi),%rsi movq %rcx,%rdx movq %r8,0(%rdi)@@ -840,13 +893,15 @@ movq %r10,16(%rdi) movq %r11,24(%rdi) movq %r12,32(%rdi)- movq %r13,40(%rdi)+ movq %r13,%r15+ movq %r14,%rbx movq 0(%rsi),%r8 movq 8(%rsi),%r9 movq 16(%rsi),%r10 movq 24(%rsi),%r11 movq 32(%rsi),%r12 movq 40(%rsi),%r13+ movq 48(%rsi),%r14 movq %rdx,%rbp sarq $63,%rdx@@ -862,16 +917,20 @@ xorq %rdx,%r11 xorq %rdx,%r12 xorq %rdx,%r13+ xorq %rdx,%r14 addq %r8,%rax adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12 adcq $0,%r13+ adcq $0,%r14 mulq %rbp movq %rax,%r8 movq %r9,%rax+ andq %rbp,%r14+ negq %r14 movq %rdx,%r9 mulq %rbp addq %rax,%r9@@ -893,17 +952,19 @@ movq %r13,%rax adcq $0,%rdx movq %rdx,%r13- imulq %rbp,%rax+ mulq %rbp addq %rax,%r13+ adcq %rdx,%r14 - leaq -48(%rsi),%rsi+ leaq -56(%rsi),%rsi addq 0(%rdi),%r8 adcq 8(%rdi),%r9 adcq 16(%rdi),%r10 adcq 24(%rdi),%r11 adcq 32(%rdi),%r12- adcq 40(%rdi),%r13+ adcq %r15,%r13+ adcq %rbx,%r14 movq %r8,0(%rdi) movq %r9,8(%rdi)@@ -911,6 +972,7 @@ movq %r11,24(%rdi) movq %r12,32(%rdi) movq %r13,40(%rdi)+ movq %r14,48(%rdi) #ifdef __SGX_LVI_HARDENING__@@ -922,10 +984,10 @@ .byte 0xf3,0xc3 #endif .cfi_endproc-.size __smulq_383x63,.-__smulq_383x63-.type __smulq_383_n_shift_by_62,@function+.size __smulq_384x63,.-__smulq_384x63+.type __smulq_384_n_shift_by_62,@function .align 32-__smulq_383_n_shift_by_62:+__smulq_384_n_shift_by_62: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa @@ -951,6 +1013,7 @@ xorq %rdx,%r11 xorq %rdx,%r12 xorq %rdx,%r13+ movq %rdx,%r14 addq %r8,%rax adcq $0,%r9 adcq $0,%r10@@ -961,6 +1024,8 @@ mulq %rbp movq %rax,%r8 movq %r9,%rax+ andq %rbp,%r14+ negq %r14 movq %rdx,%r9 mulq %rbp addq %rax,%r9@@ -982,12 +1047,11 @@ movq %r13,%rax adcq $0,%rdx movq %rdx,%r13- imulq %rbp+ mulq %rbp addq %rax,%r13- adcq $0,%rdx+ adcq %rdx,%r14 leaq 48(%rsi),%rsi- movq %rdx,%r14 movq %rcx,%rdx movq %r8,0(%rdi)@@ -1017,6 +1081,7 @@ xorq %rdx,%r11 xorq %rdx,%r12 xorq %rdx,%r13+ movq %rdx,%r15 addq %r8,%rax adcq $0,%r9 adcq $0,%r10@@ -1027,6 +1092,8 @@ mulq %rbp movq %rax,%r8 movq %r9,%rax+ andq %rbp,%r15+ negq %r15 movq %rdx,%r9 mulq %rbp addq %rax,%r9@@ -1048,11 +1115,12 @@ movq %r13,%rax adcq $0,%rdx movq %rdx,%r13- imulq %rbp+ mulq %rbp addq %rax,%r13- adcq $0,%rdx+ adcq %rdx,%r15 leaq -48(%rsi),%rsi+ movq %rbx,%rdx addq 0(%rdi),%r8 adcq 8(%rdi),%r9@@ -1060,8 +1128,7 @@ adcq 24(%rdi),%r11 adcq 32(%rdi),%r12 adcq 40(%rdi),%r13- adcq %rdx,%r14- movq %rbx,%rdx+ adcq %r15,%r14 shrdq $62,%r9,%r8 shrdq $62,%r10,%r9@@ -1109,7 +1176,7 @@ .byte 0xf3,0xc3 #endif .cfi_endproc-.size __smulq_383_n_shift_by_62,.-__smulq_383_n_shift_by_62+.size __smulq_384_n_shift_by_62,.-__smulq_384_n_shift_by_62 .type __ab_approximation_62,@function .align 32 __ab_approximation_62:
c-source/build/elf/ctx_inverse_mod_384-x86_64.s view
@@ -1,15 +1,15 @@ .text -.globl ctx_inverse_mod_383-.hidden ctx_inverse_mod_383-.type ctx_inverse_mod_383,@function+.globl ctx_inverse_mod_384+.hidden ctx_inverse_mod_384+.type ctx_inverse_mod_384,@function .align 32-ctx_inverse_mod_383:+ctx_inverse_mod_384: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa -ct_inverse_mod_383$1:+ct_inverse_mod_384$1: pushq %rbp .cfi_adjust_cfa_offset 8 .cfi_offset %rbp,-16@@ -79,7 +79,7 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,96(%rdi)@@ -87,10 +87,10 @@ movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 - movq %rdx,96(%rdi)+ movq %rdx,104(%rdi) xorq $256,%rsi@@ -103,19 +103,19 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq 96(%rsi),%rax- movq 144(%rsi),%r11+ movq 152(%rsi),%r11 movq %rdx,%rbx movq %rax,%r10 imulq 56(%rsp)@@ -132,6 +132,7 @@ movq %r9,72(%rdi) movq %r9,80(%rdi) movq %r9,88(%rdi)+ movq %r9,96(%rdi) leaq 96(%rsi),%rsi movq %r10,%rax@@ -142,13 +143,14 @@ imulq %rcx addq %rax,%r8 adcq %rdx,%r9- movq %r8,96(%rdi)- movq %r9,104(%rdi)- sarq $63,%r9+ movq %r8,104(%rdi) movq %r9,112(%rdi)+ sarq $63,%r9 movq %r9,120(%rdi) movq %r9,128(%rdi) movq %r9,136(%rdi)+ movq %r9,144(%rdi)+ movq %r9,152(%rdi) xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -159,14 +161,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -174,12 +176,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -190,14 +192,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -205,12 +207,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -221,14 +223,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -236,12 +238,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -252,14 +254,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -267,12 +269,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -283,14 +285,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -298,12 +300,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -314,14 +316,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -329,12 +331,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -345,14 +347,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -360,12 +362,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -376,14 +378,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -391,12 +393,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -407,14 +409,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -422,12 +424,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -438,14 +440,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -453,19 +455,17 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63- sarq $63,%r13- movq %r13,48(%rdi)- movq %r13,56(%rdi)- movq %r13,64(%rdi)- movq %r13,72(%rdi)- movq %r13,80(%rdi)- movq %r13,88(%rdi)+ leaq 56(%rdi),%rdi+ call __smulx_384x63+ movq %r14,56(%rdi)+ movq %r14,64(%rdi)+ movq %r14,72(%rdi)+ movq %r14,80(%rdi)+ movq %r14,88(%rdi) xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -476,14 +476,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -491,12 +491,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -507,14 +507,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -522,12 +522,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -538,14 +538,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -553,12 +553,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -569,14 +569,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -584,12 +584,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -600,14 +600,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -615,12 +615,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -631,14 +631,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -646,12 +646,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -662,14 +662,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -677,12 +677,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -708,12 +708,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -739,12 +739,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -770,12 +770,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -801,21 +801,21 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi- movl $53,%edi+ movl $55,%edi movq 0(%rsi),%r8 movq 48(%rsi),%r10 - call __tail_loop_53+ call __tail_loop_55 @@ -832,40 +832,80 @@ movq %r12,%rdx movq %r13,%rcx movq 32(%rsp),%rdi- call __smulx_767x63+ call __smulx_768x63 movq 40(%rsp),%rsi- movq %rax,%rdx- sarq $63,%rax+ movq %rdx,%r13+ sarq $63,%r13 - movq %rax,%r8- movq %rax,%r9- movq %rax,%r10+ movq %r13,%r8+ movq %r13,%r9+ movq %r13,%r10 #ifdef __SGX_LVI_HARDENING__ lfence #endif andq 0(%rsi),%r8 andq 8(%rsi),%r9- movq %rax,%r11+ movq %r13,%r11 andq 16(%rsi),%r10 andq 24(%rsi),%r11- movq %rax,%r12+ movq %r13,%r12 andq 32(%rsi),%r12- andq 40(%rsi),%rax+ andq 40(%rsi),%r13 addq %r8,%r14 adcq %r9,%r15 adcq %r10,%rbx adcq %r11,%rbp adcq %r12,%rcx- adcq %rax,%rdx+ adcq %r13,%rax+ adcq $0,%rdx + movq %rdx,%r13+ negq %rdx+ orq %rdx,%r13+ sarq $63,%rdx++ movq %r13,%r8+ movq %r13,%r9+ movq %r13,%r10+ andq 0(%rsi),%r8+ andq 8(%rsi),%r9+ movq %r13,%r11+ andq 16(%rsi),%r10+ andq 24(%rsi),%r11+ movq %r13,%r12+ andq 32(%rsi),%r12+ andq 40(%rsi),%r13++ xorq %rdx,%r8+ xorq %rsi,%rsi+ xorq %rdx,%r9+ subq %rdx,%rsi+ xorq %rdx,%r10+ xorq %rdx,%r11+ xorq %rdx,%r12+ xorq %rdx,%r13+ addq %rsi,%r8+ adcq $0,%r9+ adcq $0,%r10+ adcq $0,%r11+ adcq $0,%r12+ adcq $0,%r13++ addq %r8,%r14+ adcq %r9,%r15+ adcq %r10,%rbx+ adcq %r11,%rbp+ adcq %r12,%rcx+ adcq %r13,%rax+ movq %r14,48(%rdi) movq %r15,56(%rdi) movq %rbx,64(%rdi) movq %rbp,72(%rdi) movq %rcx,80(%rdi)- movq %rdx,88(%rdi)+ movq %rax,88(%rdi) leaq 1112(%rsp),%r8 movq 0(%r8),%r15@@ -893,10 +933,10 @@ .byte 0xf3,0xc3 #endif .cfi_endproc -.size ctx_inverse_mod_383,.-ctx_inverse_mod_383-.type __smulx_767x63,@function+.size ctx_inverse_mod_384,.-ctx_inverse_mod_384+.type __smulx_768x63,@function .align 32-__smulx_767x63:+__smulx_768x63: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa @@ -906,6 +946,7 @@ movq 24(%rsi),%r11 movq 32(%rsi),%r12 movq 40(%rsi),%r13+ movq 48(%rsi),%r14 movq %rdx,%rax sarq $63,%rax@@ -914,7 +955,7 @@ movq %rdi,8(%rsp) movq %rsi,16(%rsp)- leaq 48(%rsi),%rsi+ leaq 56(%rsi),%rsi xorq %rax,%rdx addq %rbp,%rdx@@ -924,37 +965,41 @@ xorq %rax,%r10 xorq %rax,%r11 xorq %rax,%r12- xorq %r13,%rax+ xorq %rax,%r13+ xorq %rax,%r14 addq %rbp,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12- adcq $0,%rax+ adcq $0,%r13+ adcq $0,%r14 + andq %rdx,%r14+ negq %r14+ mulxq %r8,%r8,%rbp- mulxq %r9,%r9,%r13+ mulxq %r9,%r9,%rax addq %rbp,%r9 mulxq %r10,%r10,%rbp- adcq %r13,%r10- mulxq %r11,%r11,%r13+ adcq %rax,%r10+ mulxq %r11,%r11,%rax adcq %rbp,%r11 mulxq %r12,%r12,%rbp- adcq %r13,%r12- adcq $0,%rbp- imulq %rdx- addq %rbp,%rax- adcq $0,%rdx+ adcq %rax,%r12+ mulxq %r13,%r13,%rax+ adcq %rbp,%r13+ adcq %rax,%r14 movq %r8,0(%rdi) movq %r9,8(%rdi) movq %r10,16(%rdi) movq %r11,24(%rdi) movq %r12,32(%rdi)- movq %rax,40(%rdi)- movq %rdx,48(%rdi)- sarq $63,%rdx- movq %rdx,56(%rdi)+ movq %r13,40(%rdi)+ movq %r14,48(%rdi)+ sarq $63,%r14+ movq %r14,56(%rdi) movq %rcx,%rdx movq %rcx,%rax @@ -989,7 +1034,7 @@ xorq %rax,%rbx xorq %rax,%rbp xorq %rax,%rcx- xorq %rax,%rdi+ xorq %rdi,%rax addq %rsi,%r8 adcq $0,%r9 adcq $0,%r10@@ -1001,63 +1046,65 @@ adcq $0,%rbx adcq $0,%rbp adcq $0,%rcx- adcq $0,%rdi-- mulxq %r8,%r8,%rax- mulxq %r9,%r9,%rsi- addq %rax,%r9- mulxq %r10,%r10,%rax- adcq %rsi,%r10- mulxq %r11,%r11,%rsi- adcq %rax,%r11- mulxq %r12,%r12,%rax- adcq %rsi,%r12- mulxq %r13,%r13,%rsi- adcq %rax,%r13- mulxq %r14,%r14,%rax- adcq %rsi,%r14- mulxq %r15,%r15,%rsi- adcq %rax,%r15- mulxq %rbx,%rbx,%rax- adcq %rsi,%rbx- mulxq %rbp,%rbp,%rsi- adcq %rax,%rbp- mulxq %rcx,%rcx,%rax- adcq %rsi,%rcx- mulxq %rdi,%rdi,%rsi- movq 8(%rsp),%rdx- movq 16(%rsp),%rsi- adcq %rdi,%rax+ adcq $0,%rax - addq 0(%rdx),%r8- adcq 8(%rdx),%r9- adcq 16(%rdx),%r10- adcq 24(%rdx),%r11- adcq 32(%rdx),%r12- adcq 40(%rdx),%r13- adcq 48(%rdx),%r14- movq 56(%rdx),%rdi- adcq %rdi,%r15+ mulxq %r8,%r8,%rsi+ mulxq %r9,%r9,%rdi+ addq %rsi,%r9+ mulxq %r10,%r10,%rsi+ adcq %rdi,%r10+ mulxq %r11,%r11,%rdi+ adcq %rsi,%r11+ mulxq %r12,%r12,%rsi+ adcq %rdi,%r12+ mulxq %r13,%r13,%rdi+ adcq %rsi,%r13+ mulxq %r14,%r14,%rsi+ adcq %rdi,%r14+ mulxq %r15,%r15,%rdi+ adcq %rsi,%r15+ mulxq %rbx,%rbx,%rsi adcq %rdi,%rbx- adcq %rdi,%rbp+ mulxq %rbp,%rbp,%rdi+ adcq %rsi,%rbp+ mulxq %rcx,%rcx,%rsi adcq %rdi,%rcx- adcq %rdi,%rax+ movq 8(%rsp),%rdi+ adcq $0,%rsi+ imulq %rdx+ addq %rsi,%rax+ adcq $0,%rdx - movq %rdx,%rdi+ addq 0(%rdi),%r8+ adcq 8(%rdi),%r9+ adcq 16(%rdi),%r10+ adcq 24(%rdi),%r11+ adcq 32(%rdi),%r12+ adcq 40(%rdi),%r13+ adcq 48(%rdi),%r14+ movq 56(%rdi),%rsi+ adcq %rsi,%r15+ adcq %rsi,%rbx+ adcq %rsi,%rbp+ adcq %rsi,%rcx+ adcq %rsi,%rax+ adcq %rsi,%rdx - movq %r8,0(%rdx)- movq %r9,8(%rdx)- movq %r10,16(%rdx)- movq %r11,24(%rdx)- movq %r12,32(%rdx)- movq %r13,40(%rdx)- movq %r14,48(%rdx)- movq %r15,56(%rdx)- movq %rbx,64(%rdx)- movq %rbp,72(%rdx)- movq %rcx,80(%rdx)- movq %rax,88(%rdx)+ movq 16(%rsp),%rsi + movq %r8,0(%rdi)+ movq %r9,8(%rdi)+ movq %r10,16(%rdi)+ movq %r11,24(%rdi)+ movq %r12,32(%rdi)+ movq %r13,40(%rdi)+ movq %r14,48(%rdi)+ movq %r15,56(%rdi)+ movq %rbx,64(%rdi)+ movq %rbp,72(%rdi)+ movq %rcx,80(%rdi)+ movq %rax,88(%rdi)+ #ifdef __SGX_LVI_HARDENING__ popq %r8@@ -1068,10 +1115,10 @@ .byte 0xf3,0xc3 #endif .cfi_endproc-.size __smulx_767x63,.-__smulx_767x63-.type __smulx_383x63,@function+.size __smulx_768x63,.-__smulx_768x63+.type __smulx_384x63,@function .align 32-__smulx_383x63:+__smulx_384x63: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa @@ -1081,6 +1128,7 @@ movq 0+24(%rsi),%r11 movq 0+32(%rsi),%r12 movq 0+40(%rsi),%r13+ movq 0+48(%rsi),%r14 movq %rdx,%rbp sarq $63,%rbp@@ -1096,13 +1144,18 @@ xorq %rbp,%r11 xorq %rbp,%r12 xorq %rbp,%r13+ xorq %rbp,%r14 addq %rax,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12 adcq $0,%r13+ adcq $0,%r14 + andq %rdx,%r14+ negq %r14+ mulxq %r8,%r8,%rbp mulxq %r9,%r9,%rax addq %rbp,%r9@@ -1115,19 +1168,22 @@ mulxq %r13,%r13,%rax movq %rcx,%rdx adcq %rbp,%r13+ adcq %rax,%r14 movq %r8,0(%rdi) movq %r9,8(%rdi) movq %r10,16(%rdi) movq %r11,24(%rdi) movq %r12,32(%rdi)- movq %r13,40(%rdi)- movq 48+0(%rsi),%r8- movq 48+8(%rsi),%r9- movq 48+16(%rsi),%r10- movq 48+24(%rsi),%r11- movq 48+32(%rsi),%r12- movq 48+40(%rsi),%r13+ movq %r13,%r15+ movq %r14,%rbx+ movq 56+0(%rsi),%r8+ movq 56+8(%rsi),%r9+ movq 56+16(%rsi),%r10+ movq 56+24(%rsi),%r11+ movq 56+32(%rsi),%r12+ movq 56+40(%rsi),%r13+ movq 56+48(%rsi),%r14 movq %rdx,%rbp sarq $63,%rbp@@ -1143,13 +1199,18 @@ xorq %rbp,%r11 xorq %rbp,%r12 xorq %rbp,%r13+ xorq %rbp,%r14 addq %rax,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12 adcq $0,%r13+ adcq $0,%r14 + andq %rdx,%r14+ negq %r14+ mulxq %r8,%r8,%rbp mulxq %r9,%r9,%rax addq %rbp,%r9@@ -1161,13 +1222,15 @@ adcq %rax,%r12 mulxq %r13,%r13,%rax adcq %rbp,%r13+ adcq %rax,%r14 addq 0(%rdi),%r8 adcq 8(%rdi),%r9 adcq 16(%rdi),%r10 adcq 24(%rdi),%r11 adcq 32(%rdi),%r12- adcq 40(%rdi),%r13+ adcq %r15,%r13+ adcq %rbx,%r14 movq %r8,0(%rdi) movq %r9,8(%rdi)@@ -1175,6 +1238,7 @@ movq %r11,24(%rdi) movq %r12,32(%rdi) movq %r13,40(%rdi)+ movq %r14,48(%rdi) #ifdef __SGX_LVI_HARDENING__@@ -1186,15 +1250,14 @@ .byte 0xf3,0xc3 #endif .cfi_endproc-.size __smulx_383x63,.-__smulx_383x63-.type __smulx_383_n_shift_by_31,@function+.size __smulx_384x63,.-__smulx_384x63+.type __smulx_384_n_shift_by_31,@function .align 32-__smulx_383_n_shift_by_31:+__smulx_384_n_shift_by_31: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa movq %rdx,%rbx- xorq %r14,%r14 movq 0+0(%rsi),%r8 movq 0+8(%rsi),%r9 movq 0+16(%rsi),%r10@@ -1215,27 +1278,29 @@ xorq %rax,%r10 xorq %rax,%r11 xorq %rax,%r12- xorq %r13,%rax+ xorq %rax,%r13 addq %rbp,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12- adcq $0,%rax+ adcq $0,%r13 + andq %rdx,%rax+ negq %rax+ mulxq %r8,%r8,%rbp- mulxq %r9,%r9,%r13+ mulxq %r9,%r9,%r14 addq %rbp,%r9 mulxq %r10,%r10,%rbp- adcq %r13,%r10- mulxq %r11,%r11,%r13+ adcq %r14,%r10+ mulxq %r11,%r11,%r14 adcq %rbp,%r11 mulxq %r12,%r12,%rbp- adcq %r13,%r12- adcq $0,%rbp- imulq %rdx- addq %rbp,%rax- adcq %rdx,%r14+ adcq %r14,%r12+ mulxq %r13,%r13,%r14+ adcq %rbp,%r13+ adcq %rax,%r14 movq %rcx,%rdx @@ -1244,7 +1309,8 @@ movq %r10,16(%rdi) movq %r11,24(%rdi) movq %r12,32(%rdi)- movq %rax,40(%rdi)+ movq %r13,40(%rdi)+ movq %r14,%r15 movq 48+0(%rsi),%r8 movq 48+8(%rsi),%r9 movq 48+16(%rsi),%r10@@ -1265,43 +1331,45 @@ xorq %rax,%r10 xorq %rax,%r11 xorq %rax,%r12- xorq %r13,%rax+ xorq %rax,%r13 addq %rbp,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12- adcq $0,%rax+ adcq $0,%r13 + andq %rdx,%rax+ negq %rax+ mulxq %r8,%r8,%rbp- mulxq %r9,%r9,%r13+ mulxq %r9,%r9,%r14 addq %rbp,%r9 mulxq %r10,%r10,%rbp- adcq %r13,%r10- mulxq %r11,%r11,%r13+ adcq %r14,%r10+ mulxq %r11,%r11,%r14 adcq %rbp,%r11 mulxq %r12,%r12,%rbp- adcq %r13,%r12- adcq $0,%rbp- imulq %rdx- addq %rbp,%rax- adcq $0,%rdx+ adcq %r14,%r12+ mulxq %r13,%r13,%r14+ adcq %rbp,%r13+ adcq %rax,%r14 addq 0(%rdi),%r8 adcq 8(%rdi),%r9 adcq 16(%rdi),%r10 adcq 24(%rdi),%r11 adcq 32(%rdi),%r12- adcq 40(%rdi),%rax- adcq %rdx,%r14+ adcq 40(%rdi),%r13+ adcq %r15,%r14 movq %rbx,%rdx shrdq $31,%r9,%r8 shrdq $31,%r10,%r9 shrdq $31,%r11,%r10 shrdq $31,%r12,%r11- shrdq $31,%rax,%r12- shrdq $31,%r14,%rax+ shrdq $31,%r13,%r12+ shrdq $31,%r14,%r13 sarq $63,%r14 xorq %rbp,%rbp@@ -1312,20 +1380,20 @@ xorq %r14,%r10 xorq %r14,%r11 xorq %r14,%r12- xorq %r14,%rax+ xorq %r14,%r13 addq %rbp,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12- adcq $0,%rax+ adcq $0,%r13 movq %r8,0(%rdi) movq %r9,8(%rdi) movq %r10,16(%rdi) movq %r11,24(%rdi) movq %r12,32(%rdi)- movq %rax,40(%rdi)+ movq %r13,40(%rdi) xorq %r14,%rdx xorq %r14,%rcx@@ -1342,7 +1410,7 @@ .byte 0xf3,0xc3 #endif .cfi_endproc-.size __smulx_383_n_shift_by_31,.-__smulx_383_n_shift_by_31+.size __smulx_384_n_shift_by_31,.-__smulx_384_n_shift_by_31 .type __smulx_191_n_shift_by_31,@function .align 32 __smulx_191_n_shift_by_31:@@ -1585,9 +1653,9 @@ .cfi_endproc .size __inner_loop_31,.-__inner_loop_31 -.type __tail_loop_53,@function+.type __tail_loop_55,@function .align 32-__tail_loop_53:+__tail_loop_55: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa @@ -1596,7 +1664,7 @@ xorq %r12,%r12 movq $1,%r13 -.Loop_53:+.Loop_55: xorq %rax,%rax testq $1,%r8 movq %r10,%rbx@@ -1623,7 +1691,7 @@ subq %rax,%rdx subq %rbx,%rcx subl $1,%edi- jnz .Loop_53+ jnz .Loop_55 #ifdef __SGX_LVI_HARDENING__@@ -1635,7 +1703,7 @@ .byte 0xf3,0xc3 #endif .cfi_endproc-.size __tail_loop_53,.-__tail_loop_53+.size __tail_loop_55,.-__tail_loop_55 .section .note.GNU-stack,"",@progbits #ifndef __SGX_LVI_HARDENING__
c-source/build/elf/div3w-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text .globl div_3_limbs@@ -5,6 +13,7 @@ .type div_3_limbs,%function .align 5 div_3_limbs:+ hint #34 ldp x4,x5,[x0] // load R eor x0,x0,x0 // Q = 0 mov x3,#64 // loop counter@@ -39,6 +48,7 @@ .type quot_rem_128,%function .align 5 quot_rem_128:+ hint #34 ldp x3,x4,[x1] mul x5,x3,x2 // divisor[0:1} * quotient@@ -76,6 +86,7 @@ .type quot_rem_64,%function .align 5 quot_rem_64:+ hint #34 ldr x3,[x1] ldr x8,[x0] // load 1 limb of the dividend @@ -89,3 +100,13 @@ ret .size quot_rem_64,.-quot_rem_64++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/elf/mul_mont_256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text .globl mul_mont_sparse_256@@ -5,6 +13,7 @@ .type mul_mont_sparse_256,%function .align 5 mul_mont_sparse_256:+ hint #34 stp x29,x30,[sp,#-8*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -196,7 +205,7 @@ .type sqr_mont_sparse_256,%function .align 5 sqr_mont_sparse_256:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -297,7 +306,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sqr_mont_sparse_256,.-sqr_mont_sparse_256 .globl from_mont_256@@ -305,7 +314,7 @@ .type from_mont_256,%function .align 5 from_mont_256:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-2*__SIZEOF_POINTER__]! add x29,sp,#0 @@ -330,7 +339,7 @@ stp x12,x13,[x0,#16] ldr x29,[sp],#2*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size from_mont_256,.-from_mont_256 @@ -339,7 +348,7 @@ .type redc_mont_256,%function .align 5 redc_mont_256:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-2*__SIZEOF_POINTER__]! add x29,sp,#0 @@ -374,7 +383,7 @@ stp x12,x13,[x0,#16] ldr x29,[sp],#2*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size redc_mont_256,.-redc_mont_256 @@ -462,3 +471,13 @@ ret .size __mul_by_1_mont_256,.-__mul_by_1_mont_256++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/elf/mul_mont_384-armv8.S view
@@ -1,10 +1,19 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ .text .globl add_mod_384x384+.hidden add_mod_384x384 .type add_mod_384x384,%function .align 5 add_mod_384x384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-8*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -22,7 +31,7 @@ ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldp x23,x24,[x29,#6*__SIZEOF_POINTER__] ldr x29,[sp],#8*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size add_mod_384x384,.-add_mod_384x384 @@ -82,10 +91,11 @@ .size __add_mod_384x384,.-__add_mod_384x384 .globl sub_mod_384x384+.hidden sub_mod_384x384 .type sub_mod_384x384,%function .align 5 sub_mod_384x384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-8*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -103,7 +113,7 @@ ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldp x23,x24,[x29,#6*__SIZEOF_POINTER__] ldr x29,[sp],#8*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sub_mod_384x384,.-sub_mod_384x384 @@ -239,7 +249,7 @@ .type mul_mont_384x,%function .align 5 mul_mont_384x:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -312,7 +322,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_mont_384x,.-mul_mont_384x @@ -321,7 +331,7 @@ .type sqr_mont_384x,%function .align 5 sqr_mont_384x:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -397,7 +407,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sqr_mont_384x,.-sqr_mont_384x @@ -406,7 +416,7 @@ .type mul_mont_384,%function .align 5 mul_mont_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -438,7 +448,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_mont_384,.-mul_mont_384 @@ -819,7 +829,7 @@ .type sqr_mont_384,%function .align 5 sqr_mont_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -856,7 +866,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sqr_mont_384,.-sqr_mont_384 @@ -865,7 +875,7 @@ .type sqr_n_mul_mont_383,%function .align 5 sqr_n_mul_mont_383:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -921,7 +931,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sqr_n_mul_mont_383,.-sqr_n_mul_mont_383 .type __sqr_384,%function@@ -1042,7 +1052,7 @@ .type sqr_384,%function .align 5 sqr_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1064,7 +1074,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sqr_384,.-sqr_384 @@ -1073,7 +1083,7 @@ .type redc_mont_384,%function .align 5 redc_mont_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1097,7 +1107,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size redc_mont_384,.-redc_mont_384 @@ -1106,7 +1116,7 @@ .type from_mont_384,%function .align 5 from_mont_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1147,7 +1157,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size from_mont_384,.-from_mont_384 @@ -1365,7 +1375,7 @@ .type mul_384,%function .align 5 mul_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1383,7 +1393,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_384,.-mul_384 @@ -1569,7 +1579,7 @@ .type mul_382x,%function .align 5 mul_382x:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1651,7 +1661,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size mul_382x,.-mul_382x @@ -1660,7 +1670,7 @@ .type sqr_382x,%function .align 5 sqr_382x:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1751,7 +1761,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sqr_382x,.-sqr_382x @@ -1760,7 +1770,7 @@ .type sqr_mont_382x,%function .align 5 sqr_mont_382x:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1875,7 +1885,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sqr_mont_382x,.-sqr_mont_382x @@ -2224,7 +2234,7 @@ .type sgn0_pty_mont_384,%function .align 5 sgn0_pty_mont_384:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -2269,7 +2279,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sgn0_pty_mont_384,.-sgn0_pty_mont_384 @@ -2278,7 +2288,7 @@ .type sgn0_pty_mont_384x,%function .align 5 sgn0_pty_mont_384x:- .inst 0xd503233f+ hint #PACI_HINT stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -2367,6 +2377,16 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__- .inst 0xd50323bf+ hint #AUTI_HINT ret .size sgn0_pty_mont_384x,.-sgn0_pty_mont_384x++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/elf/sha256-armv8.S view
@@ -1,3 +1,11 @@+#if defined(__ARM_FEATURE_PAC_DEFAULT) && __ARM_FEATURE_PAC_DEFAULT==2+# define PACI_HINT 27+# define AUTI_HINT 31+#else+# define PACI_HINT 25+# define AUTI_HINT 29+#endif+ // // Copyright Supranational LLC // Licensed under the Apache License, Version 2.0, see LICENSE for details.@@ -43,9 +51,11 @@ .align 2 .align 2 .globl blst_sha256_block_armv8+.hidden blst_sha256_block_armv8 .type blst_sha256_block_armv8,%function .align 6 blst_sha256_block_armv8:+ hint #34 .Lv8_entry: stp x29,x30,[sp,#-2*__SIZEOF_POINTER__]! add x29,sp,#0@@ -182,9 +192,11 @@ ret .size blst_sha256_block_armv8,.-blst_sha256_block_armv8 .globl blst_sha256_block_data_order+.hidden blst_sha256_block_data_order .type blst_sha256_block_data_order,%function .align 4 blst_sha256_block_data_order:+ hint #34 adrp x16,__blst_platform_cap ldr w16,[x16,#:lo12:__blst_platform_cap] tst w16,#1@@ -1034,6 +1046,7 @@ .type blst_sha256_emit,%function .align 4 blst_sha256_emit:+ hint #34 ldp x4,x5,[x1] ldp x6,x7,[x1,#16] #ifndef __AARCH64EB__@@ -1062,6 +1075,7 @@ .type blst_sha256_bcopy,%function .align 4 blst_sha256_bcopy:+ hint #34 .Loop_bcopy: ldrb w3,[x1],#1 sub x2,x2,#1@@ -1075,9 +1089,20 @@ .type blst_sha256_hcopy,%function .align 4 blst_sha256_hcopy:+ hint #34 ldp x4,x5,[x1] ldp x6,x7,[x1,#16] stp x4,x5,[x0] stp x6,x7,[x0,#16] ret .size blst_sha256_hcopy,.-blst_sha256_hcopy++#if defined(__ARM_FEATURE_BTI_DEFAULT) || defined(__ARM_FEATURE_PAC_DEFAULT)+.section .note.GNU-stack,"",@progbits+.section .note.gnu.property,"a",@note+ .long 4,2f-1f,5+ .byte 0x47,0x4E,0x55,0+1: .long 0xc0000000,4,3+.align 3+2:+#endif
c-source/build/mach-o/add_mod_256-armv8.S view
@@ -5,6 +5,7 @@ .align 5 _add_mod_256:+ hint #34 ldp x8,x9,[x1] ldp x12,x13,[x2] @@ -39,6 +40,7 @@ .align 5 _mul_by_3_mod_256:+ hint #34 ldp x12,x13,[x1] ldp x14,x15,[x1,#16] @@ -88,6 +90,7 @@ .align 5 _lshift_mod_256:+ hint #34 ldp x8,x9,[x1] ldp x10,x11,[x1,#16] @@ -126,6 +129,7 @@ .align 5 _rshift_mod_256:+ hint #34 ldp x8,x9,[x1] ldp x10,x11,[x1,#16]
c-source/build/mach-o/add_mod_384-armv8.S view
@@ -5,7 +5,7 @@ .align 5 _add_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -25,7 +25,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -71,7 +71,7 @@ .align 5 _add_mod_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -99,7 +99,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -108,7 +108,7 @@ .align 5 _rshift_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -135,7 +135,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -170,7 +170,7 @@ .align 5 _div_by_2_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -194,7 +194,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -203,7 +203,7 @@ .align 5 _lshift_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -230,7 +230,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -268,7 +268,7 @@ .align 5 _mul_by_3_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -298,7 +298,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -307,7 +307,7 @@ .align 5 _mul_by_8_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -333,7 +333,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -342,7 +342,7 @@ .align 5 _mul_by_3_mod_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -387,7 +387,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -396,7 +396,7 @@ .align 5 _mul_by_8_mod_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -433,7 +433,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -442,7 +442,7 @@ .align 5 _cneg_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -484,7 +484,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -493,7 +493,7 @@ .align 5 _sub_mod_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -513,7 +513,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -556,7 +556,7 @@ .align 5 _sub_mod_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -584,7 +584,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -593,7 +593,7 @@ .align 5 _mul_by_1_plus_i_mod_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -626,7 +626,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -635,6 +635,7 @@ .align 5 _sgn0_pty_mod_384:+ hint #34 ldp x10,x11,[x0] ldp x12,x13,[x0,#16] ldp x14,x15,[x0,#32]@@ -672,6 +673,7 @@ .align 5 _sgn0_pty_mod_384x:+ hint #34 ldp x10,x11,[x0] ldp x12,x13,[x0,#16] ldp x14,x15,[x0,#32]@@ -753,14 +755,14 @@ .align 5 _vec_select_32:+ hint #34 dup v6.2d, x3- ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48+ ld1 {v0.2d, v1.2d}, [x1] cmeq v6.2d, v6.2d, #0- ld1 {v3.2d, v4.2d, v5.2d}, [x2],#48+ ld1 {v3.2d, v4.2d}, [x2] bit v0.16b, v3.16b, v6.16b bit v1.16b, v4.16b, v6.16b- bit v2.16b, v5.16b, v6.16b- st1 {v0.2d, v1.2d, v2.2d}, [x0]+ st1 {v0.2d, v1.2d}, [x0] ret .globl _vec_select_48@@ -768,6 +770,7 @@ .align 5 _vec_select_48:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48 cmeq v6.2d, v6.2d, #0@@ -783,6 +786,7 @@ .align 5 _vec_select_96:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48 cmeq v6.2d, v6.2d, #0@@ -804,6 +808,7 @@ .align 5 _vec_select_192:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48 cmeq v6.2d, v6.2d, #0@@ -837,6 +842,7 @@ .align 5 _vec_select_144:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48 cmeq v6.2d, v6.2d, #0@@ -864,6 +870,7 @@ .align 5 _vec_select_288:+ hint #34 dup v6.2d, x3 ld1 {v0.2d, v1.2d, v2.2d}, [x1],#48 cmeq v6.2d, v6.2d, #0@@ -909,6 +916,7 @@ .align 5 _vec_prefetch:+ hint #34 add x1, x1, x0 sub x1, x1, #1 mov x2, #64@@ -949,6 +957,7 @@ .align 5 _vec_is_zero_16x:+ hint #34 ld1 {v0.2d}, [x0], #16 lsr x1, x1, #4 sub x1, x1, #1@@ -974,6 +983,7 @@ .align 5 _vec_is_equal_16x:+ hint #34 ld1 {v0.2d}, [x0], #16 ld1 {v1.2d}, [x1], #16 lsr x2, x2, #4
c-source/build/mach-o/ct_inverse_mod_256-armv8.S view
@@ -5,7 +5,7 @@ .align 5 _ct_inverse_mod_256:-.long 3573752639+ hint #25 stp x29, x30, [sp,#-10*__SIZEOF_POINTER__]! add x29, sp, #0 stp x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -48,7 +48,7 @@ mov x13, x15 // |g1| add x0,x0,#8*4 bl __smul_256_n_shift_by_31- str x12, [x0,#8*9] // initialize |v| with |f1|+ str x12, [x0,#8*10] // initialize |v| with |f1| ////////////////////////////////////////// second iteration eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -71,19 +71,17 @@ bl __smul_256_n_shift_by_31 ldr x8, [x1,#8*8] // |u|- ldr x9, [x1,#8*13] // |v|+ ldr x9, [x1,#8*14] // |v| madd x4, x16, x8, xzr // |u|*|f0| madd x4, x17, x9, x4 // |v|*|g0|- str x4, [x0,#8*4] asr x5, x4, #63 // sign extension- stp x5, x5, [x0,#8*5]- stp x5, x5, [x0,#8*7]+ stp x4, x5, [x0,#8*4]+ stp x5, x5, [x0,#8*6] madd x4, x12, x8, xzr // |u|*|f1| madd x4, x13, x9, x4 // |v|*|g1|- str x4, [x0,#8*9] asr x5, x4, #63 // sign extension- stp x5, x5, [x0,#8*10]+ stp x4, x5, [x0,#8*10] stp x5, x5, [x0,#8*12] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__@@ -106,16 +104,10 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -137,16 +129,10 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -168,16 +154,10 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -199,16 +179,10 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -230,16 +204,10 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -261,16 +229,15 @@ add x0,x0,#8*4 bl __smul_256x63- adc x22, x22, x23- str x22, [x0,#8*4]-+ asr x24, x24, #63+ str x24, [x0,#8*4] mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63- adc x22, x22, x23- stp x22, x22, [x0,#8*4]- stp x22, x22, [x0,#8*6]+ asr x24, x24, #63 // sign extension+ stp x24, x24, [x0,#8*4]+ stp x24, x24, [x0,#8*6] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -294,10 +261,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -323,10 +289,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -352,10 +317,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -381,10 +345,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -410,10 +373,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -439,10 +401,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -468,10 +429,9 @@ bl __smul_256x63 adc x22, x22, x23 str x22, [x0,#8*4]- mov x16, x12 // corrected |f1| mov x17, x13 // corrected |g1|- add x0,x0,#8*5+ add x0,x0,#8*6 bl __smul_256x63 bl __smul_512x63_tail ////////////////////////////////////////// two[!] last iterations@@ -541,7 +501,7 @@ ldp x23, x24, [x29,#6*__SIZEOF_POINTER__] ldp x25, x26, [x29,#8*__SIZEOF_POINTER__] ldr x29, [sp],#10*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -579,11 +539,11 @@ adcs x6, x6, x20 adcs x24, x24, x21 adc x26, xzr, xzr- ldp x8, x9, [x1,#8*0+104] // load |u| (or |v|)+ ldp x8, x9, [x1,#8*0+112] // load |u| (or |v|) asr x14, x17, #63 // |f_|'s sign as mask (or |g_|'s)- ldp x10, x11, [x1,#8*2+104]+ ldp x10, x11, [x1,#8*2+112] eor x17, x17, x14 // conditionally negate |f_| (or |g_|)- ldr x23, [x1,#8*4+104]+ ldr x23, [x1,#8*4+112] eor x8, x8, x14 // conditionally negate |u| (or |v|) sub x17, x17, x14@@ -625,9 +585,9 @@ .align 5 __smul_512x63_tail: umulh x24, x7, x16- ldp x5, x6, [x1,#8*18] // load rest of |v|+ ldr x5, [x1,#8*19] // load rest of |v| adc x26, x26, xzr- ldr x7, [x1,#8*20]+ ldp x6, x7, [x1,#8*20] and x22, x22, x16 umulh x11, x11, x17 // resume |v|*|g1| chain
c-source/build/mach-o/ct_inverse_mod_384-armv8.S view
@@ -1,11 +1,11 @@ .text -.globl _ct_inverse_mod_383-.private_extern _ct_inverse_mod_383+.globl _ct_inverse_mod_384+.private_extern _ct_inverse_mod_384 .align 5-_ct_inverse_mod_383:-.long 3573752639+_ct_inverse_mod_384:+ hint #25 stp x29, x30, [sp,#-16*__SIZEOF_POINTER__]! add x29, sp, #0 stp x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -47,14 +47,14 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 str x15,[x0,#8*12] // initialize |u| with |f0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62- str x15, [x0,#8*12] // initialize |v| with |f1|+ bl __smul_384_n_shift_by_62+ str x15, [x0,#8*14] // initialize |v| with |f1| ////////////////////////////////////////// second iteration eor x1, x1, #256 // flip-flop src |a|b|u|v|@@ -68,17 +68,17 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 ldr x7, [x1,#8*12] // |u|- ldr x8, [x1,#8*18] // |v|+ ldr x8, [x1,#8*20] // |v| mul x3, x20, x7 // |u|*|f0| smulh x4, x20, x7 mul x5, x21, x8 // |v|*|g0|@@ -96,10 +96,10 @@ smulh x6, x16, x8 adds x3, x3, x5 adc x4, x4, x6- stp x3, x4, [x0,#8*12]+ stp x3, x4, [x0,#8*14] asr x5, x4, #63 // sign extension- stp x5, x5, [x0,#8*14] stp x5, x5, [x0,#8*16]+ stp x5, x5, [x0,#8*18] eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -111,22 +111,21 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63 mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63+ add x0,x0,#8*8+ bl __smul_384x63 eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -138,22 +137,21 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63 mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63+ add x0,x0,#8*8+ bl __smul_384x63 eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -165,22 +163,21 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63 mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63+ add x0,x0,#8*8+ bl __smul_384x63 eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -192,22 +189,23 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ asr x27, x27, #63+ str x27, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63+ add x0,x0,#8*8+ bl __smul_384x63 asr x27, x27, #63 // sign extension stp x27, x27, [x0,#8*6] stp x27, x27, [x0,#8*8]@@ -223,23 +221,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -251,23 +250,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -279,23 +279,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -307,23 +308,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1@@ -335,23 +337,24 @@ #ifdef __CHERI_PURE_CAPABILITY__ scvalue c0,csp,x0 #endif- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 mov x20, x15 // corrected |f0| mov x21, x16 // corrected |g0| mov x15, x17 // |f1| mov x16, x19 // |g1| add x0,x0,#8*6- bl __smul_383_n_shift_by_62+ bl __smul_384_n_shift_by_62 add x0,x0,#8*6- bl __smul_383x63-+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // corrected |f1| mov x21, x16 // corrected |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail ////////////////////////////////////////// iteration before last eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__@@ -375,20 +378,22 @@ mov x15, x17 mov x16, x19 add x0,x0,#8*12- bl __smul_383x63+ bl __smul_384x63+ adc x25, x25, x26+ str x25, [x0,#8*6] mov x20, x15 // exact |f1| mov x21, x16 // exact |g1|- add x0,x0,#8*6- bl __smul_383x63- bl __smul_767x63_tail+ add x0,x0,#8*8+ bl __smul_384x63+ bl __smul_768x63_tail ////////////////////////////////////////// last iteration eor x1, x1, #256 // flip-flop src |a|b|u|v| #ifdef __CHERI_PURE_CAPABILITY__ scvalue c1,csp,x1 #endif- mov x2, #22 // 766 % 62+ mov x2, #24 // 768 % 62 //bl __ab_approximation_62 // |a| and |b| are exact, ldr x3, [x1,#8*0] // just load eor x8, x8, x8@@ -399,25 +404,60 @@ mov x20, x17 mov x21, x19 ldp x0, x15, [sp] // original out_ptr and n_ptr- bl __smul_383x63- bl __smul_767x63_tail+ bl __smul_384x63+ bl __smul_768x63_tail ldr x30, [x29,#__SIZEOF_POINTER__] - asr x22, x8, #63 // sign as mask- ldp x9, x10, [x15,#8*0]+ smulh x23, x8, x21 // figure out top-most limb+ adc x26, x26, x28+ ldp x9, x10, [x15,#8*0] // load |mod|+ add x23, x23, x26 // x23 is 1, 0 or -1 ldp x11, x12, [x15,#8*2]+ asr x22, x23, #63 // sign as mask ldp x13, x14, [x15,#8*4] - and x9, x9, x22 // add mod<<384 conditionally- and x10, x10, x22- adds x3, x3, x9- and x11, x11, x22+ and x26, x9, x22 // add mod<<384 conditionally+ and x27, x10, x22+ adds x3, x3, x26+ and x28, x11, x22+ adcs x4, x4, x27+ and x2, x12, x22+ adcs x5, x5, x28+ and x26, x13, x22+ adcs x6, x6, x2+ and x27, x14, x22+ adcs x7, x7, x26+ adcs x8, x25, x27+ adc x23, x23, xzr // x23 is 1, 0 or -1++ neg x22, x23+ orr x23, x23, x22 // excess bit or sign as mask+ asr x22, x22, #63 // excess bit as mask++ and x9, x9, x23 // mask |mod|+ and x10, x10, x23+ and x11, x11, x23+ and x12, x12, x23+ and x13, x13, x23+ and x14, x14, x23++ eor x9, x9, x22 // conditionally negate |mod|+ eor x10, x10, x22+ adds x9, x9, x22, lsr#63+ eor x11, x11, x22+ adcs x10, x10, xzr+ eor x12, x12, x22+ adcs x11, x11, xzr+ eor x13, x13, x22+ adcs x12, x12, xzr+ eor x14, x14, x22+ adcs x13, x13, xzr+ adc x14, x14, xzr++ adds x3, x3, x9 // final adjustment for |mod|<<384 adcs x4, x4, x10- and x12, x12, x22 adcs x5, x5, x11- and x13, x13, x22 adcs x6, x6, x12- and x14, x14, x22 stp x3, x4, [x0,#8*6] adcs x7, x7, x13 stp x5, x6, [x0,#8*8]@@ -431,7 +471,7 @@ ldp x25, x26, [x29,#8*__SIZEOF_POINTER__] ldp x27, x28, [x29,#10*__SIZEOF_POINTER__] ldr x29, [sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -439,7 +479,7 @@ // see corresponding commentary in ctx_inverse_mod_384-x86_64... .align 5-__smul_383x63:+__smul_384x63: ldp x3, x4, [x1,#8*0+96] // load |u| (or |v|) asr x17, x20, #63 // |f_|'s sign as mask (or |g_|'s) ldp x5, x6, [x1,#8*2+96]@@ -447,6 +487,7 @@ ldp x7, x8, [x1,#8*4+96] eor x3, x3, x17 // conditionally negate |u| (or |v|)+ ldr x25, [x1,#8*6+96] sub x20, x20, x17 eor x4, x4, x17 adds x3, x3, x17, lsr#63@@ -461,28 +502,33 @@ umulh x23, x4, x20 adcs x7, x7, xzr umulh x24, x5, x20- adcs x8, x8, xzr- umulh x25, x6, x20- umulh x26, x7, x20+ eor x25, x25, x17 mul x3, x3, x20+ adcs x8, x8, xzr mul x4, x4, x20+ adcs x25, x25, xzr+ cmp x20, #0 mul x5, x5, x20+ csel x25, x25, xzr, ne adds x4, x4, x22- mul x6, x6, x20+ umulh x22, x6, x20 adcs x5, x5, x23+ umulh x23, x7, x20+ mul x6, x6, x20 mul x7, x7, x20 adcs x6, x6, x24 mul x27,x8, x20- adcs x7, x7, x25- adcs x27,x27,x26+ adcs x7, x7, x22+ adcs x27,x27,x23 adc x2, xzr, xzr- ldp x9, x10, [x1,#8*0+144] // load |u| (or |v|)+ ldp x9, x10, [x1,#8*0+160] // load |u| (or |v|) asr x17, x21, #63 // |f_|'s sign as mask (or |g_|'s)- ldp x11, x12, [x1,#8*2+144]+ ldp x11, x12, [x1,#8*2+160] eor x21, x21, x17 // conditionally negate |f_| (or |g_|)- ldp x13, x14, [x1,#8*4+144]+ ldp x13, x14, [x1,#8*4+160] eor x9, x9, x17 // conditionally negate |u| (or |v|)+ ldr x26, [x1,#8*6+160] sub x21, x21, x17 eor x10, x10, x17 adds x9, x9, x17, lsr#63@@ -497,21 +543,25 @@ umulh x23, x10, x21 adcs x13, x13, xzr umulh x24, x11, x21- adcs x14, x14, xzr- umulh x25, x12, x21- adc x19, xzr, xzr // used in __smul_767x63_tail- umulh x26, x13, x21+ eor x26, x26, x17 mul x9, x9, x21+ adcs x14, x14, xzr mul x10, x10, x21+ adcs x26, x26, xzr+ adc x19, xzr, xzr // used in __smul_768x63_tail+ cmp x21, #0 mul x11, x11, x21+ csel x26, x26, xzr, ne adds x10, x10, x22- mul x12, x12, x21+ umulh x22, x12, x21 adcs x11, x11, x23+ umulh x23, x13, x21+ mul x12, x12, x21 mul x13, x13, x21 adcs x12, x12, x24 mul x28,x14, x21- adcs x13, x13, x25- adcs x28,x28,x26+ adcs x13, x13, x22+ adcs x28,x28,x23 adc x2, x2, xzr adds x3, x3, x9@@ -523,41 +573,41 @@ stp x5, x6, [x0,#8*2] adcs x27, x27, x28 stp x7, x27, [x0,#8*4]- adc x28, x2, xzr // used in __smul_767x63_tail ret .align 5-__smul_767x63_tail:- smulh x27, x8, x20- ldp x3, x4, [x1,#8*24] // load rest of |v|- umulh x14,x14, x21- ldp x5, x6, [x1,#8*26]- ldp x7, x8, [x1,#8*28]+__smul_768x63_tail:+ umulh x27, x8, x20+ ldr x4, [x1,#8*27]// load rest of |v|+ adc x2, x2, xzr+ ldp x5, x6, [x1,#8*28]+ and x25, x25, x20+ ldp x7, x8, [x1,#8*30]+ sub x27, x27, x25 // tie up |u|*|f1| chain - eor x3, x3, x17 // conditionally negate rest of |v|- eor x4, x4, x17+ umulh x14, x14, x21 // resume |v|*|g1| chain+ eor x4, x4, x17 // conditionally negate rest of |v| eor x5, x5, x17- adds x3, x3, x19 eor x6, x6, x17- adcs x4, x4, xzr+ adds x4, x4, x19 eor x7, x7, x17 adcs x5, x5, xzr eor x8, x8, x17 adcs x6, x6, xzr- umulh x22, x3, x21+ umulh x22, x26, x21 adcs x7, x7, xzr umulh x23, x4, x21 adc x8, x8, xzr umulh x24, x5, x21- add x14, x14, x28+ add x14, x14, x2 umulh x25, x6, x21 asr x28, x27, #63- umulh x26, x7, x21- mul x3, x3, x21+ umulh x2, x7, x21+ mul x3, x26, x21 mul x4, x4, x21 mul x5, x5, x21 adds x3, x3, x14@@ -565,10 +615,11 @@ adcs x4, x4, x22 mul x7, x7, x21 adcs x5, x5, x23- mul x8, x8, x21+ mul x22, x8, x21 adcs x6, x6, x24 adcs x7, x7, x25- adc x8, x8, x26+ adcs x25, x22, x2+ adc x26, xzr, xzr // used in the final step adds x3, x3, x27 adcs x4, x4, x28@@ -577,15 +628,15 @@ stp x3, x4, [x0,#8*6] adcs x7, x7, x28 stp x5, x6, [x0,#8*8]- adc x8, x8, x28- stp x7, x8, [x0,#8*10]+ adcs x25, x25, x28 // carry is used in the final step+ stp x7, x25, [x0,#8*10] ret .align 5-__smul_383_n_shift_by_62:+__smul_384_n_shift_by_62: ldp x3, x4, [x1,#8*0+0] // load |a| (or |b|) asr x28, x15, #63 // |f0|'s sign as mask (or |g0|'s) ldp x5, x6, [x1,#8*2+0]@@ -605,25 +656,27 @@ adcs x6, x6, xzr umulh x23, x4, x2 eor x8, x8, x28- umulh x24, x5, x2+ mul x3, x3, x2 adcs x7, x7, xzr- umulh x25, x6, x2+ mul x4, x4, x2 adc x8, x8, xzr - umulh x26, x7, x2- smulh x27, x8, x2- mul x3, x3, x2- mul x4, x4, x2- mul x5, x5, x2+ umulh x24, x5, x2+ and x28, x28, x2+ umulh x25, x6, x2 adds x4, x4, x22+ mul x5, x5, x2+ umulh x22, x7, x2+ neg x28, x28 mul x6, x6, x2 adcs x5, x5, x23+ umulh x23, x8, x2 mul x7, x7, x2 adcs x6, x6, x24 mul x8, x8, x2 adcs x7, x7, x25- adcs x8, x8 ,x26- adc x27, x27, xzr+ adcs x8, x8, x22+ adc x27, x23, x28 ldp x9, x10, [x1,#8*0+48] // load |a| (or |b|) asr x28, x16, #63 // |f0|'s sign as mask (or |g0|'s) ldp x11, x12, [x1,#8*2+48]@@ -643,25 +696,27 @@ adcs x12, x12, xzr umulh x23, x10, x2 eor x14, x14, x28- umulh x24, x11, x2+ mul x9, x9, x2 adcs x13, x13, xzr- umulh x25, x12, x2+ mul x10, x10, x2 adc x14, x14, xzr - umulh x26, x13, x2- smulh x28, x14, x2- mul x9, x9, x2- mul x10, x10, x2- mul x11, x11, x2+ umulh x24, x11, x2+ and x28, x28, x2+ umulh x25, x12, x2 adds x10, x10, x22+ mul x11, x11, x2+ umulh x22, x13, x2+ neg x28, x28 mul x12, x12, x2 adcs x11, x11, x23+ umulh x23, x14, x2 mul x13, x13, x2 adcs x12, x12, x24 mul x14, x14, x2 adcs x13, x13, x25- adcs x14, x14 ,x26- adc x28, x28, xzr+ adcs x14, x14, x22+ adc x28, x23, x28 adds x3, x3, x9 adcs x4, x4, x10 adcs x5, x5, x11
c-source/build/mach-o/ct_is_square_mod_384-armv8.S view
@@ -5,7 +5,7 @@ .align 5 _ct_is_square_mod_384:-.long 3573752639+ hint #25 stp x29, x30, [sp,#-16*__SIZEOF_POINTER__]! add x29, sp, #0 stp x19, x20, [sp,#2*__SIZEOF_POINTER__]@@ -84,7 +84,7 @@ ldp x25, x26, [x29,#8*__SIZEOF_POINTER__] ldp x27, x28, [x29,#10*__SIZEOF_POINTER__] ldr x29, [sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret
c-source/build/mach-o/ctq_inverse_mod_384-x86_64.s view
@@ -1,18 +1,18 @@ .comm ___blst_platform_cap,4 .text -.globl _ct_inverse_mod_383-.private_extern _ct_inverse_mod_383+.globl _ct_inverse_mod_384+.private_extern _ct_inverse_mod_384 .p2align 5-_ct_inverse_mod_383:+_ct_inverse_mod_384: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa #ifdef __BLST_PORTABLE__ testl $1,___blst_platform_cap(%rip)- jnz L$ct_inverse_mod_383$1+ jnz L$ct_inverse_mod_384$1 #endif pushq %rbp .cfi_adjust_cfa_offset 8@@ -80,7 +80,7 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,96(%rdi)@@ -88,10 +88,10 @@ movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 - movq %rdx,96(%rdi)+ movq %rdx,104(%rdi) xorq $256,%rsi@@ -104,19 +104,19 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq 96(%rsi),%rax- movq 144(%rsi),%r11+ movq 152(%rsi),%r11 movq %rdx,%rbx movq %rax,%r10 imulq 56(%rsp)@@ -133,6 +133,7 @@ movq %r9,72(%rdi) movq %r9,80(%rdi) movq %r9,88(%rdi)+ movq %r9,96(%rdi) leaq 96(%rsi),%rsi movq %r10,%rax@@ -143,13 +144,14 @@ imulq %rcx addq %rax,%r8 adcq %rdx,%r9- movq %r8,96(%rdi)- movq %r9,104(%rdi)- sarq $63,%r9+ movq %r8,104(%rdi) movq %r9,112(%rdi)+ sarq $63,%r9 movq %r9,120(%rdi) movq %r9,128(%rdi) movq %r9,136(%rdi)+ movq %r9,144(%rdi)+ movq %r9,152(%rdi) xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -160,14 +162,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -175,12 +177,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_383x63+ leaq 56(%rdi),%rdi+ call __smulq_384x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -191,14 +193,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -206,12 +208,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_383x63+ leaq 56(%rdi),%rdi+ call __smulq_384x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -222,14 +224,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -237,12 +239,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_383x63+ leaq 56(%rdi),%rdi+ call __smulq_384x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -253,14 +255,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -268,19 +270,17 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_383x63- sarq $63,%r13- movq %r13,48(%rdi)- movq %r13,56(%rdi)- movq %r13,64(%rdi)- movq %r13,72(%rdi)- movq %r13,80(%rdi)- movq %r13,88(%rdi)+ leaq 56(%rdi),%rdi+ call __smulq_384x63+ movq %r14,56(%rdi)+ movq %r14,64(%rdi)+ movq %r14,72(%rdi)+ movq %r14,80(%rdi)+ movq %r14,88(%rdi) xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -291,14 +291,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -306,12 +306,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -322,14 +322,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -337,12 +337,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -353,14 +353,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -368,12 +368,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -384,14 +384,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -399,12 +399,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi movl $62,%edi call __ab_approximation_62@@ -415,14 +415,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulq_383_n_shift_by_62+ call __smulq_384_n_shift_by_62 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -430,12 +430,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi movl $62,%edi@@ -459,16 +459,16 @@ leaq 96(%rsi),%rsi leaq 96(%rdi),%rdi- call __smulq_383x63+ call __smulq_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulq_767x63+ leaq 56(%rdi),%rdi+ call __smulq_768x63 xorq $256+96,%rsi- movl $22,%edi+ movl $24,%edi movq 0(%rsi),%r8 xorq %r9,%r9@@ -491,37 +491,77 @@ movq %r12,%rdx movq %r13,%rcx movq 32(%rsp),%rdi- call __smulq_767x63+ call __smulq_768x63 movq 40(%rsp),%rsi- movq %rax,%rdx- sarq $63,%rax+ movq %rdx,%r13+ sarq $63,%r13 - movq %rax,%r8- movq %rax,%r9- movq %rax,%r10+ movq %r13,%r8+ movq %r13,%r9+ movq %r13,%r10 andq 0(%rsi),%r8 andq 8(%rsi),%r9- movq %rax,%r11+ movq %r13,%r11 andq 16(%rsi),%r10 andq 24(%rsi),%r11- movq %rax,%r12+ movq %r13,%r12 andq 32(%rsi),%r12- andq 40(%rsi),%rax+ andq 40(%rsi),%r13 addq %r8,%r14 adcq %r9,%r15 adcq %r10,%rbx adcq %r11,%rbp adcq %r12,%rcx- adcq %rax,%rdx+ adcq %r13,%rax+ adcq $0,%rdx + movq %rdx,%r13+ negq %rdx+ orq %rdx,%r13+ sarq $63,%rdx++ movq %r13,%r8+ movq %r13,%r9+ movq %r13,%r10+ andq 0(%rsi),%r8+ andq 8(%rsi),%r9+ movq %r13,%r11+ andq 16(%rsi),%r10+ andq 24(%rsi),%r11+ movq %r13,%r12+ andq 32(%rsi),%r12+ andq 40(%rsi),%r13++ xorq %rdx,%r8+ xorq %rsi,%rsi+ xorq %rdx,%r9+ subq %rdx,%rsi+ xorq %rdx,%r10+ xorq %rdx,%r11+ xorq %rdx,%r12+ xorq %rdx,%r13+ addq %rsi,%r8+ adcq $0,%r9+ adcq $0,%r10+ adcq $0,%r11+ adcq $0,%r12+ adcq $0,%r13++ addq %r8,%r14+ adcq %r9,%r15+ adcq %r10,%rbx+ adcq %r11,%rbp+ adcq %r12,%rcx+ adcq %r13,%rax+ movq %r14,48(%rdi) movq %r15,56(%rdi) movq %rbx,64(%rdi) movq %rbp,72(%rdi) movq %rcx,80(%rdi)- movq %rdx,88(%rdi)+ movq %rax,88(%rdi) leaq 1112(%rsp),%r8 movq 0(%r8),%r15@@ -552,7 +592,7 @@ .p2align 5-__smulq_767x63:+__smulq_768x63: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa @@ -562,6 +602,7 @@ movq 24(%rsi),%r11 movq 32(%rsi),%r12 movq 40(%rsi),%r13+ movq 48(%rsi),%r14 movq %rdx,%rbp sarq $63,%rdx@@ -570,7 +611,7 @@ movq %rdi,8(%rsp) movq %rsi,16(%rsp)- leaq 48(%rsi),%rsi+ leaq 56(%rsi),%rsi xorq %rdx,%rbp addq %rax,%rbp@@ -581,16 +622,20 @@ xorq %rdx,%r11 xorq %rdx,%r12 xorq %rdx,%r13+ xorq %rdx,%r14 addq %r8,%rax adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12 adcq $0,%r13+ adcq $0,%r14 mulq %rbp movq %rax,0(%rdi) movq %r9,%rax+ andq %rbp,%r14+ negq %r14 movq %rdx,%r9 mulq %rbp addq %rax,%r9@@ -616,14 +661,14 @@ adcq $0,%rdx movq %rdx,%r13 movq %r12,32(%rdi)- imulq %rbp+ mulq %rbp addq %rax,%r13- adcq $0,%rdx+ adcq %rdx,%r14 movq %r13,40(%rdi)- movq %rdx,48(%rdi)- sarq $63,%rdx- movq %rdx,56(%rdi)+ movq %r14,48(%rdi)+ sarq $63,%r14+ movq %r14,56(%rdi) movq %rcx,%rdx movq 0(%rsi),%r8@@ -726,39 +771,41 @@ movq %rdi,%rax adcq $0,%rdx movq %rdx,%rdi- movq 8(%rsp),%rdx- imulq %rsi,%rax- movq 16(%rsp),%rsi+ imulq %rsi+ movq 8(%rsp),%rsi addq %rdi,%rax+ adcq $0,%rdx - addq 0(%rdx),%r8- adcq 8(%rdx),%r9- adcq 16(%rdx),%r10- adcq 24(%rdx),%r11- adcq 32(%rdx),%r12- adcq 40(%rdx),%r13- adcq 48(%rdx),%r14- movq 56(%rdx),%rdi+ addq 0(%rsi),%r8+ adcq 8(%rsi),%r9+ adcq 16(%rsi),%r10+ adcq 24(%rsi),%r11+ adcq 32(%rsi),%r12+ adcq 40(%rsi),%r13+ adcq 48(%rsi),%r14+ movq 56(%rsi),%rdi adcq %rdi,%r15 adcq %rdi,%rbx adcq %rdi,%rbp adcq %rdi,%rcx adcq %rdi,%rax+ adcq %rdi,%rdx - movq %rdx,%rdi+ leaq (%rsi),%rdi+ movq 16(%rsp),%rsi - movq %r8,0(%rdx)- movq %r9,8(%rdx)- movq %r10,16(%rdx)- movq %r11,24(%rdx)- movq %r12,32(%rdx)- movq %r13,40(%rdx)- movq %r14,48(%rdx)- movq %r15,56(%rdx)- movq %rbx,64(%rdx)- movq %rbp,72(%rdx)- movq %rcx,80(%rdx)- movq %rax,88(%rdx)+ movq %r8,0(%rdi)+ movq %r9,8(%rdi)+ movq %r10,16(%rdi)+ movq %r11,24(%rdi)+ movq %r12,32(%rdi)+ movq %r13,40(%rdi)+ movq %r14,48(%rdi)+ movq %r15,56(%rdi)+ movq %rbx,64(%rdi)+ movq %rbp,72(%rdi)+ movq %rcx,80(%rdi)+ movq %rax,88(%rdi) #ifdef __SGX_LVI_HARDENING__@@ -773,7 +820,7 @@ .p2align 5-__smulq_383x63:+__smulq_384x63: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa @@ -783,6 +830,7 @@ movq 24(%rsi),%r11 movq 32(%rsi),%r12 movq 40(%rsi),%r13+ movq 48(%rsi),%r14 movq %rdx,%rbp sarq $63,%rdx@@ -798,16 +846,20 @@ xorq %rdx,%r11 xorq %rdx,%r12 xorq %rdx,%r13+ xorq %rdx,%r14 addq %r8,%rax adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12 adcq $0,%r13+ adcq $0,%r14 mulq %rbp movq %rax,%r8 movq %r9,%rax+ andq %rbp,%r14+ negq %r14 movq %rdx,%r9 mulq %rbp addq %rax,%r9@@ -829,10 +881,11 @@ movq %r13,%rax adcq $0,%rdx movq %rdx,%r13- imulq %rbp,%rax+ mulq %rbp addq %rax,%r13+ adcq %rdx,%r14 - leaq 48(%rsi),%rsi+ leaq 56(%rsi),%rsi movq %rcx,%rdx movq %r8,0(%rdi)@@ -840,13 +893,15 @@ movq %r10,16(%rdi) movq %r11,24(%rdi) movq %r12,32(%rdi)- movq %r13,40(%rdi)+ movq %r13,%r15+ movq %r14,%rbx movq 0(%rsi),%r8 movq 8(%rsi),%r9 movq 16(%rsi),%r10 movq 24(%rsi),%r11 movq 32(%rsi),%r12 movq 40(%rsi),%r13+ movq 48(%rsi),%r14 movq %rdx,%rbp sarq $63,%rdx@@ -862,16 +917,20 @@ xorq %rdx,%r11 xorq %rdx,%r12 xorq %rdx,%r13+ xorq %rdx,%r14 addq %r8,%rax adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12 adcq $0,%r13+ adcq $0,%r14 mulq %rbp movq %rax,%r8 movq %r9,%rax+ andq %rbp,%r14+ negq %r14 movq %rdx,%r9 mulq %rbp addq %rax,%r9@@ -893,17 +952,19 @@ movq %r13,%rax adcq $0,%rdx movq %rdx,%r13- imulq %rbp,%rax+ mulq %rbp addq %rax,%r13+ adcq %rdx,%r14 - leaq -48(%rsi),%rsi+ leaq -56(%rsi),%rsi addq 0(%rdi),%r8 adcq 8(%rdi),%r9 adcq 16(%rdi),%r10 adcq 24(%rdi),%r11 adcq 32(%rdi),%r12- adcq 40(%rdi),%r13+ adcq %r15,%r13+ adcq %rbx,%r14 movq %r8,0(%rdi) movq %r9,8(%rdi)@@ -911,6 +972,7 @@ movq %r11,24(%rdi) movq %r12,32(%rdi) movq %r13,40(%rdi)+ movq %r14,48(%rdi) #ifdef __SGX_LVI_HARDENING__@@ -925,7 +987,7 @@ .p2align 5-__smulq_383_n_shift_by_62:+__smulq_384_n_shift_by_62: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa @@ -951,6 +1013,7 @@ xorq %rdx,%r11 xorq %rdx,%r12 xorq %rdx,%r13+ movq %rdx,%r14 addq %r8,%rax adcq $0,%r9 adcq $0,%r10@@ -961,6 +1024,8 @@ mulq %rbp movq %rax,%r8 movq %r9,%rax+ andq %rbp,%r14+ negq %r14 movq %rdx,%r9 mulq %rbp addq %rax,%r9@@ -982,12 +1047,11 @@ movq %r13,%rax adcq $0,%rdx movq %rdx,%r13- imulq %rbp+ mulq %rbp addq %rax,%r13- adcq $0,%rdx+ adcq %rdx,%r14 leaq 48(%rsi),%rsi- movq %rdx,%r14 movq %rcx,%rdx movq %r8,0(%rdi)@@ -1017,6 +1081,7 @@ xorq %rdx,%r11 xorq %rdx,%r12 xorq %rdx,%r13+ movq %rdx,%r15 addq %r8,%rax adcq $0,%r9 adcq $0,%r10@@ -1027,6 +1092,8 @@ mulq %rbp movq %rax,%r8 movq %r9,%rax+ andq %rbp,%r15+ negq %r15 movq %rdx,%r9 mulq %rbp addq %rax,%r9@@ -1048,11 +1115,12 @@ movq %r13,%rax adcq $0,%rdx movq %rdx,%r13- imulq %rbp+ mulq %rbp addq %rax,%r13- adcq $0,%rdx+ adcq %rdx,%r15 leaq -48(%rsi),%rsi+ movq %rbx,%rdx addq 0(%rdi),%r8 adcq 8(%rdi),%r9@@ -1060,8 +1128,7 @@ adcq 24(%rdi),%r11 adcq 32(%rdi),%r12 adcq 40(%rdi),%r13- adcq %rdx,%r14- movq %rbx,%rdx+ adcq %r15,%r14 shrdq $62,%r9,%r8 shrdq $62,%r10,%r9
c-source/build/mach-o/ctx_inverse_mod_384-x86_64.s view
@@ -1,15 +1,15 @@ .text -.globl _ctx_inverse_mod_383-.private_extern _ctx_inverse_mod_383+.globl _ctx_inverse_mod_384+.private_extern _ctx_inverse_mod_384 .p2align 5-_ctx_inverse_mod_383:+_ctx_inverse_mod_384: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa -L$ct_inverse_mod_383$1:+L$ct_inverse_mod_384$1: pushq %rbp .cfi_adjust_cfa_offset 8 .cfi_offset %rbp,-16@@ -79,7 +79,7 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,96(%rdi)@@ -87,10 +87,10 @@ movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 - movq %rdx,96(%rdi)+ movq %rdx,104(%rdi) xorq $256,%rsi@@ -103,19 +103,19 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq 96(%rsi),%rax- movq 144(%rsi),%r11+ movq 152(%rsi),%r11 movq %rdx,%rbx movq %rax,%r10 imulq 56(%rsp)@@ -132,6 +132,7 @@ movq %r9,72(%rdi) movq %r9,80(%rdi) movq %r9,88(%rdi)+ movq %r9,96(%rdi) leaq 96(%rsi),%rsi movq %r10,%rax@@ -142,13 +143,14 @@ imulq %rcx addq %rax,%r8 adcq %rdx,%r9- movq %r8,96(%rdi)- movq %r9,104(%rdi)- sarq $63,%r9+ movq %r8,104(%rdi) movq %r9,112(%rdi)+ sarq $63,%r9 movq %r9,120(%rdi) movq %r9,128(%rdi) movq %r9,136(%rdi)+ movq %r9,144(%rdi)+ movq %r9,152(%rdi) xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -159,14 +161,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -174,12 +176,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -190,14 +192,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -205,12 +207,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -221,14 +223,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -236,12 +238,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -252,14 +254,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -267,12 +269,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -283,14 +285,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -298,12 +300,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -314,14 +316,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -329,12 +331,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -345,14 +347,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -360,12 +362,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -376,14 +378,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -391,12 +393,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -407,14 +409,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -422,12 +424,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63+ leaq 56(%rdi),%rdi+ call __smulx_384x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -438,14 +440,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -453,19 +455,17 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_383x63- sarq $63,%r13- movq %r13,48(%rdi)- movq %r13,56(%rdi)- movq %r13,64(%rdi)- movq %r13,72(%rdi)- movq %r13,80(%rdi)- movq %r13,88(%rdi)+ leaq 56(%rdi),%rdi+ call __smulx_384x63+ movq %r14,56(%rdi)+ movq %r14,64(%rdi)+ movq %r14,72(%rdi)+ movq %r14,80(%rdi)+ movq %r14,88(%rdi) xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -476,14 +476,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -491,12 +491,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -507,14 +507,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -522,12 +522,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -538,14 +538,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -553,12 +553,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -569,14 +569,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -584,12 +584,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -600,14 +600,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -615,12 +615,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -631,14 +631,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -646,12 +646,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -662,14 +662,14 @@ movq $256,%rdi xorq %rsi,%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,56(%rsp) movq %rcx,64(%rsp) movq 72(%rsp),%rdx movq 80(%rsp),%rcx leaq 48(%rdi),%rdi- call __smulx_383_n_shift_by_31+ call __smulx_384_n_shift_by_31 movq %rdx,72(%rsp) movq %rcx,80(%rsp) @@ -677,12 +677,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -708,12 +708,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -739,12 +739,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -770,12 +770,12 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi movl $31,%edi call __ab_approximation_31@@ -801,21 +801,21 @@ movq 64(%rsp),%rcx leaq 96(%rsi),%rsi leaq 48(%rdi),%rdi- call __smulx_383x63+ call __smulx_384x63 movq 72(%rsp),%rdx movq 80(%rsp),%rcx- leaq 48(%rdi),%rdi- call __smulx_767x63+ leaq 56(%rdi),%rdi+ call __smulx_768x63 xorq $256+96,%rsi- movl $53,%edi+ movl $55,%edi movq 0(%rsi),%r8 movq 48(%rsi),%r10 - call __tail_loop_53+ call __tail_loop_55 @@ -832,40 +832,80 @@ movq %r12,%rdx movq %r13,%rcx movq 32(%rsp),%rdi- call __smulx_767x63+ call __smulx_768x63 movq 40(%rsp),%rsi- movq %rax,%rdx- sarq $63,%rax+ movq %rdx,%r13+ sarq $63,%r13 - movq %rax,%r8- movq %rax,%r9- movq %rax,%r10+ movq %r13,%r8+ movq %r13,%r9+ movq %r13,%r10 #ifdef __SGX_LVI_HARDENING__ lfence #endif andq 0(%rsi),%r8 andq 8(%rsi),%r9- movq %rax,%r11+ movq %r13,%r11 andq 16(%rsi),%r10 andq 24(%rsi),%r11- movq %rax,%r12+ movq %r13,%r12 andq 32(%rsi),%r12- andq 40(%rsi),%rax+ andq 40(%rsi),%r13 addq %r8,%r14 adcq %r9,%r15 adcq %r10,%rbx adcq %r11,%rbp adcq %r12,%rcx- adcq %rax,%rdx+ adcq %r13,%rax+ adcq $0,%rdx + movq %rdx,%r13+ negq %rdx+ orq %rdx,%r13+ sarq $63,%rdx++ movq %r13,%r8+ movq %r13,%r9+ movq %r13,%r10+ andq 0(%rsi),%r8+ andq 8(%rsi),%r9+ movq %r13,%r11+ andq 16(%rsi),%r10+ andq 24(%rsi),%r11+ movq %r13,%r12+ andq 32(%rsi),%r12+ andq 40(%rsi),%r13++ xorq %rdx,%r8+ xorq %rsi,%rsi+ xorq %rdx,%r9+ subq %rdx,%rsi+ xorq %rdx,%r10+ xorq %rdx,%r11+ xorq %rdx,%r12+ xorq %rdx,%r13+ addq %rsi,%r8+ adcq $0,%r9+ adcq $0,%r10+ adcq $0,%r11+ adcq $0,%r12+ adcq $0,%r13++ addq %r8,%r14+ adcq %r9,%r15+ adcq %r10,%rbx+ adcq %r11,%rbp+ adcq %r12,%rcx+ adcq %r13,%rax+ movq %r14,48(%rdi) movq %r15,56(%rdi) movq %rbx,64(%rdi) movq %rbp,72(%rdi) movq %rcx,80(%rdi)- movq %rdx,88(%rdi)+ movq %rax,88(%rdi) leaq 1112(%rsp),%r8 movq 0(%r8),%r15@@ -896,7 +936,7 @@ .p2align 5-__smulx_767x63:+__smulx_768x63: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa @@ -906,6 +946,7 @@ movq 24(%rsi),%r11 movq 32(%rsi),%r12 movq 40(%rsi),%r13+ movq 48(%rsi),%r14 movq %rdx,%rax sarq $63,%rax@@ -914,7 +955,7 @@ movq %rdi,8(%rsp) movq %rsi,16(%rsp)- leaq 48(%rsi),%rsi+ leaq 56(%rsi),%rsi xorq %rax,%rdx addq %rbp,%rdx@@ -924,37 +965,41 @@ xorq %rax,%r10 xorq %rax,%r11 xorq %rax,%r12- xorq %r13,%rax+ xorq %rax,%r13+ xorq %rax,%r14 addq %rbp,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12- adcq $0,%rax+ adcq $0,%r13+ adcq $0,%r14 + andq %rdx,%r14+ negq %r14+ mulxq %r8,%r8,%rbp- mulxq %r9,%r9,%r13+ mulxq %r9,%r9,%rax addq %rbp,%r9 mulxq %r10,%r10,%rbp- adcq %r13,%r10- mulxq %r11,%r11,%r13+ adcq %rax,%r10+ mulxq %r11,%r11,%rax adcq %rbp,%r11 mulxq %r12,%r12,%rbp- adcq %r13,%r12- adcq $0,%rbp- imulq %rdx- addq %rbp,%rax- adcq $0,%rdx+ adcq %rax,%r12+ mulxq %r13,%r13,%rax+ adcq %rbp,%r13+ adcq %rax,%r14 movq %r8,0(%rdi) movq %r9,8(%rdi) movq %r10,16(%rdi) movq %r11,24(%rdi) movq %r12,32(%rdi)- movq %rax,40(%rdi)- movq %rdx,48(%rdi)- sarq $63,%rdx- movq %rdx,56(%rdi)+ movq %r13,40(%rdi)+ movq %r14,48(%rdi)+ sarq $63,%r14+ movq %r14,56(%rdi) movq %rcx,%rdx movq %rcx,%rax @@ -989,7 +1034,7 @@ xorq %rax,%rbx xorq %rax,%rbp xorq %rax,%rcx- xorq %rax,%rdi+ xorq %rdi,%rax addq %rsi,%r8 adcq $0,%r9 adcq $0,%r10@@ -1001,63 +1046,65 @@ adcq $0,%rbx adcq $0,%rbp adcq $0,%rcx- adcq $0,%rdi-- mulxq %r8,%r8,%rax- mulxq %r9,%r9,%rsi- addq %rax,%r9- mulxq %r10,%r10,%rax- adcq %rsi,%r10- mulxq %r11,%r11,%rsi- adcq %rax,%r11- mulxq %r12,%r12,%rax- adcq %rsi,%r12- mulxq %r13,%r13,%rsi- adcq %rax,%r13- mulxq %r14,%r14,%rax- adcq %rsi,%r14- mulxq %r15,%r15,%rsi- adcq %rax,%r15- mulxq %rbx,%rbx,%rax- adcq %rsi,%rbx- mulxq %rbp,%rbp,%rsi- adcq %rax,%rbp- mulxq %rcx,%rcx,%rax- adcq %rsi,%rcx- mulxq %rdi,%rdi,%rsi- movq 8(%rsp),%rdx- movq 16(%rsp),%rsi- adcq %rdi,%rax+ adcq $0,%rax - addq 0(%rdx),%r8- adcq 8(%rdx),%r9- adcq 16(%rdx),%r10- adcq 24(%rdx),%r11- adcq 32(%rdx),%r12- adcq 40(%rdx),%r13- adcq 48(%rdx),%r14- movq 56(%rdx),%rdi- adcq %rdi,%r15+ mulxq %r8,%r8,%rsi+ mulxq %r9,%r9,%rdi+ addq %rsi,%r9+ mulxq %r10,%r10,%rsi+ adcq %rdi,%r10+ mulxq %r11,%r11,%rdi+ adcq %rsi,%r11+ mulxq %r12,%r12,%rsi+ adcq %rdi,%r12+ mulxq %r13,%r13,%rdi+ adcq %rsi,%r13+ mulxq %r14,%r14,%rsi+ adcq %rdi,%r14+ mulxq %r15,%r15,%rdi+ adcq %rsi,%r15+ mulxq %rbx,%rbx,%rsi adcq %rdi,%rbx- adcq %rdi,%rbp+ mulxq %rbp,%rbp,%rdi+ adcq %rsi,%rbp+ mulxq %rcx,%rcx,%rsi adcq %rdi,%rcx- adcq %rdi,%rax+ movq 8(%rsp),%rdi+ adcq $0,%rsi+ imulq %rdx+ addq %rsi,%rax+ adcq $0,%rdx - movq %rdx,%rdi+ addq 0(%rdi),%r8+ adcq 8(%rdi),%r9+ adcq 16(%rdi),%r10+ adcq 24(%rdi),%r11+ adcq 32(%rdi),%r12+ adcq 40(%rdi),%r13+ adcq 48(%rdi),%r14+ movq 56(%rdi),%rsi+ adcq %rsi,%r15+ adcq %rsi,%rbx+ adcq %rsi,%rbp+ adcq %rsi,%rcx+ adcq %rsi,%rax+ adcq %rsi,%rdx - movq %r8,0(%rdx)- movq %r9,8(%rdx)- movq %r10,16(%rdx)- movq %r11,24(%rdx)- movq %r12,32(%rdx)- movq %r13,40(%rdx)- movq %r14,48(%rdx)- movq %r15,56(%rdx)- movq %rbx,64(%rdx)- movq %rbp,72(%rdx)- movq %rcx,80(%rdx)- movq %rax,88(%rdx)+ movq 16(%rsp),%rsi + movq %r8,0(%rdi)+ movq %r9,8(%rdi)+ movq %r10,16(%rdi)+ movq %r11,24(%rdi)+ movq %r12,32(%rdi)+ movq %r13,40(%rdi)+ movq %r14,48(%rdi)+ movq %r15,56(%rdi)+ movq %rbx,64(%rdi)+ movq %rbp,72(%rdi)+ movq %rcx,80(%rdi)+ movq %rax,88(%rdi)+ #ifdef __SGX_LVI_HARDENING__ popq %r8@@ -1071,7 +1118,7 @@ .p2align 5-__smulx_383x63:+__smulx_384x63: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa @@ -1081,6 +1128,7 @@ movq 0+24(%rsi),%r11 movq 0+32(%rsi),%r12 movq 0+40(%rsi),%r13+ movq 0+48(%rsi),%r14 movq %rdx,%rbp sarq $63,%rbp@@ -1096,13 +1144,18 @@ xorq %rbp,%r11 xorq %rbp,%r12 xorq %rbp,%r13+ xorq %rbp,%r14 addq %rax,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12 adcq $0,%r13+ adcq $0,%r14 + andq %rdx,%r14+ negq %r14+ mulxq %r8,%r8,%rbp mulxq %r9,%r9,%rax addq %rbp,%r9@@ -1115,19 +1168,22 @@ mulxq %r13,%r13,%rax movq %rcx,%rdx adcq %rbp,%r13+ adcq %rax,%r14 movq %r8,0(%rdi) movq %r9,8(%rdi) movq %r10,16(%rdi) movq %r11,24(%rdi) movq %r12,32(%rdi)- movq %r13,40(%rdi)- movq 48+0(%rsi),%r8- movq 48+8(%rsi),%r9- movq 48+16(%rsi),%r10- movq 48+24(%rsi),%r11- movq 48+32(%rsi),%r12- movq 48+40(%rsi),%r13+ movq %r13,%r15+ movq %r14,%rbx+ movq 56+0(%rsi),%r8+ movq 56+8(%rsi),%r9+ movq 56+16(%rsi),%r10+ movq 56+24(%rsi),%r11+ movq 56+32(%rsi),%r12+ movq 56+40(%rsi),%r13+ movq 56+48(%rsi),%r14 movq %rdx,%rbp sarq $63,%rbp@@ -1143,13 +1199,18 @@ xorq %rbp,%r11 xorq %rbp,%r12 xorq %rbp,%r13+ xorq %rbp,%r14 addq %rax,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12 adcq $0,%r13+ adcq $0,%r14 + andq %rdx,%r14+ negq %r14+ mulxq %r8,%r8,%rbp mulxq %r9,%r9,%rax addq %rbp,%r9@@ -1161,13 +1222,15 @@ adcq %rax,%r12 mulxq %r13,%r13,%rax adcq %rbp,%r13+ adcq %rax,%r14 addq 0(%rdi),%r8 adcq 8(%rdi),%r9 adcq 16(%rdi),%r10 adcq 24(%rdi),%r11 adcq 32(%rdi),%r12- adcq 40(%rdi),%r13+ adcq %r15,%r13+ adcq %rbx,%r14 movq %r8,0(%rdi) movq %r9,8(%rdi)@@ -1175,6 +1238,7 @@ movq %r11,24(%rdi) movq %r12,32(%rdi) movq %r13,40(%rdi)+ movq %r14,48(%rdi) #ifdef __SGX_LVI_HARDENING__@@ -1189,12 +1253,11 @@ .p2align 5-__smulx_383_n_shift_by_31:+__smulx_384_n_shift_by_31: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa movq %rdx,%rbx- xorq %r14,%r14 movq 0+0(%rsi),%r8 movq 0+8(%rsi),%r9 movq 0+16(%rsi),%r10@@ -1215,27 +1278,29 @@ xorq %rax,%r10 xorq %rax,%r11 xorq %rax,%r12- xorq %r13,%rax+ xorq %rax,%r13 addq %rbp,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12- adcq $0,%rax+ adcq $0,%r13 + andq %rdx,%rax+ negq %rax+ mulxq %r8,%r8,%rbp- mulxq %r9,%r9,%r13+ mulxq %r9,%r9,%r14 addq %rbp,%r9 mulxq %r10,%r10,%rbp- adcq %r13,%r10- mulxq %r11,%r11,%r13+ adcq %r14,%r10+ mulxq %r11,%r11,%r14 adcq %rbp,%r11 mulxq %r12,%r12,%rbp- adcq %r13,%r12- adcq $0,%rbp- imulq %rdx- addq %rbp,%rax- adcq %rdx,%r14+ adcq %r14,%r12+ mulxq %r13,%r13,%r14+ adcq %rbp,%r13+ adcq %rax,%r14 movq %rcx,%rdx @@ -1244,7 +1309,8 @@ movq %r10,16(%rdi) movq %r11,24(%rdi) movq %r12,32(%rdi)- movq %rax,40(%rdi)+ movq %r13,40(%rdi)+ movq %r14,%r15 movq 48+0(%rsi),%r8 movq 48+8(%rsi),%r9 movq 48+16(%rsi),%r10@@ -1265,43 +1331,45 @@ xorq %rax,%r10 xorq %rax,%r11 xorq %rax,%r12- xorq %r13,%rax+ xorq %rax,%r13 addq %rbp,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12- adcq $0,%rax+ adcq $0,%r13 + andq %rdx,%rax+ negq %rax+ mulxq %r8,%r8,%rbp- mulxq %r9,%r9,%r13+ mulxq %r9,%r9,%r14 addq %rbp,%r9 mulxq %r10,%r10,%rbp- adcq %r13,%r10- mulxq %r11,%r11,%r13+ adcq %r14,%r10+ mulxq %r11,%r11,%r14 adcq %rbp,%r11 mulxq %r12,%r12,%rbp- adcq %r13,%r12- adcq $0,%rbp- imulq %rdx- addq %rbp,%rax- adcq $0,%rdx+ adcq %r14,%r12+ mulxq %r13,%r13,%r14+ adcq %rbp,%r13+ adcq %rax,%r14 addq 0(%rdi),%r8 adcq 8(%rdi),%r9 adcq 16(%rdi),%r10 adcq 24(%rdi),%r11 adcq 32(%rdi),%r12- adcq 40(%rdi),%rax- adcq %rdx,%r14+ adcq 40(%rdi),%r13+ adcq %r15,%r14 movq %rbx,%rdx shrdq $31,%r9,%r8 shrdq $31,%r10,%r9 shrdq $31,%r11,%r10 shrdq $31,%r12,%r11- shrdq $31,%rax,%r12- shrdq $31,%r14,%rax+ shrdq $31,%r13,%r12+ shrdq $31,%r14,%r13 sarq $63,%r14 xorq %rbp,%rbp@@ -1312,20 +1380,20 @@ xorq %r14,%r10 xorq %r14,%r11 xorq %r14,%r12- xorq %r14,%rax+ xorq %r14,%r13 addq %rbp,%r8 adcq $0,%r9 adcq $0,%r10 adcq $0,%r11 adcq $0,%r12- adcq $0,%rax+ adcq $0,%r13 movq %r8,0(%rdi) movq %r9,8(%rdi) movq %r10,16(%rdi) movq %r11,24(%rdi) movq %r12,32(%rdi)- movq %rax,40(%rdi)+ movq %r13,40(%rdi) xorq %r14,%rdx xorq %r14,%rcx@@ -1587,7 +1655,7 @@ .p2align 5-__tail_loop_53:+__tail_loop_55: .cfi_startproc .byte 0xf3,0x0f,0x1e,0xfa @@ -1596,7 +1664,7 @@ xorq %r12,%r12 movq $1,%r13 -L$oop_53:+L$oop_55: xorq %rax,%rax testq $1,%r8 movq %r10,%rbx@@ -1623,7 +1691,7 @@ subq %rax,%rdx subq %rbx,%rcx subl $1,%edi- jnz L$oop_53+ jnz L$oop_55 #ifdef __SGX_LVI_HARDENING__
c-source/build/mach-o/div3w-armv8.S view
@@ -5,6 +5,7 @@ .align 5 _div_3_limbs:+ hint #34 ldp x4,x5,[x0] // load R eor x0,x0,x0 // Q = 0 mov x3,#64 // loop counter@@ -39,6 +40,7 @@ .align 5 _quot_rem_128:+ hint #34 ldp x3,x4,[x1] mul x5,x3,x2 // divisor[0:1} * quotient@@ -76,6 +78,7 @@ .align 5 _quot_rem_64:+ hint #34 ldr x3,[x1] ldr x8,[x0] // load 1 limb of the dividend
c-source/build/mach-o/mul_mont_256-armv8.S view
@@ -5,6 +5,7 @@ .align 5 _mul_mont_sparse_256:+ hint #34 stp x29,x30,[sp,#-8*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -196,7 +197,7 @@ .align 5 _sqr_mont_sparse_256:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-6*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -297,7 +298,7 @@ ldp x19,x20,[x29,#2*__SIZEOF_POINTER__] ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldr x29,[sp],#6*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret .globl _from_mont_256@@ -305,7 +306,7 @@ .align 5 _from_mont_256:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-2*__SIZEOF_POINTER__]! add x29,sp,#0 @@ -330,7 +331,7 @@ stp x12,x13,[x0,#16] ldr x29,[sp],#2*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -339,7 +340,7 @@ .align 5 _redc_mont_256:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-2*__SIZEOF_POINTER__]! add x29,sp,#0 @@ -374,7 +375,7 @@ stp x12,x13,[x0,#16] ldr x29,[sp],#2*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret
c-source/build/mach-o/mul_mont_384-armv8.S view
@@ -1,10 +1,11 @@ .text .globl _add_mod_384x384+.private_extern _add_mod_384x384 .align 5 _add_mod_384x384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-8*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -22,7 +23,7 @@ ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldp x23,x24,[x29,#6*__SIZEOF_POINTER__] ldr x29,[sp],#8*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -82,10 +83,11 @@ .globl _sub_mod_384x384+.private_extern _sub_mod_384x384 .align 5 _sub_mod_384x384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-8*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -103,7 +105,7 @@ ldp x21,x22,[x29,#4*__SIZEOF_POINTER__] ldp x23,x24,[x29,#6*__SIZEOF_POINTER__] ldr x29,[sp],#8*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -239,7 +241,7 @@ .align 5 _mul_mont_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -312,7 +314,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -321,7 +323,7 @@ .align 5 _sqr_mont_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -397,7 +399,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -406,7 +408,7 @@ .align 5 _mul_mont_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -438,7 +440,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -819,7 +821,7 @@ .align 5 _sqr_mont_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -856,7 +858,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -865,7 +867,7 @@ .align 5 _sqr_n_mul_mont_383:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -921,7 +923,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -1042,7 +1044,7 @@ .align 5 _sqr_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1064,7 +1066,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -1073,7 +1075,7 @@ .align 5 _redc_mont_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1097,7 +1099,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -1106,7 +1108,7 @@ .align 5 _from_mont_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1147,7 +1149,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -1365,7 +1367,7 @@ .align 5 _mul_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1383,7 +1385,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -1569,7 +1571,7 @@ .align 5 _mul_382x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1651,7 +1653,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -1660,7 +1662,7 @@ .align 5 _sqr_382x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1751,7 +1753,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -1760,7 +1762,7 @@ .align 5 _sqr_mont_382x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -1875,7 +1877,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -2224,7 +2226,7 @@ .align 5 _sgn0_pty_mont_384:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -2269,7 +2271,7 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret @@ -2278,7 +2280,7 @@ .align 5 _sgn0_pty_mont_384x:-.long 3573752639+ hint #25 stp x29,x30,[sp,#-16*__SIZEOF_POINTER__]! add x29,sp,#0 stp x19,x20,[sp,#2*__SIZEOF_POINTER__]@@ -2367,6 +2369,6 @@ ldp x25,x26,[x29,#8*__SIZEOF_POINTER__] ldp x27,x28,[x29,#10*__SIZEOF_POINTER__] ldr x29,[sp],#16*__SIZEOF_POINTER__-.long 3573752767+ hint #29 ret
c-source/build/mach-o/sha256-armv8.S view
@@ -43,9 +43,11 @@ .align 2 .align 2 .globl _blst_sha256_block_armv8+.private_extern _blst_sha256_block_armv8 .align 6 _blst_sha256_block_armv8:+ hint #34 Lv8_entry: stp x29,x30,[sp,#-2*__SIZEOF_POINTER__]! add x29,sp,#0@@ -182,9 +184,11 @@ ret .globl _blst_sha256_block_data_order+.private_extern _blst_sha256_block_data_order .align 4 _blst_sha256_block_data_order:+ hint #34 adrp x16,___blst_platform_cap@PAGE ldr w16,[x16,___blst_platform_cap@PAGEOFF] tst w16,#1@@ -1034,6 +1038,7 @@ .align 4 _blst_sha256_emit:+ hint #34 ldp x4,x5,[x1] ldp x6,x7,[x1,#16] #ifndef __AARCH64EB__@@ -1062,6 +1067,7 @@ .align 4 _blst_sha256_bcopy:+ hint #34 Loop_bcopy: ldrb w3,[x1],#1 sub x2,x2,#1@@ -1075,6 +1081,7 @@ .align 4 _blst_sha256_hcopy:+ hint #34 ldp x4,x5,[x1] ldp x6,x7,[x1,#16] stp x4,x5,[x0]
c-source/src/cpuid.c view
@@ -47,14 +47,14 @@ return 0; } -# if defined(_MSC_VER) && !defined(__clang__)+# if defined(_MSC_VER) && !defined(__clang__) && !defined(__BLST_DLL_MAIN__) # pragma section(".CRT$XCU",read) __declspec(allocate(".CRT$XCU")) static int (*p)(void) = __blst_cpuid; # elif defined(__SUNPRO_C) # pragma init(__blst_cpuid) # endif -#elif defined(__aarch64__) || defined(__aarch64) || defined(_M_ARM64)+#elif defined(__aarch64__) || defined(__aarch64) || defined(_M_ARM64) || defined(_M_ARM64EC) # if defined(__linux__) && (defined(__GNUC__) || defined(__clang__)) extern unsigned long getauxval(unsigned long type) __attribute__ ((weak));@@ -105,10 +105,56 @@ return 0; } -# if defined(_MSC_VER) && !defined(__clang__)+# if defined(_MSC_VER) && !defined(__clang__) && !defined(__BLST_DLL_MAIN__) # pragma section(".CRT$XCU",read) __declspec(allocate(".CRT$XCU")) static int (*p)(void) = __blst_cpuid; # endif # endif +#endif++#if defined(_WIN64) && defined(__BLST_DLL_MAIN__)+# define IsProcessorFeaturePresent mask_IsProcessorFeaturePresent+# define WIN32_LEAN_AND_MEAN+# include <windows.h>++BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpvReserved)+{+ if (dwReason == DLL_PROCESS_ATTACH) {+ DisableThreadLibraryCalls(hinstDLL);+ __blst_cpuid();+ }++ return TRUE;++ (void)lpvReserved;+}++# if defined(_MSC_VER)+/*+ * Even though we don't have memcpy/memset anywhere, MSVC compiler+ * generates calls to them as it recognizes corresponding patterns.+ */+#pragma function(memcpy)+void *memcpy(unsigned char *dst, const unsigned char *src, size_t n)+{+ void *ret = dst;++ while(n--)+ *dst++ = *src++;++ return ret;+}++#pragma function(memset)+void *memset(unsigned char *dst, int c, size_t n)+{+ void *ret = dst;++ while(n--)+ *dst++ = (unsigned char)c;++ return ret;+}+# endif #endif
c-source/src/ec_mult.h view
@@ -210,8 +210,7 @@ wval &= wmask; \ wval = booth_encode(wval, SZ); \ row_is_inf = ptype##_gather_booth_w##SZ(row, table, wval); \- if (bits > 0) ptype##_add(sum, ret, row); \- else ptype##_dadd(sum, ret, row, NULL); \+ ptype##_dadd(sum, ret, row, NULL); \ ptype##_ccopy(ret, sum, (ret_is_inf | row_is_inf) ^ 1); \ sum_is_inf = vec_is_zero(ret->Z, sizeof(ret->Z)); \ ret_is_inf |= sum_is_inf; \
c-source/src/multi_scalar.c view
@@ -7,9 +7,6 @@ #include "fields.h" #include "point.h" -/*- * Infinite point among inputs would be devastating. Shall we change it?- */ #define POINTS_TO_AFFINE_IMPL(prefix, ptype, bits, field) \ static void ptype##s_to_affine(ptype##_affine dst[], \ const ptype *const points[], size_t npoints) \@@ -25,27 +22,36 @@ \ point = *points ? *points++ : point+1; \ acc = (vec##bits *)dst; \- vec_copy(acc++, point->Z, sizeof(vec##bits)); \- for (i = 1; i < delta; i++, acc++) \- point = *points ? *points++ : point+1, \- mul_##field(acc[0], acc[-1], point->Z); \+ vec_select(acc++, BLS12_381_Rx.p, point->Z, sizeof(vec##bits), \+ vec_is_zero(point->Z, sizeof(point->Z))); \+ for (i = 1; i < delta; i++, acc++) { \+ point = *points ? *points++ : point+1; \+ vec_select(acc[0], BLS12_381_Rx.p, point->Z, sizeof(vec##bits), \+ vec_is_zero(point->Z, sizeof(point->Z))); \+ mul_##field(acc[0], acc[0], acc[-1]); \+ } \ \ --acc; reciprocal_##field(acc[0], acc[0]); \ \ walkback = points-1, p = point, --delta, dst += delta; \ for (i = 0; i < delta; i++, acc--, dst--) { \+ bool_t is_inf = vec_is_zero(p->Z, sizeof(p->Z)); \ mul_##field(acc[-1], acc[-1], acc[0]); /* 1/Z */\ sqr_##field(ZZ, acc[-1]); /* 1/Z^2 */\ mul_##field(ZZZ, ZZ, acc[-1]); /* 1/Z^3 */\- mul_##field(acc[-1], p->Z, acc[0]); \+ vec_select(acc[-1], BLS12_381_Rx.p, p->Z, sizeof(vec##bits), \+ is_inf); \+ mul_##field(acc[-1], acc[-1], acc[0]); \ mul_##field(dst->X, p->X, ZZ); /* X = X'/Z^2 */\ mul_##field(dst->Y, p->Y, ZZZ); /* Y = Y'/Z^3 */\+ vec_czero(dst, sizeof(*dst), is_inf); \ p = (p == *walkback) ? *--walkback : p-1; \ } \ sqr_##field(ZZ, acc[0]); /* 1/Z^2 */\ mul_##field(ZZZ, ZZ, acc[0]); /* 1/Z^3 */\ mul_##field(dst->X, p->X, ZZ); /* X = X'/Z^2 */\ mul_##field(dst->Y, p->Y, ZZZ); /* Y = Y'/Z^3 */\+ vec_czero(dst, sizeof(*dst), vec_is_zero(p->Z, sizeof(p->Z))); \ ++delta, dst += delta, npoints -= delta; \ } \ } \@@ -74,18 +80,23 @@ #define SCRATCH_SZ(ptype) (sizeof(ptype)==sizeof(POINTonE1) ? 8192 : 4096) +/* The intermediate infinity points are encoded as [0, 0, 1]. */+ #define PRECOMPUTE_WBITS_IMPL(prefix, ptype, bits, field, one) \ static void ptype##_precompute_row_wbits(ptype row[], size_t wbits, \ const ptype##_affine *point) \ { \ size_t i, j, n = (size_t)1 << (wbits-1); \+ bool_t inf = vec_is_zero(point, sizeof(*point)); \ /* row[-1] is implicit infinity */\ vec_copy(&row[0], point, sizeof(*point)); /* row[0]=p*1 */\ vec_copy(&row[0].Z, one, sizeof(row[0].Z)); \ ptype##_double(&row[1], &row[0]); /* row[1]=p*(1+1) */\+ vec_select(&row[1].Z, one, &row[1].Z, sizeof(row[1].Z), inf); \ for (i = 2, j = 1; i < n; i += 2, j++) \ ptype##_add_affine(&row[i], &row[i-1], point), /* row[2]=p*(2+1) */\- ptype##_double(&row[i+1], &row[j]); /* row[3]=p*(2+2) */\+ ptype##_double(&row[i+1], &row[j]), /* row[3]=p*(2+2) */\+ vec_select(&row[i+1].Z, one, &row[i+1].Z, sizeof(row[i+1].Z), inf); \ } /* row[4] ... */\ \ static void ptype##s_to_affine_row_wbits(ptype##_affine dst[], ptype src[], \@@ -202,7 +213,7 @@ \ nbits -= window; \ z = is_zero(nbits); \- wval = (get_wval_limb(scalar, nbits - (z^1), wbits + (z^1)) << z) & wmask; \+ wval = (get_wval_limb(scalar, nbits - (z^1), window + (z^1)) << z) & wmask; \ wval = booth_encode(wval, wbits); \ ptype##_gather_booth_wbits(&scratch[0], row, wbits, wval); \ row += nwin; \@@ -232,7 +243,7 @@ if (j == scratch_sz) \ ptype##s_accumulate(ret, scratch, j), j = 0; \ scalar = *scalar_s ? *scalar_s++ : scalar+nbytes; \- wval = (get_wval_limb(scalar, 0, wbits) << 1) & wmask; \+ wval = (get_wval_limb(scalar, 0, window) << 1) & wmask; \ wval = booth_encode(wval, wbits); \ ptype##_gather_booth_wbits(&scratch[j], row, wbits, wval); \ } \@@ -267,7 +278,14 @@ for (wbits=0; npoints>>=1; wbits++) ; - return wbits>12 ? wbits-3 : (wbits>4 ? wbits-2 : (wbits ? 2 : 1));+ if (wbits > 12)+ return wbits - 3;+ else if (wbits > 8)+ return wbits - 2;+ else if (wbits > 4)+ return wbits - 1;++ return wbits ? 2 : 1; } #define DECLARE_PRIVATE_POINTXYZZ(ptype, bits) \@@ -402,10 +420,11 @@ { \ if (npoints == 1) { \ prefix##_from_affine(ret, points[0]); \- prefix##_mult(ret, ret, scalars[0], nbits); \+ ptype##_mult_w5(ret, ret, scalars[0], nbits); \ return; \ } \- if ((npoints * sizeof(ptype##_affine) * 8 * 3) <= SCRATCH_LIMIT) { \+ if ((npoints * sizeof(ptype##_affine) * 8 * 3) <= SCRATCH_LIMIT && \+ npoints < 32) { \ ptype##_affine *table = alloca(npoints * sizeof(ptype##_affine) * 8); \ ptype##s_precompute_wbits(table, 4, points, npoints); \ ptype##s_mult_wbits(ret, table, 4, npoints, scalars, nbits, NULL); \
c-source/src/recip.c view
@@ -62,20 +62,11 @@ TO_LIMB_T(0x39869507b587b120), TO_LIMB_T(0x23ba5c279c2895fb), TO_LIMB_T(0x58dd3db21a5d66bb), TO_LIMB_T(0xd0088f51cbff34d2) };-#ifdef __BLST_NO_ASM__-# define RRx4 BLS12_381_RR-#else- static const vec384 RRx4 = { /* (4<<768)%P */- TO_LIMB_T(0x5f7e7cd070d107c2), TO_LIMB_T(0xec839a9ac49c13c8),- TO_LIMB_T(0x6933786f44f4ef0b), TO_LIMB_T(0xd6bf8b9c676be983),- TO_LIMB_T(0xd3adaaaa4dcefb06), TO_LIMB_T(0x12601bc1d82bc175)- };-#endif union { vec768 x; vec384 r[2]; } temp; - ct_inverse_mod_383(temp.x, inp, BLS12_381_P, Px8);+ ct_inverse_mod_384(temp.x, inp, BLS12_381_P, Px8); redc_mont_384(temp.r[0], temp.x, BLS12_381_P, p0);- mul_mont_384(temp.r[0], temp.r[0], RRx4, BLS12_381_P, p0);+ mul_mont_384(temp.r[0], temp.r[0], BLS12_381_RR, BLS12_381_P, p0); #ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION /* sign goes straight to flt_reciprocal */@@ -88,7 +79,6 @@ #else vec_copy(out, temp.r[0], sizeof(vec384)); #endif-#undef RRx4 } void blst_fp_inverse(vec384 out, const vec384 inp)
c-source/src/vect.h view
@@ -85,9 +85,7 @@ # define from_mont_384 fromx_mont_384 # define sgn0_pty_mont_384 sgn0x_pty_mont_384 # define sgn0_pty_mont_384x sgn0x_pty_mont_384x-# define ct_inverse_mod_383 ctx_inverse_mod_383-#elif defined(__BLST_NO_ASM__)-# define ct_inverse_mod_383 ct_inverse_mod_384+# define ct_inverse_mod_384 ctx_inverse_mod_384 #endif void mul_mont_sparse_256(vec256 ret, const vec256 a, const vec256 b,@@ -137,7 +135,7 @@ void lshift_mod_384(vec384 ret, const vec384 a, size_t count, const vec384 p); void rshift_mod_384(vec384 ret, const vec384 a, size_t count, const vec384 p); void div_by_2_mod_384(vec384 ret, const vec384 a, const vec384 p);-void ct_inverse_mod_383(vec768 ret, const vec384 inp, const vec384 mod,+void ct_inverse_mod_384(vec768 ret, const vec384 inp, const vec384 mod, const vec384 modx); void ct_inverse_mod_256(vec512 ret, const vec256 inp, const vec256 mod, const vec256 modx);@@ -407,7 +405,7 @@ #if defined(__INTEL_COMPILER) # pragma warning(disable:167) # pragma warning(disable:556)-#elif defined(__GNUC__) && !defined(__clang__)+#elif defined(__GNUC__) && !defined(__clang__) && (__STDC_VERSION__-0) < 202311 # pragma GCC diagnostic ignored "-Wpedantic" #elif defined(_MSC_VER) # pragma warning(disable: 4127 4189)
hsblst.cabal view
@@ -1,11 +1,11 @@ cabal-version: 3.0 --- This file has been generated from package.yaml by hpack version 0.34.4.+-- This file has been generated from package.yaml by hpack version 0.37.0. -- -- see: https://github.com/sol/hpack name: hsblst-version: 0.0.4+version: 0.0.5 synopsis: Haskell bindings to BLST description: HsBLST is low-level Haskell bindings and a high-level interface to [BLST](https://github.com/supranational/blst) -- a multilingual BLS12-381 signature library. category: Cryptography@@ -19,7 +19,9 @@ build-type: Simple tested-with: GHC == 9.8.4- , GHC == 9.10.1+ , GHC == 9.10.3+ , GHC == 9.12.2+ , GHC == 9.12.3 extra-source-files: c-source/build/coff/add_mod_256-x86_64.s c-source/build/coff/add_mod_384-x86_64.s@@ -180,6 +182,7 @@ EmptyCase FlexibleContexts FlexibleInstances+ ForeignFunctionInterface GADTs GeneralizedNewtypeDeriving ImportQualifiedPost@@ -216,12 +219,12 @@ c-sources: c-source/src/server.c build-depends:- base >=4.17 && <4.21- , deepseq >=1.4.5.0 && <1.6.0- , memory >=0.16.0 && <0.19+ base >=4.17 && <4.22+ , deepseq >=1.4.5 && <1.6+ , ram >=0.19 && <0.22+ default-language: Haskell2010 if impl(ghc >= 9.2) ghc-options: -Wno-missing-kind-signatures- default-language: Haskell2010 asm-sources: c-source/build/assembly.S build-tool-depends: c2hs:c2hs @@ -257,6 +260,7 @@ EmptyCase FlexibleContexts FlexibleInstances+ ForeignFunctionInterface GADTs GeneralizedNewtypeDeriving ImportQualifiedPost@@ -291,16 +295,16 @@ build-tool-depends: tasty-discover:tasty-discover build-depends:- base >=4.17 && <4.21- , base16-bytestring ==1.0.*+ base >=4.17 && <4.22+ , base16-bytestring >=1 && <1.1 , bytestring >=0.10.12.1 && <0.13 , hsblst- , memory >=0.16.0 && <0.19+ , ram >=0.19 && <0.22 , tasty >=1.4.2.1 && <1.6 , tasty-hunit >=0.10.0.3 && <0.11- , text >=1.2.5.0 && <1.3 || >=2.0.1 && <2.1 || >=2.1 && <2.2+ , text >=1.2.5 && <1.3 || >=2.0.1 && <2.1 || >=2.1 && <2.2+ default-language: Haskell2010 if impl(ghc >= 9.2) ghc-options: -Wno-missing-kind-signatures if impl(ghc < 9.4) ghc-options: -eventlog- default-language: Haskell2010