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
@@ -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