1 --- a/config.h 2019-07-02 19:25:10.448720035 +0300
2 +++ a/config.h 2019-07-02 19:25:25.785455586 +0300
3 @@ -514,7 +514,7 @@ NAMESPACE_END
6 // 32-bit SunCC does not enable SSE2 by default.
\r
7 -#if !defined(CRYPTOPP_DISABLE_ASM) && (defined(_MSC_VER) || CRYPTOPP_GCC_VERSION >= 30300 || defined(__SSE2__) || (__SUNPRO_CC >= 0x5100))
\r
8 +#if !defined(CRYPTOPP_DISABLE_ASM) && !defined(CRYPTOPP_DISABLE_SSE2) && (defined(_MSC_VER) || CRYPTOPP_GCC_VERSION >= 30300 || defined(__SSE2__) || (__SUNPRO_CC >= 0x5100))
\r
9 #define CRYPTOPP_SSE2_INTRIN_AVAILABLE 1
\r
12 From fbbf0a08e8cf4faca661b0f75f806ea652abea70 Mon Sep 17 00:00:00 2001
13 From: Jeffrey Walton <noloader@gmail.com>
14 Date: Tue, 2 Jul 2019 16:55:00 -0400
15 Subject: [PATCH] Add missing XOP header for blake2b_simd.cpp (GH #859) The
16 Gentoo folks caught a bug at https://bugs.gentoo.org/689162. The 689162 bug
17 uses -march=bdver1 -msse4.1 on a AMD Bulldozer machine.
19 Investigating the issue we are missing the XOP header blake2b_simd.cpp. However, adding the XOP header is not enough for this particular config. Four source files fail to compile with the expected headers. We are waiting on the GCC folks to get back to us with a fix.
21 blake2b_simd.cpp | 5 +++++
22 keccak_simd.cpp | 5 +++++
23 simon128_simd.cpp | 1 +
24 speck128_simd.cpp | 1 +
25 4 files changed, 12 insertions(+)
27 diff --git a/blake2b_simd.cpp b/blake2b_simd.cpp
28 index ff138321..b246824c 100644
29 --- a/blake2b_simd.cpp
30 +++ b/blake2b_simd.cpp
32 # undef CRYPTOPP_ALTIVEC_AVAILABLE
\r
35 +#if defined(__XOP__)
\r
36 +# include <immintrin.h>
\r
37 +# include <ammintrin.h>
\r
40 #if (CRYPTOPP_SSE41_AVAILABLE)
\r
41 # include <emmintrin.h>
\r
42 # include <tmmintrin.h>
\r
43 diff --git a/keccak_simd.cpp b/keccak_simd.cpp
44 index 45674ac2..ae2f2095 100644
48 # include <tmmintrin.h>
\r
51 +#if defined(__XOP__)
\r
52 +# include <immintrin.h>
\r
53 +# include <ammintrin.h>
\r
56 // Squash MS LNK4221 and libtool warnings
\r
57 extern const char KECCAK_SIMD_FNAME[] = __FILE__;
\r
59 diff --git a/simon128_simd.cpp b/simon128_simd.cpp
60 index 5331c351..4b551f8f 100644
61 --- a/simon128_simd.cpp
62 +++ b/simon128_simd.cpp
66 #if defined(__XOP__)
\r
67 +# include <immintrin.h>
\r
68 # include <ammintrin.h>
\r
71 diff --git a/speck128_simd.cpp b/speck128_simd.cpp
72 index 2c356346..fb3eb1e6 100644
73 --- a/speck128_simd.cpp
74 +++ b/speck128_simd.cpp
78 #if defined(__XOP__)
\r
79 +# include <immintrin.h>
\r
80 # include <ammintrin.h>
\r
86 From eeb7dadc76572b7061922ca6ac5f247bdfd985ad Mon Sep 17 00:00:00 2001
87 From: Jeffrey Walton <noloader@gmail.com>
88 Date: Tue, 2 Jul 2019 19:10:11 -0400
89 Subject: [PATCH] Fix missing _mm_roti_epi32 and _mm_roti_epi64 under GCC (GH
93 blake2b_simd.cpp | 4 +++-
94 blake2s_simd.cpp | 7 +++++++
95 chacha_simd.cpp | 3 +++
97 keccak_simd.cpp | 4 +++-
99 simeck_simd.cpp | 3 +++
100 simon128_simd.cpp | 4 +++-
101 simon64_simd.cpp | 3 +++
102 speck128_simd.cpp | 4 +++-
103 speck64_simd.cpp | 3 +++
104 11 files changed, 37 insertions(+), 4 deletions(-)
106 diff --git a/blake2b_simd.cpp b/blake2b_simd.cpp
107 index b246824c..6803d0ae 100644
108 --- a/blake2b_simd.cpp
109 +++ b/blake2b_simd.cpp
113 #if defined(__XOP__)
\r
114 -# include <immintrin.h>
\r
115 # include <ammintrin.h>
\r
116 +# if defined(__GNUC__)
\r
117 +# include <x86intrin.h>
\r
121 #if (CRYPTOPP_SSE41_AVAILABLE)
\r
122 diff --git a/blake2s_simd.cpp b/blake2s_simd.cpp
123 index f02b9771..4b6d1bd6 100644
124 --- a/blake2s_simd.cpp
125 +++ b/blake2s_simd.cpp
127 # undef CRYPTOPP_ALTIVEC_AVAILABLE
\r
130 +#if defined(__XOP__)
\r
131 +# include <ammintrin.h>
\r
132 +# if defined(__GNUC__)
\r
133 +# include <x86intrin.h>
\r
137 #if (CRYPTOPP_SSE41_AVAILABLE)
\r
138 # include <emmintrin.h>
\r
139 # include <tmmintrin.h>
\r
140 diff --git a/chacha_simd.cpp b/chacha_simd.cpp
141 index a983ab69..5a63ecee 100644
142 --- a/chacha_simd.cpp
143 +++ b/chacha_simd.cpp
146 #if defined(__XOP__)
\r
147 # include <ammintrin.h>
\r
148 +# if defined(__GNUC__)
\r
149 +# include <x86intrin.h>
\r
153 // C1189: error: This header is specific to ARM targets
\r
154 diff --git a/cham_simd.cpp b/cham_simd.cpp
155 index 7fcaece1..e102a877 100644
160 #if defined(__XOP__)
\r
161 # include <ammintrin.h>
\r
162 +# if defined(__GNUC__)
\r
163 +# include <x86intrin.h>
\r
167 #if defined(__AVX512F__)
\r
168 diff --git a/keccak_simd.cpp b/keccak_simd.cpp
169 index ae2f2095..194291a0 100644
170 --- a/keccak_simd.cpp
171 +++ b/keccak_simd.cpp
175 #if defined(__XOP__)
\r
176 -# include <immintrin.h>
\r
177 # include <ammintrin.h>
\r
178 +# if defined(__GNUC__)
\r
179 +# include <x86intrin.h>
\r
183 // Squash MS LNK4221 and libtool warnings
\r
184 diff --git a/lea_simd.cpp b/lea_simd.cpp
185 index b4180e34..ee2a5697 100644
190 #if defined(__XOP__)
\r
191 # include <ammintrin.h>
\r
192 +# if defined(__GNUC__)
\r
193 +# include <x86intrin.h>
\r
197 #if defined(__AVX512F__)
\r
198 diff --git a/simeck_simd.cpp b/simeck_simd.cpp
199 index 2a9efc99..f92a53d7 100644
200 --- a/simeck_simd.cpp
201 +++ b/simeck_simd.cpp
204 #if defined(__XOP__)
\r
205 # include <ammintrin.h>
\r
206 +# if defined(__GNUC__)
\r
207 +# include <x86intrin.h>
\r
211 // Squash MS LNK4221 and libtool warnings
\r
212 diff --git a/simon128_simd.cpp b/simon128_simd.cpp
213 index 4b551f8f..cb16fa8d 100644
214 --- a/simon128_simd.cpp
215 +++ b/simon128_simd.cpp
219 #if defined(__XOP__)
\r
220 -# include <immintrin.h>
\r
221 # include <ammintrin.h>
\r
222 +# if defined(__GNUC__)
\r
223 +# include <x86intrin.h>
\r
227 #if defined(__AVX512F__)
\r
228 diff --git a/simon64_simd.cpp b/simon64_simd.cpp
229 index eb5a1757..fcbe1342 100644
230 --- a/simon64_simd.cpp
231 +++ b/simon64_simd.cpp
234 #if defined(__XOP__)
\r
235 # include <ammintrin.h>
\r
236 +# if defined(__GNUC__)
\r
237 +# include <x86intrin.h>
\r
241 // C1189: error: This header is specific to ARM targets
\r
242 diff --git a/speck128_simd.cpp b/speck128_simd.cpp
243 index fb3eb1e6..0c0f389e 100644
244 --- a/speck128_simd.cpp
245 +++ b/speck128_simd.cpp
249 #if defined(__XOP__)
\r
250 -# include <immintrin.h>
\r
251 # include <ammintrin.h>
\r
252 +# if defined(__GNUC__)
\r
253 +# include <x86intrin.h>
\r
257 #if defined(__AVX512F__)
\r
258 diff --git a/speck64_simd.cpp b/speck64_simd.cpp
259 index 0a720fb3..0b43c175 100644
260 --- a/speck64_simd.cpp
261 +++ b/speck64_simd.cpp
264 #if defined(__XOP__)
\r
265 # include <ammintrin.h>
\r
266 +# if defined(__GNUC__)
\r
267 +# include <x86intrin.h>
\r
271 // C1189: error: This header is specific to ARM targets
\r