pq_crypto 0.6.4 → 0.6.6

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 (213) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +180 -0
  3. data/README.md +7 -0
  4. data/ext/pqcrypto/extconf.rb +4 -1
  5. data/ext/pqcrypto/pq_externalmu.c +35 -0
  6. data/ext/pqcrypto/pqcrypto_native_api.h +85 -75
  7. data/ext/pqcrypto/pqcrypto_ruby_secure.c +16 -9
  8. data/ext/pqcrypto/pqcrypto_secure.c +43 -33
  9. data/ext/pqcrypto/pqcrypto_secure.h +52 -47
  10. data/ext/pqcrypto/pqcrypto_version.h +1 -1
  11. data/ext/pqcrypto/vendor/.vendored +7 -7
  12. data/ext/pqcrypto/vendor/mldsa-native/BUILDING.md +5 -2
  13. data/ext/pqcrypto/vendor/mldsa-native/LICENSE +21 -2
  14. data/ext/pqcrypto/vendor/mldsa-native/README.md +20 -7
  15. data/ext/pqcrypto/vendor/mldsa-native/RELEASE.md +160 -0
  16. data/ext/pqcrypto/vendor/mldsa-native/SECURITY.md +1 -1
  17. data/ext/pqcrypto/vendor/mldsa-native/mldsa/README.md +2 -2
  18. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.c +85 -59
  19. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native.h +292 -348
  20. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_asm.S +122 -76
  21. data/ext/pqcrypto/vendor/mldsa-native/mldsa/mldsa_native_config.h +184 -86
  22. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/cbmc.h +49 -4
  23. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/common.h +49 -81
  24. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/context.h +152 -0
  25. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/ct.h +25 -12
  26. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.c +2 -0
  27. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/debug.h +2 -0
  28. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/fips202x4.c +2 -2
  29. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/keccakf1600.c +9 -11
  30. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/auto.h +19 -11
  31. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S +6 -4
  32. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S +7 -4
  33. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S +7 -4
  34. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S +12 -9
  35. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S +12 -9
  36. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_scalar.h +1 -1
  37. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x1_v84a.h +3 -2
  38. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x2_v84a.h +3 -2
  39. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_scalar.h +6 -1
  40. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +3 -2
  41. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/api.h +11 -11
  42. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/mve.h +9 -22
  43. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +8 -5
  44. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.c +1 -0
  45. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/{state_extract_bytes_x4_mve.S → keccak_f1600_x4_state_extract_bytes_mve.S} +14 -14
  46. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/armv81m/src/{state_xor_bytes_x4_mve.S → keccak_f1600_x4_state_xor_bytes_mve.S} +12 -12
  47. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/auto.h +5 -4
  48. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h +2 -2
  49. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/fips202_native_x86_64.h +1 -0
  50. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S +36 -2
  51. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/meta.h +62 -4
  52. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/arith_native_aarch64.h +87 -54
  53. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{intt_aarch64_asm.S → mldsa_intt_aarch64_asm.S} +39 -6
  54. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{ntt_aarch64_asm.S → mldsa_ntt_aarch64_asm.S} +39 -6
  55. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{pointwise_montgomery_aarch64_asm.S → mldsa_pointwise_montgomery_aarch64_asm.S} +25 -3
  56. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{poly_caddq_aarch64_asm.S → mldsa_poly_caddq_aarch64_asm.S} +19 -3
  57. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{poly_chknorm_aarch64_asm.S → mldsa_poly_chknorm_aarch64_asm.S} +24 -3
  58. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{poly_decompose_32_aarch64_asm.S → mldsa_poly_decompose_32_aarch64_asm.S} +25 -3
  59. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{poly_decompose_88_aarch64_asm.S → mldsa_poly_decompose_88_aarch64_asm.S} +25 -3
  60. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{poly_use_hint_32_aarch64_asm.S → mldsa_poly_use_hint_32_aarch64_asm.S} +25 -3
  61. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{poly_use_hint_88_aarch64_asm.S → mldsa_poly_use_hint_88_aarch64_asm.S} +25 -3
  62. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{mld_polyvecl_pointwise_acc_montgomery_l4_aarch64_asm.S → mldsa_polyvecl_pointwise_acc_montgomery_l4_aarch64_asm.S} +31 -3
  63. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{mld_polyvecl_pointwise_acc_montgomery_l5_aarch64_asm.S → mldsa_polyvecl_pointwise_acc_montgomery_l5_aarch64_asm.S} +31 -3
  64. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{mld_polyvecl_pointwise_acc_montgomery_l7_aarch64_asm.S → mldsa_polyvecl_pointwise_acc_montgomery_l7_aarch64_asm.S} +31 -3
  65. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{polyz_unpack_17_aarch64_asm.S → mldsa_polyz_unpack_17_aarch64_asm.S} +31 -3
  66. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{polyz_unpack_19_aarch64_asm.S → mldsa_polyz_unpack_19_aarch64_asm.S} +31 -3
  67. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{rej_uniform_aarch64_asm.S → mldsa_rej_uniform_aarch64_asm.S} +48 -15
  68. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{rej_uniform_eta2_aarch64_asm.S → mldsa_rej_uniform_eta2_aarch64_asm.S} +42 -9
  69. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/aarch64/src/{rej_uniform_eta4_aarch64_asm.S → mldsa_rej_uniform_eta4_aarch64_asm.S} +42 -9
  70. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/api.h +11 -3
  71. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/meta.h +3 -2
  72. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/meta.h +28 -28
  73. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/arith_native_x86_64.h +171 -49
  74. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/{intt_avx2_asm.S → mldsa_intt_avx2_asm.S} +23 -1
  75. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/{ntt_avx2_asm.S → mldsa_ntt_avx2_asm.S} +23 -1
  76. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/{nttunpack_avx2_asm.S → mldsa_nttunpack_avx2_asm.S} +17 -1
  77. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/{pointwise_acc_l4_avx2_asm.S → mldsa_pointwise_acc_l4_avx2_asm.S} +37 -3
  78. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/{pointwise_acc_l5_avx2_asm.S → mldsa_pointwise_acc_l5_avx2_asm.S} +37 -3
  79. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/{pointwise_acc_l7_avx2_asm.S → mldsa_pointwise_acc_l7_avx2_asm.S} +37 -3
  80. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/{pointwise_avx2_asm.S → mldsa_pointwise_avx2_asm.S} +31 -3
  81. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/{poly_caddq_avx2_asm.S → mldsa_poly_caddq_avx2_asm.S} +18 -9
  82. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_chknorm_avx2_asm.S +176 -0
  83. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_decompose_32_avx2_asm.S +490 -0
  84. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_decompose_88_avx2_asm.S +489 -0
  85. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_use_hint_32_avx2_asm.S +123 -0
  86. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_poly_use_hint_88_avx2_asm.S +125 -0
  87. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_polyz_unpack_17_avx2_asm.S +355 -0
  88. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_polyz_unpack_19_avx2_asm.S +355 -0
  89. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_rej_uniform_avx2_asm.S +132 -0
  90. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_rej_uniform_eta2_avx2_asm.S +205 -0
  91. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/mldsa_rej_uniform_eta4_avx2_asm.S +176 -0
  92. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.c +27 -36
  93. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/packing.h +42 -8
  94. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/params.h +93 -17
  95. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.c +74 -15
  96. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly.h +97 -11
  97. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.c +7 -38
  98. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/poly_kl.h +49 -7
  99. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.c +16 -17
  100. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec.h +26 -9
  101. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec_lazy.c +3 -0
  102. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/polyvec_lazy.h +18 -19
  103. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/reduce.h +15 -3
  104. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/rounding.h +28 -6
  105. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.c +311 -246
  106. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sign.h +245 -240
  107. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/sys.h +64 -5
  108. data/ext/pqcrypto/vendor/mlkem-native/BUILDING.md +5 -2
  109. data/ext/pqcrypto/vendor/mlkem-native/LICENSE +21 -3
  110. data/ext/pqcrypto/vendor/mlkem-native/README.md +4 -6
  111. data/ext/pqcrypto/vendor/mlkem-native/RELEASE.md +211 -0
  112. data/ext/pqcrypto/vendor/mlkem-native/mlkem/README.md +2 -2
  113. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.c +25 -34
  114. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.h +79 -142
  115. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_asm.S +62 -71
  116. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_config.h +77 -39
  117. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/cbmc.h +25 -0
  118. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/common.h +48 -34
  119. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.c +25 -5
  120. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.h +14 -0
  121. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/context.h +51 -0
  122. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.h +2 -2
  123. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.c +8 -8
  124. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/auto.h +20 -12
  125. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_scalar_aarch64_asm.S +5 -3
  126. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x1_v84a_aarch64_asm.S +5 -2
  127. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x2_v84a_aarch64_asm.S +5 -2
  128. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S +10 -7
  129. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S +10 -7
  130. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_scalar.h +1 -1
  131. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_v84a.h +3 -2
  132. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x2_v84a.h +3 -2
  133. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_scalar.h +6 -1
  134. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +3 -2
  135. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/api.h +11 -11
  136. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/mve.h +8 -22
  137. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +8 -5
  138. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/{state_extract_bytes_x4_mve.S → keccak_f1600_x4_state_extract_bytes_mve.S} +14 -14
  139. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/{state_xor_bytes_x4_mve.S → keccak_f1600_x4_state_xor_bytes_mve.S} +12 -12
  140. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h +2 -2
  141. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccak_f1600_x4_avx2_asm.S +36 -2
  142. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.c +22 -0
  143. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.h +20 -11
  144. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.c +39 -11
  145. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.h +64 -15
  146. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/meta.h +44 -2
  147. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/aarch64_zetas.c +2 -0
  148. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/arith_native_aarch64.h +11 -10
  149. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{intt_aarch64_asm.S → mlkem_intt_aarch64_asm.S} +16 -9
  150. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{ntt_aarch64_asm.S → mlkem_ntt_aarch64_asm.S} +10 -7
  151. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_mulcache_compute_aarch64_asm.S → mlkem_poly_mulcache_compute_aarch64_asm.S} +6 -3
  152. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_reduce_aarch64_asm.S → mlkem_poly_reduce_aarch64_asm.S} +6 -3
  153. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_tobytes_aarch64_asm.S → mlkem_poly_tobytes_aarch64_asm.S} +12 -5
  154. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_tomont_aarch64_asm.S → mlkem_poly_tomont_aarch64_asm.S} +11 -5
  155. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S → mlkem_polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S} +6 -3
  156. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S → mlkem_polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S} +6 -3
  157. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S → mlkem_polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S} +6 -3
  158. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{rej_uniform_aarch64_asm.S → mlkem_rej_uniform_aarch64_asm.S} +17 -17
  159. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/api.h +21 -8
  160. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/meta.h +1 -1
  161. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/meta.h +4 -0
  162. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/{intt_ppc_asm.S → mlkem_intt_ppc_asm.S} +29 -5
  163. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/{ntt_ppc_asm.S → mlkem_ntt_ppc_asm.S} +22 -1
  164. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/{poly_tomont_ppc_asm.S → mlkem_poly_tomont_ppc_asm.S} +25 -3
  165. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/{reduce_ppc_asm.S → mlkem_reduce_ppc_asm.S} +22 -1
  166. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/meta.h +4 -0
  167. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/arith_native_riscv64.h +4 -0
  168. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_poly.c +6 -2
  169. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/meta.h +45 -25
  170. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/arith_native_x86_64.h +20 -20
  171. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.c +14 -3
  172. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.h +8 -0
  173. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{intt_avx2_asm.S → mlkem_intt_avx2_asm.S} +27 -3
  174. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{ntt_avx2_asm.S → mlkem_ntt_avx2_asm.S} +23 -1
  175. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{nttfrombytes_avx2_asm.S → mlkem_nttfrombytes_avx2_asm.S} +27 -3
  176. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{ntttobytes_avx2_asm.S → mlkem_ntttobytes_avx2_asm.S} +27 -3
  177. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{nttunpack_avx2_asm.S → mlkem_nttunpack_avx2_asm.S} +17 -1
  178. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d10_avx2_asm.S → mlkem_poly_compress_d10_avx2_asm.S} +34 -3
  179. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d11_avx2_asm.S → mlkem_poly_compress_d11_avx2_asm.S} +33 -2
  180. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d4_avx2_asm.S → mlkem_poly_compress_d4_avx2_asm.S} +34 -3
  181. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d5_avx2_asm.S → mlkem_poly_compress_d5_avx2_asm.S} +33 -2
  182. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d10_avx2_asm.S → mlkem_poly_decompress_d10_avx2_asm.S} +32 -3
  183. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d11_avx2_asm.S → mlkem_poly_decompress_d11_avx2_asm.S} +32 -2
  184. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d4_avx2_asm.S → mlkem_poly_decompress_d4_avx2_asm.S} +32 -3
  185. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d5_avx2_asm.S → mlkem_poly_decompress_d5_avx2_asm.S} +32 -2
  186. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_mulcache_compute_avx2_asm.S → mlkem_poly_mulcache_compute_avx2_asm.S} +29 -1
  187. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S → mlkem_polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S} +35 -1
  188. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S → mlkem_polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S} +35 -1
  189. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S → mlkem_polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S} +35 -1
  190. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{reduce_avx2_asm.S → mlkem_reduce_avx2_asm.S} +17 -1
  191. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{rej_uniform_avx2_asm.S → mlkem_rej_uniform_avx2_asm.S} +40 -7
  192. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{tomont_avx2_asm.S → mlkem_tomont_avx2_asm.S} +20 -3
  193. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.c +7 -2
  194. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.h +6 -0
  195. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.c +25 -4
  196. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.h +33 -4
  197. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.c +4 -0
  198. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.h +4 -0
  199. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sys.h +21 -3
  200. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.h +11 -10
  201. data/lib/pq_crypto/version.rb +1 -1
  202. data/script/vendor_libs.rb +6 -6
  203. metadata +79 -79
  204. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_chknorm_avx2.c +0 -52
  205. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_32_avx2.c +0 -157
  206. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_decompose_88_avx2.c +0 -157
  207. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_32_avx2.c +0 -103
  208. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/poly_use_hint_88_avx2.c +0 -105
  209. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_17_avx2.c +0 -94
  210. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/polyz_unpack_19_avx2.c +0 -96
  211. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_avx2.c +0 -126
  212. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta2_avx2.c +0 -157
  213. data/ext/pqcrypto/vendor/mldsa-native/mldsa/src/native/x86_64/src/rej_uniform_eta4_avx2.c +0 -141
@@ -0,0 +1,490 @@
1
+ /*
2
+ * Copyright (c) The mldsa-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-Dilithium optimized AVX2 implementation
11
+ * Bai, Ducas, Kiltz, Lepoint, Lyubashevsky, Schwabe, Seiler, Stehlé
12
+ * https://github.com/pq-crystals/dilithium/tree/master/avx2
13
+ */
14
+
15
+ /*
16
+ * This file is derived from the public domain
17
+ * AVX2 Dilithium implementation @[REF_AVX2].
18
+ *
19
+ * The algorithm for Decompose(r) (more specifically the handling for the
20
+ * wrap-around cases) is modified. See the AVX2 intrinsics version
21
+ * (poly_decompose_32_avx2.c, predecessor of this file) for a more detailed
22
+ * comparison.
23
+ */
24
+
25
+
26
+ /*yaml
27
+ Name: poly_decompose_32_avx2_asm
28
+ Description: x86_64 AVX2 coefficient decomposition (alpha = 2*(Q-1)/32).
29
+ For all coefficients c of the input polynomial, compute high and low bits
30
+ c0, c1 such that c = c1*ALPHA + c0 with -ALPHA/2 < c0 <= ALPHA/2, except if
31
+ c1 = (Q-1)/ALPHA where we set c1 = 0 and -ALPHA/2 <= c0 = c - Q < 0.
32
+ Assumes coefficients to be standard (unsigned canonical) representatives,
33
+ i.e. 0 <= c < Q. For ML-DSA-65 / ML-DSA-87 (gamma2 = (Q-1)/32,
34
+ alpha = 2*gamma2).
35
+ Signature: void mld_poly_decompose_32_avx2_asm(int32_t *a1, int32_t *a0)
36
+ ABI:
37
+ Architecture: x86_64
38
+ CallingConvention: SysV
39
+ Features: [AVX2]
40
+ rdi:
41
+ type: buffer
42
+ size_bytes: 1024
43
+ permissions: write-only
44
+ c_parameter: int32_t *a1
45
+ description: Output high-part polynomial (256 x int32_t)
46
+ rsi:
47
+ type: buffer
48
+ size_bytes: 1024
49
+ permissions: read/write
50
+ c_parameter: int32_t *a0
51
+ description: Input polynomial / output low-part (256 x int32_t)
52
+ */
53
+
54
+ #include "../../../common.h"
55
+
56
+ #if defined(MLD_ARITH_BACKEND_X86_64_DEFAULT) && \
57
+ !defined(MLD_CONFIG_NO_SIGN_API) && \
58
+ !defined(MLD_CONFIG_MULTILEVEL_NO_SHARED) && \
59
+ (defined(MLD_CONFIG_MULTILEVEL_WITH_SHARED) || \
60
+ (MLD_CONFIG_PARAMETER_SET == 65 || MLD_CONFIG_PARAMETER_SET == 87))
61
+
62
+
63
+ /*
64
+ * WARNING: This file is auto-derived from the mldsa-native source file
65
+ * dev/x86_64/src/mldsa_poly_decompose_32_avx2_asm.S using scripts/simpasm. Do not modify it directly.
66
+ */
67
+
68
+ .text
69
+ .balign 4
70
+ .global MLD_ASM_NAMESPACE(poly_decompose_32_avx2_asm)
71
+ MLD_ASM_FN_SYMBOL(poly_decompose_32_avx2_asm)
72
+
73
+ .cfi_startproc
74
+ movl $0x7f, %eax
75
+ vmovd %eax, %xmm10
76
+ vpbroadcastd %xmm10, %ymm10
77
+ movl $0x401, %eax # imm = 0x401
78
+ vmovd %eax, %xmm11
79
+ vpbroadcastd %xmm11, %ymm11
80
+ movl $0x200, %eax # imm = 0x200
81
+ vmovd %eax, %xmm12
82
+ vpbroadcastd %xmm12, %ymm12
83
+ movl $0x7be100, %eax # imm = 0x7BE100
84
+ vmovd %eax, %xmm13
85
+ vpbroadcastd %xmm13, %ymm13
86
+ movl $0x7fe00, %eax # imm = 0x7FE00
87
+ vmovd %eax, %xmm14
88
+ vpbroadcastd %xmm14, %ymm14
89
+ vmovdqa (%rsi), %ymm0
90
+ vpaddd %ymm10, %ymm0, %ymm1
91
+ vpsrld $0x7, %ymm1, %ymm1
92
+ vpmulhuw %ymm11, %ymm1, %ymm1
93
+ vpmulhrsw %ymm12, %ymm1, %ymm1
94
+ vpcmpgtd %ymm13, %ymm0, %ymm3
95
+ vpmulld %ymm14, %ymm1, %ymm2
96
+ vpsubd %ymm2, %ymm0, %ymm2
97
+ vpandn %ymm1, %ymm3, %ymm1
98
+ vpaddd %ymm3, %ymm2, %ymm2
99
+ vmovdqa %ymm1, (%rdi)
100
+ vmovdqa %ymm2, (%rsi)
101
+ vmovdqa 0x20(%rsi), %ymm0
102
+ vpaddd %ymm10, %ymm0, %ymm1
103
+ vpsrld $0x7, %ymm1, %ymm1
104
+ vpmulhuw %ymm11, %ymm1, %ymm1
105
+ vpmulhrsw %ymm12, %ymm1, %ymm1
106
+ vpcmpgtd %ymm13, %ymm0, %ymm3
107
+ vpmulld %ymm14, %ymm1, %ymm2
108
+ vpsubd %ymm2, %ymm0, %ymm2
109
+ vpandn %ymm1, %ymm3, %ymm1
110
+ vpaddd %ymm3, %ymm2, %ymm2
111
+ vmovdqa %ymm1, 0x20(%rdi)
112
+ vmovdqa %ymm2, 0x20(%rsi)
113
+ vmovdqa 0x40(%rsi), %ymm0
114
+ vpaddd %ymm10, %ymm0, %ymm1
115
+ vpsrld $0x7, %ymm1, %ymm1
116
+ vpmulhuw %ymm11, %ymm1, %ymm1
117
+ vpmulhrsw %ymm12, %ymm1, %ymm1
118
+ vpcmpgtd %ymm13, %ymm0, %ymm3
119
+ vpmulld %ymm14, %ymm1, %ymm2
120
+ vpsubd %ymm2, %ymm0, %ymm2
121
+ vpandn %ymm1, %ymm3, %ymm1
122
+ vpaddd %ymm3, %ymm2, %ymm2
123
+ vmovdqa %ymm1, 0x40(%rdi)
124
+ vmovdqa %ymm2, 0x40(%rsi)
125
+ vmovdqa 0x60(%rsi), %ymm0
126
+ vpaddd %ymm10, %ymm0, %ymm1
127
+ vpsrld $0x7, %ymm1, %ymm1
128
+ vpmulhuw %ymm11, %ymm1, %ymm1
129
+ vpmulhrsw %ymm12, %ymm1, %ymm1
130
+ vpcmpgtd %ymm13, %ymm0, %ymm3
131
+ vpmulld %ymm14, %ymm1, %ymm2
132
+ vpsubd %ymm2, %ymm0, %ymm2
133
+ vpandn %ymm1, %ymm3, %ymm1
134
+ vpaddd %ymm3, %ymm2, %ymm2
135
+ vmovdqa %ymm1, 0x60(%rdi)
136
+ vmovdqa %ymm2, 0x60(%rsi)
137
+ vmovdqa 0x80(%rsi), %ymm0
138
+ vpaddd %ymm10, %ymm0, %ymm1
139
+ vpsrld $0x7, %ymm1, %ymm1
140
+ vpmulhuw %ymm11, %ymm1, %ymm1
141
+ vpmulhrsw %ymm12, %ymm1, %ymm1
142
+ vpcmpgtd %ymm13, %ymm0, %ymm3
143
+ vpmulld %ymm14, %ymm1, %ymm2
144
+ vpsubd %ymm2, %ymm0, %ymm2
145
+ vpandn %ymm1, %ymm3, %ymm1
146
+ vpaddd %ymm3, %ymm2, %ymm2
147
+ vmovdqa %ymm1, 0x80(%rdi)
148
+ vmovdqa %ymm2, 0x80(%rsi)
149
+ vmovdqa 0xa0(%rsi), %ymm0
150
+ vpaddd %ymm10, %ymm0, %ymm1
151
+ vpsrld $0x7, %ymm1, %ymm1
152
+ vpmulhuw %ymm11, %ymm1, %ymm1
153
+ vpmulhrsw %ymm12, %ymm1, %ymm1
154
+ vpcmpgtd %ymm13, %ymm0, %ymm3
155
+ vpmulld %ymm14, %ymm1, %ymm2
156
+ vpsubd %ymm2, %ymm0, %ymm2
157
+ vpandn %ymm1, %ymm3, %ymm1
158
+ vpaddd %ymm3, %ymm2, %ymm2
159
+ vmovdqa %ymm1, 0xa0(%rdi)
160
+ vmovdqa %ymm2, 0xa0(%rsi)
161
+ vmovdqa 0xc0(%rsi), %ymm0
162
+ vpaddd %ymm10, %ymm0, %ymm1
163
+ vpsrld $0x7, %ymm1, %ymm1
164
+ vpmulhuw %ymm11, %ymm1, %ymm1
165
+ vpmulhrsw %ymm12, %ymm1, %ymm1
166
+ vpcmpgtd %ymm13, %ymm0, %ymm3
167
+ vpmulld %ymm14, %ymm1, %ymm2
168
+ vpsubd %ymm2, %ymm0, %ymm2
169
+ vpandn %ymm1, %ymm3, %ymm1
170
+ vpaddd %ymm3, %ymm2, %ymm2
171
+ vmovdqa %ymm1, 0xc0(%rdi)
172
+ vmovdqa %ymm2, 0xc0(%rsi)
173
+ vmovdqa 0xe0(%rsi), %ymm0
174
+ vpaddd %ymm10, %ymm0, %ymm1
175
+ vpsrld $0x7, %ymm1, %ymm1
176
+ vpmulhuw %ymm11, %ymm1, %ymm1
177
+ vpmulhrsw %ymm12, %ymm1, %ymm1
178
+ vpcmpgtd %ymm13, %ymm0, %ymm3
179
+ vpmulld %ymm14, %ymm1, %ymm2
180
+ vpsubd %ymm2, %ymm0, %ymm2
181
+ vpandn %ymm1, %ymm3, %ymm1
182
+ vpaddd %ymm3, %ymm2, %ymm2
183
+ vmovdqa %ymm1, 0xe0(%rdi)
184
+ vmovdqa %ymm2, 0xe0(%rsi)
185
+ vmovdqa 0x100(%rsi), %ymm0
186
+ vpaddd %ymm10, %ymm0, %ymm1
187
+ vpsrld $0x7, %ymm1, %ymm1
188
+ vpmulhuw %ymm11, %ymm1, %ymm1
189
+ vpmulhrsw %ymm12, %ymm1, %ymm1
190
+ vpcmpgtd %ymm13, %ymm0, %ymm3
191
+ vpmulld %ymm14, %ymm1, %ymm2
192
+ vpsubd %ymm2, %ymm0, %ymm2
193
+ vpandn %ymm1, %ymm3, %ymm1
194
+ vpaddd %ymm3, %ymm2, %ymm2
195
+ vmovdqa %ymm1, 0x100(%rdi)
196
+ vmovdqa %ymm2, 0x100(%rsi)
197
+ vmovdqa 0x120(%rsi), %ymm0
198
+ vpaddd %ymm10, %ymm0, %ymm1
199
+ vpsrld $0x7, %ymm1, %ymm1
200
+ vpmulhuw %ymm11, %ymm1, %ymm1
201
+ vpmulhrsw %ymm12, %ymm1, %ymm1
202
+ vpcmpgtd %ymm13, %ymm0, %ymm3
203
+ vpmulld %ymm14, %ymm1, %ymm2
204
+ vpsubd %ymm2, %ymm0, %ymm2
205
+ vpandn %ymm1, %ymm3, %ymm1
206
+ vpaddd %ymm3, %ymm2, %ymm2
207
+ vmovdqa %ymm1, 0x120(%rdi)
208
+ vmovdqa %ymm2, 0x120(%rsi)
209
+ vmovdqa 0x140(%rsi), %ymm0
210
+ vpaddd %ymm10, %ymm0, %ymm1
211
+ vpsrld $0x7, %ymm1, %ymm1
212
+ vpmulhuw %ymm11, %ymm1, %ymm1
213
+ vpmulhrsw %ymm12, %ymm1, %ymm1
214
+ vpcmpgtd %ymm13, %ymm0, %ymm3
215
+ vpmulld %ymm14, %ymm1, %ymm2
216
+ vpsubd %ymm2, %ymm0, %ymm2
217
+ vpandn %ymm1, %ymm3, %ymm1
218
+ vpaddd %ymm3, %ymm2, %ymm2
219
+ vmovdqa %ymm1, 0x140(%rdi)
220
+ vmovdqa %ymm2, 0x140(%rsi)
221
+ vmovdqa 0x160(%rsi), %ymm0
222
+ vpaddd %ymm10, %ymm0, %ymm1
223
+ vpsrld $0x7, %ymm1, %ymm1
224
+ vpmulhuw %ymm11, %ymm1, %ymm1
225
+ vpmulhrsw %ymm12, %ymm1, %ymm1
226
+ vpcmpgtd %ymm13, %ymm0, %ymm3
227
+ vpmulld %ymm14, %ymm1, %ymm2
228
+ vpsubd %ymm2, %ymm0, %ymm2
229
+ vpandn %ymm1, %ymm3, %ymm1
230
+ vpaddd %ymm3, %ymm2, %ymm2
231
+ vmovdqa %ymm1, 0x160(%rdi)
232
+ vmovdqa %ymm2, 0x160(%rsi)
233
+ vmovdqa 0x180(%rsi), %ymm0
234
+ vpaddd %ymm10, %ymm0, %ymm1
235
+ vpsrld $0x7, %ymm1, %ymm1
236
+ vpmulhuw %ymm11, %ymm1, %ymm1
237
+ vpmulhrsw %ymm12, %ymm1, %ymm1
238
+ vpcmpgtd %ymm13, %ymm0, %ymm3
239
+ vpmulld %ymm14, %ymm1, %ymm2
240
+ vpsubd %ymm2, %ymm0, %ymm2
241
+ vpandn %ymm1, %ymm3, %ymm1
242
+ vpaddd %ymm3, %ymm2, %ymm2
243
+ vmovdqa %ymm1, 0x180(%rdi)
244
+ vmovdqa %ymm2, 0x180(%rsi)
245
+ vmovdqa 0x1a0(%rsi), %ymm0
246
+ vpaddd %ymm10, %ymm0, %ymm1
247
+ vpsrld $0x7, %ymm1, %ymm1
248
+ vpmulhuw %ymm11, %ymm1, %ymm1
249
+ vpmulhrsw %ymm12, %ymm1, %ymm1
250
+ vpcmpgtd %ymm13, %ymm0, %ymm3
251
+ vpmulld %ymm14, %ymm1, %ymm2
252
+ vpsubd %ymm2, %ymm0, %ymm2
253
+ vpandn %ymm1, %ymm3, %ymm1
254
+ vpaddd %ymm3, %ymm2, %ymm2
255
+ vmovdqa %ymm1, 0x1a0(%rdi)
256
+ vmovdqa %ymm2, 0x1a0(%rsi)
257
+ vmovdqa 0x1c0(%rsi), %ymm0
258
+ vpaddd %ymm10, %ymm0, %ymm1
259
+ vpsrld $0x7, %ymm1, %ymm1
260
+ vpmulhuw %ymm11, %ymm1, %ymm1
261
+ vpmulhrsw %ymm12, %ymm1, %ymm1
262
+ vpcmpgtd %ymm13, %ymm0, %ymm3
263
+ vpmulld %ymm14, %ymm1, %ymm2
264
+ vpsubd %ymm2, %ymm0, %ymm2
265
+ vpandn %ymm1, %ymm3, %ymm1
266
+ vpaddd %ymm3, %ymm2, %ymm2
267
+ vmovdqa %ymm1, 0x1c0(%rdi)
268
+ vmovdqa %ymm2, 0x1c0(%rsi)
269
+ vmovdqa 0x1e0(%rsi), %ymm0
270
+ vpaddd %ymm10, %ymm0, %ymm1
271
+ vpsrld $0x7, %ymm1, %ymm1
272
+ vpmulhuw %ymm11, %ymm1, %ymm1
273
+ vpmulhrsw %ymm12, %ymm1, %ymm1
274
+ vpcmpgtd %ymm13, %ymm0, %ymm3
275
+ vpmulld %ymm14, %ymm1, %ymm2
276
+ vpsubd %ymm2, %ymm0, %ymm2
277
+ vpandn %ymm1, %ymm3, %ymm1
278
+ vpaddd %ymm3, %ymm2, %ymm2
279
+ vmovdqa %ymm1, 0x1e0(%rdi)
280
+ vmovdqa %ymm2, 0x1e0(%rsi)
281
+ vmovdqa 0x200(%rsi), %ymm0
282
+ vpaddd %ymm10, %ymm0, %ymm1
283
+ vpsrld $0x7, %ymm1, %ymm1
284
+ vpmulhuw %ymm11, %ymm1, %ymm1
285
+ vpmulhrsw %ymm12, %ymm1, %ymm1
286
+ vpcmpgtd %ymm13, %ymm0, %ymm3
287
+ vpmulld %ymm14, %ymm1, %ymm2
288
+ vpsubd %ymm2, %ymm0, %ymm2
289
+ vpandn %ymm1, %ymm3, %ymm1
290
+ vpaddd %ymm3, %ymm2, %ymm2
291
+ vmovdqa %ymm1, 0x200(%rdi)
292
+ vmovdqa %ymm2, 0x200(%rsi)
293
+ vmovdqa 0x220(%rsi), %ymm0
294
+ vpaddd %ymm10, %ymm0, %ymm1
295
+ vpsrld $0x7, %ymm1, %ymm1
296
+ vpmulhuw %ymm11, %ymm1, %ymm1
297
+ vpmulhrsw %ymm12, %ymm1, %ymm1
298
+ vpcmpgtd %ymm13, %ymm0, %ymm3
299
+ vpmulld %ymm14, %ymm1, %ymm2
300
+ vpsubd %ymm2, %ymm0, %ymm2
301
+ vpandn %ymm1, %ymm3, %ymm1
302
+ vpaddd %ymm3, %ymm2, %ymm2
303
+ vmovdqa %ymm1, 0x220(%rdi)
304
+ vmovdqa %ymm2, 0x220(%rsi)
305
+ vmovdqa 0x240(%rsi), %ymm0
306
+ vpaddd %ymm10, %ymm0, %ymm1
307
+ vpsrld $0x7, %ymm1, %ymm1
308
+ vpmulhuw %ymm11, %ymm1, %ymm1
309
+ vpmulhrsw %ymm12, %ymm1, %ymm1
310
+ vpcmpgtd %ymm13, %ymm0, %ymm3
311
+ vpmulld %ymm14, %ymm1, %ymm2
312
+ vpsubd %ymm2, %ymm0, %ymm2
313
+ vpandn %ymm1, %ymm3, %ymm1
314
+ vpaddd %ymm3, %ymm2, %ymm2
315
+ vmovdqa %ymm1, 0x240(%rdi)
316
+ vmovdqa %ymm2, 0x240(%rsi)
317
+ vmovdqa 0x260(%rsi), %ymm0
318
+ vpaddd %ymm10, %ymm0, %ymm1
319
+ vpsrld $0x7, %ymm1, %ymm1
320
+ vpmulhuw %ymm11, %ymm1, %ymm1
321
+ vpmulhrsw %ymm12, %ymm1, %ymm1
322
+ vpcmpgtd %ymm13, %ymm0, %ymm3
323
+ vpmulld %ymm14, %ymm1, %ymm2
324
+ vpsubd %ymm2, %ymm0, %ymm2
325
+ vpandn %ymm1, %ymm3, %ymm1
326
+ vpaddd %ymm3, %ymm2, %ymm2
327
+ vmovdqa %ymm1, 0x260(%rdi)
328
+ vmovdqa %ymm2, 0x260(%rsi)
329
+ vmovdqa 0x280(%rsi), %ymm0
330
+ vpaddd %ymm10, %ymm0, %ymm1
331
+ vpsrld $0x7, %ymm1, %ymm1
332
+ vpmulhuw %ymm11, %ymm1, %ymm1
333
+ vpmulhrsw %ymm12, %ymm1, %ymm1
334
+ vpcmpgtd %ymm13, %ymm0, %ymm3
335
+ vpmulld %ymm14, %ymm1, %ymm2
336
+ vpsubd %ymm2, %ymm0, %ymm2
337
+ vpandn %ymm1, %ymm3, %ymm1
338
+ vpaddd %ymm3, %ymm2, %ymm2
339
+ vmovdqa %ymm1, 0x280(%rdi)
340
+ vmovdqa %ymm2, 0x280(%rsi)
341
+ vmovdqa 0x2a0(%rsi), %ymm0
342
+ vpaddd %ymm10, %ymm0, %ymm1
343
+ vpsrld $0x7, %ymm1, %ymm1
344
+ vpmulhuw %ymm11, %ymm1, %ymm1
345
+ vpmulhrsw %ymm12, %ymm1, %ymm1
346
+ vpcmpgtd %ymm13, %ymm0, %ymm3
347
+ vpmulld %ymm14, %ymm1, %ymm2
348
+ vpsubd %ymm2, %ymm0, %ymm2
349
+ vpandn %ymm1, %ymm3, %ymm1
350
+ vpaddd %ymm3, %ymm2, %ymm2
351
+ vmovdqa %ymm1, 0x2a0(%rdi)
352
+ vmovdqa %ymm2, 0x2a0(%rsi)
353
+ vmovdqa 0x2c0(%rsi), %ymm0
354
+ vpaddd %ymm10, %ymm0, %ymm1
355
+ vpsrld $0x7, %ymm1, %ymm1
356
+ vpmulhuw %ymm11, %ymm1, %ymm1
357
+ vpmulhrsw %ymm12, %ymm1, %ymm1
358
+ vpcmpgtd %ymm13, %ymm0, %ymm3
359
+ vpmulld %ymm14, %ymm1, %ymm2
360
+ vpsubd %ymm2, %ymm0, %ymm2
361
+ vpandn %ymm1, %ymm3, %ymm1
362
+ vpaddd %ymm3, %ymm2, %ymm2
363
+ vmovdqa %ymm1, 0x2c0(%rdi)
364
+ vmovdqa %ymm2, 0x2c0(%rsi)
365
+ vmovdqa 0x2e0(%rsi), %ymm0
366
+ vpaddd %ymm10, %ymm0, %ymm1
367
+ vpsrld $0x7, %ymm1, %ymm1
368
+ vpmulhuw %ymm11, %ymm1, %ymm1
369
+ vpmulhrsw %ymm12, %ymm1, %ymm1
370
+ vpcmpgtd %ymm13, %ymm0, %ymm3
371
+ vpmulld %ymm14, %ymm1, %ymm2
372
+ vpsubd %ymm2, %ymm0, %ymm2
373
+ vpandn %ymm1, %ymm3, %ymm1
374
+ vpaddd %ymm3, %ymm2, %ymm2
375
+ vmovdqa %ymm1, 0x2e0(%rdi)
376
+ vmovdqa %ymm2, 0x2e0(%rsi)
377
+ vmovdqa 0x300(%rsi), %ymm0
378
+ vpaddd %ymm10, %ymm0, %ymm1
379
+ vpsrld $0x7, %ymm1, %ymm1
380
+ vpmulhuw %ymm11, %ymm1, %ymm1
381
+ vpmulhrsw %ymm12, %ymm1, %ymm1
382
+ vpcmpgtd %ymm13, %ymm0, %ymm3
383
+ vpmulld %ymm14, %ymm1, %ymm2
384
+ vpsubd %ymm2, %ymm0, %ymm2
385
+ vpandn %ymm1, %ymm3, %ymm1
386
+ vpaddd %ymm3, %ymm2, %ymm2
387
+ vmovdqa %ymm1, 0x300(%rdi)
388
+ vmovdqa %ymm2, 0x300(%rsi)
389
+ vmovdqa 0x320(%rsi), %ymm0
390
+ vpaddd %ymm10, %ymm0, %ymm1
391
+ vpsrld $0x7, %ymm1, %ymm1
392
+ vpmulhuw %ymm11, %ymm1, %ymm1
393
+ vpmulhrsw %ymm12, %ymm1, %ymm1
394
+ vpcmpgtd %ymm13, %ymm0, %ymm3
395
+ vpmulld %ymm14, %ymm1, %ymm2
396
+ vpsubd %ymm2, %ymm0, %ymm2
397
+ vpandn %ymm1, %ymm3, %ymm1
398
+ vpaddd %ymm3, %ymm2, %ymm2
399
+ vmovdqa %ymm1, 0x320(%rdi)
400
+ vmovdqa %ymm2, 0x320(%rsi)
401
+ vmovdqa 0x340(%rsi), %ymm0
402
+ vpaddd %ymm10, %ymm0, %ymm1
403
+ vpsrld $0x7, %ymm1, %ymm1
404
+ vpmulhuw %ymm11, %ymm1, %ymm1
405
+ vpmulhrsw %ymm12, %ymm1, %ymm1
406
+ vpcmpgtd %ymm13, %ymm0, %ymm3
407
+ vpmulld %ymm14, %ymm1, %ymm2
408
+ vpsubd %ymm2, %ymm0, %ymm2
409
+ vpandn %ymm1, %ymm3, %ymm1
410
+ vpaddd %ymm3, %ymm2, %ymm2
411
+ vmovdqa %ymm1, 0x340(%rdi)
412
+ vmovdqa %ymm2, 0x340(%rsi)
413
+ vmovdqa 0x360(%rsi), %ymm0
414
+ vpaddd %ymm10, %ymm0, %ymm1
415
+ vpsrld $0x7, %ymm1, %ymm1
416
+ vpmulhuw %ymm11, %ymm1, %ymm1
417
+ vpmulhrsw %ymm12, %ymm1, %ymm1
418
+ vpcmpgtd %ymm13, %ymm0, %ymm3
419
+ vpmulld %ymm14, %ymm1, %ymm2
420
+ vpsubd %ymm2, %ymm0, %ymm2
421
+ vpandn %ymm1, %ymm3, %ymm1
422
+ vpaddd %ymm3, %ymm2, %ymm2
423
+ vmovdqa %ymm1, 0x360(%rdi)
424
+ vmovdqa %ymm2, 0x360(%rsi)
425
+ vmovdqa 0x380(%rsi), %ymm0
426
+ vpaddd %ymm10, %ymm0, %ymm1
427
+ vpsrld $0x7, %ymm1, %ymm1
428
+ vpmulhuw %ymm11, %ymm1, %ymm1
429
+ vpmulhrsw %ymm12, %ymm1, %ymm1
430
+ vpcmpgtd %ymm13, %ymm0, %ymm3
431
+ vpmulld %ymm14, %ymm1, %ymm2
432
+ vpsubd %ymm2, %ymm0, %ymm2
433
+ vpandn %ymm1, %ymm3, %ymm1
434
+ vpaddd %ymm3, %ymm2, %ymm2
435
+ vmovdqa %ymm1, 0x380(%rdi)
436
+ vmovdqa %ymm2, 0x380(%rsi)
437
+ vmovdqa 0x3a0(%rsi), %ymm0
438
+ vpaddd %ymm10, %ymm0, %ymm1
439
+ vpsrld $0x7, %ymm1, %ymm1
440
+ vpmulhuw %ymm11, %ymm1, %ymm1
441
+ vpmulhrsw %ymm12, %ymm1, %ymm1
442
+ vpcmpgtd %ymm13, %ymm0, %ymm3
443
+ vpmulld %ymm14, %ymm1, %ymm2
444
+ vpsubd %ymm2, %ymm0, %ymm2
445
+ vpandn %ymm1, %ymm3, %ymm1
446
+ vpaddd %ymm3, %ymm2, %ymm2
447
+ vmovdqa %ymm1, 0x3a0(%rdi)
448
+ vmovdqa %ymm2, 0x3a0(%rsi)
449
+ vmovdqa 0x3c0(%rsi), %ymm0
450
+ vpaddd %ymm10, %ymm0, %ymm1
451
+ vpsrld $0x7, %ymm1, %ymm1
452
+ vpmulhuw %ymm11, %ymm1, %ymm1
453
+ vpmulhrsw %ymm12, %ymm1, %ymm1
454
+ vpcmpgtd %ymm13, %ymm0, %ymm3
455
+ vpmulld %ymm14, %ymm1, %ymm2
456
+ vpsubd %ymm2, %ymm0, %ymm2
457
+ vpandn %ymm1, %ymm3, %ymm1
458
+ vpaddd %ymm3, %ymm2, %ymm2
459
+ vmovdqa %ymm1, 0x3c0(%rdi)
460
+ vmovdqa %ymm2, 0x3c0(%rsi)
461
+ vmovdqa 0x3e0(%rsi), %ymm0
462
+ vpaddd %ymm10, %ymm0, %ymm1
463
+ vpsrld $0x7, %ymm1, %ymm1
464
+ vpmulhuw %ymm11, %ymm1, %ymm1
465
+ vpmulhrsw %ymm12, %ymm1, %ymm1
466
+ vpcmpgtd %ymm13, %ymm0, %ymm3
467
+ vpmulld %ymm14, %ymm1, %ymm2
468
+ vpsubd %ymm2, %ymm0, %ymm2
469
+ vpandn %ymm1, %ymm3, %ymm1
470
+ vpaddd %ymm3, %ymm2, %ymm2
471
+ vmovdqa %ymm1, 0x3e0(%rdi)
472
+ vmovdqa %ymm2, 0x3e0(%rsi)
473
+ retq
474
+ .cfi_endproc
475
+
476
+ MLD_ASM_FN_SIZE(poly_decompose_32_avx2_asm)
477
+
478
+
479
+ #endif /* MLD_ARITH_BACKEND_X86_64_DEFAULT && !MLD_CONFIG_NO_SIGN_API && \
480
+ !MLD_CONFIG_MULTILEVEL_NO_SHARED && \
481
+ (MLD_CONFIG_MULTILEVEL_WITH_SHARED || MLD_CONFIG_PARAMETER_SET == 65 \
482
+ || MLD_CONFIG_PARAMETER_SET == 87) */
483
+
484
+ #if defined(__ELF__)
485
+ .section .note.GNU-stack,"",%progbits
486
+ #endif
487
+
488
+ #if defined(__ELF__)
489
+ .section .note.GNU-stack,"",%progbits
490
+ #endif