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,220 @@
1
+ /*
2
+ * Copyright (c) The mlkem-native project authors
3
+ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
4
+ */
5
+
6
+ /* References
7
+ * ==========
8
+ *
9
+ * - [REF_AVX2]
10
+ * CRYSTALS-Kyber optimized AVX2 implementation
11
+ * Bos, Ducas, Kiltz, Lepoint, Lyubashevsky, Schanck, Schwabe, Seiler, Stehlé
12
+ * https://github.com/pq-crystals/kyber/tree/main/avx2
13
+ */
14
+
15
+ /*
16
+ * This file is derived from the public domain
17
+ * AVX2 Kyber implementation @[REF_AVX2].
18
+ */
19
+
20
+ /*************************************************
21
+ * Name: mlk_poly_compress_d5_avx2
22
+ *
23
+ * Description: Compression of a polynomial to 5 bits per coefficient.
24
+ *
25
+ * Arguments: - uint8_t *r: pointer to output byte array
26
+ * (of length MLKEM_POLYCOMPRESSEDBYTES_D5)
27
+ * - const int16_t *a: pointer to input polynomial
28
+ * - const uint8_t *data: pointer to shufbidx constant
29
+ **************************************************/
30
+
31
+ #include "../../../common.h"
32
+ #if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \
33
+ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \
34
+ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 4)
35
+
36
+ /*
37
+ * WARNING: This file is auto-derived from the mlkem-native source file
38
+ * dev/x86_64/src/poly_compress_d5.S using scripts/simpasm. Do not modify it directly.
39
+ */
40
+
41
+ #if defined(__ELF__)
42
+ .section .note.GNU-stack,"",@progbits
43
+ #endif
44
+
45
+ .text
46
+ .balign 4
47
+ .global MLK_ASM_NAMESPACE(poly_compress_d5_avx2)
48
+ MLK_ASM_FN_SYMBOL(poly_compress_d5_avx2)
49
+
50
+ .cfi_startproc
51
+ movl $0x4ebf4ebf, %eax # imm = 0x4EBF4EBF
52
+ vmovd %eax, %xmm0
53
+ vpbroadcastd %xmm0, %ymm0
54
+ movl $0x4000400, %eax # imm = 0x4000400
55
+ vmovd %eax, %xmm1
56
+ vpbroadcastd %xmm1, %ymm1
57
+ movl $0x1f001f, %eax # imm = 0x1F001F
58
+ vmovd %eax, %xmm2
59
+ vpbroadcastd %xmm2, %ymm2
60
+ movl $0x20012001, %eax # imm = 0x20012001
61
+ vmovd %eax, %xmm3
62
+ vpbroadcastd %xmm3, %ymm3
63
+ movl $0x4000001, %eax # imm = 0x4000001
64
+ vmovd %eax, %xmm4
65
+ vpbroadcastd %xmm4, %ymm4
66
+ movl $0xc, %eax
67
+ vmovq %rax, %xmm5
68
+ vpbroadcastq %xmm5, %ymm5
69
+ vmovdqa (%rdx), %ymm6
70
+ vmovdqa (%rsi), %ymm7
71
+ vmovdqa 0x20(%rsi), %ymm8
72
+ vpmulhw %ymm0, %ymm7, %ymm7
73
+ vpmulhw %ymm0, %ymm8, %ymm8
74
+ vpmulhrsw %ymm1, %ymm7, %ymm7
75
+ vpmulhrsw %ymm1, %ymm8, %ymm8
76
+ vpand %ymm2, %ymm7, %ymm7
77
+ vpand %ymm2, %ymm8, %ymm8
78
+ vpackuswb %ymm8, %ymm7, %ymm7
79
+ vpmaddubsw %ymm3, %ymm7, %ymm7
80
+ vpmaddwd %ymm4, %ymm7, %ymm7
81
+ vpsllvd %ymm5, %ymm7, %ymm7
82
+ vpsrlvq %ymm5, %ymm7, %ymm7
83
+ vpshufb %ymm6, %ymm7, %ymm7
84
+ vextracti128 $0x1, %ymm7, %xmm8
85
+ vpblendvb %xmm6, %xmm8, %xmm7, %xmm7
86
+ vmovdqu %xmm7, (%rdi)
87
+ vmovd %xmm8, 0x10(%rdi)
88
+ vmovdqa 0x40(%rsi), %ymm7
89
+ vmovdqa 0x60(%rsi), %ymm8
90
+ vpmulhw %ymm0, %ymm7, %ymm7
91
+ vpmulhw %ymm0, %ymm8, %ymm8
92
+ vpmulhrsw %ymm1, %ymm7, %ymm7
93
+ vpmulhrsw %ymm1, %ymm8, %ymm8
94
+ vpand %ymm2, %ymm7, %ymm7
95
+ vpand %ymm2, %ymm8, %ymm8
96
+ vpackuswb %ymm8, %ymm7, %ymm7
97
+ vpmaddubsw %ymm3, %ymm7, %ymm7
98
+ vpmaddwd %ymm4, %ymm7, %ymm7
99
+ vpsllvd %ymm5, %ymm7, %ymm7
100
+ vpsrlvq %ymm5, %ymm7, %ymm7
101
+ vpshufb %ymm6, %ymm7, %ymm7
102
+ vextracti128 $0x1, %ymm7, %xmm8
103
+ vpblendvb %xmm6, %xmm8, %xmm7, %xmm7
104
+ vmovdqu %xmm7, 0x14(%rdi)
105
+ vmovd %xmm8, 0x24(%rdi)
106
+ vmovdqa 0x80(%rsi), %ymm7
107
+ vmovdqa 0xa0(%rsi), %ymm8
108
+ vpmulhw %ymm0, %ymm7, %ymm7
109
+ vpmulhw %ymm0, %ymm8, %ymm8
110
+ vpmulhrsw %ymm1, %ymm7, %ymm7
111
+ vpmulhrsw %ymm1, %ymm8, %ymm8
112
+ vpand %ymm2, %ymm7, %ymm7
113
+ vpand %ymm2, %ymm8, %ymm8
114
+ vpackuswb %ymm8, %ymm7, %ymm7
115
+ vpmaddubsw %ymm3, %ymm7, %ymm7
116
+ vpmaddwd %ymm4, %ymm7, %ymm7
117
+ vpsllvd %ymm5, %ymm7, %ymm7
118
+ vpsrlvq %ymm5, %ymm7, %ymm7
119
+ vpshufb %ymm6, %ymm7, %ymm7
120
+ vextracti128 $0x1, %ymm7, %xmm8
121
+ vpblendvb %xmm6, %xmm8, %xmm7, %xmm7
122
+ vmovdqu %xmm7, 0x28(%rdi)
123
+ vmovd %xmm8, 0x38(%rdi)
124
+ vmovdqa 0xc0(%rsi), %ymm7
125
+ vmovdqa 0xe0(%rsi), %ymm8
126
+ vpmulhw %ymm0, %ymm7, %ymm7
127
+ vpmulhw %ymm0, %ymm8, %ymm8
128
+ vpmulhrsw %ymm1, %ymm7, %ymm7
129
+ vpmulhrsw %ymm1, %ymm8, %ymm8
130
+ vpand %ymm2, %ymm7, %ymm7
131
+ vpand %ymm2, %ymm8, %ymm8
132
+ vpackuswb %ymm8, %ymm7, %ymm7
133
+ vpmaddubsw %ymm3, %ymm7, %ymm7
134
+ vpmaddwd %ymm4, %ymm7, %ymm7
135
+ vpsllvd %ymm5, %ymm7, %ymm7
136
+ vpsrlvq %ymm5, %ymm7, %ymm7
137
+ vpshufb %ymm6, %ymm7, %ymm7
138
+ vextracti128 $0x1, %ymm7, %xmm8
139
+ vpblendvb %xmm6, %xmm8, %xmm7, %xmm7
140
+ vmovdqu %xmm7, 0x3c(%rdi)
141
+ vmovd %xmm8, 0x4c(%rdi)
142
+ vmovdqa 0x100(%rsi), %ymm7
143
+ vmovdqa 0x120(%rsi), %ymm8
144
+ vpmulhw %ymm0, %ymm7, %ymm7
145
+ vpmulhw %ymm0, %ymm8, %ymm8
146
+ vpmulhrsw %ymm1, %ymm7, %ymm7
147
+ vpmulhrsw %ymm1, %ymm8, %ymm8
148
+ vpand %ymm2, %ymm7, %ymm7
149
+ vpand %ymm2, %ymm8, %ymm8
150
+ vpackuswb %ymm8, %ymm7, %ymm7
151
+ vpmaddubsw %ymm3, %ymm7, %ymm7
152
+ vpmaddwd %ymm4, %ymm7, %ymm7
153
+ vpsllvd %ymm5, %ymm7, %ymm7
154
+ vpsrlvq %ymm5, %ymm7, %ymm7
155
+ vpshufb %ymm6, %ymm7, %ymm7
156
+ vextracti128 $0x1, %ymm7, %xmm8
157
+ vpblendvb %xmm6, %xmm8, %xmm7, %xmm7
158
+ vmovdqu %xmm7, 0x50(%rdi)
159
+ vmovd %xmm8, 0x60(%rdi)
160
+ vmovdqa 0x140(%rsi), %ymm7
161
+ vmovdqa 0x160(%rsi), %ymm8
162
+ vpmulhw %ymm0, %ymm7, %ymm7
163
+ vpmulhw %ymm0, %ymm8, %ymm8
164
+ vpmulhrsw %ymm1, %ymm7, %ymm7
165
+ vpmulhrsw %ymm1, %ymm8, %ymm8
166
+ vpand %ymm2, %ymm7, %ymm7
167
+ vpand %ymm2, %ymm8, %ymm8
168
+ vpackuswb %ymm8, %ymm7, %ymm7
169
+ vpmaddubsw %ymm3, %ymm7, %ymm7
170
+ vpmaddwd %ymm4, %ymm7, %ymm7
171
+ vpsllvd %ymm5, %ymm7, %ymm7
172
+ vpsrlvq %ymm5, %ymm7, %ymm7
173
+ vpshufb %ymm6, %ymm7, %ymm7
174
+ vextracti128 $0x1, %ymm7, %xmm8
175
+ vpblendvb %xmm6, %xmm8, %xmm7, %xmm7
176
+ vmovdqu %xmm7, 0x64(%rdi)
177
+ vmovd %xmm8, 0x74(%rdi)
178
+ vmovdqa 0x180(%rsi), %ymm7
179
+ vmovdqa 0x1a0(%rsi), %ymm8
180
+ vpmulhw %ymm0, %ymm7, %ymm7
181
+ vpmulhw %ymm0, %ymm8, %ymm8
182
+ vpmulhrsw %ymm1, %ymm7, %ymm7
183
+ vpmulhrsw %ymm1, %ymm8, %ymm8
184
+ vpand %ymm2, %ymm7, %ymm7
185
+ vpand %ymm2, %ymm8, %ymm8
186
+ vpackuswb %ymm8, %ymm7, %ymm7
187
+ vpmaddubsw %ymm3, %ymm7, %ymm7
188
+ vpmaddwd %ymm4, %ymm7, %ymm7
189
+ vpsllvd %ymm5, %ymm7, %ymm7
190
+ vpsrlvq %ymm5, %ymm7, %ymm7
191
+ vpshufb %ymm6, %ymm7, %ymm7
192
+ vextracti128 $0x1, %ymm7, %xmm8
193
+ vpblendvb %xmm6, %xmm8, %xmm7, %xmm7
194
+ vmovdqu %xmm7, 0x78(%rdi)
195
+ vmovd %xmm8, 0x88(%rdi)
196
+ vmovdqa 0x1c0(%rsi), %ymm7
197
+ vmovdqa 0x1e0(%rsi), %ymm8
198
+ vpmulhw %ymm0, %ymm7, %ymm7
199
+ vpmulhw %ymm0, %ymm8, %ymm8
200
+ vpmulhrsw %ymm1, %ymm7, %ymm7
201
+ vpmulhrsw %ymm1, %ymm8, %ymm8
202
+ vpand %ymm2, %ymm7, %ymm7
203
+ vpand %ymm2, %ymm8, %ymm8
204
+ vpackuswb %ymm8, %ymm7, %ymm7
205
+ vpmaddubsw %ymm3, %ymm7, %ymm7
206
+ vpmaddwd %ymm4, %ymm7, %ymm7
207
+ vpsllvd %ymm5, %ymm7, %ymm7
208
+ vpsrlvq %ymm5, %ymm7, %ymm7
209
+ vpshufb %ymm6, %ymm7, %ymm7
210
+ vextracti128 $0x1, %ymm7, %xmm8
211
+ vpblendvb %xmm6, %xmm8, %xmm7, %xmm7
212
+ vmovdqu %xmm7, 0x8c(%rdi)
213
+ vmovd %xmm8, 0x9c(%rdi)
214
+ retq
215
+ .cfi_endproc
216
+
217
+ MLK_ASM_FN_SIZE(poly_compress_d5_avx2)
218
+
219
+ #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
220
+ && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */
@@ -0,0 +1,228 @@
1
+ /*
2
+ * Copyright (c) The mlkem-native project authors
3
+ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
4
+ */
5
+
6
+ /* References
7
+ * ==========
8
+ *
9
+ * - [REF_AVX2]
10
+ * CRYSTALS-Kyber optimized AVX2 implementation
11
+ * Bos, Ducas, Kiltz, Lepoint, Lyubashevsky, Schanck, Schwabe, Seiler, Stehlé
12
+ * https://github.com/pq-crystals/kyber/tree/main/avx2
13
+ */
14
+
15
+ /*
16
+ * This file is derived from the public domain
17
+ * AVX2 Kyber implementation @[REF_AVX2].
18
+ */
19
+
20
+ /*************************************************
21
+ * Name: mlk_poly_decompress_d10_avx2
22
+ *
23
+ * Description: Decompression of a polynomial from 10 bits per coefficient.
24
+ *
25
+ * Arguments: - int16_t *r: pointer to output polynomial
26
+ * - const uint8_t *a: pointer to input byte array
27
+ * (of length MLKEM_POLYCOMPRESSEDBYTES_D10)
28
+ * - const uint8_t *data: pointer to shufbidx constant
29
+ **************************************************/
30
+
31
+ #include "../../../common.h"
32
+ #if defined(MLK_ARITH_BACKEND_X86_64_DEFAULT) && \
33
+ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && \
34
+ (defined(MLK_CONFIG_MULTILEVEL_WITH_SHARED) || MLKEM_K == 2 || MLKEM_K == 3)
35
+
36
+ /*
37
+ * WARNING: This file is auto-derived from the mlkem-native source file
38
+ * dev/x86_64/src/poly_decompress_d10.S using scripts/simpasm. Do not modify it directly.
39
+ */
40
+
41
+ #if defined(__ELF__)
42
+ .section .note.GNU-stack,"",@progbits
43
+ #endif
44
+
45
+ .text
46
+ .balign 4
47
+ .global MLK_ASM_NAMESPACE(poly_decompress_d10_avx2)
48
+ MLK_ASM_FN_SYMBOL(poly_decompress_d10_avx2)
49
+
50
+ .cfi_startproc
51
+ movl $0xd013404, %eax # imm = 0xD013404
52
+ vmovd %eax, %xmm0
53
+ vpbroadcastd %xmm0, %ymm0
54
+ movl $0x4, %eax
55
+ vmovq %rax, %xmm1
56
+ vpbroadcastq %xmm1, %ymm1
57
+ movl $0x7fe01ff8, %eax # imm = 0x7FE01FF8
58
+ vmovd %eax, %xmm2
59
+ vpbroadcastd %xmm2, %ymm2
60
+ vmovdqa (%rdx), %ymm3
61
+ vmovdqu (%rsi), %xmm4
62
+ vmovd 0x10(%rsi), %xmm5
63
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
64
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
65
+ vpshufb %ymm3, %ymm4, %ymm4
66
+ vpsllvd %ymm1, %ymm4, %ymm4
67
+ vpsrlw $0x1, %ymm4, %ymm4
68
+ vpand %ymm2, %ymm4, %ymm4
69
+ vpmulhrsw %ymm0, %ymm4, %ymm4
70
+ vmovdqu %ymm4, (%rdi)
71
+ vmovdqu 0x14(%rsi), %xmm4
72
+ vmovd 0x24(%rsi), %xmm5
73
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
74
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
75
+ vpshufb %ymm3, %ymm4, %ymm4
76
+ vpsllvd %ymm1, %ymm4, %ymm4
77
+ vpsrlw $0x1, %ymm4, %ymm4
78
+ vpand %ymm2, %ymm4, %ymm4
79
+ vpmulhrsw %ymm0, %ymm4, %ymm4
80
+ vmovdqu %ymm4, 0x20(%rdi)
81
+ vmovdqu 0x28(%rsi), %xmm4
82
+ vmovd 0x38(%rsi), %xmm5
83
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
84
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
85
+ vpshufb %ymm3, %ymm4, %ymm4
86
+ vpsllvd %ymm1, %ymm4, %ymm4
87
+ vpsrlw $0x1, %ymm4, %ymm4
88
+ vpand %ymm2, %ymm4, %ymm4
89
+ vpmulhrsw %ymm0, %ymm4, %ymm4
90
+ vmovdqu %ymm4, 0x40(%rdi)
91
+ vmovdqu 0x3c(%rsi), %xmm4
92
+ vmovd 0x4c(%rsi), %xmm5
93
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
94
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
95
+ vpshufb %ymm3, %ymm4, %ymm4
96
+ vpsllvd %ymm1, %ymm4, %ymm4
97
+ vpsrlw $0x1, %ymm4, %ymm4
98
+ vpand %ymm2, %ymm4, %ymm4
99
+ vpmulhrsw %ymm0, %ymm4, %ymm4
100
+ vmovdqu %ymm4, 0x60(%rdi)
101
+ vmovdqu 0x50(%rsi), %xmm4
102
+ vmovd 0x60(%rsi), %xmm5
103
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
104
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
105
+ vpshufb %ymm3, %ymm4, %ymm4
106
+ vpsllvd %ymm1, %ymm4, %ymm4
107
+ vpsrlw $0x1, %ymm4, %ymm4
108
+ vpand %ymm2, %ymm4, %ymm4
109
+ vpmulhrsw %ymm0, %ymm4, %ymm4
110
+ vmovdqu %ymm4, 0x80(%rdi)
111
+ vmovdqu 0x64(%rsi), %xmm4
112
+ vmovd 0x74(%rsi), %xmm5
113
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
114
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
115
+ vpshufb %ymm3, %ymm4, %ymm4
116
+ vpsllvd %ymm1, %ymm4, %ymm4
117
+ vpsrlw $0x1, %ymm4, %ymm4
118
+ vpand %ymm2, %ymm4, %ymm4
119
+ vpmulhrsw %ymm0, %ymm4, %ymm4
120
+ vmovdqu %ymm4, 0xa0(%rdi)
121
+ vmovdqu 0x78(%rsi), %xmm4
122
+ vmovd 0x88(%rsi), %xmm5
123
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
124
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
125
+ vpshufb %ymm3, %ymm4, %ymm4
126
+ vpsllvd %ymm1, %ymm4, %ymm4
127
+ vpsrlw $0x1, %ymm4, %ymm4
128
+ vpand %ymm2, %ymm4, %ymm4
129
+ vpmulhrsw %ymm0, %ymm4, %ymm4
130
+ vmovdqu %ymm4, 0xc0(%rdi)
131
+ vmovdqu 0x8c(%rsi), %xmm4
132
+ vmovd 0x9c(%rsi), %xmm5
133
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
134
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
135
+ vpshufb %ymm3, %ymm4, %ymm4
136
+ vpsllvd %ymm1, %ymm4, %ymm4
137
+ vpsrlw $0x1, %ymm4, %ymm4
138
+ vpand %ymm2, %ymm4, %ymm4
139
+ vpmulhrsw %ymm0, %ymm4, %ymm4
140
+ vmovdqu %ymm4, 0xe0(%rdi)
141
+ vmovdqu 0xa0(%rsi), %xmm4
142
+ vmovd 0xb0(%rsi), %xmm5
143
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
144
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
145
+ vpshufb %ymm3, %ymm4, %ymm4
146
+ vpsllvd %ymm1, %ymm4, %ymm4
147
+ vpsrlw $0x1, %ymm4, %ymm4
148
+ vpand %ymm2, %ymm4, %ymm4
149
+ vpmulhrsw %ymm0, %ymm4, %ymm4
150
+ vmovdqu %ymm4, 0x100(%rdi)
151
+ vmovdqu 0xb4(%rsi), %xmm4
152
+ vmovd 0xc4(%rsi), %xmm5
153
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
154
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
155
+ vpshufb %ymm3, %ymm4, %ymm4
156
+ vpsllvd %ymm1, %ymm4, %ymm4
157
+ vpsrlw $0x1, %ymm4, %ymm4
158
+ vpand %ymm2, %ymm4, %ymm4
159
+ vpmulhrsw %ymm0, %ymm4, %ymm4
160
+ vmovdqu %ymm4, 0x120(%rdi)
161
+ vmovdqu 0xc8(%rsi), %xmm4
162
+ vmovd 0xd8(%rsi), %xmm5
163
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
164
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
165
+ vpshufb %ymm3, %ymm4, %ymm4
166
+ vpsllvd %ymm1, %ymm4, %ymm4
167
+ vpsrlw $0x1, %ymm4, %ymm4
168
+ vpand %ymm2, %ymm4, %ymm4
169
+ vpmulhrsw %ymm0, %ymm4, %ymm4
170
+ vmovdqu %ymm4, 0x140(%rdi)
171
+ vmovdqu 0xdc(%rsi), %xmm4
172
+ vmovd 0xec(%rsi), %xmm5
173
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
174
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
175
+ vpshufb %ymm3, %ymm4, %ymm4
176
+ vpsllvd %ymm1, %ymm4, %ymm4
177
+ vpsrlw $0x1, %ymm4, %ymm4
178
+ vpand %ymm2, %ymm4, %ymm4
179
+ vpmulhrsw %ymm0, %ymm4, %ymm4
180
+ vmovdqu %ymm4, 0x160(%rdi)
181
+ vmovdqu 0xf0(%rsi), %xmm4
182
+ vmovd 0x100(%rsi), %xmm5
183
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
184
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
185
+ vpshufb %ymm3, %ymm4, %ymm4
186
+ vpsllvd %ymm1, %ymm4, %ymm4
187
+ vpsrlw $0x1, %ymm4, %ymm4
188
+ vpand %ymm2, %ymm4, %ymm4
189
+ vpmulhrsw %ymm0, %ymm4, %ymm4
190
+ vmovdqu %ymm4, 0x180(%rdi)
191
+ vmovdqu 0x104(%rsi), %xmm4
192
+ vmovd 0x114(%rsi), %xmm5
193
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
194
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
195
+ vpshufb %ymm3, %ymm4, %ymm4
196
+ vpsllvd %ymm1, %ymm4, %ymm4
197
+ vpsrlw $0x1, %ymm4, %ymm4
198
+ vpand %ymm2, %ymm4, %ymm4
199
+ vpmulhrsw %ymm0, %ymm4, %ymm4
200
+ vmovdqu %ymm4, 0x1a0(%rdi)
201
+ vmovdqu 0x118(%rsi), %xmm4
202
+ vmovd 0x128(%rsi), %xmm5
203
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
204
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
205
+ vpshufb %ymm3, %ymm4, %ymm4
206
+ vpsllvd %ymm1, %ymm4, %ymm4
207
+ vpsrlw $0x1, %ymm4, %ymm4
208
+ vpand %ymm2, %ymm4, %ymm4
209
+ vpmulhrsw %ymm0, %ymm4, %ymm4
210
+ vmovdqu %ymm4, 0x1c0(%rdi)
211
+ vmovdqu 0x12c(%rsi), %xmm4
212
+ vmovd 0x13c(%rsi), %xmm5
213
+ vinserti128 $0x1, %xmm5, %ymm4, %ymm4
214
+ vpermq $0x94, %ymm4, %ymm4 # ymm4 = ymm4[0,1,1,2]
215
+ vpshufb %ymm3, %ymm4, %ymm4
216
+ vpsllvd %ymm1, %ymm4, %ymm4
217
+ vpsrlw $0x1, %ymm4, %ymm4
218
+ vpand %ymm2, %ymm4, %ymm4
219
+ vpmulhrsw %ymm0, %ymm4, %ymm4
220
+ vmovdqu %ymm4, 0x1e0(%rdi)
221
+ retq
222
+ .cfi_endproc
223
+
224
+ MLK_ASM_FN_SIZE(poly_decompress_d10_avx2)
225
+
226
+ #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
227
+ && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2 || MLKEM_K == \
228
+ 3) */