pq_crypto 0.4.2 → 0.5.0

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 (408) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/GET_STARTED.md +21 -16
  4. data/README.md +26 -0
  5. data/SECURITY.md +22 -16
  6. data/ext/pqcrypto/extconf.rb +148 -99
  7. data/ext/pqcrypto/mldsa_api.h +1 -118
  8. data/ext/pqcrypto/mlkem_api.h +1 -42
  9. data/ext/pqcrypto/pq_externalmu.c +88 -216
  10. data/ext/pqcrypto/pqcrypto_native_api.h +129 -0
  11. data/ext/pqcrypto/pqcrypto_ruby_secure.c +0 -3
  12. data/ext/pqcrypto/pqcrypto_secure.c +135 -117
  13. data/ext/pqcrypto/pqcrypto_secure.h +1 -42
  14. data/ext/pqcrypto/pqcrypto_version.h +1 -1
  15. data/ext/pqcrypto/randombytes.h +9 -0
  16. data/ext/pqcrypto/vendor/.vendored +10 -5
  17. data/ext/pqcrypto/vendor/mldsa-native/BUILDING.md +105 -0
  18. data/ext/pqcrypto/vendor/mldsa-native/LICENSE +286 -0
  19. data/ext/pqcrypto/vendor/mldsa-native/META.yml +24 -0
  20. data/ext/pqcrypto/vendor/mldsa-native/README.md +221 -0
  21. data/ext/pqcrypto/vendor/mldsa-native/SECURITY.md +8 -0
  22. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.c +721 -0
  23. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.h +975 -0
  24. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_asm.S +724 -0
  25. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_config.h +723 -0
  26. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/cbmc.h +166 -0
  27. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/common.h +321 -0
  28. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.c +21 -0
  29. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.h +385 -0
  30. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.c +73 -0
  31. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.h +130 -0
  32. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.c +277 -0
  33. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.h +244 -0
  34. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.c +182 -0
  35. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.h +117 -0
  36. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.c +438 -0
  37. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.h +105 -0
  38. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/auto.h +71 -0
  39. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/fips202_native_aarch64.h +62 -0
  40. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S +376 -0
  41. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S +204 -0
  42. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S +259 -0
  43. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S +1077 -0
  44. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S +987 -0
  45. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +41 -0
  46. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_scalar.h +26 -0
  47. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_v84a.h +35 -0
  48. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x2_v84a.h +37 -0
  49. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_scalar.h +27 -0
  50. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +36 -0
  51. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/api.h +69 -0
  52. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/README.md +10 -0
  53. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/mve.h +32 -0
  54. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m.h +20 -0
  55. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +638 -0
  56. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +136 -0
  57. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +52 -0
  58. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/auto.h +29 -0
  59. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.c +488 -0
  60. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.h +16 -0
  61. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/xkcp.h +31 -0
  62. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/meta.h +247 -0
  63. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/aarch64_zetas.c +231 -0
  64. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/arith_native_aarch64.h +150 -0
  65. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/intt.S +753 -0
  66. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l4.S +129 -0
  67. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l5.S +145 -0
  68. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l7.S +177 -0
  69. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/ntt.S +653 -0
  70. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/pointwise_montgomery.S +79 -0
  71. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_caddq_asm.S +53 -0
  72. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_chknorm_asm.S +55 -0
  73. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_32_asm.S +85 -0
  74. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_88_asm.S +85 -0
  75. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_32_asm.S +102 -0
  76. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_88_asm.S +110 -0
  77. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_17_asm.S +72 -0
  78. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_19_asm.S +69 -0
  79. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_table.c +40 -0
  80. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_asm.S +189 -0
  81. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta2_asm.S +135 -0
  82. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta4_asm.S +128 -0
  83. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta_table.c +543 -0
  84. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_table.c +62 -0
  85. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/api.h +649 -0
  86. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/meta.h +23 -0
  87. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/meta.h +315 -0
  88. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/arith_native_x86_64.h +124 -0
  89. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.c +157 -0
  90. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.h +27 -0
  91. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/intt.S +2311 -0
  92. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/ntt.S +2383 -0
  93. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/nttunpack.S +239 -0
  94. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise.S +131 -0
  95. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l4.S +139 -0
  96. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l5.S +155 -0
  97. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l7.S +187 -0
  98. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_caddq_avx2.c +61 -0
  99. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_chknorm_avx2.c +52 -0
  100. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_32_avx2.c +155 -0
  101. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_88_avx2.c +155 -0
  102. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_32_avx2.c +102 -0
  103. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_88_avx2.c +104 -0
  104. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_17_avx2.c +91 -0
  105. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_19_avx2.c +93 -0
  106. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_avx2.c +126 -0
  107. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta2_avx2.c +155 -0
  108. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta4_avx2.c +139 -0
  109. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_table.c +160 -0
  110. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.c +293 -0
  111. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.h +224 -0
  112. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/params.h +77 -0
  113. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.c +991 -0
  114. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.h +393 -0
  115. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.c +946 -0
  116. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.h +360 -0
  117. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.c +877 -0
  118. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.h +725 -0
  119. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/randombytes.h +26 -0
  120. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/reduce.h +139 -0
  121. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/rounding.h +249 -0
  122. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.c +1511 -0
  123. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.h +806 -0
  124. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/symmetric.h +68 -0
  125. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sys.h +268 -0
  126. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/zetas.inc +55 -0
  127. data/ext/pqcrypto/vendor/mlkem-native/BUILDING.md +104 -0
  128. data/ext/pqcrypto/vendor/mlkem-native/LICENSE +294 -0
  129. data/ext/pqcrypto/vendor/mlkem-native/META.yml +30 -0
  130. data/ext/pqcrypto/vendor/mlkem-native/README.md +223 -0
  131. data/ext/pqcrypto/vendor/mlkem-native/RELEASE.md +86 -0
  132. data/ext/pqcrypto/vendor/mlkem-native/SECURITY.md +8 -0
  133. data/ext/pqcrypto/vendor/mlkem-native/mlkem/README.md +23 -0
  134. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.c +660 -0
  135. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.h +538 -0
  136. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_asm.S +681 -0
  137. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_config.h +709 -0
  138. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/cbmc.h +174 -0
  139. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/common.h +274 -0
  140. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.c +717 -0
  141. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.h +688 -0
  142. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.c +64 -0
  143. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.h +128 -0
  144. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.c +251 -0
  145. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.h +158 -0
  146. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.c +208 -0
  147. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.h +80 -0
  148. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.c +463 -0
  149. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.h +98 -0
  150. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/auto.h +70 -0
  151. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/fips202_native_aarch64.h +69 -0
  152. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S +375 -0
  153. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S +203 -0
  154. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S +258 -0
  155. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S +1076 -0
  156. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S +986 -0
  157. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +46 -0
  158. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_scalar.h +25 -0
  159. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_v84a.h +34 -0
  160. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x2_v84a.h +35 -0
  161. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_scalar.h +26 -0
  162. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +35 -0
  163. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/api.h +117 -0
  164. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/README.md +10 -0
  165. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/mve.h +79 -0
  166. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/fips202_native_armv81m.h +35 -0
  167. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +667 -0
  168. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +40 -0
  169. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +51 -0
  170. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_extract_bytes_x4_mve.S +290 -0
  171. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_xor_bytes_x4_mve.S +314 -0
  172. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/auto.h +28 -0
  173. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h +33 -0
  174. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/fips202_native_x86_64.h +41 -0
  175. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2.S +451 -0
  176. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccakf1600_constants.c +51 -0
  177. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.c +622 -0
  178. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.h +156 -0
  179. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.c +446 -0
  180. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.h +326 -0
  181. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/README.md +16 -0
  182. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/meta.h +122 -0
  183. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/aarch64_zetas.c +174 -0
  184. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/arith_native_aarch64.h +177 -0
  185. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/intt.S +628 -0
  186. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/ntt.S +562 -0
  187. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_mulcache_compute_asm.S +127 -0
  188. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_reduce_asm.S +150 -0
  189. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_tobytes_asm.S +117 -0
  190. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_tomont_asm.S +98 -0
  191. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k2.S +261 -0
  192. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S +314 -0
  193. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k4.S +368 -0
  194. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_asm.S +226 -0
  195. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_table.c +542 -0
  196. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/api.h +637 -0
  197. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/meta.h +25 -0
  198. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/README.md +11 -0
  199. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/meta.h +128 -0
  200. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/arith_native_riscv64.h +45 -0
  201. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.c +81 -0
  202. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.h +145 -0
  203. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_izetas.inc +27 -0
  204. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_poly.c +805 -0
  205. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_zetas.inc +27 -0
  206. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_zetas_basemul.inc +39 -0
  207. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/README.md +4 -0
  208. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/meta.h +304 -0
  209. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/arith_native_x86_64.h +309 -0
  210. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.c +94 -0
  211. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.h +45 -0
  212. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.c +102 -0
  213. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.h +25 -0
  214. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/intt.S +719 -0
  215. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mulcache_compute.S +90 -0
  216. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/ntt.S +639 -0
  217. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/nttfrombytes.S +193 -0
  218. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/ntttobytes.S +181 -0
  219. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/nttunpack.S +174 -0
  220. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d10.S +382 -0
  221. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d11.S +448 -0
  222. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d4.S +163 -0
  223. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d5.S +220 -0
  224. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d10.S +228 -0
  225. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d11.S +277 -0
  226. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d4.S +180 -0
  227. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d5.S +192 -0
  228. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k2.S +502 -0
  229. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S +750 -0
  230. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k4.S +998 -0
  231. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/reduce.S +218 -0
  232. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_asm.S +103 -0
  233. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_table.c +544 -0
  234. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/tomont.S +155 -0
  235. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/params.h +76 -0
  236. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.c +572 -0
  237. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.h +317 -0
  238. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.c +502 -0
  239. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.h +668 -0
  240. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/randombytes.h +60 -0
  241. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.c +362 -0
  242. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.h +118 -0
  243. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/symmetric.h +70 -0
  244. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sys.h +260 -0
  245. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.c +20 -0
  246. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.h +464 -0
  247. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/zetas.inc +30 -0
  248. data/lib/pq_crypto/version.rb +1 -1
  249. data/lib/pq_crypto.rb +1 -1
  250. data/script/vendor_libs.rb +88 -159
  251. metadata +236 -160
  252. data/ext/pqcrypto/vendor/pqclean/common/aes.c +0 -639
  253. data/ext/pqcrypto/vendor/pqclean/common/aes.h +0 -64
  254. data/ext/pqcrypto/vendor/pqclean/common/compat.h +0 -73
  255. data/ext/pqcrypto/vendor/pqclean/common/crypto_declassify.h +0 -7
  256. data/ext/pqcrypto/vendor/pqclean/common/fips202.c +0 -928
  257. data/ext/pqcrypto/vendor/pqclean/common/fips202.h +0 -166
  258. data/ext/pqcrypto/vendor/pqclean/common/keccak2x/feat.S +0 -168
  259. data/ext/pqcrypto/vendor/pqclean/common/keccak2x/fips202x2.c +0 -684
  260. data/ext/pqcrypto/vendor/pqclean/common/keccak2x/fips202x2.h +0 -60
  261. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-times4-SIMD256.c +0 -1028
  262. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-times4-SnP.h +0 -50
  263. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-unrolling.macros +0 -198
  264. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/Makefile +0 -8
  265. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/Makefile.Microsoft_nmake +0 -8
  266. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/SIMD256-config.h +0 -3
  267. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/align.h +0 -34
  268. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/brg_endian.h +0 -142
  269. data/ext/pqcrypto/vendor/pqclean/common/nistseedexpander.c +0 -101
  270. data/ext/pqcrypto/vendor/pqclean/common/nistseedexpander.h +0 -39
  271. data/ext/pqcrypto/vendor/pqclean/common/randombytes.c +0 -355
  272. data/ext/pqcrypto/vendor/pqclean/common/randombytes.h +0 -27
  273. data/ext/pqcrypto/vendor/pqclean/common/sha2.c +0 -769
  274. data/ext/pqcrypto/vendor/pqclean/common/sha2.h +0 -173
  275. data/ext/pqcrypto/vendor/pqclean/common/sp800-185.c +0 -156
  276. data/ext/pqcrypto/vendor/pqclean/common/sp800-185.h +0 -27
  277. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/LICENSE +0 -5
  278. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/Makefile +0 -19
  279. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/Makefile.Microsoft_nmake +0 -23
  280. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/api.h +0 -18
  281. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/cbd.c +0 -83
  282. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/cbd.h +0 -11
  283. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/indcpa.c +0 -327
  284. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/indcpa.h +0 -22
  285. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/kem.c +0 -164
  286. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/kem.h +0 -23
  287. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/ntt.c +0 -146
  288. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/ntt.h +0 -14
  289. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/params.h +0 -36
  290. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/poly.c +0 -311
  291. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/poly.h +0 -37
  292. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/polyvec.c +0 -198
  293. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/polyvec.h +0 -26
  294. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/reduce.c +0 -41
  295. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/reduce.h +0 -13
  296. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/symmetric-shake.c +0 -71
  297. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/symmetric.h +0 -30
  298. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/verify.c +0 -67
  299. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/verify.h +0 -13
  300. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/LICENSE +0 -5
  301. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/Makefile +0 -19
  302. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/Makefile.Microsoft_nmake +0 -23
  303. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/api.h +0 -18
  304. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/cbd.c +0 -108
  305. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/cbd.h +0 -11
  306. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/indcpa.c +0 -327
  307. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/indcpa.h +0 -22
  308. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/kem.c +0 -164
  309. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/kem.h +0 -23
  310. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/ntt.c +0 -146
  311. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/ntt.h +0 -14
  312. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/params.h +0 -36
  313. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/poly.c +0 -299
  314. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/poly.h +0 -37
  315. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/polyvec.c +0 -188
  316. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/polyvec.h +0 -26
  317. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/reduce.c +0 -41
  318. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/reduce.h +0 -13
  319. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/symmetric-shake.c +0 -71
  320. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/symmetric.h +0 -30
  321. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/verify.c +0 -67
  322. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/verify.h +0 -13
  323. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/LICENSE +0 -5
  324. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/Makefile +0 -19
  325. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/Makefile.Microsoft_nmake +0 -23
  326. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/api.h +0 -18
  327. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/cbd.c +0 -83
  328. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/cbd.h +0 -11
  329. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/indcpa.c +0 -327
  330. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/indcpa.h +0 -22
  331. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/kem.c +0 -164
  332. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/kem.h +0 -23
  333. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/ntt.c +0 -146
  334. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/ntt.h +0 -14
  335. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/params.h +0 -36
  336. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/poly.c +0 -299
  337. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/poly.h +0 -37
  338. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/polyvec.c +0 -188
  339. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/polyvec.h +0 -26
  340. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/reduce.c +0 -41
  341. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/reduce.h +0 -13
  342. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/symmetric-shake.c +0 -71
  343. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/symmetric.h +0 -30
  344. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/verify.c +0 -67
  345. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/verify.h +0 -13
  346. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/LICENSE +0 -5
  347. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/Makefile +0 -19
  348. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/Makefile.Microsoft_nmake +0 -23
  349. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/api.h +0 -50
  350. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/ntt.c +0 -98
  351. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/ntt.h +0 -10
  352. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/packing.c +0 -261
  353. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/packing.h +0 -31
  354. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/params.h +0 -44
  355. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/poly.c +0 -848
  356. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/poly.h +0 -52
  357. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/polyvec.c +0 -415
  358. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/polyvec.h +0 -65
  359. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/reduce.c +0 -69
  360. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/reduce.h +0 -17
  361. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/rounding.c +0 -98
  362. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/rounding.h +0 -14
  363. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/sign.c +0 -407
  364. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/sign.h +0 -47
  365. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/symmetric-shake.c +0 -26
  366. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/symmetric.h +0 -34
  367. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/LICENSE +0 -5
  368. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/Makefile +0 -19
  369. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/Makefile.Microsoft_nmake +0 -23
  370. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/api.h +0 -50
  371. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/ntt.c +0 -98
  372. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/ntt.h +0 -10
  373. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/packing.c +0 -261
  374. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/packing.h +0 -31
  375. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/params.h +0 -44
  376. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/poly.c +0 -799
  377. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/poly.h +0 -52
  378. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/polyvec.c +0 -415
  379. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/polyvec.h +0 -65
  380. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/reduce.c +0 -69
  381. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/reduce.h +0 -17
  382. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/rounding.c +0 -92
  383. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/rounding.h +0 -14
  384. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/sign.c +0 -407
  385. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/sign.h +0 -47
  386. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/symmetric-shake.c +0 -26
  387. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/symmetric.h +0 -34
  388. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/LICENSE +0 -5
  389. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/Makefile +0 -19
  390. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/Makefile.Microsoft_nmake +0 -23
  391. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/api.h +0 -50
  392. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/ntt.c +0 -98
  393. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/ntt.h +0 -10
  394. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/packing.c +0 -261
  395. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/packing.h +0 -31
  396. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/params.h +0 -44
  397. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/poly.c +0 -823
  398. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/poly.h +0 -52
  399. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/polyvec.c +0 -415
  400. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/polyvec.h +0 -65
  401. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/reduce.c +0 -69
  402. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/reduce.h +0 -17
  403. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/rounding.c +0 -92
  404. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/rounding.h +0 -14
  405. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/sign.c +0 -407
  406. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/sign.h +0 -47
  407. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/symmetric-shake.c +0 -26
  408. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/symmetric.h +0 -34
@@ -0,0 +1,750 @@
1
+ /*
2
+ * Copyright (c) The mlkem-native project authors
3
+ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
4
+ */
5
+
6
+ #include "../../../common.h"
7
+ #if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \
8
+ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \
9
+ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 3)
10
+
11
+ /*
12
+ * WARNING: This file is auto-derived from the mlkem-native source file
13
+ * dev/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S using scripts/simpasm. Do not modify it directly.
14
+ */
15
+
16
+ #if defined(__ELF__)
17
+ .section .note.GNU-stack,"",@progbits
18
+ #endif
19
+
20
+ .text
21
+ .balign 4
22
+ .global MLK_ASM_NAMESPACE(polyvec_basemul_acc_montgomery_cached_asm_k3)
23
+ MLK_ASM_FN_SYMBOL(polyvec_basemul_acc_montgomery_cached_asm_k3)
24
+
25
+ .cfi_startproc
26
+ movl $0xd010d01, %eax # imm = 0xD010D01
27
+ vmovd %eax, %xmm0
28
+ vpbroadcastd %xmm0, %ymm0
29
+ movl $0xf301f301, %eax # imm = 0xF301F301
30
+ vmovd %eax, %xmm1
31
+ vpbroadcastd %xmm1, %ymm1
32
+ vmovdqa (%rsi), %ymm2
33
+ vmovdqa 0x20(%rsi), %ymm3
34
+ vmovdqa (%rdx), %ymm4
35
+ vmovdqa 0x20(%rdx), %ymm5
36
+ vmovdqa (%rcx), %ymm6
37
+ vpmullw %ymm2, %ymm1, %ymm13
38
+ vpmullw %ymm3, %ymm1, %ymm14
39
+ vpmullw %ymm13, %ymm4, %ymm7
40
+ vpmullw %ymm13, %ymm5, %ymm9
41
+ vpmullw %ymm14, %ymm6, %ymm8
42
+ vpmullw %ymm14, %ymm4, %ymm10
43
+ vpmulhw %ymm7, %ymm0, %ymm7
44
+ vpmulhw %ymm9, %ymm0, %ymm9
45
+ vpmulhw %ymm8, %ymm0, %ymm8
46
+ vpmulhw %ymm10, %ymm0, %ymm10
47
+ vpmulhw %ymm2, %ymm4, %ymm11
48
+ vpmulhw %ymm2, %ymm5, %ymm12
49
+ vpmulhw %ymm3, %ymm6, %ymm13
50
+ vpmulhw %ymm3, %ymm4, %ymm14
51
+ vpsubw %ymm7, %ymm11, %ymm7
52
+ vpsubw %ymm9, %ymm12, %ymm9
53
+ vpsubw %ymm8, %ymm13, %ymm8
54
+ vpsubw %ymm10, %ymm14, %ymm10
55
+ vpaddw %ymm7, %ymm8, %ymm7
56
+ vpaddw %ymm9, %ymm10, %ymm9
57
+ vmovdqa %ymm7, (%rdi)
58
+ vmovdqa %ymm9, 0x20(%rdi)
59
+ vmovdqa 0x40(%rsi), %ymm2
60
+ vmovdqa 0x60(%rsi), %ymm3
61
+ vmovdqa 0x40(%rdx), %ymm4
62
+ vmovdqa 0x60(%rdx), %ymm5
63
+ vmovdqa 0x20(%rcx), %ymm6
64
+ vpmullw %ymm2, %ymm1, %ymm13
65
+ vpmullw %ymm3, %ymm1, %ymm14
66
+ vpmullw %ymm13, %ymm4, %ymm7
67
+ vpmullw %ymm13, %ymm5, %ymm9
68
+ vpmullw %ymm14, %ymm6, %ymm8
69
+ vpmullw %ymm14, %ymm4, %ymm10
70
+ vpmulhw %ymm7, %ymm0, %ymm7
71
+ vpmulhw %ymm9, %ymm0, %ymm9
72
+ vpmulhw %ymm8, %ymm0, %ymm8
73
+ vpmulhw %ymm10, %ymm0, %ymm10
74
+ vpmulhw %ymm2, %ymm4, %ymm11
75
+ vpmulhw %ymm2, %ymm5, %ymm12
76
+ vpmulhw %ymm3, %ymm6, %ymm13
77
+ vpmulhw %ymm3, %ymm4, %ymm14
78
+ vpsubw %ymm7, %ymm11, %ymm7
79
+ vpsubw %ymm9, %ymm12, %ymm9
80
+ vpsubw %ymm13, %ymm8, %ymm8
81
+ vpsubw %ymm10, %ymm14, %ymm10
82
+ vpaddw %ymm7, %ymm8, %ymm7
83
+ vpaddw %ymm9, %ymm10, %ymm9
84
+ vmovdqa %ymm7, 0x40(%rdi)
85
+ vmovdqa %ymm9, 0x60(%rdi)
86
+ vmovdqa 0x80(%rsi), %ymm2
87
+ vmovdqa 0xa0(%rsi), %ymm3
88
+ vmovdqa 0x80(%rdx), %ymm4
89
+ vmovdqa 0xa0(%rdx), %ymm5
90
+ vmovdqa 0x40(%rcx), %ymm6
91
+ vpmullw %ymm2, %ymm1, %ymm13
92
+ vpmullw %ymm3, %ymm1, %ymm14
93
+ vpmullw %ymm13, %ymm4, %ymm7
94
+ vpmullw %ymm13, %ymm5, %ymm9
95
+ vpmullw %ymm14, %ymm6, %ymm8
96
+ vpmullw %ymm14, %ymm4, %ymm10
97
+ vpmulhw %ymm7, %ymm0, %ymm7
98
+ vpmulhw %ymm9, %ymm0, %ymm9
99
+ vpmulhw %ymm8, %ymm0, %ymm8
100
+ vpmulhw %ymm10, %ymm0, %ymm10
101
+ vpmulhw %ymm2, %ymm4, %ymm11
102
+ vpmulhw %ymm2, %ymm5, %ymm12
103
+ vpmulhw %ymm3, %ymm6, %ymm13
104
+ vpmulhw %ymm3, %ymm4, %ymm14
105
+ vpsubw %ymm7, %ymm11, %ymm7
106
+ vpsubw %ymm9, %ymm12, %ymm9
107
+ vpsubw %ymm8, %ymm13, %ymm8
108
+ vpsubw %ymm10, %ymm14, %ymm10
109
+ vpaddw %ymm7, %ymm8, %ymm7
110
+ vpaddw %ymm9, %ymm10, %ymm9
111
+ vmovdqa %ymm7, 0x80(%rdi)
112
+ vmovdqa %ymm9, 0xa0(%rdi)
113
+ vmovdqa 0xc0(%rsi), %ymm2
114
+ vmovdqa 0xe0(%rsi), %ymm3
115
+ vmovdqa 0xc0(%rdx), %ymm4
116
+ vmovdqa 0xe0(%rdx), %ymm5
117
+ vmovdqa 0x60(%rcx), %ymm6
118
+ vpmullw %ymm2, %ymm1, %ymm13
119
+ vpmullw %ymm3, %ymm1, %ymm14
120
+ vpmullw %ymm13, %ymm4, %ymm7
121
+ vpmullw %ymm13, %ymm5, %ymm9
122
+ vpmullw %ymm14, %ymm6, %ymm8
123
+ vpmullw %ymm14, %ymm4, %ymm10
124
+ vpmulhw %ymm7, %ymm0, %ymm7
125
+ vpmulhw %ymm9, %ymm0, %ymm9
126
+ vpmulhw %ymm8, %ymm0, %ymm8
127
+ vpmulhw %ymm10, %ymm0, %ymm10
128
+ vpmulhw %ymm2, %ymm4, %ymm11
129
+ vpmulhw %ymm2, %ymm5, %ymm12
130
+ vpmulhw %ymm3, %ymm6, %ymm13
131
+ vpmulhw %ymm3, %ymm4, %ymm14
132
+ vpsubw %ymm7, %ymm11, %ymm7
133
+ vpsubw %ymm9, %ymm12, %ymm9
134
+ vpsubw %ymm13, %ymm8, %ymm8
135
+ vpsubw %ymm10, %ymm14, %ymm10
136
+ vpaddw %ymm7, %ymm8, %ymm7
137
+ vpaddw %ymm9, %ymm10, %ymm9
138
+ vmovdqa %ymm7, 0xc0(%rdi)
139
+ vmovdqa %ymm9, 0xe0(%rdi)
140
+ vmovdqa 0x100(%rsi), %ymm2
141
+ vmovdqa 0x120(%rsi), %ymm3
142
+ vmovdqa 0x100(%rdx), %ymm4
143
+ vmovdqa 0x120(%rdx), %ymm5
144
+ vmovdqa 0x80(%rcx), %ymm6
145
+ vpmullw %ymm2, %ymm1, %ymm13
146
+ vpmullw %ymm3, %ymm1, %ymm14
147
+ vpmullw %ymm13, %ymm4, %ymm7
148
+ vpmullw %ymm13, %ymm5, %ymm9
149
+ vpmullw %ymm14, %ymm6, %ymm8
150
+ vpmullw %ymm14, %ymm4, %ymm10
151
+ vpmulhw %ymm7, %ymm0, %ymm7
152
+ vpmulhw %ymm9, %ymm0, %ymm9
153
+ vpmulhw %ymm8, %ymm0, %ymm8
154
+ vpmulhw %ymm10, %ymm0, %ymm10
155
+ vpmulhw %ymm2, %ymm4, %ymm11
156
+ vpmulhw %ymm2, %ymm5, %ymm12
157
+ vpmulhw %ymm3, %ymm6, %ymm13
158
+ vpmulhw %ymm3, %ymm4, %ymm14
159
+ vpsubw %ymm7, %ymm11, %ymm7
160
+ vpsubw %ymm9, %ymm12, %ymm9
161
+ vpsubw %ymm8, %ymm13, %ymm8
162
+ vpsubw %ymm10, %ymm14, %ymm10
163
+ vpaddw %ymm7, %ymm8, %ymm7
164
+ vpaddw %ymm9, %ymm10, %ymm9
165
+ vmovdqa %ymm7, 0x100(%rdi)
166
+ vmovdqa %ymm9, 0x120(%rdi)
167
+ vmovdqa 0x140(%rsi), %ymm2
168
+ vmovdqa 0x160(%rsi), %ymm3
169
+ vmovdqa 0x140(%rdx), %ymm4
170
+ vmovdqa 0x160(%rdx), %ymm5
171
+ vmovdqa 0xa0(%rcx), %ymm6
172
+ vpmullw %ymm2, %ymm1, %ymm13
173
+ vpmullw %ymm3, %ymm1, %ymm14
174
+ vpmullw %ymm13, %ymm4, %ymm7
175
+ vpmullw %ymm13, %ymm5, %ymm9
176
+ vpmullw %ymm14, %ymm6, %ymm8
177
+ vpmullw %ymm14, %ymm4, %ymm10
178
+ vpmulhw %ymm7, %ymm0, %ymm7
179
+ vpmulhw %ymm9, %ymm0, %ymm9
180
+ vpmulhw %ymm8, %ymm0, %ymm8
181
+ vpmulhw %ymm10, %ymm0, %ymm10
182
+ vpmulhw %ymm2, %ymm4, %ymm11
183
+ vpmulhw %ymm2, %ymm5, %ymm12
184
+ vpmulhw %ymm3, %ymm6, %ymm13
185
+ vpmulhw %ymm3, %ymm4, %ymm14
186
+ vpsubw %ymm7, %ymm11, %ymm7
187
+ vpsubw %ymm9, %ymm12, %ymm9
188
+ vpsubw %ymm13, %ymm8, %ymm8
189
+ vpsubw %ymm10, %ymm14, %ymm10
190
+ vpaddw %ymm7, %ymm8, %ymm7
191
+ vpaddw %ymm9, %ymm10, %ymm9
192
+ vmovdqa %ymm7, 0x140(%rdi)
193
+ vmovdqa %ymm9, 0x160(%rdi)
194
+ vmovdqa 0x180(%rsi), %ymm2
195
+ vmovdqa 0x1a0(%rsi), %ymm3
196
+ vmovdqa 0x180(%rdx), %ymm4
197
+ vmovdqa 0x1a0(%rdx), %ymm5
198
+ vmovdqa 0xc0(%rcx), %ymm6
199
+ vpmullw %ymm2, %ymm1, %ymm13
200
+ vpmullw %ymm3, %ymm1, %ymm14
201
+ vpmullw %ymm13, %ymm4, %ymm7
202
+ vpmullw %ymm13, %ymm5, %ymm9
203
+ vpmullw %ymm14, %ymm6, %ymm8
204
+ vpmullw %ymm14, %ymm4, %ymm10
205
+ vpmulhw %ymm7, %ymm0, %ymm7
206
+ vpmulhw %ymm9, %ymm0, %ymm9
207
+ vpmulhw %ymm8, %ymm0, %ymm8
208
+ vpmulhw %ymm10, %ymm0, %ymm10
209
+ vpmulhw %ymm2, %ymm4, %ymm11
210
+ vpmulhw %ymm2, %ymm5, %ymm12
211
+ vpmulhw %ymm3, %ymm6, %ymm13
212
+ vpmulhw %ymm3, %ymm4, %ymm14
213
+ vpsubw %ymm7, %ymm11, %ymm7
214
+ vpsubw %ymm9, %ymm12, %ymm9
215
+ vpsubw %ymm8, %ymm13, %ymm8
216
+ vpsubw %ymm10, %ymm14, %ymm10
217
+ vpaddw %ymm7, %ymm8, %ymm7
218
+ vpaddw %ymm9, %ymm10, %ymm9
219
+ vmovdqa %ymm7, 0x180(%rdi)
220
+ vmovdqa %ymm9, 0x1a0(%rdi)
221
+ vmovdqa 0x1c0(%rsi), %ymm2
222
+ vmovdqa 0x1e0(%rsi), %ymm3
223
+ vmovdqa 0x1c0(%rdx), %ymm4
224
+ vmovdqa 0x1e0(%rdx), %ymm5
225
+ vmovdqa 0xe0(%rcx), %ymm6
226
+ vpmullw %ymm2, %ymm1, %ymm13
227
+ vpmullw %ymm3, %ymm1, %ymm14
228
+ vpmullw %ymm13, %ymm4, %ymm7
229
+ vpmullw %ymm13, %ymm5, %ymm9
230
+ vpmullw %ymm14, %ymm6, %ymm8
231
+ vpmullw %ymm14, %ymm4, %ymm10
232
+ vpmulhw %ymm7, %ymm0, %ymm7
233
+ vpmulhw %ymm9, %ymm0, %ymm9
234
+ vpmulhw %ymm8, %ymm0, %ymm8
235
+ vpmulhw %ymm10, %ymm0, %ymm10
236
+ vpmulhw %ymm2, %ymm4, %ymm11
237
+ vpmulhw %ymm2, %ymm5, %ymm12
238
+ vpmulhw %ymm3, %ymm6, %ymm13
239
+ vpmulhw %ymm3, %ymm4, %ymm14
240
+ vpsubw %ymm7, %ymm11, %ymm7
241
+ vpsubw %ymm9, %ymm12, %ymm9
242
+ vpsubw %ymm13, %ymm8, %ymm8
243
+ vpsubw %ymm10, %ymm14, %ymm10
244
+ vpaddw %ymm7, %ymm8, %ymm7
245
+ vpaddw %ymm9, %ymm10, %ymm9
246
+ vmovdqa %ymm7, 0x1c0(%rdi)
247
+ vmovdqa %ymm9, 0x1e0(%rdi)
248
+ vmovdqa 0x200(%rsi), %ymm2
249
+ vmovdqa 0x220(%rsi), %ymm3
250
+ vmovdqa 0x200(%rdx), %ymm4
251
+ vmovdqa 0x220(%rdx), %ymm5
252
+ vmovdqa 0x100(%rcx), %ymm6
253
+ vpmullw %ymm2, %ymm1, %ymm13
254
+ vpmullw %ymm3, %ymm1, %ymm14
255
+ vpmullw %ymm13, %ymm4, %ymm7
256
+ vpmullw %ymm13, %ymm5, %ymm9
257
+ vpmullw %ymm14, %ymm6, %ymm8
258
+ vpmullw %ymm14, %ymm4, %ymm10
259
+ vpmulhw %ymm7, %ymm0, %ymm7
260
+ vpmulhw %ymm9, %ymm0, %ymm9
261
+ vpmulhw %ymm8, %ymm0, %ymm8
262
+ vpmulhw %ymm10, %ymm0, %ymm10
263
+ vpmulhw %ymm2, %ymm4, %ymm11
264
+ vpmulhw %ymm2, %ymm5, %ymm12
265
+ vpmulhw %ymm3, %ymm6, %ymm13
266
+ vpmulhw %ymm3, %ymm4, %ymm14
267
+ vpsubw %ymm7, %ymm11, %ymm7
268
+ vpsubw %ymm9, %ymm12, %ymm9
269
+ vpsubw %ymm8, %ymm13, %ymm8
270
+ vpsubw %ymm10, %ymm14, %ymm10
271
+ vpaddw %ymm7, %ymm8, %ymm7
272
+ vpaddw %ymm9, %ymm10, %ymm9
273
+ vmovdqa (%rdi), %ymm8
274
+ vmovdqa 0x20(%rdi), %ymm10
275
+ vpaddw %ymm7, %ymm8, %ymm7
276
+ vpaddw %ymm9, %ymm10, %ymm9
277
+ vmovdqa %ymm7, (%rdi)
278
+ vmovdqa %ymm9, 0x20(%rdi)
279
+ vmovdqa 0x240(%rsi), %ymm2
280
+ vmovdqa 0x260(%rsi), %ymm3
281
+ vmovdqa 0x240(%rdx), %ymm4
282
+ vmovdqa 0x260(%rdx), %ymm5
283
+ vmovdqa 0x120(%rcx), %ymm6
284
+ vpmullw %ymm2, %ymm1, %ymm13
285
+ vpmullw %ymm3, %ymm1, %ymm14
286
+ vpmullw %ymm13, %ymm4, %ymm7
287
+ vpmullw %ymm13, %ymm5, %ymm9
288
+ vpmullw %ymm14, %ymm6, %ymm8
289
+ vpmullw %ymm14, %ymm4, %ymm10
290
+ vpmulhw %ymm7, %ymm0, %ymm7
291
+ vpmulhw %ymm9, %ymm0, %ymm9
292
+ vpmulhw %ymm8, %ymm0, %ymm8
293
+ vpmulhw %ymm10, %ymm0, %ymm10
294
+ vpmulhw %ymm2, %ymm4, %ymm11
295
+ vpmulhw %ymm2, %ymm5, %ymm12
296
+ vpmulhw %ymm3, %ymm6, %ymm13
297
+ vpmulhw %ymm3, %ymm4, %ymm14
298
+ vpsubw %ymm7, %ymm11, %ymm7
299
+ vpsubw %ymm9, %ymm12, %ymm9
300
+ vpsubw %ymm13, %ymm8, %ymm8
301
+ vpsubw %ymm10, %ymm14, %ymm10
302
+ vpaddw %ymm7, %ymm8, %ymm7
303
+ vpaddw %ymm9, %ymm10, %ymm9
304
+ vmovdqa 0x40(%rdi), %ymm8
305
+ vmovdqa 0x60(%rdi), %ymm10
306
+ vpaddw %ymm7, %ymm8, %ymm7
307
+ vpaddw %ymm9, %ymm10, %ymm9
308
+ vmovdqa %ymm7, 0x40(%rdi)
309
+ vmovdqa %ymm9, 0x60(%rdi)
310
+ vmovdqa 0x280(%rsi), %ymm2
311
+ vmovdqa 0x2a0(%rsi), %ymm3
312
+ vmovdqa 0x280(%rdx), %ymm4
313
+ vmovdqa 0x2a0(%rdx), %ymm5
314
+ vmovdqa 0x140(%rcx), %ymm6
315
+ vpmullw %ymm2, %ymm1, %ymm13
316
+ vpmullw %ymm3, %ymm1, %ymm14
317
+ vpmullw %ymm13, %ymm4, %ymm7
318
+ vpmullw %ymm13, %ymm5, %ymm9
319
+ vpmullw %ymm14, %ymm6, %ymm8
320
+ vpmullw %ymm14, %ymm4, %ymm10
321
+ vpmulhw %ymm7, %ymm0, %ymm7
322
+ vpmulhw %ymm9, %ymm0, %ymm9
323
+ vpmulhw %ymm8, %ymm0, %ymm8
324
+ vpmulhw %ymm10, %ymm0, %ymm10
325
+ vpmulhw %ymm2, %ymm4, %ymm11
326
+ vpmulhw %ymm2, %ymm5, %ymm12
327
+ vpmulhw %ymm3, %ymm6, %ymm13
328
+ vpmulhw %ymm3, %ymm4, %ymm14
329
+ vpsubw %ymm7, %ymm11, %ymm7
330
+ vpsubw %ymm9, %ymm12, %ymm9
331
+ vpsubw %ymm8, %ymm13, %ymm8
332
+ vpsubw %ymm10, %ymm14, %ymm10
333
+ vpaddw %ymm7, %ymm8, %ymm7
334
+ vpaddw %ymm9, %ymm10, %ymm9
335
+ vmovdqa 0x80(%rdi), %ymm8
336
+ vmovdqa 0xa0(%rdi), %ymm10
337
+ vpaddw %ymm7, %ymm8, %ymm7
338
+ vpaddw %ymm9, %ymm10, %ymm9
339
+ vmovdqa %ymm7, 0x80(%rdi)
340
+ vmovdqa %ymm9, 0xa0(%rdi)
341
+ vmovdqa 0x2c0(%rsi), %ymm2
342
+ vmovdqa 0x2e0(%rsi), %ymm3
343
+ vmovdqa 0x2c0(%rdx), %ymm4
344
+ vmovdqa 0x2e0(%rdx), %ymm5
345
+ vmovdqa 0x160(%rcx), %ymm6
346
+ vpmullw %ymm2, %ymm1, %ymm13
347
+ vpmullw %ymm3, %ymm1, %ymm14
348
+ vpmullw %ymm13, %ymm4, %ymm7
349
+ vpmullw %ymm13, %ymm5, %ymm9
350
+ vpmullw %ymm14, %ymm6, %ymm8
351
+ vpmullw %ymm14, %ymm4, %ymm10
352
+ vpmulhw %ymm7, %ymm0, %ymm7
353
+ vpmulhw %ymm9, %ymm0, %ymm9
354
+ vpmulhw %ymm8, %ymm0, %ymm8
355
+ vpmulhw %ymm10, %ymm0, %ymm10
356
+ vpmulhw %ymm2, %ymm4, %ymm11
357
+ vpmulhw %ymm2, %ymm5, %ymm12
358
+ vpmulhw %ymm3, %ymm6, %ymm13
359
+ vpmulhw %ymm3, %ymm4, %ymm14
360
+ vpsubw %ymm7, %ymm11, %ymm7
361
+ vpsubw %ymm9, %ymm12, %ymm9
362
+ vpsubw %ymm13, %ymm8, %ymm8
363
+ vpsubw %ymm10, %ymm14, %ymm10
364
+ vpaddw %ymm7, %ymm8, %ymm7
365
+ vpaddw %ymm9, %ymm10, %ymm9
366
+ vmovdqa 0xc0(%rdi), %ymm8
367
+ vmovdqa 0xe0(%rdi), %ymm10
368
+ vpaddw %ymm7, %ymm8, %ymm7
369
+ vpaddw %ymm9, %ymm10, %ymm9
370
+ vmovdqa %ymm7, 0xc0(%rdi)
371
+ vmovdqa %ymm9, 0xe0(%rdi)
372
+ vmovdqa 0x300(%rsi), %ymm2
373
+ vmovdqa 0x320(%rsi), %ymm3
374
+ vmovdqa 0x300(%rdx), %ymm4
375
+ vmovdqa 0x320(%rdx), %ymm5
376
+ vmovdqa 0x180(%rcx), %ymm6
377
+ vpmullw %ymm2, %ymm1, %ymm13
378
+ vpmullw %ymm3, %ymm1, %ymm14
379
+ vpmullw %ymm13, %ymm4, %ymm7
380
+ vpmullw %ymm13, %ymm5, %ymm9
381
+ vpmullw %ymm14, %ymm6, %ymm8
382
+ vpmullw %ymm14, %ymm4, %ymm10
383
+ vpmulhw %ymm7, %ymm0, %ymm7
384
+ vpmulhw %ymm9, %ymm0, %ymm9
385
+ vpmulhw %ymm8, %ymm0, %ymm8
386
+ vpmulhw %ymm10, %ymm0, %ymm10
387
+ vpmulhw %ymm2, %ymm4, %ymm11
388
+ vpmulhw %ymm2, %ymm5, %ymm12
389
+ vpmulhw %ymm3, %ymm6, %ymm13
390
+ vpmulhw %ymm3, %ymm4, %ymm14
391
+ vpsubw %ymm7, %ymm11, %ymm7
392
+ vpsubw %ymm9, %ymm12, %ymm9
393
+ vpsubw %ymm8, %ymm13, %ymm8
394
+ vpsubw %ymm10, %ymm14, %ymm10
395
+ vpaddw %ymm7, %ymm8, %ymm7
396
+ vpaddw %ymm9, %ymm10, %ymm9
397
+ vmovdqa 0x100(%rdi), %ymm8
398
+ vmovdqa 0x120(%rdi), %ymm10
399
+ vpaddw %ymm7, %ymm8, %ymm7
400
+ vpaddw %ymm9, %ymm10, %ymm9
401
+ vmovdqa %ymm7, 0x100(%rdi)
402
+ vmovdqa %ymm9, 0x120(%rdi)
403
+ vmovdqa 0x340(%rsi), %ymm2
404
+ vmovdqa 0x360(%rsi), %ymm3
405
+ vmovdqa 0x340(%rdx), %ymm4
406
+ vmovdqa 0x360(%rdx), %ymm5
407
+ vmovdqa 0x1a0(%rcx), %ymm6
408
+ vpmullw %ymm2, %ymm1, %ymm13
409
+ vpmullw %ymm3, %ymm1, %ymm14
410
+ vpmullw %ymm13, %ymm4, %ymm7
411
+ vpmullw %ymm13, %ymm5, %ymm9
412
+ vpmullw %ymm14, %ymm6, %ymm8
413
+ vpmullw %ymm14, %ymm4, %ymm10
414
+ vpmulhw %ymm7, %ymm0, %ymm7
415
+ vpmulhw %ymm9, %ymm0, %ymm9
416
+ vpmulhw %ymm8, %ymm0, %ymm8
417
+ vpmulhw %ymm10, %ymm0, %ymm10
418
+ vpmulhw %ymm2, %ymm4, %ymm11
419
+ vpmulhw %ymm2, %ymm5, %ymm12
420
+ vpmulhw %ymm3, %ymm6, %ymm13
421
+ vpmulhw %ymm3, %ymm4, %ymm14
422
+ vpsubw %ymm7, %ymm11, %ymm7
423
+ vpsubw %ymm9, %ymm12, %ymm9
424
+ vpsubw %ymm13, %ymm8, %ymm8
425
+ vpsubw %ymm10, %ymm14, %ymm10
426
+ vpaddw %ymm7, %ymm8, %ymm7
427
+ vpaddw %ymm9, %ymm10, %ymm9
428
+ vmovdqa 0x140(%rdi), %ymm8
429
+ vmovdqa 0x160(%rdi), %ymm10
430
+ vpaddw %ymm7, %ymm8, %ymm7
431
+ vpaddw %ymm9, %ymm10, %ymm9
432
+ vmovdqa %ymm7, 0x140(%rdi)
433
+ vmovdqa %ymm9, 0x160(%rdi)
434
+ vmovdqa 0x380(%rsi), %ymm2
435
+ vmovdqa 0x3a0(%rsi), %ymm3
436
+ vmovdqa 0x380(%rdx), %ymm4
437
+ vmovdqa 0x3a0(%rdx), %ymm5
438
+ vmovdqa 0x1c0(%rcx), %ymm6
439
+ vpmullw %ymm2, %ymm1, %ymm13
440
+ vpmullw %ymm3, %ymm1, %ymm14
441
+ vpmullw %ymm13, %ymm4, %ymm7
442
+ vpmullw %ymm13, %ymm5, %ymm9
443
+ vpmullw %ymm14, %ymm6, %ymm8
444
+ vpmullw %ymm14, %ymm4, %ymm10
445
+ vpmulhw %ymm7, %ymm0, %ymm7
446
+ vpmulhw %ymm9, %ymm0, %ymm9
447
+ vpmulhw %ymm8, %ymm0, %ymm8
448
+ vpmulhw %ymm10, %ymm0, %ymm10
449
+ vpmulhw %ymm2, %ymm4, %ymm11
450
+ vpmulhw %ymm2, %ymm5, %ymm12
451
+ vpmulhw %ymm3, %ymm6, %ymm13
452
+ vpmulhw %ymm3, %ymm4, %ymm14
453
+ vpsubw %ymm7, %ymm11, %ymm7
454
+ vpsubw %ymm9, %ymm12, %ymm9
455
+ vpsubw %ymm8, %ymm13, %ymm8
456
+ vpsubw %ymm10, %ymm14, %ymm10
457
+ vpaddw %ymm7, %ymm8, %ymm7
458
+ vpaddw %ymm9, %ymm10, %ymm9
459
+ vmovdqa 0x180(%rdi), %ymm8
460
+ vmovdqa 0x1a0(%rdi), %ymm10
461
+ vpaddw %ymm7, %ymm8, %ymm7
462
+ vpaddw %ymm9, %ymm10, %ymm9
463
+ vmovdqa %ymm7, 0x180(%rdi)
464
+ vmovdqa %ymm9, 0x1a0(%rdi)
465
+ vmovdqa 0x3c0(%rsi), %ymm2
466
+ vmovdqa 0x3e0(%rsi), %ymm3
467
+ vmovdqa 0x3c0(%rdx), %ymm4
468
+ vmovdqa 0x3e0(%rdx), %ymm5
469
+ vmovdqa 0x1e0(%rcx), %ymm6
470
+ vpmullw %ymm2, %ymm1, %ymm13
471
+ vpmullw %ymm3, %ymm1, %ymm14
472
+ vpmullw %ymm13, %ymm4, %ymm7
473
+ vpmullw %ymm13, %ymm5, %ymm9
474
+ vpmullw %ymm14, %ymm6, %ymm8
475
+ vpmullw %ymm14, %ymm4, %ymm10
476
+ vpmulhw %ymm7, %ymm0, %ymm7
477
+ vpmulhw %ymm9, %ymm0, %ymm9
478
+ vpmulhw %ymm8, %ymm0, %ymm8
479
+ vpmulhw %ymm10, %ymm0, %ymm10
480
+ vpmulhw %ymm2, %ymm4, %ymm11
481
+ vpmulhw %ymm2, %ymm5, %ymm12
482
+ vpmulhw %ymm3, %ymm6, %ymm13
483
+ vpmulhw %ymm3, %ymm4, %ymm14
484
+ vpsubw %ymm7, %ymm11, %ymm7
485
+ vpsubw %ymm9, %ymm12, %ymm9
486
+ vpsubw %ymm13, %ymm8, %ymm8
487
+ vpsubw %ymm10, %ymm14, %ymm10
488
+ vpaddw %ymm7, %ymm8, %ymm7
489
+ vpaddw %ymm9, %ymm10, %ymm9
490
+ vmovdqa 0x1c0(%rdi), %ymm8
491
+ vmovdqa 0x1e0(%rdi), %ymm10
492
+ vpaddw %ymm7, %ymm8, %ymm7
493
+ vpaddw %ymm9, %ymm10, %ymm9
494
+ vmovdqa %ymm7, 0x1c0(%rdi)
495
+ vmovdqa %ymm9, 0x1e0(%rdi)
496
+ vmovdqa 0x400(%rsi), %ymm2
497
+ vmovdqa 0x420(%rsi), %ymm3
498
+ vmovdqa 0x400(%rdx), %ymm4
499
+ vmovdqa 0x420(%rdx), %ymm5
500
+ vmovdqa 0x200(%rcx), %ymm6
501
+ vpmullw %ymm2, %ymm1, %ymm13
502
+ vpmullw %ymm3, %ymm1, %ymm14
503
+ vpmullw %ymm13, %ymm4, %ymm7
504
+ vpmullw %ymm13, %ymm5, %ymm9
505
+ vpmullw %ymm14, %ymm6, %ymm8
506
+ vpmullw %ymm14, %ymm4, %ymm10
507
+ vpmulhw %ymm7, %ymm0, %ymm7
508
+ vpmulhw %ymm9, %ymm0, %ymm9
509
+ vpmulhw %ymm8, %ymm0, %ymm8
510
+ vpmulhw %ymm10, %ymm0, %ymm10
511
+ vpmulhw %ymm2, %ymm4, %ymm11
512
+ vpmulhw %ymm2, %ymm5, %ymm12
513
+ vpmulhw %ymm3, %ymm6, %ymm13
514
+ vpmulhw %ymm3, %ymm4, %ymm14
515
+ vpsubw %ymm7, %ymm11, %ymm7
516
+ vpsubw %ymm9, %ymm12, %ymm9
517
+ vpsubw %ymm8, %ymm13, %ymm8
518
+ vpsubw %ymm10, %ymm14, %ymm10
519
+ vpaddw %ymm7, %ymm8, %ymm7
520
+ vpaddw %ymm9, %ymm10, %ymm9
521
+ vmovdqa (%rdi), %ymm8
522
+ vmovdqa 0x20(%rdi), %ymm10
523
+ vpaddw %ymm7, %ymm8, %ymm7
524
+ vpaddw %ymm9, %ymm10, %ymm9
525
+ vmovdqa %ymm7, (%rdi)
526
+ vmovdqa %ymm9, 0x20(%rdi)
527
+ vmovdqa 0x440(%rsi), %ymm2
528
+ vmovdqa 0x460(%rsi), %ymm3
529
+ vmovdqa 0x440(%rdx), %ymm4
530
+ vmovdqa 0x460(%rdx), %ymm5
531
+ vmovdqa 0x220(%rcx), %ymm6
532
+ vpmullw %ymm2, %ymm1, %ymm13
533
+ vpmullw %ymm3, %ymm1, %ymm14
534
+ vpmullw %ymm13, %ymm4, %ymm7
535
+ vpmullw %ymm13, %ymm5, %ymm9
536
+ vpmullw %ymm14, %ymm6, %ymm8
537
+ vpmullw %ymm14, %ymm4, %ymm10
538
+ vpmulhw %ymm7, %ymm0, %ymm7
539
+ vpmulhw %ymm9, %ymm0, %ymm9
540
+ vpmulhw %ymm8, %ymm0, %ymm8
541
+ vpmulhw %ymm10, %ymm0, %ymm10
542
+ vpmulhw %ymm2, %ymm4, %ymm11
543
+ vpmulhw %ymm2, %ymm5, %ymm12
544
+ vpmulhw %ymm3, %ymm6, %ymm13
545
+ vpmulhw %ymm3, %ymm4, %ymm14
546
+ vpsubw %ymm7, %ymm11, %ymm7
547
+ vpsubw %ymm9, %ymm12, %ymm9
548
+ vpsubw %ymm13, %ymm8, %ymm8
549
+ vpsubw %ymm10, %ymm14, %ymm10
550
+ vpaddw %ymm7, %ymm8, %ymm7
551
+ vpaddw %ymm9, %ymm10, %ymm9
552
+ vmovdqa 0x40(%rdi), %ymm8
553
+ vmovdqa 0x60(%rdi), %ymm10
554
+ vpaddw %ymm7, %ymm8, %ymm7
555
+ vpaddw %ymm9, %ymm10, %ymm9
556
+ vmovdqa %ymm7, 0x40(%rdi)
557
+ vmovdqa %ymm9, 0x60(%rdi)
558
+ vmovdqa 0x480(%rsi), %ymm2
559
+ vmovdqa 0x4a0(%rsi), %ymm3
560
+ vmovdqa 0x480(%rdx), %ymm4
561
+ vmovdqa 0x4a0(%rdx), %ymm5
562
+ vmovdqa 0x240(%rcx), %ymm6
563
+ vpmullw %ymm2, %ymm1, %ymm13
564
+ vpmullw %ymm3, %ymm1, %ymm14
565
+ vpmullw %ymm13, %ymm4, %ymm7
566
+ vpmullw %ymm13, %ymm5, %ymm9
567
+ vpmullw %ymm14, %ymm6, %ymm8
568
+ vpmullw %ymm14, %ymm4, %ymm10
569
+ vpmulhw %ymm7, %ymm0, %ymm7
570
+ vpmulhw %ymm9, %ymm0, %ymm9
571
+ vpmulhw %ymm8, %ymm0, %ymm8
572
+ vpmulhw %ymm10, %ymm0, %ymm10
573
+ vpmulhw %ymm2, %ymm4, %ymm11
574
+ vpmulhw %ymm2, %ymm5, %ymm12
575
+ vpmulhw %ymm3, %ymm6, %ymm13
576
+ vpmulhw %ymm3, %ymm4, %ymm14
577
+ vpsubw %ymm7, %ymm11, %ymm7
578
+ vpsubw %ymm9, %ymm12, %ymm9
579
+ vpsubw %ymm8, %ymm13, %ymm8
580
+ vpsubw %ymm10, %ymm14, %ymm10
581
+ vpaddw %ymm7, %ymm8, %ymm7
582
+ vpaddw %ymm9, %ymm10, %ymm9
583
+ vmovdqa 0x80(%rdi), %ymm8
584
+ vmovdqa 0xa0(%rdi), %ymm10
585
+ vpaddw %ymm7, %ymm8, %ymm7
586
+ vpaddw %ymm9, %ymm10, %ymm9
587
+ vmovdqa %ymm7, 0x80(%rdi)
588
+ vmovdqa %ymm9, 0xa0(%rdi)
589
+ vmovdqa 0x4c0(%rsi), %ymm2
590
+ vmovdqa 0x4e0(%rsi), %ymm3
591
+ vmovdqa 0x4c0(%rdx), %ymm4
592
+ vmovdqa 0x4e0(%rdx), %ymm5
593
+ vmovdqa 0x260(%rcx), %ymm6
594
+ vpmullw %ymm2, %ymm1, %ymm13
595
+ vpmullw %ymm3, %ymm1, %ymm14
596
+ vpmullw %ymm13, %ymm4, %ymm7
597
+ vpmullw %ymm13, %ymm5, %ymm9
598
+ vpmullw %ymm14, %ymm6, %ymm8
599
+ vpmullw %ymm14, %ymm4, %ymm10
600
+ vpmulhw %ymm7, %ymm0, %ymm7
601
+ vpmulhw %ymm9, %ymm0, %ymm9
602
+ vpmulhw %ymm8, %ymm0, %ymm8
603
+ vpmulhw %ymm10, %ymm0, %ymm10
604
+ vpmulhw %ymm2, %ymm4, %ymm11
605
+ vpmulhw %ymm2, %ymm5, %ymm12
606
+ vpmulhw %ymm3, %ymm6, %ymm13
607
+ vpmulhw %ymm3, %ymm4, %ymm14
608
+ vpsubw %ymm7, %ymm11, %ymm7
609
+ vpsubw %ymm9, %ymm12, %ymm9
610
+ vpsubw %ymm13, %ymm8, %ymm8
611
+ vpsubw %ymm10, %ymm14, %ymm10
612
+ vpaddw %ymm7, %ymm8, %ymm7
613
+ vpaddw %ymm9, %ymm10, %ymm9
614
+ vmovdqa 0xc0(%rdi), %ymm8
615
+ vmovdqa 0xe0(%rdi), %ymm10
616
+ vpaddw %ymm7, %ymm8, %ymm7
617
+ vpaddw %ymm9, %ymm10, %ymm9
618
+ vmovdqa %ymm7, 0xc0(%rdi)
619
+ vmovdqa %ymm9, 0xe0(%rdi)
620
+ vmovdqa 0x500(%rsi), %ymm2
621
+ vmovdqa 0x520(%rsi), %ymm3
622
+ vmovdqa 0x500(%rdx), %ymm4
623
+ vmovdqa 0x520(%rdx), %ymm5
624
+ vmovdqa 0x280(%rcx), %ymm6
625
+ vpmullw %ymm2, %ymm1, %ymm13
626
+ vpmullw %ymm3, %ymm1, %ymm14
627
+ vpmullw %ymm13, %ymm4, %ymm7
628
+ vpmullw %ymm13, %ymm5, %ymm9
629
+ vpmullw %ymm14, %ymm6, %ymm8
630
+ vpmullw %ymm14, %ymm4, %ymm10
631
+ vpmulhw %ymm7, %ymm0, %ymm7
632
+ vpmulhw %ymm9, %ymm0, %ymm9
633
+ vpmulhw %ymm8, %ymm0, %ymm8
634
+ vpmulhw %ymm10, %ymm0, %ymm10
635
+ vpmulhw %ymm2, %ymm4, %ymm11
636
+ vpmulhw %ymm2, %ymm5, %ymm12
637
+ vpmulhw %ymm3, %ymm6, %ymm13
638
+ vpmulhw %ymm3, %ymm4, %ymm14
639
+ vpsubw %ymm7, %ymm11, %ymm7
640
+ vpsubw %ymm9, %ymm12, %ymm9
641
+ vpsubw %ymm8, %ymm13, %ymm8
642
+ vpsubw %ymm10, %ymm14, %ymm10
643
+ vpaddw %ymm7, %ymm8, %ymm7
644
+ vpaddw %ymm9, %ymm10, %ymm9
645
+ vmovdqa 0x100(%rdi), %ymm8
646
+ vmovdqa 0x120(%rdi), %ymm10
647
+ vpaddw %ymm7, %ymm8, %ymm7
648
+ vpaddw %ymm9, %ymm10, %ymm9
649
+ vmovdqa %ymm7, 0x100(%rdi)
650
+ vmovdqa %ymm9, 0x120(%rdi)
651
+ vmovdqa 0x540(%rsi), %ymm2
652
+ vmovdqa 0x560(%rsi), %ymm3
653
+ vmovdqa 0x540(%rdx), %ymm4
654
+ vmovdqa 0x560(%rdx), %ymm5
655
+ vmovdqa 0x2a0(%rcx), %ymm6
656
+ vpmullw %ymm2, %ymm1, %ymm13
657
+ vpmullw %ymm3, %ymm1, %ymm14
658
+ vpmullw %ymm13, %ymm4, %ymm7
659
+ vpmullw %ymm13, %ymm5, %ymm9
660
+ vpmullw %ymm14, %ymm6, %ymm8
661
+ vpmullw %ymm14, %ymm4, %ymm10
662
+ vpmulhw %ymm7, %ymm0, %ymm7
663
+ vpmulhw %ymm9, %ymm0, %ymm9
664
+ vpmulhw %ymm8, %ymm0, %ymm8
665
+ vpmulhw %ymm10, %ymm0, %ymm10
666
+ vpmulhw %ymm2, %ymm4, %ymm11
667
+ vpmulhw %ymm2, %ymm5, %ymm12
668
+ vpmulhw %ymm3, %ymm6, %ymm13
669
+ vpmulhw %ymm3, %ymm4, %ymm14
670
+ vpsubw %ymm7, %ymm11, %ymm7
671
+ vpsubw %ymm9, %ymm12, %ymm9
672
+ vpsubw %ymm13, %ymm8, %ymm8
673
+ vpsubw %ymm10, %ymm14, %ymm10
674
+ vpaddw %ymm7, %ymm8, %ymm7
675
+ vpaddw %ymm9, %ymm10, %ymm9
676
+ vmovdqa 0x140(%rdi), %ymm8
677
+ vmovdqa 0x160(%rdi), %ymm10
678
+ vpaddw %ymm7, %ymm8, %ymm7
679
+ vpaddw %ymm9, %ymm10, %ymm9
680
+ vmovdqa %ymm7, 0x140(%rdi)
681
+ vmovdqa %ymm9, 0x160(%rdi)
682
+ vmovdqa 0x580(%rsi), %ymm2
683
+ vmovdqa 0x5a0(%rsi), %ymm3
684
+ vmovdqa 0x580(%rdx), %ymm4
685
+ vmovdqa 0x5a0(%rdx), %ymm5
686
+ vmovdqa 0x2c0(%rcx), %ymm6
687
+ vpmullw %ymm2, %ymm1, %ymm13
688
+ vpmullw %ymm3, %ymm1, %ymm14
689
+ vpmullw %ymm13, %ymm4, %ymm7
690
+ vpmullw %ymm13, %ymm5, %ymm9
691
+ vpmullw %ymm14, %ymm6, %ymm8
692
+ vpmullw %ymm14, %ymm4, %ymm10
693
+ vpmulhw %ymm7, %ymm0, %ymm7
694
+ vpmulhw %ymm9, %ymm0, %ymm9
695
+ vpmulhw %ymm8, %ymm0, %ymm8
696
+ vpmulhw %ymm10, %ymm0, %ymm10
697
+ vpmulhw %ymm2, %ymm4, %ymm11
698
+ vpmulhw %ymm2, %ymm5, %ymm12
699
+ vpmulhw %ymm3, %ymm6, %ymm13
700
+ vpmulhw %ymm3, %ymm4, %ymm14
701
+ vpsubw %ymm7, %ymm11, %ymm7
702
+ vpsubw %ymm9, %ymm12, %ymm9
703
+ vpsubw %ymm8, %ymm13, %ymm8
704
+ vpsubw %ymm10, %ymm14, %ymm10
705
+ vpaddw %ymm7, %ymm8, %ymm7
706
+ vpaddw %ymm9, %ymm10, %ymm9
707
+ vmovdqa 0x180(%rdi), %ymm8
708
+ vmovdqa 0x1a0(%rdi), %ymm10
709
+ vpaddw %ymm7, %ymm8, %ymm7
710
+ vpaddw %ymm9, %ymm10, %ymm9
711
+ vmovdqa %ymm7, 0x180(%rdi)
712
+ vmovdqa %ymm9, 0x1a0(%rdi)
713
+ vmovdqa 0x5c0(%rsi), %ymm2
714
+ vmovdqa 0x5e0(%rsi), %ymm3
715
+ vmovdqa 0x5c0(%rdx), %ymm4
716
+ vmovdqa 0x5e0(%rdx), %ymm5
717
+ vmovdqa 0x2e0(%rcx), %ymm6
718
+ vpmullw %ymm2, %ymm1, %ymm13
719
+ vpmullw %ymm3, %ymm1, %ymm14
720
+ vpmullw %ymm13, %ymm4, %ymm7
721
+ vpmullw %ymm13, %ymm5, %ymm9
722
+ vpmullw %ymm14, %ymm6, %ymm8
723
+ vpmullw %ymm14, %ymm4, %ymm10
724
+ vpmulhw %ymm7, %ymm0, %ymm7
725
+ vpmulhw %ymm9, %ymm0, %ymm9
726
+ vpmulhw %ymm8, %ymm0, %ymm8
727
+ vpmulhw %ymm10, %ymm0, %ymm10
728
+ vpmulhw %ymm2, %ymm4, %ymm11
729
+ vpmulhw %ymm2, %ymm5, %ymm12
730
+ vpmulhw %ymm3, %ymm6, %ymm13
731
+ vpmulhw %ymm3, %ymm4, %ymm14
732
+ vpsubw %ymm7, %ymm11, %ymm7
733
+ vpsubw %ymm9, %ymm12, %ymm9
734
+ vpsubw %ymm13, %ymm8, %ymm8
735
+ vpsubw %ymm10, %ymm14, %ymm10
736
+ vpaddw %ymm7, %ymm8, %ymm7
737
+ vpaddw %ymm9, %ymm10, %ymm9
738
+ vmovdqa 0x1c0(%rdi), %ymm8
739
+ vmovdqa 0x1e0(%rdi), %ymm10
740
+ vpaddw %ymm7, %ymm8, %ymm7
741
+ vpaddw %ymm9, %ymm10, %ymm9
742
+ vmovdqa %ymm7, 0x1c0(%rdi)
743
+ vmovdqa %ymm9, 0x1e0(%rdi)
744
+ retq
745
+ .cfi_endproc
746
+
747
+ MLK_ASM_FN_SIZE(polyvec_basemul_acc_montgomery_cached_asm_k3)
748
+
749
+ #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
750
+ && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 3) */