pq_crypto 0.4.2 → 0.5.1

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 (410) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +27 -2
  3. data/CHANGELOG.md +59 -0
  4. data/GET_STARTED.md +21 -16
  5. data/README.md +26 -0
  6. data/SECURITY.md +22 -16
  7. data/ext/pqcrypto/extconf.rb +183 -99
  8. data/ext/pqcrypto/mldsa_api.h +1 -118
  9. data/ext/pqcrypto/mlkem_api.h +1 -42
  10. data/ext/pqcrypto/pq_externalmu.c +88 -216
  11. data/ext/pqcrypto/pqcrypto_native_api.h +132 -0
  12. data/ext/pqcrypto/pqcrypto_ruby_secure.c +234 -12
  13. data/ext/pqcrypto/pqcrypto_secure.c +429 -334
  14. data/ext/pqcrypto/pqcrypto_secure.h +13 -45
  15. data/ext/pqcrypto/pqcrypto_version.h +1 -1
  16. data/ext/pqcrypto/randombytes.h +9 -0
  17. data/ext/pqcrypto/vendor/.vendored +12 -5
  18. data/ext/pqcrypto/vendor/mldsa-native/BUILDING.md +105 -0
  19. data/ext/pqcrypto/vendor/mldsa-native/LICENSE +286 -0
  20. data/ext/pqcrypto/vendor/mldsa-native/META.yml +24 -0
  21. data/ext/pqcrypto/vendor/mldsa-native/README.md +221 -0
  22. data/ext/pqcrypto/vendor/mldsa-native/SECURITY.md +8 -0
  23. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.c +721 -0
  24. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.h +975 -0
  25. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_asm.S +724 -0
  26. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_config.h +723 -0
  27. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/cbmc.h +166 -0
  28. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/common.h +321 -0
  29. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.c +21 -0
  30. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.h +385 -0
  31. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.c +73 -0
  32. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.h +130 -0
  33. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.c +277 -0
  34. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202.h +244 -0
  35. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.c +182 -0
  36. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.h +117 -0
  37. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.c +438 -0
  38. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.h +105 -0
  39. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/auto.h +71 -0
  40. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/fips202_native_aarch64.h +62 -0
  41. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S +376 -0
  42. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S +204 -0
  43. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S +259 -0
  44. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S +1077 -0
  45. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S +987 -0
  46. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +41 -0
  47. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_scalar.h +26 -0
  48. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_v84a.h +35 -0
  49. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x2_v84a.h +37 -0
  50. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_scalar.h +27 -0
  51. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +36 -0
  52. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/api.h +69 -0
  53. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/README.md +10 -0
  54. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/mve.h +32 -0
  55. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/fips202_native_armv81m.h +20 -0
  56. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +638 -0
  57. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +136 -0
  58. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +52 -0
  59. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/auto.h +29 -0
  60. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.c +488 -0
  61. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/KeccakP_1600_times4_SIMD256.h +16 -0
  62. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/xkcp.h +31 -0
  63. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/meta.h +247 -0
  64. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/aarch64_zetas.c +231 -0
  65. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/arith_native_aarch64.h +150 -0
  66. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/intt.S +753 -0
  67. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l4.S +129 -0
  68. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l5.S +145 -0
  69. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/mld_polyvecl_pointwise_acc_montgomery_l7.S +177 -0
  70. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/ntt.S +653 -0
  71. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/pointwise_montgomery.S +79 -0
  72. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_caddq_asm.S +53 -0
  73. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_chknorm_asm.S +55 -0
  74. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_32_asm.S +85 -0
  75. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_decompose_88_asm.S +85 -0
  76. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_32_asm.S +102 -0
  77. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/poly_use_hint_88_asm.S +110 -0
  78. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_17_asm.S +72 -0
  79. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_19_asm.S +69 -0
  80. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/polyz_unpack_table.c +40 -0
  81. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_asm.S +189 -0
  82. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta2_asm.S +135 -0
  83. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta4_asm.S +128 -0
  84. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_eta_table.c +543 -0
  85. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/rej_uniform_table.c +62 -0
  86. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/api.h +649 -0
  87. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/meta.h +23 -0
  88. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/meta.h +315 -0
  89. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/arith_native_x86_64.h +124 -0
  90. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.c +157 -0
  91. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/consts.h +27 -0
  92. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/intt.S +2311 -0
  93. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/ntt.S +2383 -0
  94. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/nttunpack.S +239 -0
  95. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise.S +131 -0
  96. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l4.S +139 -0
  97. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l5.S +155 -0
  98. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/pointwise_acc_l7.S +187 -0
  99. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_caddq_avx2.c +61 -0
  100. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_chknorm_avx2.c +52 -0
  101. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_32_avx2.c +155 -0
  102. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_88_avx2.c +155 -0
  103. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_32_avx2.c +102 -0
  104. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_88_avx2.c +104 -0
  105. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_17_avx2.c +91 -0
  106. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_19_avx2.c +93 -0
  107. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_avx2.c +126 -0
  108. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta2_avx2.c +155 -0
  109. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta4_avx2.c +139 -0
  110. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_table.c +160 -0
  111. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.c +293 -0
  112. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.h +224 -0
  113. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/params.h +77 -0
  114. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.c +991 -0
  115. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.h +393 -0
  116. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.c +946 -0
  117. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.h +360 -0
  118. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.c +877 -0
  119. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.h +725 -0
  120. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/randombytes.h +26 -0
  121. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/reduce.h +139 -0
  122. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/rounding.h +249 -0
  123. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.c +1511 -0
  124. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.h +806 -0
  125. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/symmetric.h +68 -0
  126. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sys.h +268 -0
  127. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/zetas.inc +55 -0
  128. data/ext/pqcrypto/vendor/mlkem-native/BUILDING.md +104 -0
  129. data/ext/pqcrypto/vendor/mlkem-native/LICENSE +294 -0
  130. data/ext/pqcrypto/vendor/mlkem-native/META.yml +30 -0
  131. data/ext/pqcrypto/vendor/mlkem-native/README.md +223 -0
  132. data/ext/pqcrypto/vendor/mlkem-native/RELEASE.md +86 -0
  133. data/ext/pqcrypto/vendor/mlkem-native/SECURITY.md +8 -0
  134. data/ext/pqcrypto/vendor/mlkem-native/mlkem/README.md +23 -0
  135. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.c +660 -0
  136. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.h +538 -0
  137. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_asm.S +681 -0
  138. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_config.h +709 -0
  139. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/cbmc.h +174 -0
  140. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/common.h +274 -0
  141. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.c +717 -0
  142. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.h +688 -0
  143. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.c +64 -0
  144. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.h +128 -0
  145. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.c +251 -0
  146. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.h +158 -0
  147. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.c +208 -0
  148. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.h +80 -0
  149. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.c +463 -0
  150. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.h +98 -0
  151. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/auto.h +70 -0
  152. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/fips202_native_aarch64.h +69 -0
  153. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm.S +375 -0
  154. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm.S +203 -0
  155. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_asm.S +258 -0
  156. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_asm.S +1076 -0
  157. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S +986 -0
  158. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +46 -0
  159. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_scalar.h +25 -0
  160. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_v84a.h +34 -0
  161. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x2_v84a.h +35 -0
  162. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_scalar.h +26 -0
  163. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +35 -0
  164. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/api.h +117 -0
  165. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/README.md +10 -0
  166. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/mve.h +79 -0
  167. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/fips202_native_armv81m.h +35 -0
  168. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +667 -0
  169. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +40 -0
  170. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +51 -0
  171. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_extract_bytes_x4_mve.S +290 -0
  172. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_xor_bytes_x4_mve.S +314 -0
  173. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/auto.h +28 -0
  174. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h +33 -0
  175. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/fips202_native_x86_64.h +41 -0
  176. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2.S +451 -0
  177. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccakf1600_constants.c +51 -0
  178. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.c +622 -0
  179. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.h +156 -0
  180. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.c +446 -0
  181. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.h +326 -0
  182. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/README.md +16 -0
  183. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/meta.h +122 -0
  184. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/aarch64_zetas.c +174 -0
  185. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/arith_native_aarch64.h +177 -0
  186. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/intt.S +628 -0
  187. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/ntt.S +562 -0
  188. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_mulcache_compute_asm.S +127 -0
  189. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_reduce_asm.S +150 -0
  190. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_tobytes_asm.S +117 -0
  191. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/poly_tomont_asm.S +98 -0
  192. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k2.S +261 -0
  193. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S +314 -0
  194. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/polyvec_basemul_acc_montgomery_cached_asm_k4.S +368 -0
  195. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_asm.S +226 -0
  196. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_table.c +542 -0
  197. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/api.h +637 -0
  198. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/meta.h +25 -0
  199. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/README.md +11 -0
  200. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/meta.h +128 -0
  201. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/arith_native_riscv64.h +45 -0
  202. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.c +81 -0
  203. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.h +145 -0
  204. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_izetas.inc +27 -0
  205. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_poly.c +805 -0
  206. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_zetas.inc +27 -0
  207. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_zetas_basemul.inc +39 -0
  208. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/README.md +4 -0
  209. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/meta.h +304 -0
  210. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/arith_native_x86_64.h +309 -0
  211. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.c +94 -0
  212. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.h +45 -0
  213. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.c +102 -0
  214. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.h +25 -0
  215. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/intt.S +719 -0
  216. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/mulcache_compute.S +90 -0
  217. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/ntt.S +639 -0
  218. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/nttfrombytes.S +193 -0
  219. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/ntttobytes.S +181 -0
  220. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/nttunpack.S +174 -0
  221. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d10.S +382 -0
  222. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d11.S +448 -0
  223. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d4.S +163 -0
  224. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_compress_d5.S +220 -0
  225. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d10.S +228 -0
  226. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d11.S +277 -0
  227. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d4.S +180 -0
  228. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/poly_decompress_d5.S +192 -0
  229. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k2.S +502 -0
  230. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S +750 -0
  231. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k4.S +998 -0
  232. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/reduce.S +218 -0
  233. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_asm.S +103 -0
  234. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_table.c +544 -0
  235. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/tomont.S +155 -0
  236. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/params.h +76 -0
  237. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.c +572 -0
  238. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.h +317 -0
  239. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.c +502 -0
  240. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.h +668 -0
  241. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/randombytes.h +60 -0
  242. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.c +362 -0
  243. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.h +118 -0
  244. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/symmetric.h +70 -0
  245. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sys.h +260 -0
  246. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.c +20 -0
  247. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.h +464 -0
  248. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/zetas.inc +30 -0
  249. data/lib/pq_crypto/hybrid_kem.rb +10 -1
  250. data/lib/pq_crypto/version.rb +1 -1
  251. data/lib/pq_crypto.rb +5 -1
  252. data/script/vendor_libs.rb +228 -154
  253. metadata +236 -160
  254. data/ext/pqcrypto/vendor/pqclean/common/aes.c +0 -639
  255. data/ext/pqcrypto/vendor/pqclean/common/aes.h +0 -64
  256. data/ext/pqcrypto/vendor/pqclean/common/compat.h +0 -73
  257. data/ext/pqcrypto/vendor/pqclean/common/crypto_declassify.h +0 -7
  258. data/ext/pqcrypto/vendor/pqclean/common/fips202.c +0 -928
  259. data/ext/pqcrypto/vendor/pqclean/common/fips202.h +0 -166
  260. data/ext/pqcrypto/vendor/pqclean/common/keccak2x/feat.S +0 -168
  261. data/ext/pqcrypto/vendor/pqclean/common/keccak2x/fips202x2.c +0 -684
  262. data/ext/pqcrypto/vendor/pqclean/common/keccak2x/fips202x2.h +0 -60
  263. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-times4-SIMD256.c +0 -1028
  264. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-times4-SnP.h +0 -50
  265. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/KeccakP-1600-unrolling.macros +0 -198
  266. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/Makefile +0 -8
  267. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/Makefile.Microsoft_nmake +0 -8
  268. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/SIMD256-config.h +0 -3
  269. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/align.h +0 -34
  270. data/ext/pqcrypto/vendor/pqclean/common/keccak4x/brg_endian.h +0 -142
  271. data/ext/pqcrypto/vendor/pqclean/common/nistseedexpander.c +0 -101
  272. data/ext/pqcrypto/vendor/pqclean/common/nistseedexpander.h +0 -39
  273. data/ext/pqcrypto/vendor/pqclean/common/randombytes.c +0 -355
  274. data/ext/pqcrypto/vendor/pqclean/common/randombytes.h +0 -27
  275. data/ext/pqcrypto/vendor/pqclean/common/sha2.c +0 -769
  276. data/ext/pqcrypto/vendor/pqclean/common/sha2.h +0 -173
  277. data/ext/pqcrypto/vendor/pqclean/common/sp800-185.c +0 -156
  278. data/ext/pqcrypto/vendor/pqclean/common/sp800-185.h +0 -27
  279. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/LICENSE +0 -5
  280. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/Makefile +0 -19
  281. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/Makefile.Microsoft_nmake +0 -23
  282. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/api.h +0 -18
  283. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/cbd.c +0 -83
  284. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/cbd.h +0 -11
  285. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/indcpa.c +0 -327
  286. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/indcpa.h +0 -22
  287. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/kem.c +0 -164
  288. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/kem.h +0 -23
  289. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/ntt.c +0 -146
  290. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/ntt.h +0 -14
  291. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/params.h +0 -36
  292. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/poly.c +0 -311
  293. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/poly.h +0 -37
  294. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/polyvec.c +0 -198
  295. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/polyvec.h +0 -26
  296. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/reduce.c +0 -41
  297. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/reduce.h +0 -13
  298. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/symmetric-shake.c +0 -71
  299. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/symmetric.h +0 -30
  300. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/verify.c +0 -67
  301. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-1024/clean/verify.h +0 -13
  302. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/LICENSE +0 -5
  303. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/Makefile +0 -19
  304. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/Makefile.Microsoft_nmake +0 -23
  305. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/api.h +0 -18
  306. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/cbd.c +0 -108
  307. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/cbd.h +0 -11
  308. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/indcpa.c +0 -327
  309. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/indcpa.h +0 -22
  310. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/kem.c +0 -164
  311. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/kem.h +0 -23
  312. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/ntt.c +0 -146
  313. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/ntt.h +0 -14
  314. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/params.h +0 -36
  315. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/poly.c +0 -299
  316. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/poly.h +0 -37
  317. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/polyvec.c +0 -188
  318. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/polyvec.h +0 -26
  319. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/reduce.c +0 -41
  320. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/reduce.h +0 -13
  321. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/symmetric-shake.c +0 -71
  322. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/symmetric.h +0 -30
  323. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/verify.c +0 -67
  324. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-512/clean/verify.h +0 -13
  325. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/LICENSE +0 -5
  326. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/Makefile +0 -19
  327. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/Makefile.Microsoft_nmake +0 -23
  328. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/api.h +0 -18
  329. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/cbd.c +0 -83
  330. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/cbd.h +0 -11
  331. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/indcpa.c +0 -327
  332. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/indcpa.h +0 -22
  333. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/kem.c +0 -164
  334. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/kem.h +0 -23
  335. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/ntt.c +0 -146
  336. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/ntt.h +0 -14
  337. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/params.h +0 -36
  338. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/poly.c +0 -299
  339. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/poly.h +0 -37
  340. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/polyvec.c +0 -188
  341. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/polyvec.h +0 -26
  342. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/reduce.c +0 -41
  343. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/reduce.h +0 -13
  344. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/symmetric-shake.c +0 -71
  345. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/symmetric.h +0 -30
  346. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/verify.c +0 -67
  347. data/ext/pqcrypto/vendor/pqclean/crypto_kem/ml-kem-768/clean/verify.h +0 -13
  348. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/LICENSE +0 -5
  349. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/Makefile +0 -19
  350. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/Makefile.Microsoft_nmake +0 -23
  351. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/api.h +0 -50
  352. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/ntt.c +0 -98
  353. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/ntt.h +0 -10
  354. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/packing.c +0 -261
  355. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/packing.h +0 -31
  356. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/params.h +0 -44
  357. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/poly.c +0 -848
  358. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/poly.h +0 -52
  359. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/polyvec.c +0 -415
  360. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/polyvec.h +0 -65
  361. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/reduce.c +0 -69
  362. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/reduce.h +0 -17
  363. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/rounding.c +0 -98
  364. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/rounding.h +0 -14
  365. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/sign.c +0 -407
  366. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/sign.h +0 -47
  367. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/symmetric-shake.c +0 -26
  368. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-44/clean/symmetric.h +0 -34
  369. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/LICENSE +0 -5
  370. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/Makefile +0 -19
  371. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/Makefile.Microsoft_nmake +0 -23
  372. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/api.h +0 -50
  373. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/ntt.c +0 -98
  374. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/ntt.h +0 -10
  375. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/packing.c +0 -261
  376. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/packing.h +0 -31
  377. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/params.h +0 -44
  378. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/poly.c +0 -799
  379. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/poly.h +0 -52
  380. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/polyvec.c +0 -415
  381. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/polyvec.h +0 -65
  382. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/reduce.c +0 -69
  383. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/reduce.h +0 -17
  384. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/rounding.c +0 -92
  385. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/rounding.h +0 -14
  386. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/sign.c +0 -407
  387. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/sign.h +0 -47
  388. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/symmetric-shake.c +0 -26
  389. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-65/clean/symmetric.h +0 -34
  390. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/LICENSE +0 -5
  391. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/Makefile +0 -19
  392. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/Makefile.Microsoft_nmake +0 -23
  393. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/api.h +0 -50
  394. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/ntt.c +0 -98
  395. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/ntt.h +0 -10
  396. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/packing.c +0 -261
  397. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/packing.h +0 -31
  398. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/params.h +0 -44
  399. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/poly.c +0 -823
  400. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/poly.h +0 -52
  401. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/polyvec.c +0 -415
  402. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/polyvec.h +0 -65
  403. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/reduce.c +0 -69
  404. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/reduce.h +0 -17
  405. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/rounding.c +0 -92
  406. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/rounding.h +0 -14
  407. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/sign.c +0 -407
  408. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/sign.h +0 -47
  409. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/symmetric-shake.c +0 -26
  410. data/ext/pqcrypto/vendor/pqclean/crypto_sign/ml-dsa-87/clean/symmetric.h +0 -34
@@ -0,0 +1,502 @@
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 == 2)
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_k2.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_k2)
23
+ MLK_ASM_FN_SYMBOL(polyvec_basemul_acc_montgomery_cached_asm_k2)
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
+ retq
497
+ .cfi_endproc
498
+
499
+ MLK_ASM_FN_SIZE(polyvec_basemul_acc_montgomery_cached_asm_k2)
500
+
501
+ #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
502
+ && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2) */