pq_crypto 0.6.2 → 0.6.3

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 (113) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/ext/pqcrypto/pqcrypto_version.h +1 -1
  4. data/ext/pqcrypto/vendor/.vendored +4 -4
  5. data/ext/pqcrypto/vendor/mlkem-native/README.md +6 -3
  6. data/ext/pqcrypto/vendor/mlkem-native/RELEASE.md +22 -0
  7. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.c +77 -36
  8. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.h +135 -146
  9. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_asm.S +116 -72
  10. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_config.h +351 -415
  11. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/cbmc.h +43 -20
  12. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/common.h +16 -8
  13. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.c +57 -31
  14. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.h +260 -349
  15. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.h +17 -24
  16. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.c +35 -37
  17. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.h +43 -57
  18. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.c +14 -15
  19. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.h +5 -4
  20. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.c +42 -6
  21. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/fips202_native_aarch64.h +31 -20
  22. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/{keccak_f1600_x1_scalar_asm.S → keccak_f1600_x1_scalar_aarch64_asm.S} +10 -10
  23. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/{keccak_f1600_x1_v84a_asm.S → keccak_f1600_x1_v84a_aarch64_asm.S} +10 -10
  24. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/{keccak_f1600_x2_v84a_asm.S → keccak_f1600_x2_v84a_aarch64_asm.S} +10 -10
  25. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/{keccak_f1600_x4_v8a_scalar_hybrid_asm.S → keccak_f1600_x4_v8a_scalar_hybrid_aarch64_asm.S} +10 -10
  26. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/{keccak_f1600_x4_v8a_v84a_scalar_hybrid_asm.S → keccak_f1600_x4_v8a_v84a_scalar_hybrid_aarch64_asm.S} +10 -10
  27. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +10 -9
  28. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_scalar.h +2 -1
  29. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_v84a.h +1 -1
  30. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x2_v84a.h +4 -2
  31. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_scalar.h +2 -2
  32. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +1 -1
  33. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/fips202_native_armv81m.h +2 -1
  34. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +55 -9
  35. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +26 -25
  36. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_extract_bytes_x4_mve.S +58 -14
  37. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_xor_bytes_x4_mve.S +57 -16
  38. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/auto.h +2 -1
  39. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h +2 -2
  40. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/fips202_native_x86_64.h +10 -7
  41. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/{keccak_f1600_x4_avx2.S → keccak_f1600_x4_avx2_asm.S} +13 -11
  42. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccakf1600_constants.c +12 -11
  43. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.c +167 -136
  44. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.h +75 -68
  45. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.h +135 -157
  46. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/meta.h +15 -13
  47. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/aarch64_zetas.c +143 -135
  48. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/arith_native_aarch64.h +52 -46
  49. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{intt.S → intt_aarch64_asm.S} +10 -10
  50. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{ntt.S → ntt_aarch64_asm.S} +10 -10
  51. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_mulcache_compute_asm.S → poly_mulcache_compute_aarch64_asm.S} +10 -10
  52. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_reduce_asm.S → poly_reduce_aarch64_asm.S} +10 -10
  53. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_tobytes_asm.S → poly_tobytes_aarch64_asm.S} +10 -10
  54. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_tomont_asm.S → poly_tomont_aarch64_asm.S} +10 -12
  55. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{polyvec_basemul_acc_montgomery_cached_asm_k2.S → polyvec_basemul_acc_montgomery_cached_k2_aarch64_asm.S} +10 -10
  56. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{polyvec_basemul_acc_montgomery_cached_asm_k3.S → polyvec_basemul_acc_montgomery_cached_k3_aarch64_asm.S} +10 -10
  57. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{polyvec_basemul_acc_montgomery_cached_asm_k4.S → polyvec_basemul_acc_montgomery_cached_k4_aarch64_asm.S} +10 -10
  58. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{rej_uniform_asm.S → rej_uniform_aarch64_asm.S} +12 -12
  59. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_table.c +514 -513
  60. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/api.h +254 -253
  61. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/meta.h +6 -1
  62. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/README.md +6 -0
  63. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/meta.h +77 -0
  64. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/arith_native_ppc64le.h +24 -0
  65. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/consts.c +299 -0
  66. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/consts.h +34 -0
  67. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/intt_ppc_asm.S +3222 -0
  68. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/ntt_ppc_asm.S +1651 -0
  69. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/poly_tomont_ppc_asm.S +294 -0
  70. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/reduce_ppc_asm.S +710 -0
  71. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/meta.h +5 -0
  72. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.c +18 -16
  73. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.h +19 -24
  74. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_poly.c +53 -65
  75. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/meta.h +20 -20
  76. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/arith_native_x86_64.h +106 -88
  77. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.c +45 -35
  78. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.h +8 -8
  79. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.c +1 -1
  80. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.h +1 -1
  81. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{intt.S → intt_avx2_asm.S} +8 -8
  82. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{ntt.S → ntt_avx2_asm.S} +8 -8
  83. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{nttfrombytes.S → nttfrombytes_avx2_asm.S} +8 -8
  84. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{ntttobytes.S → ntttobytes_avx2_asm.S} +8 -8
  85. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{nttunpack.S → nttunpack_avx2_asm.S} +8 -8
  86. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d10.S → poly_compress_d10_avx2_asm.S} +9 -9
  87. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d11.S → poly_compress_d11_avx2_asm.S} +9 -9
  88. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d4.S → poly_compress_d4_avx2_asm.S} +9 -9
  89. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d5.S → poly_compress_d5_avx2_asm.S} +9 -9
  90. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d10.S → poly_decompress_d10_avx2_asm.S} +9 -9
  91. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d11.S → poly_decompress_d11_avx2_asm.S} +9 -9
  92. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d4.S → poly_decompress_d4_avx2_asm.S} +9 -9
  93. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d5.S → poly_decompress_d5_avx2_asm.S} +9 -9
  94. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{mulcache_compute.S → poly_mulcache_compute_avx2_asm.S} +8 -8
  95. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{polyvec_basemul_acc_montgomery_cached_asm_k2.S → polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S} +8 -8
  96. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{polyvec_basemul_acc_montgomery_cached_asm_k3.S → polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S} +8 -8
  97. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{polyvec_basemul_acc_montgomery_cached_asm_k4.S → polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S} +8 -8
  98. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{reduce.S → reduce_avx2_asm.S} +8 -8
  99. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{rej_uniform_asm.S → rej_uniform_avx2_asm.S} +9 -9
  100. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_table.c +514 -513
  101. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{tomont.S → tomont_avx2_asm.S} +8 -8
  102. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.c +61 -57
  103. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.h +89 -116
  104. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.c +31 -32
  105. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.h +226 -301
  106. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/randombytes.h +21 -29
  107. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.c +68 -63
  108. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.h +37 -48
  109. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sys.h +44 -2
  110. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.h +141 -159
  111. data/lib/pq_crypto/version.rb +1 -1
  112. data/script/vendor_libs.rb +3 -3
  113. metadata +47 -38
@@ -24,17 +24,13 @@
24
24
 
25
25
  /*
26
26
  * WARNING: This file is auto-derived from the mlkem-native source file
27
- * dev/x86_64/src/ntttobytes.S using scripts/simpasm. Do not modify it directly.
27
+ * dev/x86_64/src/ntttobytes_avx2_asm.S using scripts/simpasm. Do not modify it directly.
28
28
  */
29
29
 
30
- #if defined(__ELF__)
31
- .section .note.GNU-stack,"",@progbits
32
- #endif
33
-
34
30
  .text
35
31
  .balign 4
36
- .global MLK_ASM_NAMESPACE(ntttobytes_avx2)
37
- MLK_ASM_FN_SYMBOL(ntttobytes_avx2)
32
+ .global MLK_ASM_NAMESPACE(ntttobytes_avx2_asm)
33
+ MLK_ASM_FN_SYMBOL(ntttobytes_avx2_asm)
38
34
 
39
35
  .cfi_startproc
40
36
  movl $0xd010d01, %eax # imm = 0xD010D01
@@ -175,7 +171,11 @@ MLK_ASM_FN_SYMBOL(ntttobytes_avx2)
175
171
  retq
176
172
  .cfi_endproc
177
173
 
178
- MLK_ASM_FN_SIZE(ntttobytes_avx2)
174
+ MLK_ASM_FN_SIZE(ntttobytes_avx2_asm)
179
175
 
180
176
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
181
177
  */
178
+
179
+ #if defined(__ELF__)
180
+ .section .note.GNU-stack,"",%progbits
181
+ #endif
@@ -24,17 +24,13 @@
24
24
 
25
25
  /*
26
26
  * WARNING: This file is auto-derived from the mlkem-native source file
27
- * dev/x86_64/src/nttunpack.S using scripts/simpasm. Do not modify it directly.
27
+ * dev/x86_64/src/nttunpack_avx2_asm.S using scripts/simpasm. Do not modify it directly.
28
28
  */
29
29
 
30
- #if defined(__ELF__)
31
- .section .note.GNU-stack,"",@progbits
32
- #endif
33
-
34
30
  .text
35
31
  .balign 4
36
- .global MLK_ASM_NAMESPACE(nttunpack_avx2)
37
- MLK_ASM_FN_SYMBOL(nttunpack_avx2)
32
+ .global MLK_ASM_NAMESPACE(nttunpack_avx2_asm)
33
+ MLK_ASM_FN_SYMBOL(nttunpack_avx2_asm)
38
34
 
39
35
  .cfi_startproc
40
36
  vmovdqa (%rdi), %ymm4
@@ -168,7 +164,11 @@ MLK_ASM_FN_SYMBOL(nttunpack_avx2)
168
164
  retq
169
165
  .cfi_endproc
170
166
 
171
- MLK_ASM_FN_SIZE(nttunpack_avx2)
167
+ MLK_ASM_FN_SIZE(nttunpack_avx2_asm)
172
168
 
173
169
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
174
170
  */
171
+
172
+ #if defined(__ELF__)
173
+ .section .note.GNU-stack,"",%progbits
174
+ #endif
@@ -18,7 +18,7 @@
18
18
  */
19
19
 
20
20
  /*************************************************
21
- * Name: mlk_poly_compress_d10_avx2
21
+ * Name: mlk_poly_compress_d10_avx2_asm
22
22
  *
23
23
  * Description: Compression of a polynomial to 10 bits per coefficient.
24
24
  *
@@ -35,17 +35,13 @@
35
35
 
36
36
  /*
37
37
  * WARNING: This file is auto-derived from the mlkem-native source file
38
- * dev/x86_64/src/poly_compress_d10.S using scripts/simpasm. Do not modify it directly.
38
+ * dev/x86_64/src/poly_compress_d10_avx2_asm.S using scripts/simpasm. Do not modify it directly.
39
39
  */
40
40
 
41
- #if defined(__ELF__)
42
- .section .note.GNU-stack,"",@progbits
43
- #endif
44
-
45
41
  .text
46
42
  .balign 4
47
- .global MLK_ASM_NAMESPACE(poly_compress_d10_avx2)
48
- MLK_ASM_FN_SYMBOL(poly_compress_d10_avx2)
43
+ .global MLK_ASM_NAMESPACE(poly_compress_d10_avx2_asm)
44
+ MLK_ASM_FN_SYMBOL(poly_compress_d10_avx2_asm)
49
45
 
50
46
  .cfi_startproc
51
47
  movl $0x4ebf4ebf, %eax # imm = 0x4EBF4EBF
@@ -375,8 +371,12 @@ MLK_ASM_FN_SYMBOL(poly_compress_d10_avx2)
375
371
  retq
376
372
  .cfi_endproc
377
373
 
378
- MLK_ASM_FN_SIZE(poly_compress_d10_avx2)
374
+ MLK_ASM_FN_SIZE(poly_compress_d10_avx2_asm)
379
375
 
380
376
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
381
377
  && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2 || MLKEM_K == \
382
378
  3) */
379
+
380
+ #if defined(__ELF__)
381
+ .section .note.GNU-stack,"",%progbits
382
+ #endif
@@ -18,7 +18,7 @@
18
18
  */
19
19
 
20
20
  /*************************************************
21
- * Name: mlk_poly_compress_d11_avx2
21
+ * Name: mlk_poly_compress_d11_avx2_asm
22
22
  *
23
23
  * Description: Compression of a polynomial to 11 bits per coefficient.
24
24
  *
@@ -37,17 +37,13 @@
37
37
 
38
38
  /*
39
39
  * WARNING: This file is auto-derived from the mlkem-native source file
40
- * dev/x86_64/src/poly_compress_d11.S using scripts/simpasm. Do not modify it directly.
40
+ * dev/x86_64/src/poly_compress_d11_avx2_asm.S using scripts/simpasm. Do not modify it directly.
41
41
  */
42
42
 
43
- #if defined(__ELF__)
44
- .section .note.GNU-stack,"",@progbits
45
- #endif
46
-
47
43
  .text
48
44
  .balign 4
49
- .global MLK_ASM_NAMESPACE(poly_compress_d11_avx2)
50
- MLK_ASM_FN_SYMBOL(poly_compress_d11_avx2)
45
+ .global MLK_ASM_NAMESPACE(poly_compress_d11_avx2_asm)
46
+ MLK_ASM_FN_SYMBOL(poly_compress_d11_avx2_asm)
51
47
 
52
48
  .cfi_startproc
53
49
  movl $0x4ebf4ebf, %eax # imm = 0x4EBF4EBF
@@ -442,7 +438,11 @@ MLK_ASM_FN_SYMBOL(poly_compress_d11_avx2)
442
438
  retq
443
439
  .cfi_endproc
444
440
 
445
- MLK_ASM_FN_SIZE(poly_compress_d11_avx2)
441
+ MLK_ASM_FN_SIZE(poly_compress_d11_avx2_asm)
446
442
 
447
443
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
448
444
  && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */
445
+
446
+ #if defined(__ELF__)
447
+ .section .note.GNU-stack,"",%progbits
448
+ #endif
@@ -18,7 +18,7 @@
18
18
  */
19
19
 
20
20
  /*************************************************
21
- * Name: mlk_poly_compress_d4_avx2
21
+ * Name: mlk_poly_compress_d4_avx2_asm
22
22
  *
23
23
  * Description: Compression of a polynomial to 4 bits per coefficient.
24
24
  *
@@ -35,17 +35,13 @@
35
35
 
36
36
  /*
37
37
  * WARNING: This file is auto-derived from the mlkem-native source file
38
- * dev/x86_64/src/poly_compress_d4.S using scripts/simpasm. Do not modify it directly.
38
+ * dev/x86_64/src/poly_compress_d4_avx2_asm.S using scripts/simpasm. Do not modify it directly.
39
39
  */
40
40
 
41
- #if defined(__ELF__)
42
- .section .note.GNU-stack,"",@progbits
43
- #endif
44
-
45
41
  .text
46
42
  .balign 4
47
- .global MLK_ASM_NAMESPACE(poly_compress_d4_avx2)
48
- MLK_ASM_FN_SYMBOL(poly_compress_d4_avx2)
43
+ .global MLK_ASM_NAMESPACE(poly_compress_d4_avx2_asm)
44
+ MLK_ASM_FN_SYMBOL(poly_compress_d4_avx2_asm)
49
45
 
50
46
  .cfi_startproc
51
47
  movl $0x4ebf4ebf, %eax # imm = 0x4EBF4EBF
@@ -156,8 +152,12 @@ MLK_ASM_FN_SYMBOL(poly_compress_d4_avx2)
156
152
  retq
157
153
  .cfi_endproc
158
154
 
159
- MLK_ASM_FN_SIZE(poly_compress_d4_avx2)
155
+ MLK_ASM_FN_SIZE(poly_compress_d4_avx2_asm)
160
156
 
161
157
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
162
158
  && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2 || MLKEM_K == \
163
159
  3) */
160
+
161
+ #if defined(__ELF__)
162
+ .section .note.GNU-stack,"",%progbits
163
+ #endif
@@ -18,7 +18,7 @@
18
18
  */
19
19
 
20
20
  /*************************************************
21
- * Name: mlk_poly_compress_d5_avx2
21
+ * Name: mlk_poly_compress_d5_avx2_asm
22
22
  *
23
23
  * Description: Compression of a polynomial to 5 bits per coefficient.
24
24
  *
@@ -35,17 +35,13 @@
35
35
 
36
36
  /*
37
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.
38
+ * dev/x86_64/src/poly_compress_d5_avx2_asm.S using scripts/simpasm. Do not modify it directly.
39
39
  */
40
40
 
41
- #if defined(__ELF__)
42
- .section .note.GNU-stack,"",@progbits
43
- #endif
44
-
45
41
  .text
46
42
  .balign 4
47
- .global MLK_ASM_NAMESPACE(poly_compress_d5_avx2)
48
- MLK_ASM_FN_SYMBOL(poly_compress_d5_avx2)
43
+ .global MLK_ASM_NAMESPACE(poly_compress_d5_avx2_asm)
44
+ MLK_ASM_FN_SYMBOL(poly_compress_d5_avx2_asm)
49
45
 
50
46
  .cfi_startproc
51
47
  movl $0x4ebf4ebf, %eax # imm = 0x4EBF4EBF
@@ -214,7 +210,11 @@ MLK_ASM_FN_SYMBOL(poly_compress_d5_avx2)
214
210
  retq
215
211
  .cfi_endproc
216
212
 
217
- MLK_ASM_FN_SIZE(poly_compress_d5_avx2)
213
+ MLK_ASM_FN_SIZE(poly_compress_d5_avx2_asm)
218
214
 
219
215
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
220
216
  && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */
217
+
218
+ #if defined(__ELF__)
219
+ .section .note.GNU-stack,"",%progbits
220
+ #endif
@@ -18,7 +18,7 @@
18
18
  */
19
19
 
20
20
  /*************************************************
21
- * Name: mlk_poly_decompress_d10_avx2
21
+ * Name: mlk_poly_decompress_d10_avx2_asm
22
22
  *
23
23
  * Description: Decompression of a polynomial from 10 bits per coefficient.
24
24
  *
@@ -35,17 +35,13 @@
35
35
 
36
36
  /*
37
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.
38
+ * dev/x86_64/src/poly_decompress_d10_avx2_asm.S using scripts/simpasm. Do not modify it directly.
39
39
  */
40
40
 
41
- #if defined(__ELF__)
42
- .section .note.GNU-stack,"",@progbits
43
- #endif
44
-
45
41
  .text
46
42
  .balign 4
47
- .global MLK_ASM_NAMESPACE(poly_decompress_d10_avx2)
48
- MLK_ASM_FN_SYMBOL(poly_decompress_d10_avx2)
43
+ .global MLK_ASM_NAMESPACE(poly_decompress_d10_avx2_asm)
44
+ MLK_ASM_FN_SYMBOL(poly_decompress_d10_avx2_asm)
49
45
 
50
46
  .cfi_startproc
51
47
  movl $0xd013404, %eax # imm = 0xD013404
@@ -221,8 +217,12 @@ MLK_ASM_FN_SYMBOL(poly_decompress_d10_avx2)
221
217
  retq
222
218
  .cfi_endproc
223
219
 
224
- MLK_ASM_FN_SIZE(poly_decompress_d10_avx2)
220
+ MLK_ASM_FN_SIZE(poly_decompress_d10_avx2_asm)
225
221
 
226
222
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
227
223
  && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2 || MLKEM_K == \
228
224
  3) */
225
+
226
+ #if defined(__ELF__)
227
+ .section .note.GNU-stack,"",%progbits
228
+ #endif
@@ -18,7 +18,7 @@
18
18
  */
19
19
 
20
20
  /*************************************************
21
- * Name: mlk_poly_decompress_d11_avx2
21
+ * Name: mlk_poly_decompress_d11_avx2_asm
22
22
  *
23
23
  * Description: Decompression of a polynomial from 11 bits per coefficient.
24
24
  *
@@ -37,17 +37,13 @@
37
37
 
38
38
  /*
39
39
  * WARNING: This file is auto-derived from the mlkem-native source file
40
- * dev/x86_64/src/poly_decompress_d11.S using scripts/simpasm. Do not modify it directly.
40
+ * dev/x86_64/src/poly_decompress_d11_avx2_asm.S using scripts/simpasm. Do not modify it directly.
41
41
  */
42
42
 
43
- #if defined(__ELF__)
44
- .section .note.GNU-stack,"",@progbits
45
- #endif
46
-
47
43
  .text
48
44
  .balign 4
49
- .global MLK_ASM_NAMESPACE(poly_decompress_d11_avx2)
50
- MLK_ASM_FN_SYMBOL(poly_decompress_d11_avx2)
45
+ .global MLK_ASM_NAMESPACE(poly_decompress_d11_avx2_asm)
46
+ MLK_ASM_FN_SYMBOL(poly_decompress_d11_avx2_asm)
51
47
 
52
48
  .cfi_startproc
53
49
  movl $0xd010d01, %eax # imm = 0xD010D01
@@ -271,7 +267,11 @@ MLK_ASM_FN_SYMBOL(poly_decompress_d11_avx2)
271
267
  retq
272
268
  .cfi_endproc
273
269
 
274
- MLK_ASM_FN_SIZE(poly_decompress_d11_avx2)
270
+ MLK_ASM_FN_SIZE(poly_decompress_d11_avx2_asm)
275
271
 
276
272
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
277
273
  && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */
274
+
275
+ #if defined(__ELF__)
276
+ .section .note.GNU-stack,"",%progbits
277
+ #endif
@@ -18,7 +18,7 @@
18
18
  */
19
19
 
20
20
  /*************************************************
21
- * Name: mlk_poly_decompress_d4_avx2
21
+ * Name: mlk_poly_decompress_d4_avx2_asm
22
22
  *
23
23
  * Description: Decompression of a polynomial from 4 bits per coefficient.
24
24
  *
@@ -35,17 +35,13 @@
35
35
 
36
36
  /*
37
37
  * WARNING: This file is auto-derived from the mlkem-native source file
38
- * dev/x86_64/src/poly_decompress_d4.S using scripts/simpasm. Do not modify it directly.
38
+ * dev/x86_64/src/poly_decompress_d4_avx2_asm.S using scripts/simpasm. Do not modify it directly.
39
39
  */
40
40
 
41
- #if defined(__ELF__)
42
- .section .note.GNU-stack,"",@progbits
43
- #endif
44
-
45
41
  .text
46
42
  .balign 4
47
- .global MLK_ASM_NAMESPACE(poly_decompress_d4_avx2)
48
- MLK_ASM_FN_SYMBOL(poly_decompress_d4_avx2)
43
+ .global MLK_ASM_NAMESPACE(poly_decompress_d4_avx2_asm)
44
+ MLK_ASM_FN_SYMBOL(poly_decompress_d4_avx2_asm)
49
45
 
50
46
  .cfi_startproc
51
47
  movl $0xd010d01, %eax # imm = 0xD010D01
@@ -173,8 +169,12 @@ MLK_ASM_FN_SYMBOL(poly_decompress_d4_avx2)
173
169
  retq
174
170
  .cfi_endproc
175
171
 
176
- MLK_ASM_FN_SIZE(poly_decompress_d4_avx2)
172
+ MLK_ASM_FN_SIZE(poly_decompress_d4_avx2_asm)
177
173
 
178
174
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
179
175
  && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2 || MLKEM_K == \
180
176
  3) */
177
+
178
+ #if defined(__ELF__)
179
+ .section .note.GNU-stack,"",%progbits
180
+ #endif
@@ -18,7 +18,7 @@
18
18
  */
19
19
 
20
20
  /*************************************************
21
- * Name: mlk_poly_decompress_d5_avx2
21
+ * Name: mlk_poly_decompress_d5_avx2_asm
22
22
  *
23
23
  * Description: Decompression of a polynomial from 5 bits per coefficient.
24
24
  *
@@ -36,17 +36,13 @@
36
36
 
37
37
  /*
38
38
  * WARNING: This file is auto-derived from the mlkem-native source file
39
- * dev/x86_64/src/poly_decompress_d5.S using scripts/simpasm. Do not modify it directly.
39
+ * dev/x86_64/src/poly_decompress_d5_avx2_asm.S using scripts/simpasm. Do not modify it directly.
40
40
  */
41
41
 
42
- #if defined(__ELF__)
43
- .section .note.GNU-stack,"",@progbits
44
- #endif
45
-
46
42
  .text
47
43
  .balign 4
48
- .global MLK_ASM_NAMESPACE(poly_decompress_d5_avx2)
49
- MLK_ASM_FN_SYMBOL(poly_decompress_d5_avx2)
44
+ .global MLK_ASM_NAMESPACE(poly_decompress_d5_avx2_asm)
45
+ MLK_ASM_FN_SYMBOL(poly_decompress_d5_avx2_asm)
50
46
 
51
47
  .cfi_startproc
52
48
  movl $0xd010d01, %eax # imm = 0xD010D01
@@ -186,7 +182,11 @@ MLK_ASM_FN_SYMBOL(poly_decompress_d5_avx2)
186
182
  retq
187
183
  .cfi_endproc
188
184
 
189
- MLK_ASM_FN_SIZE(poly_decompress_d5_avx2)
185
+ MLK_ASM_FN_SIZE(poly_decompress_d5_avx2_asm)
190
186
 
191
187
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
192
188
  && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */
189
+
190
+ #if defined(__ELF__)
191
+ .section .note.GNU-stack,"",%progbits
192
+ #endif
@@ -9,17 +9,13 @@
9
9
 
10
10
  /*
11
11
  * WARNING: This file is auto-derived from the mlkem-native source file
12
- * dev/x86_64/src/mulcache_compute.S using scripts/simpasm. Do not modify it directly.
12
+ * dev/x86_64/src/poly_mulcache_compute_avx2_asm.S using scripts/simpasm. Do not modify it directly.
13
13
  */
14
14
 
15
- #if defined(__ELF__)
16
- .section .note.GNU-stack,"",@progbits
17
- #endif
18
-
19
15
  .text
20
16
  .balign 4
21
- .global MLK_ASM_NAMESPACE(poly_mulcache_compute_avx2)
22
- MLK_ASM_FN_SYMBOL(poly_mulcache_compute_avx2)
17
+ .global MLK_ASM_NAMESPACE(poly_mulcache_compute_avx2_asm)
18
+ MLK_ASM_FN_SYMBOL(poly_mulcache_compute_avx2_asm)
23
19
 
24
20
  .cfi_startproc
25
21
  movl $0xd010d01, %eax # imm = 0xD010D01
@@ -84,7 +80,11 @@ MLK_ASM_FN_SYMBOL(poly_mulcache_compute_avx2)
84
80
  retq
85
81
  .cfi_endproc
86
82
 
87
- MLK_ASM_FN_SIZE(poly_mulcache_compute_avx2)
83
+ MLK_ASM_FN_SIZE(poly_mulcache_compute_avx2_asm)
88
84
 
89
85
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
90
86
  */
87
+
88
+ #if defined(__ELF__)
89
+ .section .note.GNU-stack,"",%progbits
90
+ #endif
@@ -10,17 +10,13 @@
10
10
 
11
11
  /*
12
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.
13
+ * dev/x86_64/src/polyvec_basemul_acc_montgomery_cached_k2_avx2_asm.S using scripts/simpasm. Do not modify it directly.
14
14
  */
15
15
 
16
- #if defined(__ELF__)
17
- .section .note.GNU-stack,"",@progbits
18
- #endif
19
-
20
16
  .text
21
17
  .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)
18
+ .global MLK_ASM_NAMESPACE(polyvec_basemul_acc_montgomery_cached_k2_avx2_asm)
19
+ MLK_ASM_FN_SYMBOL(polyvec_basemul_acc_montgomery_cached_k2_avx2_asm)
24
20
 
25
21
  .cfi_startproc
26
22
  movl $0xd010d01, %eax # imm = 0xD010D01
@@ -496,7 +492,11 @@ MLK_ASM_FN_SYMBOL(polyvec_basemul_acc_montgomery_cached_asm_k2)
496
492
  retq
497
493
  .cfi_endproc
498
494
 
499
- MLK_ASM_FN_SIZE(polyvec_basemul_acc_montgomery_cached_asm_k2)
495
+ MLK_ASM_FN_SIZE(polyvec_basemul_acc_montgomery_cached_k2_avx2_asm)
500
496
 
501
497
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
502
498
  && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 2) */
499
+
500
+ #if defined(__ELF__)
501
+ .section .note.GNU-stack,"",%progbits
502
+ #endif
@@ -10,17 +10,13 @@
10
10
 
11
11
  /*
12
12
  * WARNING: This file is auto-derived from the mlkem-native source file
13
- * dev/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k3.S using scripts/simpasm. Do not modify it directly.
13
+ * dev/x86_64/src/polyvec_basemul_acc_montgomery_cached_k3_avx2_asm.S using scripts/simpasm. Do not modify it directly.
14
14
  */
15
15
 
16
- #if defined(__ELF__)
17
- .section .note.GNU-stack,"",@progbits
18
- #endif
19
-
20
16
  .text
21
17
  .balign 4
22
- .global MLK_ASM_NAMESPACE(polyvec_basemul_acc_montgomery_cached_asm_k3)
23
- MLK_ASM_FN_SYMBOL(polyvec_basemul_acc_montgomery_cached_asm_k3)
18
+ .global MLK_ASM_NAMESPACE(polyvec_basemul_acc_montgomery_cached_k3_avx2_asm)
19
+ MLK_ASM_FN_SYMBOL(polyvec_basemul_acc_montgomery_cached_k3_avx2_asm)
24
20
 
25
21
  .cfi_startproc
26
22
  movl $0xd010d01, %eax # imm = 0xD010D01
@@ -744,7 +740,11 @@ MLK_ASM_FN_SYMBOL(polyvec_basemul_acc_montgomery_cached_asm_k3)
744
740
  retq
745
741
  .cfi_endproc
746
742
 
747
- MLK_ASM_FN_SIZE(polyvec_basemul_acc_montgomery_cached_asm_k3)
743
+ MLK_ASM_FN_SIZE(polyvec_basemul_acc_montgomery_cached_k3_avx2_asm)
748
744
 
749
745
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
750
746
  && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 3) */
747
+
748
+ #if defined(__ELF__)
749
+ .section .note.GNU-stack,"",%progbits
750
+ #endif
@@ -10,17 +10,13 @@
10
10
 
11
11
  /*
12
12
  * WARNING: This file is auto-derived from the mlkem-native source file
13
- * dev/x86_64/src/polyvec_basemul_acc_montgomery_cached_asm_k4.S using scripts/simpasm. Do not modify it directly.
13
+ * dev/x86_64/src/polyvec_basemul_acc_montgomery_cached_k4_avx2_asm.S using scripts/simpasm. Do not modify it directly.
14
14
  */
15
15
 
16
- #if defined(__ELF__)
17
- .section .note.GNU-stack,"",@progbits
18
- #endif
19
-
20
16
  .text
21
17
  .balign 4
22
- .global MLK_ASM_NAMESPACE(polyvec_basemul_acc_montgomery_cached_asm_k4)
23
- MLK_ASM_FN_SYMBOL(polyvec_basemul_acc_montgomery_cached_asm_k4)
18
+ .global MLK_ASM_NAMESPACE(polyvec_basemul_acc_montgomery_cached_k4_avx2_asm)
19
+ MLK_ASM_FN_SYMBOL(polyvec_basemul_acc_montgomery_cached_k4_avx2_asm)
24
20
 
25
21
  .cfi_startproc
26
22
  movl $0xd010d01, %eax # imm = 0xD010D01
@@ -992,7 +988,11 @@ MLK_ASM_FN_SYMBOL(polyvec_basemul_acc_montgomery_cached_asm_k4)
992
988
  retq
993
989
  .cfi_endproc
994
990
 
995
- MLK_ASM_FN_SIZE(polyvec_basemul_acc_montgomery_cached_asm_k4)
991
+ MLK_ASM_FN_SIZE(polyvec_basemul_acc_montgomery_cached_k4_avx2_asm)
996
992
 
997
993
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
998
994
  && (MLK_CONFIG_MULTILEVEL_WITH_SHARED || MLKEM_K == 4) */
995
+
996
+ #if defined(__ELF__)
997
+ .section .note.GNU-stack,"",%progbits
998
+ #endif
@@ -30,17 +30,13 @@
30
30
 
31
31
  /*
32
32
  * WARNING: This file is auto-derived from the mlkem-native source file
33
- * dev/x86_64/src/reduce.S using scripts/simpasm. Do not modify it directly.
33
+ * dev/x86_64/src/reduce_avx2_asm.S using scripts/simpasm. Do not modify it directly.
34
34
  */
35
35
 
36
- #if defined(__ELF__)
37
- .section .note.GNU-stack,"",@progbits
38
- #endif
39
-
40
36
  .text
41
37
  .balign 4
42
- .global MLK_ASM_NAMESPACE(reduce_avx2)
43
- MLK_ASM_FN_SYMBOL(reduce_avx2)
38
+ .global MLK_ASM_NAMESPACE(reduce_avx2_asm)
39
+ MLK_ASM_FN_SYMBOL(reduce_avx2_asm)
44
40
 
45
41
  .cfi_startproc
46
42
  movl $0xd010d01, %eax # imm = 0xD010D01
@@ -212,7 +208,11 @@ MLK_ASM_FN_SYMBOL(reduce_avx2)
212
208
  retq
213
209
  .cfi_endproc
214
210
 
215
- MLK_ASM_FN_SIZE(reduce_avx2)
211
+ MLK_ASM_FN_SIZE(reduce_avx2_asm)
216
212
 
217
213
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
218
214
  */
215
+
216
+ #if defined(__ELF__)
217
+ .section .note.GNU-stack,"",%progbits
218
+ #endif
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  /*************************************************
7
- * Name: mlk_rej_uniform_asm
7
+ * Name: mlk_rej_uniform_avx2_asm
8
8
  *
9
9
  * Description: Run rejection sampling on uniform random bytes to generate
10
10
  * uniform random integers mod q
@@ -25,17 +25,13 @@
25
25
 
26
26
  /*
27
27
  * WARNING: This file is auto-derived from the mlkem-native source file
28
- * dev/x86_64/src/rej_uniform_asm.S using scripts/simpasm. Do not modify it directly.
28
+ * dev/x86_64/src/rej_uniform_avx2_asm.S using scripts/simpasm. Do not modify it directly.
29
29
  */
30
30
 
31
- #if defined(__ELF__)
32
- .section .note.GNU-stack,"",@progbits
33
- #endif
34
-
35
31
  .text
36
32
  .balign 4
37
- .global MLK_ASM_NAMESPACE(rej_uniform_asm)
38
- MLK_ASM_FN_SYMBOL(rej_uniform_asm)
33
+ .global MLK_ASM_NAMESPACE(rej_uniform_avx2_asm)
34
+ MLK_ASM_FN_SYMBOL(rej_uniform_avx2_asm)
39
35
 
40
36
  .cfi_startproc
41
37
  subq $0x210, %rsp # imm = 0x210
@@ -97,7 +93,11 @@ Lrej_uniform_asm_end:
97
93
  retq
98
94
  .cfi_endproc
99
95
 
100
- MLK_ASM_FN_SIZE(rej_uniform_asm)
96
+ MLK_ASM_FN_SIZE(rej_uniform_avx2_asm)
101
97
 
102
98
  #endif /* MLK_ARITH_BACKEND_X86_64_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
103
99
  */
100
+
101
+ #if defined(__ELF__)
102
+ .section .note.GNU-stack,"",%progbits
103
+ #endif