pq_crypto 0.6.1 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/SECURITY.md +7 -0
  4. data/ext/pqcrypto/pqcrypto_version.h +1 -1
  5. data/ext/pqcrypto/vendor/.vendored +4 -4
  6. data/ext/pqcrypto/vendor/mldsa-native/README.md +23 -10
  7. data/ext/pqcrypto/vendor/mldsa-native/mldsa/README.md +23 -0
  8. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.c +114 -58
  9. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.h +498 -461
  10. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_asm.S +145 -85
  11. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_config.h +456 -422
  12. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/cbmc.h +47 -25
  13. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/common.h +26 -14
  14. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.h +56 -81
  15. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.h +17 -24
  16. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.c +33 -40
  17. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.h +67 -87
  18. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.c +19 -14
  19. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.h +13 -5
  20. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.c +84 -10
  21. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.h +10 -5
  22. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/auto.h +6 -0
  23. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/fips202_native_aarch64.h +22 -15
  24. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S +376 -0
  25. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S +204 -0
  26. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S +259 -0
  27. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S +1077 -0
  28. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S +987 -0
  29. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +16 -10
  30. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_scalar.h +2 -1
  31. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_v84a.h +1 -1
  32. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x2_v84a.h +4 -2
  33. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_scalar.h +2 -2
  34. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +1 -1
  35. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/api.h +60 -0
  36. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/mve.h +48 -0
  37. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m.h +18 -1
  38. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +658 -582
  39. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +5 -100
  40. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +26 -25
  41. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/state_extract_bytes_x4_mve.S +334 -0
  42. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/state_xor_bytes_x4_mve.S +355 -0
  43. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/auto.h +8 -3
  44. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/{xkcp.h → keccak_f1600_x4_avx2.h} +11 -8
  45. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/fips202_native_x86_64.h +44 -0
  46. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S +454 -0
  47. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/keccakf1600_constants.c +52 -0
  48. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/meta.h +37 -28
  49. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/aarch64_zetas.c +213 -196
  50. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/arith_native_aarch64.h +248 -64
  51. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/intt_aarch64_asm.S +753 -0
  52. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l4_aarch64_asm.S +129 -0
  53. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l5_aarch64_asm.S +145 -0
  54. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l7_aarch64_asm.S +177 -0
  55. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/ntt_aarch64_asm.S +653 -0
  56. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/pointwise_montgomery_aarch64_asm.S +84 -0
  57. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_caddq_aarch64_asm.S +53 -0
  58. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_chknorm_aarch64_asm.S +55 -0
  59. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_32_aarch64_asm.S +86 -0
  60. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_88_aarch64_asm.S +86 -0
  61. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_32_aarch64_asm.S +103 -0
  62. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_88_aarch64_asm.S +111 -0
  63. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_17_aarch64_asm.S +75 -0
  64. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_19_aarch64_asm.S +72 -0
  65. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_table.c +23 -11
  66. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_aarch64_asm.S +189 -0
  67. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta2_aarch64_asm.S +137 -0
  68. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta4_aarch64_asm.S +130 -0
  69. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta_table.c +520 -516
  70. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_table.c +34 -33
  71. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/api.h +202 -242
  72. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/meta.h +25 -17
  73. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/arith_native_x86_64.h +112 -28
  74. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.c +1 -1
  75. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.h +1 -1
  76. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/intt_avx2_asm.S +2311 -0
  77. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/ntt_avx2_asm.S +2383 -0
  78. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/nttunpack_avx2_asm.S +238 -0
  79. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l4_avx2_asm.S +139 -0
  80. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l5_avx2_asm.S +155 -0
  81. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l7_avx2_asm.S +187 -0
  82. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_avx2_asm.S +130 -0
  83. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_caddq_avx2_asm.S +190 -0
  84. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_32_avx2.c +6 -4
  85. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_88_avx2.c +6 -4
  86. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_32_avx2.c +9 -8
  87. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_88_avx2.c +10 -9
  88. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_17_avx2.c +8 -5
  89. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_19_avx2.c +8 -5
  90. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta2_avx2.c +6 -4
  91. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta4_avx2.c +6 -4
  92. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_table.c +130 -129
  93. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.c +109 -180
  94. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.h +169 -150
  95. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.c +56 -40
  96. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.h +149 -164
  97. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.c +52 -57
  98. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.h +132 -167
  99. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.c +57 -424
  100. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.h +167 -474
  101. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec_lazy.c +308 -0
  102. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec_lazy.h +653 -0
  103. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/reduce.h +22 -29
  104. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/rounding.h +37 -43
  105. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.c +511 -367
  106. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.h +456 -417
  107. data/lib/pq_crypto/version.rb +1 -1
  108. data/script/vendor_libs.rb +3 -3
  109. metadata +41 -35
  110. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S +0 -376
  111. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S +0 -204
  112. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S +0 -259
  113. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S +0 -1077
  114. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S +0 -987
  115. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.c +0 -488
  116. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.h +0 -16
  117. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/intt.S +0 -753
  118. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l4.S +0 -129
  119. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l5.S +0 -145
  120. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l7.S +0 -177
  121. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/ntt.S +0 -653
  122. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/pointwise_montgomery.S +0 -79
  123. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_caddq_asm.S +0 -53
  124. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_chknorm_asm.S +0 -55
  125. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_32_asm.S +0 -85
  126. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_88_asm.S +0 -85
  127. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_32_asm.S +0 -102
  128. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_88_asm.S +0 -110
  129. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_17_asm.S +0 -72
  130. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_19_asm.S +0 -69
  131. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_asm.S +0 -189
  132. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta2_asm.S +0 -135
  133. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta4_asm.S +0 -128
  134. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/intt.S +0 -2311
  135. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/ntt.S +0 -2383
  136. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/nttunpack.S +0 -239
  137. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise.S +0 -131
  138. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l4.S +0 -139
  139. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l5.S +0 -155
  140. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l7.S +0 -187
  141. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_caddq_avx2.c +0 -61
@@ -7,7 +7,7 @@
7
7
 
8
8
  /*yaml
9
9
  Name: keccak_f1600_x4_mve_asm
10
- Description: Armv8.1-M MVE implementation of 4-way parallel Keccak-f[1600] permutation using bit-interleaved state
10
+ Description: Armv8.1-M MVE implementation of batched (x4) Keccak-f[1600] permutation using bit-interleaved state
11
11
  Signature: void mld_keccak_f1600_x4_mve_asm(void *state, void *tmpstate, const uint32_t *rc)
12
12
  ABI:
13
13
  r0:
@@ -15,7 +15,7 @@
15
15
  size_bytes: 800
16
16
  permissions: read/write
17
17
  c_parameter: void *state
18
- description: Four bit-interleaved Keccak states (low halves followed by high halves)
18
+ description: Bit-interleaved state for 4 Keccak instances (even halves followed by odd halves)
19
19
  r1:
20
20
  type: buffer
21
21
  size_bytes: 800
@@ -29,10 +29,40 @@
29
29
  c_parameter: const uint32_t *rc
30
30
  description: Keccak round constants in bit-interleaved form (24 pairs of 32-bit words)
31
31
  Stack:
32
- bytes: 236
33
- description: register preservation (44) + SIMD registers (64) + temporary storage (128)
32
+ bytes: 228
33
+ description: register preservation (36) + SIMD registers (64) + temporary storage (128)
34
34
  */
35
35
 
36
+ // ---------------------------------------------------------------------------
37
+ // Bit-interleaving background
38
+ // ---------------------------------------------------------------------------
39
+ // Each 64-bit Keccak lane is stored as two 32-bit words:
40
+ // even half -- bits 0, 2, 4, ..., 62 of the lane
41
+ // odd half -- bits 1, 3, 5, ..., 63 of the lane
42
+ // This representation allows 64-bit lane rotations (used in the Keccak
43
+ // round function) to be implemented as pairs of 32-bit rotations.
44
+ //
45
+ // Batched (x4) processing:
46
+ // Four Keccak instances are processed as a batch. Their states are
47
+ // stored interleaved in a single 800-byte buffer: first the even
48
+ // halves of all 25 lanes (400 bytes), then the odd halves (400 bytes).
49
+ // Within each 16-byte row, the four u32 words correspond to
50
+ // instances 0..3 of the same lane, enabling SIMD-parallel operations
51
+ // across all four instances.
52
+ //
53
+ // State memory layout (25 lanes x 4 instances x 2 halves):
54
+ // S[i][l]_even/odd = even/odd half of lane l, instance i (u32)
55
+ // Each row is 16 bytes (one Q-register).
56
+ // Offset Contents
57
+ // 0 S[0][ 0]_even, S[1][ 0]_even, S[2][ 0]_even, S[3][ 0]_even
58
+ // 16 S[0][ 1]_even, S[1][ 1]_even, S[2][ 1]_even, S[3][ 1]_even
59
+ // ...
60
+ // 384 S[0][24]_even, S[1][24]_even, S[2][24]_even, S[3][24]_even
61
+ // 400 S[0][ 0]_odd, S[1][ 0]_odd, S[2][ 0]_odd, S[3][ 0]_odd
62
+ // 416 S[0][ 1]_odd, S[1][ 1]_odd, S[2][ 1]_odd, S[3][ 1]_odd
63
+ // ...
64
+ // 784 S[0][24]_odd, S[1][24]_odd, S[2][24]_odd, S[3][24]_odd
65
+
36
66
  #include "../../../../common.h"
37
67
  #if defined(MLD_FIPS202_ARMV81M_NEED_X4) && \
38
68
  !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED)
@@ -50,589 +80,635 @@
50
80
  .global MLD_ASM_NAMESPACE(keccak_f1600_x4_mve_asm)
51
81
  MLD_ASM_FN_SYMBOL(keccak_f1600_x4_mve_asm)
52
82
 
53
- push.w {r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, lr}
54
- vpush {d8, d9, d10, d11, d12, d13, d14, d15}
55
- sub sp, #0x80
56
- mov r6, r2
57
- mov.w lr, #0x18
58
- mov r2, r0
59
- mov r4, r1
60
- add.w r3, r2, #0x190
61
- vldrw.u32 q0, [r3]
62
- vldrw.u32 q1, [r2]
63
- vldrw.u32 q2, [r2, #32]
64
- wls lr, lr, keccak_f1600_x4_mve_asm_roundend @ imm = #0x8c0
83
+ .cfi_startproc
84
+ push.w {r4, r5, r6, r7, r8, r9, r10, r11, lr}
85
+ .cfi_adjust_cfa_offset 0x24
86
+ .cfi_rel_offset r4, 0x0
87
+ .cfi_rel_offset r5, 0x4
88
+ .cfi_rel_offset r6, 0x8
89
+ .cfi_rel_offset r7, 0xc
90
+ .cfi_rel_offset r8, 0x10
91
+ .cfi_rel_offset r9, 0x14
92
+ .cfi_rel_offset r10, 0x18
93
+ .cfi_rel_offset r11, 0x1c
94
+ .cfi_rel_offset lr, 0x20
95
+ vpush {d8, d9, d10, d11, d12, d13, d14, d15}
96
+ .cfi_adjust_cfa_offset 0x40
97
+ .cfi_rel_offset d8, 0x0
98
+ .cfi_rel_offset d9, 0x8
99
+ .cfi_rel_offset d10, 0x10
100
+ .cfi_rel_offset d11, 0x18
101
+ .cfi_rel_offset d12, 0x20
102
+ .cfi_rel_offset d13, 0x28
103
+ .cfi_rel_offset d14, 0x30
104
+ .cfi_rel_offset d15, 0x38
105
+ sub sp, #0x80
106
+ .cfi_adjust_cfa_offset 0x80
107
+ mov r6, r2
108
+ mov.w lr, #0x18
109
+ mov r2, r0
110
+ mov r4, r1
111
+ add.w r3, r2, #0x190
112
+ vldrw.u32 q0, [r3]
113
+ vldrw.u32 q1, [r2]
114
+ vldrw.u32 q2, [r2, #32]
115
+ wls lr, lr, Lkeccak_f1600_x4_mve_asm_roundend @ imm = #0x8c0
65
116
 
66
- keccak_f1600_x4_mve_asm_roundstart:
67
- vldrw.u32 q6, [r2, #112]
68
- veor q7, q6, q2
69
- vldrw.u32 q2, [r2, #80]
70
- veor q1, q2, q1
71
- add.w r5, r2, #0x190
72
- vldrw.u32 q5, [r5, #80]
73
- veor q4, q5, q0
74
- vldrw.u32 q0, [r2, #192]
75
- veor q3, q7, q0
76
- vldrw.u32 q0, [r2, #160]
77
- veor q1, q1, q0
78
- vldrw.u32 q0, [r5, #160]
79
- veor q0, q4, q0
80
- vldrw.u32 q6, [r2, #272]
81
- veor q2, q3, q6
82
- vldrw.u32 q7, [r2, #240]
83
- veor q5, q1, q7
84
- vldrw.u32 q4, [r5, #240]
85
- veor q4, q0, q4
86
- vldrw.u32 q6, [r2, #352]
87
- veor q3, q2, q6
88
- vldrw.u32 q0, [r2, #320]
89
- veor q2, q5, q0
90
- vldrw.u32 q1, [r5, #320]
91
- veor q5, q4, q1
92
- vldrw.u32 q4, [r5, #32]
93
- veor q0, q3, q5
94
- vldrw.u32 q1, [r5, #16]
95
- veor q6, q1, q0
96
- vstrw.32 q5, [sp]
97
- vshr.u32 q7, q6, #0x1f
98
- add.w r10, r4, #0x190
99
- vsli.32 q7, q6, #0x1
100
- vldrw.u32 q6, [r5, #112]
101
- veor q6, q4, q6
102
- vldrw.u32 q4, [r5, #192]
103
- veor q4, q6, q4
104
- vldrw.u32 q6, [r5, #272]
105
- veor q4, q4, q6
106
- vldrw.u32 q6, [r5, #352]
107
- veor q5, q4, q6
108
- vstrw.32 q7, [r4, #160]
109
- vshr.u32 q4, q5, #0x1f
110
- vsli.32 q4, q5, #0x1
111
- vldrw.u32 q6, [r2, #16]
112
- veor q7, q4, q2
113
- veor q1, q6, q7
114
- vldrw.u32 q6, [r5, #96]
115
- veor q6, q6, q0
116
- vstrw.32 q1, [r10, #160]
117
- vshr.u32 q1, q6, #0xa
118
- vsli.32 q1, q6, #0x16
119
- vldrw.u32 q6, [r2, #96]
120
- veor q4, q6, q7
121
- vstrw.32 q1, [r10, #16]
122
- vshr.u32 q6, q4, #0xa
123
- vsli.32 q6, q4, #0x16
124
- vldrw.u32 q1, [r5, #336]
125
- veor q4, q1, q0
126
- vldrw.u32 q1, [r2, #176]
127
- veor q1, q1, q7
128
- vstrw.32 q6, [r4, #16]
129
- vshr.u32 q6, q1, #0x1b
130
- vsli.32 q6, q1, #0x5
131
- vldrw.u32 q1, [r2, #256]
132
- veor q1, q1, q7
133
- vstrw.32 q6, [r4, #272]
134
- vshr.u32 q6, q1, #0xa
135
- vsli.32 q6, q1, #0x16
136
- vldrw.u32 q1, [r2, #336]
137
- veor q1, q1, q7
138
- vstrw.32 q6, [r10, #128]
139
- vshr.u32 q6, q1, #0x1f
140
- vsli.32 q6, q1, #0x1
141
- vldrw.u32 q7, [r5, #176]
142
- veor q7, q7, q0
143
- vstrw.32 q6, [r4, #384]
144
- vshr.u32 q1, q7, #0x1b
145
- vsli.32 q1, q7, #0x5
146
- vldrw.u32 q6, [r5, #256]
147
- veor q0, q6, q0
148
- vstrw.32 q1, [r10, #272]
149
- vshr.u32 q1, q4, #0x1f
150
- vldrw.u32 q7, [r5, #64]
151
- vsli.32 q1, q4, #0x1
152
- vldrw.u32 q4, [r5, #144]
153
- vshr.u32 q6, q0, #0x9
154
- vstrw.32 q1, [r10, #384]
155
- vsli.32 q6, q0, #0x17
156
- veor q7, q7, q4
157
- vldrw.u32 q1, [r5, #224]
158
- veor q4, q7, q1
159
- vldrw.u32 q7, [r5, #304]
160
- veor q1, q4, q7
161
- vldrw.u32 q0, [r5, #384]
162
- veor q7, q1, q0
163
- vstrw.32 q6, [r4, #128]
164
- vshr.u32 q1, q7, #0x1f
165
- vsli.32 q1, q7, #0x1
166
- vldrw.u32 q6, [r2, #144]
167
- veor q0, q1, q3
168
- vldrw.u32 q3, [r2, #64]
169
- veor q1, q3, q6
170
- vldrw.u32 q6, [r2, #224]
171
- veor q1, q1, q6
172
- vldrw.u32 q3, [r2, #304]
173
- veor q6, q1, q3
174
- vldrw.u32 q4, [r2, #384]
175
- veor q3, q6, q4
176
- vldrw.u32 q4, [r2, #48]
177
- veor q5, q3, q5
178
- vldrw.u32 q1, [r5, #48]
179
- veor q1, q1, q5
180
- vshr.u32 q6, q1, #0x12
181
- vsli.32 q6, q1, #0xe
182
- vldrw.u32 q1, [r2, #128]
183
- veor q1, q1, q0
184
- vstrw.32 q6, [r10, #80]
185
- vshr.u32 q6, q1, #0x5
186
- vsli.32 q6, q1, #0x1b
187
- vldrw.u32 q1, [r5, #128]
188
- veor q1, q1, q5
189
- vstrw.32 q6, [r10, #336]
190
- vshr.u32 q6, q1, #0x4
191
- vsli.32 q6, q1, #0x1c
192
- veor q1, q4, q0
193
- vstrw.32 q6, [r4, #336]
194
- vshr.u32 q4, q1, #0x12
195
- vsli.32 q4, q1, #0xe
196
- vldrw.u32 q6, [r2, #208]
197
- veor q6, q6, q0
198
- vstrw.32 q4, [r4, #80]
199
- vshr.u32 q1, q6, #0x14
200
- vsli.32 q1, q6, #0xc
201
- vldrw.u32 q4, [r2, #288]
202
- veor q4, q4, q0
203
- vldrw.u32 q6, [r2, #368]
204
- veor q0, q6, q0
205
- vshr.u32 q6, q0, #0x4
206
- vstrw.32 q1, [r10, #192]
207
- vsli.32 q6, q0, #0x1c
208
- vshr.u32 q0, q4, #0x16
209
- vldrw.u32 q1, [r5, #368]
210
- vsli.32 q0, q4, #0xa
211
- vstrw.32 q6, [r4, #304]
212
- veor q4, q1, q5
213
- vstrw.32 q0, [r10, #48]
214
- vshr.u32 q1, q4, #0x4
215
- vsli.32 q1, q4, #0x1c
216
- vldrw.u32 q6, [r5, #208]
217
- veor q6, q6, q5
218
- vldrw.u32 q0, [r5, #288]
219
- veor q5, q0, q5
220
- vstrw.32 q1, [r10, #304]
221
- vshr.u32 q0, q6, #0x13
222
- vsli.32 q0, q6, #0xd
223
- vldrw.u32 q1, [r5, #96]
224
- vshr.u32 q6, q5, #0x15
225
- vldrw.u32 q4, [r5, #16]
226
- vsli.32 q6, q5, #0xb
227
- vldrw.u32 q5, [r5, #176]
228
- veor q1, q4, q1
229
- vldrw.u32 q4, [r5, #256]
230
- veor q5, q1, q5
231
- vldrw.u32 q1, [r5, #336]
232
- veor q5, q5, q4
233
- vstrw.32 q0, [r4, #192]
234
- veor q0, q5, q1
235
- vstrw.32 q6, [r4, #48]
236
- vshr.u32 q5, q0, #0x1f
237
- vsli.32 q5, q0, #0x1
238
- vldrw.u32 q4, [r2, #16]
239
- veor q3, q5, q3
240
- vldrw.u32 q6, [r2, #96]
241
- veor q4, q4, q6
242
- vldrw.u32 q1, [r2, #176]
243
- veor q5, q4, q1
244
- vldrw.u32 q6, [r2, #256]
245
- veor q6, q5, q6
246
- vldrw.u32 q4, [r2, #336]
247
- veor q5, q6, q4
248
- vldrw.u32 q1, [r5]
249
- veor q7, q5, q7
250
- vldrw.u32 q4, [r2]
251
- veor q1, q1, q7
252
- veor q4, q4, q3
253
- vshr.u32 q6, q1, #0x20
254
- vsli.32 q6, q1, #0x0
255
- vldrw.u32 q1, [r2, #80]
256
- veor q1, q1, q3
257
- vstrw.32 q6, [r10]
258
- vshr.u32 q6, q4, #0x20
259
- vsli.32 q6, q4, #0x0
260
- vldrw.u32 q4, [r5, #80]
261
- veor q4, q4, q7
262
- vstrw.32 q6, [r4]
263
- vshr.u32 q6, q1, #0xe
264
- vsli.32 q6, q1, #0x12
265
- vldrw.u32 q1, [r2, #160]
266
- veor q1, q1, q3
267
- vstrw.32 q6, [r4, #256]
268
- vshr.u32 q6, q4, #0xe
269
- vsli.32 q6, q4, #0x12
270
- vldrw.u32 q4, [r2, #240]
271
- veor q4, q4, q3
272
- vstrw.32 q6, [r10, #256]
273
- vshr.u32 q6, q1, #0x1f
274
- vsli.32 q6, q1, #0x1
275
- vldrw.u32 q1, [r2, #320]
276
- veor q1, q1, q3
277
- vstrw.32 q6, [r10, #112]
278
- vshr.u32 q6, q4, #0xc
279
- vsli.32 q6, q4, #0x14
280
- vldrw.u32 q3, [r5, #240]
281
- veor q3, q3, q7
282
- vstrw.32 q6, [r10, #368]
283
- vshr.u32 q4, q3, #0xb
284
- vsli.32 q4, q3, #0x15
285
- vldrw.u32 q3, [r5, #160]
286
- veor q6, q3, q7
287
- vstrw.32 q4, [r4, #368]
288
- vshr.u32 q3, q6, #0x1e
289
- vsli.32 q3, q6, #0x2
290
- vldrw.u32 q6, [r5, #320]
291
- veor q7, q6, q7
292
- vldrw.u32 q4, [r2, #368]
293
- vshr.u32 q6, q1, #0x17
294
- vstrw.32 q3, [r4, #112]
295
- vsli.32 q6, q1, #0x9
296
- vshr.u32 q1, q7, #0x17
297
- vldrw.u32 q3, [r2, #48]
298
- vsli.32 q1, q7, #0x9
299
- vldrw.u32 q7, [r2, #128]
300
- veor q3, q3, q7
301
- vldrw.u32 q7, [r2, #208]
302
- veor q7, q3, q7
303
- vldrw.u32 q3, [r2, #288]
304
- veor q3, q7, q3
305
- vldrw.u32 q7, [r5, #128]
306
- veor q3, q3, q4
307
- vldrw.u32 q4, [r5, #48]
308
- veor q0, q3, q0
309
- veor q4, q4, q7
310
- vldrw.u32 q7, [r5, #208]
311
- veor q4, q4, q7
312
- vldrw.u32 q7, [r5, #288]
313
- veor q4, q4, q7
314
- vldrw.u32 q7, [r5, #368]
315
- veor q7, q4, q7
316
- vstrw.32 q6, [r4, #224]
317
- vshr.u32 q4, q7, #0x1f
318
- vstrw.32 q1, [r10, #224]
319
- vsli.32 q4, q7, #0x1
320
- veor q5, q4, q5
321
- vldrw.u32 q6, [r2, #192]
322
- veor q1, q6, q5
323
- vldrw.u32 q4, [r5, #112]
324
- veor q7, q2, q7
325
- vldrw.u32 q6, [r5, #32]
326
- vshr.u32 q2, q1, #0xb
327
- vsli.32 q2, q1, #0x15
328
- veor q1, q6, q0
329
- vstrw.32 q2, [r10, #32]
330
- vshr.u32 q6, q1, #0x1
331
- vsli.32 q6, q1, #0x1f
332
- vldrw.u32 q2, [r2, #112]
333
- veor q2, q2, q5
334
- vstrw.32 q6, [r10, #320]
335
- vshr.u32 q1, q2, #0x1d
336
- vsli.32 q1, q2, #0x3
337
- vldrw.u32 q6, [r2, #32]
338
- veor q4, q4, q0
339
- vstrw.32 q1, [r4, #176]
340
- veor q2, q6, q5
341
- vshr.u32 q6, q2, #0x1
342
- vldrw.u32 q1, [r5, #352]
343
- vsli.32 q6, q2, #0x1f
344
- veor q1, q1, q0
345
- vstrw.32 q6, [r4, #320]
346
- vshr.u32 q6, q1, #0x1
347
- vsli.32 q6, q1, #0x1f
348
- vldrw.u32 q2, [r5, #192]
349
- vshr.u32 q1, q4, #0x1d
350
- vstrw.32 q6, [r4, #144]
351
- vsli.32 q1, q4, #0x3
352
- veor q2, q2, q0
353
- vldrw.u32 q6, [r5, #272]
354
- veor q0, q6, q0
355
- vldrw.u32 q4, [r2, #352]
356
- veor q6, q4, q5
357
- vldrw.u32 q4, [r2, #272]
358
- veor q4, q4, q5
359
- vstrw.32 q1, [r10, #176]
360
- vshr.u32 q1, q2, #0xa
361
- vsli.32 q1, q2, #0x16
362
- vldrw.u32 q5, [sp]
363
- vshr.u32 q2, q0, #0x18
364
- vstrw.32 q1, [r4, #32]
365
- vsli.32 q2, q0, #0x8
366
- vshr.u32 q1, q6, #0x2
367
- vstrw.32 q2, [r4, #288]
368
- vsli.32 q1, q6, #0x1e
369
- vshr.u32 q6, q4, #0x19
370
- vstrw.32 q1, [r10, #144]
371
- vsli.32 q6, q4, #0x7
372
- vshr.u32 q0, q5, #0x1f
373
- vstrw.32 q6, [r10, #288]
374
- vsli.32 q0, q5, #0x1
375
- veor q5, q0, q3
376
- vldrw.u32 q6, [r2, #64]
377
- veor q3, q6, q5
378
- vldrw.u32 q1, [r5, #64]
379
- vshr.u32 q4, q3, #0x13
380
- vldrw.u32 q2, [r2, #384]
381
- vsli.32 q4, q3, #0xd
382
- vldrw.u32 q0, [r5, #224]
383
- veor q6, q1, q7
384
- vstrw.32 q4, [r10, #240]
385
- veor q2, q2, q5
386
- veor q3, q0, q7
387
- vldrw.u32 q0, [r2, #224]
388
- vshr.u32 q4, q6, #0x12
389
- vldrw.u32 q1, [r5, #384]
390
- vsli.32 q4, q6, #0xe
391
- vshr.u32 q6, q2, #0x19
392
- vstrw.32 q4, [r4, #240]
393
- vsli.32 q6, q2, #0x7
394
- vshr.u32 q2, q3, #0xc
395
- vstrw.32 q6, [r4, #64]
396
- vsli.32 q2, q3, #0x14
397
- veor q0, q0, q5
398
- vldrw.u32 q6, [r2, #144]
399
- veor q4, q1, q7
400
- veor q6, q6, q5
401
- vstrw.32 q2, [r4, #352]
402
- vshr.u32 q2, q4, #0x19
403
- vsli.32 q2, q4, #0x7
404
- vldrw.u32 q1, [r2, #304]
405
- veor q5, q1, q5
406
- vldrw.u32 q1, [r5, #144]
407
- veor q4, q1, q7
408
- vldrw.u32 q3, [r5, #304]
409
- veor q1, q3, q7
410
- vstrw.32 q2, [r10, #64]
411
- vshr.u32 q3, q0, #0xd
412
- vsli.32 q3, q0, #0x13
413
- vldrw.u32 q7, [r4, #80]
414
- vshr.u32 q0, q6, #0x16
415
- vstrw.32 q3, [r10, #352]
416
- vsli.32 q0, q6, #0xa
417
- vshr.u32 q2, q5, #0x1c
418
- vsli.32 q2, q5, #0x4
419
- vldrw.u32 q5, [r4, #112]
420
- vshr.u32 q3, q1, #0x1c
421
- vsli.32 q3, q1, #0x4
422
- vldrw.u32 q1, [r4, #128]
423
- vbic q6, q5, q0
424
- vstrw.32 q3, [r10, #208]
425
- vbic q3, q1, q5
426
- veor q3, q0, q3
427
- vstrw.32 q3, [r2, #96]
428
- vbic q3, q0, q7
429
- veor q0, q7, q6
430
- vldrw.u32 q6, [r4, #144]
431
- vbic q7, q7, q6
432
- vstrw.32 q0, [r2, #80]
433
- veor q3, q6, q3
434
- vstrw.32 q3, [r2, #144]
435
- veor q0, q1, q7
436
- vstrw.32 q0, [r2, #128]
437
- vbic q1, q6, q1
438
- vshr.u32 q6, q4, #0x16
439
- vldrw.u32 q3, [r10, #112]
440
- vsli.32 q6, q4, #0xa
441
- vldrw.u32 q4, [r10, #80]
442
- veor q1, q5, q1
443
- vldrw.u32 q0, [r10, #144]
444
- vbic q7, q4, q0
445
- vldrw.u32 q5, [r10, #128]
446
- veor q7, q5, q7
447
- vstrw.32 q1, [r2, #112]
448
- vbic q1, q0, q5
449
- vstrw.32 q7, [r5, #128]
450
- veor q7, q3, q1
451
- vstrw.32 q7, [r5, #112]
452
- vbic q7, q5, q3
453
- vbic q1, q3, q6
454
- vldrw.u32 q3, [r4, #176]
455
- veor q5, q4, q1
456
- vbic q4, q6, q4
457
- vldrw.u32 q1, [r4, #160]
458
- veor q0, q0, q4
459
- vldrw.u32 q4, [r4, #224]
460
- veor q7, q6, q7
461
- vstrw.32 q0, [r5, #144]
462
- vbic q0, q1, q4
463
- vstrw.32 q7, [r5, #96]
464
- veor q0, q2, q0
465
- vstrw.32 q0, [r2, #208]
466
- vbic q6, q3, q1
467
- vstrw.32 q5, [r5, #80]
468
- vbic q7, q4, q2
469
- vldrw.u32 q0, [r10, #160]
470
- veor q6, q4, q6
471
- vldrw.u32 q5, [r4, #192]
472
- vbic q4, q2, q5
473
- vldrw.u32 q2, [r10, #224]
474
- veor q4, q3, q4
475
- vstrw.32 q4, [r2, #176]
476
- vbic q4, q5, q3
477
- vstrw.32 q6, [r2, #224]
478
- veor q4, q1, q4
479
- vldrw.u32 q1, [r10, #208]
480
- veor q3, q5, q7
481
- vldrw.u32 q5, [r10, #192]
482
- vbic q6, q1, q5
483
- vldrw.u32 q7, [r10, #176]
484
- veor q6, q7, q6
485
- vstrw.32 q3, [r2, #192]
486
- vbic q3, q0, q2
487
- vstrw.32 q6, [r5, #176]
488
- veor q3, q1, q3
489
- vstrw.32 q3, [r5, #208]
490
- vbic q3, q5, q7
491
- vstrw.32 q4, [r2, #160]
492
- veor q3, q0, q3
493
- vstrw.32 q3, [r5, #160]
494
- vbic q6, q2, q1
495
- vldrw.u32 q1, [r4, #288]
496
- vbic q7, q7, q0
497
- vldrw.u32 q3, [r4, #272]
498
- veor q0, q5, q6
499
- vldrw.u32 q4, [r4, #304]
500
- veor q6, q2, q7
501
- vldrw.u32 q7, [r4, #256]
502
- vbic q5, q4, q1
503
- vstrw.32 q0, [r5, #192]
504
- veor q5, q3, q5
505
- vstrw.32 q6, [r5, #224]
506
- vbic q0, q3, q7
507
- vstrw.32 q5, [r2, #272]
508
- vbic q6, q1, q3
509
- veor q5, q7, q6
510
- vldrw.u32 q3, [r4, #240]
511
- veor q6, q3, q0
512
- vldrw.u32 q2, [r10, #288]
513
- vbic q0, q3, q4
514
- vstrw.32 q6, [r2, #240]
515
- vbic q7, q7, q3
516
- vstrw.32 q5, [r2, #256]
517
- veor q7, q4, q7
518
- vstrw.32 q7, [r2, #304]
519
- veor q7, q1, q0
520
- vstrw.32 q7, [r2, #288]
521
- vldrw.u32 q5, [r10, #304]
522
- vbic q7, q5, q2
523
- vldrw.u32 q3, [r10, #272]
524
- veor q1, q3, q7
525
- vldrw.u32 q7, [r4, #336]
526
- vbic q4, q2, q3
527
- vldrw.u32 q6, [r10, #256]
528
- vbic q3, q3, q6
529
- vldrw.u32 q0, [r10, #240]
530
- veor q3, q0, q3
531
- vstrw.32 q1, [r5, #272]
532
- vbic q1, q0, q5
533
- vstrw.32 q3, [r5, #240]
534
- veor q1, q2, q1
535
- vldrw.u32 q3, [r4, #384]
536
- vbic q2, q6, q0
537
- vldrw.u32 q0, [r4, #320]
538
- veor q2, q5, q2
539
- vldrw.u32 q5, [r4, #352]
540
- veor q4, q6, q4
541
- vstrw.32 q2, [r5, #304]
542
- vbic q2, q7, q0
543
- vstrw.32 q1, [r5, #288]
544
- veor q1, q3, q2
545
- vstrw.32 q1, [r2, #384]
546
- vbic q2, q5, q7
547
- vstrw.32 q4, [r5, #256]
548
- veor q4, q0, q2
549
- vstrw.32 q4, [r2, #320]
550
- vbic q2, q0, q3
551
- vldrw.u32 q4, [r4, #368]
552
- vbic q3, q3, q4
553
- vldrw.u32 q0, [r10, #320]
554
- veor q1, q5, q3
555
- vldrw.u32 q6, [r10, #336]
556
- vbic q5, q4, q5
557
- vstrw.32 q1, [r2, #352]
558
- veor q5, q7, q5
559
- vstrw.32 q5, [r2, #336]
560
- veor q3, q4, q2
561
- vstrw.32 q3, [r2, #368]
562
- vbic q7, q6, q0
563
- vldrw.u32 q5, [r10, #352]
564
- vbic q3, q5, q6
565
- vldrw.u32 q1, [r10, #368]
566
- vbic q4, q1, q5
567
- vldrw.u32 q2, [r4, #16]
568
- veor q6, q6, q4
569
- vldrw.u32 q4, [r10, #384]
570
- veor q3, q0, q3
571
- vstrw.32 q3, [r5, #320]
572
- veor q3, q4, q7
573
- vstrw.32 q3, [r5, #384]
574
- vbic q0, q0, q4
575
- vstrw.32 q6, [r5, #336]
576
- veor q3, q1, q0
577
- vstrw.32 q3, [r5, #368]
578
- vbic q7, q4, q1
579
- veor q5, q5, q7
580
- vldrw.u32 q6, [r4, #32]
581
- vbic q3, q6, q2
582
- vldrw.u32 q4, [r4, #48]
583
- vbic q0, q4, q6
584
- vldrw.u32 q1, [r4]
585
- veor q0, q2, q0
586
- vldrw.u32 q7, [r4, #64]
587
- veor q3, q1, q3
588
- vstrw.32 q5, [r5, #352]
589
- vbic q5, q1, q7
590
- vstrw.32 q0, [r2, #16]
591
- veor q0, q4, q5
592
- vstrw.32 q0, [r2, #48]
593
- vbic q5, q2, q1
594
- veor q2, q7, q5
595
- vldrw.u32 q0, [r10, #16]
596
- vbic q5, q7, q4
597
- vldrw.u32 q4, [r10]
598
- vbic q1, q0, q4
599
- vldrw.u32 q7, [r10, #64]
600
- veor q1, q7, q1
601
- vstrw.32 q2, [r2, #64]
602
- veor q2, q6, q5
603
- vbic q6, q4, q7
604
- vldrw.u32 q5, [r10, #48]
605
- veor q6, q5, q6
606
- ldrd r7, r8, [r6]
607
- vbic q7, q7, q5
608
- vstrw.32 q1, [r5, #64]
609
- vdup.32 q1, r7
610
- veor q1, q3, q1
611
- vldrw.u32 q3, [r10, #32]
612
- veor q7, q3, q7
613
- add.w r6, r6, #0x8
614
- vbic q5, q5, q3
615
- vstrw.32 q6, [r5, #48]
616
- vbic q6, q3, q0
617
- vstrw.32 q1, [r2]
618
- veor q5, q0, q5
619
- vstrw.32 q7, [r5, #32]
620
- veor q4, q4, q6
621
- vstrw.32 q5, [r5, #16]
622
- vdup.32 q6, r8
623
- vstrw.32 q2, [r2, #32]
624
- veor q0, q4, q6
625
- vstrw.32 q0, [r5]
117
+ Lkeccak_f1600_x4_mve_asm_roundstart:
118
+ vldrw.u32 q6, [r2, #112]
119
+ veor q7, q6, q2
120
+ vldrw.u32 q2, [r2, #80]
121
+ veor q1, q2, q1
122
+ add.w r5, r2, #0x190
123
+ vldrw.u32 q5, [r5, #80]
124
+ veor q4, q5, q0
125
+ vldrw.u32 q0, [r2, #192]
126
+ veor q3, q7, q0
127
+ vldrw.u32 q0, [r2, #160]
128
+ veor q1, q1, q0
129
+ vldrw.u32 q0, [r5, #160]
130
+ veor q0, q4, q0
131
+ vldrw.u32 q6, [r2, #272]
132
+ veor q2, q3, q6
133
+ vldrw.u32 q7, [r2, #240]
134
+ veor q5, q1, q7
135
+ vldrw.u32 q4, [r5, #240]
136
+ veor q4, q0, q4
137
+ vldrw.u32 q6, [r2, #352]
138
+ veor q3, q2, q6
139
+ vldrw.u32 q0, [r2, #320]
140
+ veor q2, q5, q0
141
+ vldrw.u32 q1, [r5, #320]
142
+ veor q5, q4, q1
143
+ vldrw.u32 q4, [r5, #32]
144
+ veor q0, q3, q5
145
+ vldrw.u32 q1, [r5, #16]
146
+ veor q6, q1, q0
147
+ vstrw.32 q5, [sp]
148
+ vshr.u32 q7, q6, #0x1f
149
+ add.w r10, r4, #0x190
150
+ vsli.32 q7, q6, #0x1
151
+ vldrw.u32 q6, [r5, #112]
152
+ veor q6, q4, q6
153
+ vldrw.u32 q4, [r5, #192]
154
+ veor q4, q6, q4
155
+ vldrw.u32 q6, [r5, #272]
156
+ veor q4, q4, q6
157
+ vldrw.u32 q6, [r5, #352]
158
+ veor q5, q4, q6
159
+ vstrw.32 q7, [r4, #160]
160
+ vshr.u32 q4, q5, #0x1f
161
+ vsli.32 q4, q5, #0x1
162
+ vldrw.u32 q6, [r2, #16]
163
+ veor q7, q4, q2
164
+ veor q1, q6, q7
165
+ vldrw.u32 q6, [r5, #96]
166
+ veor q6, q6, q0
167
+ vstrw.32 q1, [r10, #160]
168
+ vshr.u32 q1, q6, #0xa
169
+ vsli.32 q1, q6, #0x16
170
+ vldrw.u32 q6, [r2, #96]
171
+ veor q4, q6, q7
172
+ vstrw.32 q1, [r10, #16]
173
+ vshr.u32 q6, q4, #0xa
174
+ vsli.32 q6, q4, #0x16
175
+ vldrw.u32 q1, [r5, #336]
176
+ veor q4, q1, q0
177
+ vldrw.u32 q1, [r2, #176]
178
+ veor q1, q1, q7
179
+ vstrw.32 q6, [r4, #16]
180
+ vshr.u32 q6, q1, #0x1b
181
+ vsli.32 q6, q1, #0x5
182
+ vldrw.u32 q1, [r2, #256]
183
+ veor q1, q1, q7
184
+ vstrw.32 q6, [r4, #272]
185
+ vshr.u32 q6, q1, #0xa
186
+ vsli.32 q6, q1, #0x16
187
+ vldrw.u32 q1, [r2, #336]
188
+ veor q1, q1, q7
189
+ vstrw.32 q6, [r10, #128]
190
+ vshr.u32 q6, q1, #0x1f
191
+ vsli.32 q6, q1, #0x1
192
+ vldrw.u32 q7, [r5, #176]
193
+ veor q7, q7, q0
194
+ vstrw.32 q6, [r4, #384]
195
+ vshr.u32 q1, q7, #0x1b
196
+ vsli.32 q1, q7, #0x5
197
+ vldrw.u32 q6, [r5, #256]
198
+ veor q0, q6, q0
199
+ vstrw.32 q1, [r10, #272]
200
+ vshr.u32 q1, q4, #0x1f
201
+ vldrw.u32 q7, [r5, #64]
202
+ vsli.32 q1, q4, #0x1
203
+ vldrw.u32 q4, [r5, #144]
204
+ vshr.u32 q6, q0, #0x9
205
+ vstrw.32 q1, [r10, #384]
206
+ vsli.32 q6, q0, #0x17
207
+ veor q7, q7, q4
208
+ vldrw.u32 q1, [r5, #224]
209
+ veor q4, q7, q1
210
+ vldrw.u32 q7, [r5, #304]
211
+ veor q1, q4, q7
212
+ vldrw.u32 q0, [r5, #384]
213
+ veor q7, q1, q0
214
+ vstrw.32 q6, [r4, #128]
215
+ vshr.u32 q1, q7, #0x1f
216
+ vsli.32 q1, q7, #0x1
217
+ vldrw.u32 q6, [r2, #144]
218
+ veor q0, q1, q3
219
+ vldrw.u32 q3, [r2, #64]
220
+ veor q1, q3, q6
221
+ vldrw.u32 q6, [r2, #224]
222
+ veor q1, q1, q6
223
+ vldrw.u32 q3, [r2, #304]
224
+ veor q6, q1, q3
225
+ vldrw.u32 q4, [r2, #384]
226
+ veor q3, q6, q4
227
+ vldrw.u32 q4, [r2, #48]
228
+ veor q5, q3, q5
229
+ vldrw.u32 q1, [r5, #48]
230
+ veor q1, q1, q5
231
+ vshr.u32 q6, q1, #0x12
232
+ vsli.32 q6, q1, #0xe
233
+ vldrw.u32 q1, [r2, #128]
234
+ veor q1, q1, q0
235
+ vstrw.32 q6, [r10, #80]
236
+ vshr.u32 q6, q1, #0x5
237
+ vsli.32 q6, q1, #0x1b
238
+ vldrw.u32 q1, [r5, #128]
239
+ veor q1, q1, q5
240
+ vstrw.32 q6, [r10, #336]
241
+ vshr.u32 q6, q1, #0x4
242
+ vsli.32 q6, q1, #0x1c
243
+ veor q1, q4, q0
244
+ vstrw.32 q6, [r4, #336]
245
+ vshr.u32 q4, q1, #0x12
246
+ vsli.32 q4, q1, #0xe
247
+ vldrw.u32 q6, [r2, #208]
248
+ veor q6, q6, q0
249
+ vstrw.32 q4, [r4, #80]
250
+ vshr.u32 q1, q6, #0x14
251
+ vsli.32 q1, q6, #0xc
252
+ vldrw.u32 q4, [r2, #288]
253
+ veor q4, q4, q0
254
+ vldrw.u32 q6, [r2, #368]
255
+ veor q0, q6, q0
256
+ vshr.u32 q6, q0, #0x4
257
+ vstrw.32 q1, [r10, #192]
258
+ vsli.32 q6, q0, #0x1c
259
+ vshr.u32 q0, q4, #0x16
260
+ vldrw.u32 q1, [r5, #368]
261
+ vsli.32 q0, q4, #0xa
262
+ vstrw.32 q6, [r4, #304]
263
+ veor q4, q1, q5
264
+ vstrw.32 q0, [r10, #48]
265
+ vshr.u32 q1, q4, #0x4
266
+ vsli.32 q1, q4, #0x1c
267
+ vldrw.u32 q6, [r5, #208]
268
+ veor q6, q6, q5
269
+ vldrw.u32 q0, [r5, #288]
270
+ veor q5, q0, q5
271
+ vstrw.32 q1, [r10, #304]
272
+ vshr.u32 q0, q6, #0x13
273
+ vsli.32 q0, q6, #0xd
274
+ vldrw.u32 q1, [r5, #96]
275
+ vshr.u32 q6, q5, #0x15
276
+ vldrw.u32 q4, [r5, #16]
277
+ vsli.32 q6, q5, #0xb
278
+ vldrw.u32 q5, [r5, #176]
279
+ veor q1, q4, q1
280
+ vldrw.u32 q4, [r5, #256]
281
+ veor q5, q1, q5
282
+ vldrw.u32 q1, [r5, #336]
283
+ veor q5, q5, q4
284
+ vstrw.32 q0, [r4, #192]
285
+ veor q0, q5, q1
286
+ vstrw.32 q6, [r4, #48]
287
+ vshr.u32 q5, q0, #0x1f
288
+ vsli.32 q5, q0, #0x1
289
+ vldrw.u32 q4, [r2, #16]
290
+ veor q3, q5, q3
291
+ vldrw.u32 q6, [r2, #96]
292
+ veor q4, q4, q6
293
+ vldrw.u32 q1, [r2, #176]
294
+ veor q5, q4, q1
295
+ vldrw.u32 q6, [r2, #256]
296
+ veor q6, q5, q6
297
+ vldrw.u32 q4, [r2, #336]
298
+ veor q5, q6, q4
299
+ vldrw.u32 q1, [r5]
300
+ veor q7, q5, q7
301
+ vldrw.u32 q4, [r2]
302
+ veor q1, q1, q7
303
+ veor q4, q4, q3
304
+ vshr.u32 q6, q1, #0x20
305
+ vsli.32 q6, q1, #0x0
306
+ vldrw.u32 q1, [r2, #80]
307
+ veor q1, q1, q3
308
+ vstrw.32 q6, [r10]
309
+ vshr.u32 q6, q4, #0x20
310
+ vsli.32 q6, q4, #0x0
311
+ vldrw.u32 q4, [r5, #80]
312
+ veor q4, q4, q7
313
+ vstrw.32 q6, [r4]
314
+ vshr.u32 q6, q1, #0xe
315
+ vsli.32 q6, q1, #0x12
316
+ vldrw.u32 q1, [r2, #160]
317
+ veor q1, q1, q3
318
+ vstrw.32 q6, [r4, #256]
319
+ vshr.u32 q6, q4, #0xe
320
+ vsli.32 q6, q4, #0x12
321
+ vldrw.u32 q4, [r2, #240]
322
+ veor q4, q4, q3
323
+ vstrw.32 q6, [r10, #256]
324
+ vshr.u32 q6, q1, #0x1f
325
+ vsli.32 q6, q1, #0x1
326
+ vldrw.u32 q1, [r2, #320]
327
+ veor q1, q1, q3
328
+ vstrw.32 q6, [r10, #112]
329
+ vshr.u32 q6, q4, #0xc
330
+ vsli.32 q6, q4, #0x14
331
+ vldrw.u32 q3, [r5, #240]
332
+ veor q3, q3, q7
333
+ vstrw.32 q6, [r10, #368]
334
+ vshr.u32 q4, q3, #0xb
335
+ vsli.32 q4, q3, #0x15
336
+ vldrw.u32 q3, [r5, #160]
337
+ veor q6, q3, q7
338
+ vstrw.32 q4, [r4, #368]
339
+ vshr.u32 q3, q6, #0x1e
340
+ vsli.32 q3, q6, #0x2
341
+ vldrw.u32 q6, [r5, #320]
342
+ veor q7, q6, q7
343
+ vldrw.u32 q4, [r2, #368]
344
+ vshr.u32 q6, q1, #0x17
345
+ vstrw.32 q3, [r4, #112]
346
+ vsli.32 q6, q1, #0x9
347
+ vshr.u32 q1, q7, #0x17
348
+ vldrw.u32 q3, [r2, #48]
349
+ vsli.32 q1, q7, #0x9
350
+ vldrw.u32 q7, [r2, #128]
351
+ veor q3, q3, q7
352
+ vldrw.u32 q7, [r2, #208]
353
+ veor q7, q3, q7
354
+ vldrw.u32 q3, [r2, #288]
355
+ veor q3, q7, q3
356
+ vldrw.u32 q7, [r5, #128]
357
+ veor q3, q3, q4
358
+ vldrw.u32 q4, [r5, #48]
359
+ veor q0, q3, q0
360
+ veor q4, q4, q7
361
+ vldrw.u32 q7, [r5, #208]
362
+ veor q4, q4, q7
363
+ vldrw.u32 q7, [r5, #288]
364
+ veor q4, q4, q7
365
+ vldrw.u32 q7, [r5, #368]
366
+ veor q7, q4, q7
367
+ vstrw.32 q6, [r4, #224]
368
+ vshr.u32 q4, q7, #0x1f
369
+ vstrw.32 q1, [r10, #224]
370
+ vsli.32 q4, q7, #0x1
371
+ veor q5, q4, q5
372
+ vldrw.u32 q6, [r2, #192]
373
+ veor q1, q6, q5
374
+ vldrw.u32 q4, [r5, #112]
375
+ veor q7, q2, q7
376
+ vldrw.u32 q6, [r5, #32]
377
+ vshr.u32 q2, q1, #0xb
378
+ vsli.32 q2, q1, #0x15
379
+ veor q1, q6, q0
380
+ vstrw.32 q2, [r10, #32]
381
+ vshr.u32 q6, q1, #0x1
382
+ vsli.32 q6, q1, #0x1f
383
+ vldrw.u32 q2, [r2, #112]
384
+ veor q2, q2, q5
385
+ vstrw.32 q6, [r10, #320]
386
+ vshr.u32 q1, q2, #0x1d
387
+ vsli.32 q1, q2, #0x3
388
+ vldrw.u32 q6, [r2, #32]
389
+ veor q4, q4, q0
390
+ vstrw.32 q1, [r4, #176]
391
+ veor q2, q6, q5
392
+ vshr.u32 q6, q2, #0x1
393
+ vldrw.u32 q1, [r5, #352]
394
+ vsli.32 q6, q2, #0x1f
395
+ veor q1, q1, q0
396
+ vstrw.32 q6, [r4, #320]
397
+ vshr.u32 q6, q1, #0x1
398
+ vsli.32 q6, q1, #0x1f
399
+ vldrw.u32 q2, [r5, #192]
400
+ vshr.u32 q1, q4, #0x1d
401
+ vstrw.32 q6, [r4, #144]
402
+ vsli.32 q1, q4, #0x3
403
+ veor q2, q2, q0
404
+ vldrw.u32 q6, [r5, #272]
405
+ veor q0, q6, q0
406
+ vldrw.u32 q4, [r2, #352]
407
+ veor q6, q4, q5
408
+ vldrw.u32 q4, [r2, #272]
409
+ veor q4, q4, q5
410
+ vstrw.32 q1, [r10, #176]
411
+ vshr.u32 q1, q2, #0xa
412
+ vsli.32 q1, q2, #0x16
413
+ vldrw.u32 q5, [sp]
414
+ vshr.u32 q2, q0, #0x18
415
+ vstrw.32 q1, [r4, #32]
416
+ vsli.32 q2, q0, #0x8
417
+ vshr.u32 q1, q6, #0x2
418
+ vstrw.32 q2, [r4, #288]
419
+ vsli.32 q1, q6, #0x1e
420
+ vshr.u32 q6, q4, #0x19
421
+ vstrw.32 q1, [r10, #144]
422
+ vsli.32 q6, q4, #0x7
423
+ vshr.u32 q0, q5, #0x1f
424
+ vstrw.32 q6, [r10, #288]
425
+ vsli.32 q0, q5, #0x1
426
+ veor q5, q0, q3
427
+ vldrw.u32 q6, [r2, #64]
428
+ veor q3, q6, q5
429
+ vldrw.u32 q1, [r5, #64]
430
+ vshr.u32 q4, q3, #0x13
431
+ vldrw.u32 q2, [r2, #384]
432
+ vsli.32 q4, q3, #0xd
433
+ vldrw.u32 q0, [r5, #224]
434
+ veor q6, q1, q7
435
+ vstrw.32 q4, [r10, #240]
436
+ veor q2, q2, q5
437
+ veor q3, q0, q7
438
+ vldrw.u32 q0, [r2, #224]
439
+ vshr.u32 q4, q6, #0x12
440
+ vldrw.u32 q1, [r5, #384]
441
+ vsli.32 q4, q6, #0xe
442
+ vshr.u32 q6, q2, #0x19
443
+ vstrw.32 q4, [r4, #240]
444
+ vsli.32 q6, q2, #0x7
445
+ vshr.u32 q2, q3, #0xc
446
+ vstrw.32 q6, [r4, #64]
447
+ vsli.32 q2, q3, #0x14
448
+ veor q0, q0, q5
449
+ vldrw.u32 q6, [r2, #144]
450
+ veor q4, q1, q7
451
+ veor q6, q6, q5
452
+ vstrw.32 q2, [r4, #352]
453
+ vshr.u32 q2, q4, #0x19
454
+ vsli.32 q2, q4, #0x7
455
+ vldrw.u32 q1, [r2, #304]
456
+ veor q5, q1, q5
457
+ vldrw.u32 q1, [r5, #144]
458
+ veor q4, q1, q7
459
+ vldrw.u32 q3, [r5, #304]
460
+ veor q1, q3, q7
461
+ vstrw.32 q2, [r10, #64]
462
+ vshr.u32 q3, q0, #0xd
463
+ vsli.32 q3, q0, #0x13
464
+ vldrw.u32 q7, [r4, #80]
465
+ vshr.u32 q0, q6, #0x16
466
+ vstrw.32 q3, [r10, #352]
467
+ vsli.32 q0, q6, #0xa
468
+ vshr.u32 q2, q5, #0x1c
469
+ vsli.32 q2, q5, #0x4
470
+ vldrw.u32 q5, [r4, #112]
471
+ vshr.u32 q3, q1, #0x1c
472
+ vsli.32 q3, q1, #0x4
473
+ vldrw.u32 q1, [r4, #128]
474
+ vbic q6, q5, q0
475
+ vstrw.32 q3, [r10, #208]
476
+ vbic q3, q1, q5
477
+ veor q3, q0, q3
478
+ vstrw.32 q3, [r2, #96]
479
+ vbic q3, q0, q7
480
+ veor q0, q7, q6
481
+ vldrw.u32 q6, [r4, #144]
482
+ vbic q7, q7, q6
483
+ vstrw.32 q0, [r2, #80]
484
+ veor q3, q6, q3
485
+ vstrw.32 q3, [r2, #144]
486
+ veor q0, q1, q7
487
+ vstrw.32 q0, [r2, #128]
488
+ vbic q1, q6, q1
489
+ vshr.u32 q6, q4, #0x16
490
+ vldrw.u32 q3, [r10, #112]
491
+ vsli.32 q6, q4, #0xa
492
+ vldrw.u32 q4, [r10, #80]
493
+ veor q1, q5, q1
494
+ vldrw.u32 q0, [r10, #144]
495
+ vbic q7, q4, q0
496
+ vldrw.u32 q5, [r10, #128]
497
+ veor q7, q5, q7
498
+ vstrw.32 q1, [r2, #112]
499
+ vbic q1, q0, q5
500
+ vstrw.32 q7, [r5, #128]
501
+ veor q7, q3, q1
502
+ vstrw.32 q7, [r5, #112]
503
+ vbic q7, q5, q3
504
+ vbic q1, q3, q6
505
+ vldrw.u32 q3, [r4, #176]
506
+ veor q5, q4, q1
507
+ vbic q4, q6, q4
508
+ vldrw.u32 q1, [r4, #160]
509
+ veor q0, q0, q4
510
+ vldrw.u32 q4, [r4, #224]
511
+ veor q7, q6, q7
512
+ vstrw.32 q0, [r5, #144]
513
+ vbic q0, q1, q4
514
+ vstrw.32 q7, [r5, #96]
515
+ veor q0, q2, q0
516
+ vstrw.32 q0, [r2, #208]
517
+ vbic q6, q3, q1
518
+ vstrw.32 q5, [r5, #80]
519
+ vbic q7, q4, q2
520
+ vldrw.u32 q0, [r10, #160]
521
+ veor q6, q4, q6
522
+ vldrw.u32 q5, [r4, #192]
523
+ vbic q4, q2, q5
524
+ vldrw.u32 q2, [r10, #224]
525
+ veor q4, q3, q4
526
+ vstrw.32 q4, [r2, #176]
527
+ vbic q4, q5, q3
528
+ vstrw.32 q6, [r2, #224]
529
+ veor q4, q1, q4
530
+ vldrw.u32 q1, [r10, #208]
531
+ veor q3, q5, q7
532
+ vldrw.u32 q5, [r10, #192]
533
+ vbic q6, q1, q5
534
+ vldrw.u32 q7, [r10, #176]
535
+ veor q6, q7, q6
536
+ vstrw.32 q3, [r2, #192]
537
+ vbic q3, q0, q2
538
+ vstrw.32 q6, [r5, #176]
539
+ veor q3, q1, q3
540
+ vstrw.32 q3, [r5, #208]
541
+ vbic q3, q5, q7
542
+ vstrw.32 q4, [r2, #160]
543
+ veor q3, q0, q3
544
+ vstrw.32 q3, [r5, #160]
545
+ vbic q6, q2, q1
546
+ vldrw.u32 q1, [r4, #288]
547
+ vbic q7, q7, q0
548
+ vldrw.u32 q3, [r4, #272]
549
+ veor q0, q5, q6
550
+ vldrw.u32 q4, [r4, #304]
551
+ veor q6, q2, q7
552
+ vldrw.u32 q7, [r4, #256]
553
+ vbic q5, q4, q1
554
+ vstrw.32 q0, [r5, #192]
555
+ veor q5, q3, q5
556
+ vstrw.32 q6, [r5, #224]
557
+ vbic q0, q3, q7
558
+ vstrw.32 q5, [r2, #272]
559
+ vbic q6, q1, q3
560
+ veor q5, q7, q6
561
+ vldrw.u32 q3, [r4, #240]
562
+ veor q6, q3, q0
563
+ vldrw.u32 q2, [r10, #288]
564
+ vbic q0, q3, q4
565
+ vstrw.32 q6, [r2, #240]
566
+ vbic q7, q7, q3
567
+ vstrw.32 q5, [r2, #256]
568
+ veor q7, q4, q7
569
+ vstrw.32 q7, [r2, #304]
570
+ veor q7, q1, q0
571
+ vstrw.32 q7, [r2, #288]
572
+ vldrw.u32 q5, [r10, #304]
573
+ vbic q7, q5, q2
574
+ vldrw.u32 q3, [r10, #272]
575
+ veor q1, q3, q7
576
+ vldrw.u32 q7, [r4, #336]
577
+ vbic q4, q2, q3
578
+ vldrw.u32 q6, [r10, #256]
579
+ vbic q3, q3, q6
580
+ vldrw.u32 q0, [r10, #240]
581
+ veor q3, q0, q3
582
+ vstrw.32 q1, [r5, #272]
583
+ vbic q1, q0, q5
584
+ vstrw.32 q3, [r5, #240]
585
+ veor q1, q2, q1
586
+ vldrw.u32 q3, [r4, #384]
587
+ vbic q2, q6, q0
588
+ vldrw.u32 q0, [r4, #320]
589
+ veor q2, q5, q2
590
+ vldrw.u32 q5, [r4, #352]
591
+ veor q4, q6, q4
592
+ vstrw.32 q2, [r5, #304]
593
+ vbic q2, q7, q0
594
+ vstrw.32 q1, [r5, #288]
595
+ veor q1, q3, q2
596
+ vstrw.32 q1, [r2, #384]
597
+ vbic q2, q5, q7
598
+ vstrw.32 q4, [r5, #256]
599
+ veor q4, q0, q2
600
+ vstrw.32 q4, [r2, #320]
601
+ vbic q2, q0, q3
602
+ vldrw.u32 q4, [r4, #368]
603
+ vbic q3, q3, q4
604
+ vldrw.u32 q0, [r10, #320]
605
+ veor q1, q5, q3
606
+ vldrw.u32 q6, [r10, #336]
607
+ vbic q5, q4, q5
608
+ vstrw.32 q1, [r2, #352]
609
+ veor q5, q7, q5
610
+ vstrw.32 q5, [r2, #336]
611
+ veor q3, q4, q2
612
+ vstrw.32 q3, [r2, #368]
613
+ vbic q7, q6, q0
614
+ vldrw.u32 q5, [r10, #352]
615
+ vbic q3, q5, q6
616
+ vldrw.u32 q1, [r10, #368]
617
+ vbic q4, q1, q5
618
+ vldrw.u32 q2, [r4, #16]
619
+ veor q6, q6, q4
620
+ vldrw.u32 q4, [r10, #384]
621
+ veor q3, q0, q3
622
+ vstrw.32 q3, [r5, #320]
623
+ veor q3, q4, q7
624
+ vstrw.32 q3, [r5, #384]
625
+ vbic q0, q0, q4
626
+ vstrw.32 q6, [r5, #336]
627
+ veor q3, q1, q0
628
+ vstrw.32 q3, [r5, #368]
629
+ vbic q7, q4, q1
630
+ veor q5, q5, q7
631
+ vldrw.u32 q6, [r4, #32]
632
+ vbic q3, q6, q2
633
+ vldrw.u32 q4, [r4, #48]
634
+ vbic q0, q4, q6
635
+ vldrw.u32 q1, [r4]
636
+ veor q0, q2, q0
637
+ vldrw.u32 q7, [r4, #64]
638
+ veor q3, q1, q3
639
+ vstrw.32 q5, [r5, #352]
640
+ vbic q5, q1, q7
641
+ vstrw.32 q0, [r2, #16]
642
+ veor q0, q4, q5
643
+ vstrw.32 q0, [r2, #48]
644
+ vbic q5, q2, q1
645
+ veor q2, q7, q5
646
+ vldrw.u32 q0, [r10, #16]
647
+ vbic q5, q7, q4
648
+ vldrw.u32 q4, [r10]
649
+ vbic q1, q0, q4
650
+ vldrw.u32 q7, [r10, #64]
651
+ veor q1, q7, q1
652
+ vstrw.32 q2, [r2, #64]
653
+ veor q2, q6, q5
654
+ vbic q6, q4, q7
655
+ vldrw.u32 q5, [r10, #48]
656
+ veor q6, q5, q6
657
+ ldrd r7, r8, [r6]
658
+ vbic q7, q7, q5
659
+ vstrw.32 q1, [r5, #64]
660
+ vdup.32 q1, r7
661
+ veor q1, q3, q1
662
+ vldrw.u32 q3, [r10, #32]
663
+ veor q7, q3, q7
664
+ add.w r6, r6, #0x8
665
+ vbic q5, q5, q3
666
+ vstrw.32 q6, [r5, #48]
667
+ vbic q6, q3, q0
668
+ vstrw.32 q1, [r2]
669
+ veor q5, q0, q5
670
+ vstrw.32 q7, [r5, #32]
671
+ veor q4, q4, q6
672
+ vstrw.32 q5, [r5, #16]
673
+ vdup.32 q6, r8
674
+ vstrw.32 q2, [r2, #32]
675
+ veor q0, q4, q6
676
+ vstrw.32 q0, [r5]
626
677
 
627
- keccak_f1600_x4_mve_asm_roundend_pre:
628
- le lr, keccak_f1600_x4_mve_asm_roundstart @ imm = #-0x8c0
678
+ Lkeccak_f1600_x4_mve_asm_roundend_pre:
679
+ le lr, Lkeccak_f1600_x4_mve_asm_roundstart @ imm = #-0x8c0
629
680
 
630
- keccak_f1600_x4_mve_asm_roundend:
631
- add sp, #0x80
632
- vpop {d8, d9, d10, d11, d12, d13, d14, d15}
633
- pop.w {r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, pc}
681
+ Lkeccak_f1600_x4_mve_asm_roundend:
682
+ add sp, #0x80
683
+ .cfi_adjust_cfa_offset -0x80
684
+ vpop {d8, d9, d10, d11, d12, d13, d14, d15}
685
+ .cfi_restore d8
686
+ .cfi_restore d9
687
+ .cfi_restore d10
688
+ .cfi_restore d11
689
+ .cfi_restore d12
690
+ .cfi_restore d13
691
+ .cfi_restore d14
692
+ .cfi_restore d15
693
+ .cfi_adjust_cfa_offset -0x40
694
+ pop.w {r4, r5, r6, r7, r8, r9, r10, r11, pc}
695
+ .cfi_restore r4
696
+ .cfi_restore r5
697
+ .cfi_restore r6
698
+ .cfi_restore r7
699
+ .cfi_restore r8
700
+ .cfi_restore r9
701
+ .cfi_restore r10
702
+ .cfi_restore r11
703
+ .cfi_restore lr
704
+ .cfi_adjust_cfa_offset -0x24
705
+ .cfi_endproc
634
706
  nop
635
707
 
636
708
  MLD_ASM_FN_SIZE(keccak_f1600_x4_mve_asm)
637
709
 
638
710
  #endif /* MLD_FIPS202_ARMV81M_NEED_X4 && !MLD_CONFIG_MULTILEVEL_NO_SHARED */
711
+
712
+ #if defined(__ELF__)
713
+ .section .note.GNU-stack,"",%progbits
714
+ #endif