pq_crypto 0.6.2 → 0.6.4

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 (117) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +149 -17
  3. data/CHANGELOG.md +32 -0
  4. data/GET_STARTED.md +1 -1
  5. data/README.md +2 -2
  6. data/ext/pqcrypto/extconf.rb +264 -24
  7. data/ext/pqcrypto/pqcrypto_version.h +1 -1
  8. data/ext/pqcrypto/vendor/.vendored +4 -4
  9. data/ext/pqcrypto/vendor/mlkem-native/README.md +6 -3
  10. data/ext/pqcrypto/vendor/mlkem-native/RELEASE.md +22 -0
  11. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.c +77 -36
  12. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native.h +135 -146
  13. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_asm.S +116 -72
  14. data/ext/pqcrypto/vendor/mlkem-native/mlkem/mlkem_native_config.h +351 -415
  15. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/cbmc.h +43 -20
  16. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/common.h +16 -8
  17. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.c +57 -31
  18. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/compress.h +260 -349
  19. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/debug.h +17 -24
  20. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.c +35 -37
  21. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202.h +43 -57
  22. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.c +14 -15
  23. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/fips202x4.h +5 -4
  24. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/keccakf1600.c +42 -6
  25. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/fips202_native_aarch64.h +31 -20
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/src/keccakf1600_round_constants.c +10 -9
  32. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_scalar.h +2 -1
  33. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x1_v84a.h +1 -1
  34. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x2_v84a.h +4 -2
  35. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_scalar.h +2 -2
  36. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/aarch64/x4_v8a_v84a_scalar.h +1 -1
  37. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/fips202_native_armv81m.h +2 -1
  38. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccak_f1600_x4_mve.S +55 -9
  39. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/keccakf1600_round_constants.c +26 -25
  40. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_extract_bytes_x4_mve.S +58 -14
  41. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/armv81m/src/state_xor_bytes_x4_mve.S +57 -16
  42. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/auto.h +2 -1
  43. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/keccak_f1600_x4_avx2.h +2 -2
  44. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/fips202_native_x86_64.h +10 -7
  45. 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
  46. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/fips202/native/x86_64/src/keccakf1600_constants.c +12 -11
  47. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.c +167 -136
  48. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/indcpa.h +75 -68
  49. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/kem.h +135 -157
  50. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/meta.h +15 -13
  51. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/aarch64_zetas.c +143 -135
  52. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/arith_native_aarch64.h +52 -46
  53. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{intt.S → intt_aarch64_asm.S} +10 -10
  54. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{ntt.S → ntt_aarch64_asm.S} +10 -10
  55. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_mulcache_compute_asm.S → poly_mulcache_compute_aarch64_asm.S} +10 -10
  56. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_reduce_asm.S → poly_reduce_aarch64_asm.S} +10 -10
  57. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_tobytes_asm.S → poly_tobytes_aarch64_asm.S} +10 -10
  58. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{poly_tomont_asm.S → poly_tomont_aarch64_asm.S} +10 -12
  59. 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
  60. 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
  61. 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
  62. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/{rej_uniform_asm.S → rej_uniform_aarch64_asm.S} +12 -12
  63. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/aarch64/src/rej_uniform_table.c +514 -513
  64. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/api.h +254 -253
  65. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/meta.h +6 -1
  66. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/README.md +6 -0
  67. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/meta.h +77 -0
  68. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/arith_native_ppc64le.h +24 -0
  69. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/consts.c +299 -0
  70. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/consts.h +34 -0
  71. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/intt_ppc_asm.S +3222 -0
  72. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/ntt_ppc_asm.S +1651 -0
  73. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/poly_tomont_ppc_asm.S +294 -0
  74. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/ppc64le/src/reduce_ppc_asm.S +710 -0
  75. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/meta.h +5 -0
  76. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.c +18 -16
  77. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_debug.h +19 -24
  78. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/riscv64/src/rv64v_poly.c +53 -65
  79. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/meta.h +20 -20
  80. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/arith_native_x86_64.h +106 -88
  81. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.c +45 -35
  82. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/compress_consts.h +8 -8
  83. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.c +1 -1
  84. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/consts.h +1 -1
  85. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{intt.S → intt_avx2_asm.S} +8 -8
  86. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{ntt.S → ntt_avx2_asm.S} +8 -8
  87. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{nttfrombytes.S → nttfrombytes_avx2_asm.S} +8 -8
  88. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{ntttobytes.S → ntttobytes_avx2_asm.S} +8 -8
  89. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{nttunpack.S → nttunpack_avx2_asm.S} +8 -8
  90. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d10.S → poly_compress_d10_avx2_asm.S} +9 -9
  91. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d11.S → poly_compress_d11_avx2_asm.S} +9 -9
  92. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d4.S → poly_compress_d4_avx2_asm.S} +9 -9
  93. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_compress_d5.S → poly_compress_d5_avx2_asm.S} +9 -9
  94. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d10.S → poly_decompress_d10_avx2_asm.S} +9 -9
  95. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d11.S → poly_decompress_d11_avx2_asm.S} +9 -9
  96. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d4.S → poly_decompress_d4_avx2_asm.S} +9 -9
  97. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{poly_decompress_d5.S → poly_decompress_d5_avx2_asm.S} +9 -9
  98. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{mulcache_compute.S → poly_mulcache_compute_avx2_asm.S} +8 -8
  99. 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
  100. 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
  101. 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
  102. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{reduce.S → reduce_avx2_asm.S} +8 -8
  103. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{rej_uniform_asm.S → rej_uniform_avx2_asm.S} +9 -9
  104. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/rej_uniform_table.c +514 -513
  105. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/native/x86_64/src/{tomont.S → tomont_avx2_asm.S} +8 -8
  106. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.c +61 -57
  107. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly.h +89 -116
  108. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.c +31 -32
  109. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/poly_k.h +226 -301
  110. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/randombytes.h +21 -29
  111. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.c +68 -63
  112. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sampling.h +37 -48
  113. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/sys.h +44 -2
  114. data/ext/pqcrypto/vendor/mlkem-native/mlkem/src/verify.h +141 -159
  115. data/lib/pq_crypto/version.rb +1 -1
  116. data/script/vendor_libs.rb +3 -3
  117. metadata +49 -40
@@ -0,0 +1,294 @@
1
+ /*
2
+ * Copyright (c) The mlkem-native project authors
3
+ * Copyright (c) IBM Corp. 2025, 2026
4
+ * SPDX-License-Identifier: Apache-2.0 OR ISC OR MIT
5
+ *
6
+ * Written by Danny Tsen <dtsen@us.ibm.com>
7
+ */
8
+
9
+ /*
10
+ * Poly_tomont: Inplace conversion of all coefficients of a polynomial
11
+ * from normal domain to Montgomery domain
12
+ *
13
+ * Arguments:*r: pointer to input/output polynomial
14
+ */
15
+
16
+ #include "../../../common.h"
17
+ #if defined(MLK_ARITH_BACKEND_PPC64LE_DEFAULT) && \
18
+ !defined(MLK_CONFIG_MULTILEVEL_NO_SHARED) && defined(__POWER8_VECTOR__)
19
+
20
+ /*
21
+ * WARNING: This file is auto-derived from the mlkem-native source file
22
+ * dev/ppc64le/src/poly_tomont_ppc_asm.S using scripts/simpasm. Do not modify it directly.
23
+ */
24
+
25
+ .text
26
+ .balign 4
27
+ .global MLK_ASM_NAMESPACE(poly_tomont_ppc_asm)
28
+ MLK_ASM_FN_SYMBOL(poly_tomont_ppc_asm)
29
+
30
+ stdu 1, -320(1)
31
+ mflr 0
32
+ li 6, 128
33
+ li 7, 144
34
+ li 8, 160
35
+ li 9, 176
36
+ li 10, 192
37
+ li 11, 208
38
+ li 12, 224
39
+ stxvd2x 52, 6, 1
40
+ stxvd2x 53, 7, 1
41
+ stxvd2x 54, 8, 1
42
+ stxvd2x 55, 9, 1
43
+ stxvd2x 56, 10, 1
44
+ stxvd2x 57, 11, 1
45
+ stxvd2x 58, 12, 1
46
+ li 6, 240
47
+ li 7, 256
48
+ li 8, 272
49
+ li 9, 288
50
+ stxvd2x 59, 6, 1
51
+ stxvd2x 60, 7, 1
52
+ stxvd2x 61, 8, 1
53
+ stxvd2x 62, 9, 1
54
+ li 6, 0
55
+ li 7, 80
56
+ li 8, 96
57
+ lxvd2x 37, 6, 4
58
+ lxvd2x 32, 7, 4
59
+ lxvd2x 34, 8, 4
60
+ vxor 3, 3, 3
61
+ li 4, -128
62
+ li 5, -112
63
+ li 6, -96
64
+ li 7, -80
65
+ li 8, -64
66
+ li 9, -48
67
+ li 10, -32
68
+ li 11, -16
69
+ lxvd2x 45, 0, 3
70
+ addi 3, 3, 16
71
+ lxvd2x 50, 0, 3
72
+ addi 3, 3, 16
73
+ lxvd2x 55, 0, 3
74
+ addi 3, 3, 16
75
+ lxvd2x 39, 0, 3
76
+ addi 3, 3, 16
77
+ vmhraddshs 14, 13, 2, 3
78
+ vmhraddshs 19, 18, 2, 3
79
+ vmhraddshs 24, 23, 2, 3
80
+ vmhraddshs 8, 7, 2, 3
81
+ vmladduhm 13, 13, 0, 3
82
+ vmladduhm 18, 18, 0, 3
83
+ vmladduhm 23, 23, 0, 3
84
+ vmladduhm 7, 7, 0, 3
85
+ vmladduhm 27, 14, 5, 13
86
+ vmladduhm 28, 19, 5, 18
87
+ vmladduhm 29, 24, 5, 23
88
+ vmladduhm 30, 8, 5, 7
89
+ lxvd2x 45, 0, 3
90
+ addi 3, 3, 16
91
+ lxvd2x 50, 0, 3
92
+ addi 3, 3, 16
93
+ lxvd2x 55, 0, 3
94
+ addi 3, 3, 16
95
+ lxvd2x 39, 0, 3
96
+ addi 3, 3, 16
97
+ vmhraddshs 14, 13, 2, 3
98
+ vmhraddshs 19, 18, 2, 3
99
+ vmhraddshs 24, 23, 2, 3
100
+ vmhraddshs 8, 7, 2, 3
101
+ vmladduhm 13, 13, 0, 3
102
+ vmladduhm 18, 18, 0, 3
103
+ vmladduhm 23, 23, 0, 3
104
+ vmladduhm 7, 7, 0, 3
105
+ vmladduhm 13, 14, 5, 13
106
+ vmladduhm 18, 19, 5, 18
107
+ vmladduhm 23, 24, 5, 23
108
+ vmladduhm 7, 8, 5, 7
109
+ stxvd2x 59, 4, 3
110
+ stxvd2x 60, 5, 3
111
+ stxvd2x 61, 6, 3
112
+ stxvd2x 62, 7, 3
113
+ stxvd2x 45, 8, 3
114
+ stxvd2x 50, 9, 3
115
+ stxvd2x 55, 10, 3
116
+ stxvd2x 39, 11, 3
117
+ lxvd2x 45, 0, 3
118
+ addi 3, 3, 16
119
+ lxvd2x 50, 0, 3
120
+ addi 3, 3, 16
121
+ lxvd2x 55, 0, 3
122
+ addi 3, 3, 16
123
+ lxvd2x 39, 0, 3
124
+ addi 3, 3, 16
125
+ vmhraddshs 14, 13, 2, 3
126
+ vmhraddshs 19, 18, 2, 3
127
+ vmhraddshs 24, 23, 2, 3
128
+ vmhraddshs 8, 7, 2, 3
129
+ vmladduhm 13, 13, 0, 3
130
+ vmladduhm 18, 18, 0, 3
131
+ vmladduhm 23, 23, 0, 3
132
+ vmladduhm 7, 7, 0, 3
133
+ vmladduhm 27, 14, 5, 13
134
+ vmladduhm 28, 19, 5, 18
135
+ vmladduhm 29, 24, 5, 23
136
+ vmladduhm 30, 8, 5, 7
137
+ lxvd2x 45, 0, 3
138
+ addi 3, 3, 16
139
+ lxvd2x 50, 0, 3
140
+ addi 3, 3, 16
141
+ lxvd2x 55, 0, 3
142
+ addi 3, 3, 16
143
+ lxvd2x 39, 0, 3
144
+ addi 3, 3, 16
145
+ vmhraddshs 14, 13, 2, 3
146
+ vmhraddshs 19, 18, 2, 3
147
+ vmhraddshs 24, 23, 2, 3
148
+ vmhraddshs 8, 7, 2, 3
149
+ vmladduhm 13, 13, 0, 3
150
+ vmladduhm 18, 18, 0, 3
151
+ vmladduhm 23, 23, 0, 3
152
+ vmladduhm 7, 7, 0, 3
153
+ vmladduhm 13, 14, 5, 13
154
+ vmladduhm 18, 19, 5, 18
155
+ vmladduhm 23, 24, 5, 23
156
+ vmladduhm 7, 8, 5, 7
157
+ stxvd2x 59, 4, 3
158
+ stxvd2x 60, 5, 3
159
+ stxvd2x 61, 6, 3
160
+ stxvd2x 62, 7, 3
161
+ stxvd2x 45, 8, 3
162
+ stxvd2x 50, 9, 3
163
+ stxvd2x 55, 10, 3
164
+ stxvd2x 39, 11, 3
165
+ lxvd2x 45, 0, 3
166
+ addi 3, 3, 16
167
+ lxvd2x 50, 0, 3
168
+ addi 3, 3, 16
169
+ lxvd2x 55, 0, 3
170
+ addi 3, 3, 16
171
+ lxvd2x 39, 0, 3
172
+ addi 3, 3, 16
173
+ vmhraddshs 14, 13, 2, 3
174
+ vmhraddshs 19, 18, 2, 3
175
+ vmhraddshs 24, 23, 2, 3
176
+ vmhraddshs 8, 7, 2, 3
177
+ vmladduhm 13, 13, 0, 3
178
+ vmladduhm 18, 18, 0, 3
179
+ vmladduhm 23, 23, 0, 3
180
+ vmladduhm 7, 7, 0, 3
181
+ vmladduhm 27, 14, 5, 13
182
+ vmladduhm 28, 19, 5, 18
183
+ vmladduhm 29, 24, 5, 23
184
+ vmladduhm 30, 8, 5, 7
185
+ lxvd2x 45, 0, 3
186
+ addi 3, 3, 16
187
+ lxvd2x 50, 0, 3
188
+ addi 3, 3, 16
189
+ lxvd2x 55, 0, 3
190
+ addi 3, 3, 16
191
+ lxvd2x 39, 0, 3
192
+ addi 3, 3, 16
193
+ vmhraddshs 14, 13, 2, 3
194
+ vmhraddshs 19, 18, 2, 3
195
+ vmhraddshs 24, 23, 2, 3
196
+ vmhraddshs 8, 7, 2, 3
197
+ vmladduhm 13, 13, 0, 3
198
+ vmladduhm 18, 18, 0, 3
199
+ vmladduhm 23, 23, 0, 3
200
+ vmladduhm 7, 7, 0, 3
201
+ vmladduhm 13, 14, 5, 13
202
+ vmladduhm 18, 19, 5, 18
203
+ vmladduhm 23, 24, 5, 23
204
+ vmladduhm 7, 8, 5, 7
205
+ stxvd2x 59, 4, 3
206
+ stxvd2x 60, 5, 3
207
+ stxvd2x 61, 6, 3
208
+ stxvd2x 62, 7, 3
209
+ stxvd2x 45, 8, 3
210
+ stxvd2x 50, 9, 3
211
+ stxvd2x 55, 10, 3
212
+ stxvd2x 39, 11, 3
213
+ lxvd2x 45, 0, 3
214
+ addi 3, 3, 16
215
+ lxvd2x 50, 0, 3
216
+ addi 3, 3, 16
217
+ lxvd2x 55, 0, 3
218
+ addi 3, 3, 16
219
+ lxvd2x 39, 0, 3
220
+ addi 3, 3, 16
221
+ vmhraddshs 14, 13, 2, 3
222
+ vmhraddshs 19, 18, 2, 3
223
+ vmhraddshs 24, 23, 2, 3
224
+ vmhraddshs 8, 7, 2, 3
225
+ vmladduhm 13, 13, 0, 3
226
+ vmladduhm 18, 18, 0, 3
227
+ vmladduhm 23, 23, 0, 3
228
+ vmladduhm 7, 7, 0, 3
229
+ vmladduhm 27, 14, 5, 13
230
+ vmladduhm 28, 19, 5, 18
231
+ vmladduhm 29, 24, 5, 23
232
+ vmladduhm 30, 8, 5, 7
233
+ lxvd2x 45, 0, 3
234
+ addi 3, 3, 16
235
+ lxvd2x 50, 0, 3
236
+ addi 3, 3, 16
237
+ lxvd2x 55, 0, 3
238
+ addi 3, 3, 16
239
+ lxvd2x 39, 0, 3
240
+ addi 3, 3, 16
241
+ vmhraddshs 14, 13, 2, 3
242
+ vmhraddshs 19, 18, 2, 3
243
+ vmhraddshs 24, 23, 2, 3
244
+ vmhraddshs 8, 7, 2, 3
245
+ vmladduhm 13, 13, 0, 3
246
+ vmladduhm 18, 18, 0, 3
247
+ vmladduhm 23, 23, 0, 3
248
+ vmladduhm 7, 7, 0, 3
249
+ vmladduhm 13, 14, 5, 13
250
+ vmladduhm 18, 19, 5, 18
251
+ vmladduhm 23, 24, 5, 23
252
+ vmladduhm 7, 8, 5, 7
253
+ stxvd2x 59, 4, 3
254
+ stxvd2x 60, 5, 3
255
+ stxvd2x 61, 6, 3
256
+ stxvd2x 62, 7, 3
257
+ stxvd2x 45, 8, 3
258
+ stxvd2x 50, 9, 3
259
+ stxvd2x 55, 10, 3
260
+ stxvd2x 39, 11, 3
261
+ li 6, 128
262
+ li 7, 144
263
+ li 8, 160
264
+ li 9, 176
265
+ li 10, 192
266
+ li 11, 208
267
+ li 12, 224
268
+ lxvd2x 52, 6, 1
269
+ lxvd2x 53, 7, 1
270
+ lxvd2x 54, 8, 1
271
+ lxvd2x 55, 9, 1
272
+ lxvd2x 56, 10, 1
273
+ lxvd2x 57, 11, 1
274
+ lxvd2x 58, 12, 1
275
+ li 6, 240
276
+ li 7, 256
277
+ li 8, 272
278
+ li 9, 288
279
+ lxvd2x 59, 6, 1
280
+ lxvd2x 60, 7, 1
281
+ lxvd2x 61, 8, 1
282
+ lxvd2x 62, 9, 1
283
+ mtlr 0
284
+ addi 1, 1, 320
285
+ blr
286
+
287
+ MLK_ASM_FN_SIZE(poly_tomont_ppc_asm)
288
+
289
+ #endif /* MLK_ARITH_BACKEND_PPC64LE_DEFAULT && !MLK_CONFIG_MULTILEVEL_NO_SHARED \
290
+ && __POWER8_VECTOR__ */
291
+
292
+ #if defined(__ELF__)
293
+ .section .note.GNU-stack,"",%progbits
294
+ #endif