]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/i386/immintrin.h
Update copyright years.
[thirdparty/gcc.git] / gcc / config / i386 / immintrin.h
CommitLineData
8d9254fc 1/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
21898431
L
2
3 This file is part of GCC.
4
5 GCC is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
748086b7 7 the Free Software Foundation; either version 3, or (at your option)
21898431
L
8 any later version.
9
10 GCC is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
748086b7
JJ
15 Under Section 7 of GPL version 3, you are granted additional
16 permissions described in the GCC Runtime Library Exception, version
17 3.1, as published by the Free Software Foundation.
18
19 You should have received a copy of the GNU General Public License and
20 a copy of the GCC Runtime Library Exception along with this program;
21 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
22 <http://www.gnu.org/licenses/>. */
21898431
L
23
24#ifndef _IMMINTRIN_H_INCLUDED
25#define _IMMINTRIN_H_INCLUDED
26
21898431 27#include <mmintrin.h>
21898431 28
21898431 29#include <xmmintrin.h>
21898431 30
21898431 31#include <emmintrin.h>
21898431 32
21898431 33#include <pmmintrin.h>
21898431 34
21898431 35#include <tmmintrin.h>
21898431 36
21898431 37#include <smmintrin.h>
21898431 38
21898431 39#include <wmmintrin.h>
21898431 40
6c0d746f
L
41#include <fxsrintrin.h>
42
43#include <xsaveintrin.h>
44
45#include <xsaveoptintrin.h>
46
47#include <xsavesintrin.h>
48
49#include <xsavecintrin.h>
50
21898431 51#include <avxintrin.h>
21898431 52
977e83a3 53#include <avx2intrin.h>
977e83a3 54
756c5857
AI
55#include <avx512fintrin.h>
56
57#include <avx512erintrin.h>
58
59#include <avx512pfintrin.h>
60
61#include <avx512cdintrin.h>
62
936c0fe4
AI
63#include <avx512vlintrin.h>
64
65#include <avx512bwintrin.h>
66
67#include <avx512dqintrin.h>
68
69#include <avx512vlbwintrin.h>
70
71#include <avx512vldqintrin.h>
72
4190ea38
IT
73#include <avx512ifmaintrin.h>
74
75#include <avx512ifmavlintrin.h>
76
3dcc8af5
IT
77#include <avx512vbmiintrin.h>
78
79#include <avx512vbmivlintrin.h>
80
5fbb13a7
KY
81#include <avx5124fmapsintrin.h>
82
83#include <avx5124vnniwintrin.h>
84
79fc8ffe
AS
85#include <avx512vpopcntdqintrin.h>
86
11cca3ca
JK
87#include <avx512vbmi2intrin.h>
88
89#include <avx512vbmi2vlintrin.h>
90
69ddc3e5
JK
91#include <avx512vnniintrin.h>
92
93#include <avx512vnnivlintrin.h>
94
e2a29465
JK
95#include <avx512vpopcntdqvlintrin.h>
96
97#include <avx512bitalgintrin.h>
98
e21b52af
HL
99#include <avx512vp2intersectintrin.h>
100
101#include <avx512vp2intersectvlintrin.h>
102
c1618f82
AI
103#include <shaintrin.h>
104
f13677ba 105#include <lzcntintrin.h>
f13677ba 106
f13677ba 107#include <bmiintrin.h>
f13677ba 108
f13677ba 109#include <bmi2intrin.h>
f13677ba 110
2ddd46d6 111#include <fmaintrin.h>
2ddd46d6 112
87ca01b7 113#include <f16cintrin.h>
87ca01b7 114
bf2eaa3f 115#include <rtmintrin.h>
bf2eaa3f 116
bf2eaa3f 117#include <xtestintrin.h>
bf2eaa3f 118
2a25448c
IT
119#include <cetintrin.h>
120
9d54607a
JK
121#include <gfniintrin.h>
122
e157d456
JK
123#include <vaesintrin.h>
124
6557be99
JK
125#include <vpclmulqdqintrin.h>
126
37d51c75
SP
127#include <movdirintrin.h>
128
5a6e3d79
SP
129#include <sgxintrin.h>
130
131#include <pconfigintrin.h>
132
133#include <waitpkgintrin.h>
134
135#include <cldemoteintrin.h>
136
4f0e90fa
HL
137#include <avx512bf16vlintrin.h>
138
139#include <avx512bf16intrin.h>
140
6a10feda
XG
141#include <enqcmdintrin.h>
142
6c0d746f
L
143#include <rdseedintrin.h>
144
145#include <prfchwintrin.h>
146
147#include <adxintrin.h>
148
149#include <clwbintrin.h>
150
151#include <clflushoptintrin.h>
152
153#include <wbnoinvdintrin.h>
154
155#include <pkuintrin.h>
156
13b93d4b
OM
157extern __inline void
158__attribute__((__gnu_inline__, __always_inline__, __artificial__))
159_wbinvd (void)
160{
161 __builtin_ia32_wbinvd ();
162}
163
97db2bf7
ST
164#ifndef __RDRND__
165#pragma GCC push_options
166#pragma GCC target("rdrnd")
167#define __DISABLE_RDRND__
168#endif /* __RDRND__ */
11c4a1c0 169extern __inline int
4ee89d5f 170__attribute__((__gnu_inline__, __always_inline__, __artificial__))
11c4a1c0 171_rdrand16_step (unsigned short *__P)
4ee89d5f 172{
11c4a1c0 173 return __builtin_ia32_rdrand16_step (__P);
4ee89d5f
L
174}
175
11c4a1c0 176extern __inline int
4ee89d5f 177__attribute__((__gnu_inline__, __always_inline__, __artificial__))
11c4a1c0 178_rdrand32_step (unsigned int *__P)
4ee89d5f 179{
11c4a1c0 180 return __builtin_ia32_rdrand32_step (__P);
4ee89d5f 181}
97db2bf7
ST
182#ifdef __DISABLE_RDRND__
183#undef __DISABLE_RDRND__
184#pragma GCC pop_options
185#endif /* __DISABLE_RDRND__ */
4ee89d5f 186
1d516992
JK
187#ifndef __RDPID__
188#pragma GCC push_options
189#pragma GCC target("rdpid")
190#define __DISABLE_RDPID__
191#endif /* __RDPID__ */
192extern __inline unsigned int
193__attribute__((__gnu_inline__, __always_inline__, __artificial__))
194_rdpid_u32 (void)
195{
196 return __builtin_ia32_rdpid ();
197}
198#ifdef __DISABLE_RDPID__
199#undef __DISABLE_RDPID__
200#pragma GCC pop_options
201#endif /* __DISABLE_RDPID__ */
202
4ee89d5f 203#ifdef __x86_64__
97db2bf7
ST
204
205#ifndef __FSGSBASE__
206#pragma GCC push_options
207#pragma GCC target("fsgsbase")
208#define __DISABLE_FSGSBASE__
209#endif /* __FSGSBASE__ */
4ee89d5f
L
210extern __inline unsigned int
211__attribute__((__gnu_inline__, __always_inline__, __artificial__))
212_readfsbase_u32 (void)
213{
214 return __builtin_ia32_rdfsbase32 ();
215}
216
217extern __inline unsigned long long
218__attribute__((__gnu_inline__, __always_inline__, __artificial__))
219_readfsbase_u64 (void)
220{
221 return __builtin_ia32_rdfsbase64 ();
222}
223
224extern __inline unsigned int
225__attribute__((__gnu_inline__, __always_inline__, __artificial__))
226_readgsbase_u32 (void)
227{
228 return __builtin_ia32_rdgsbase32 ();
229}
230
231extern __inline unsigned long long
232__attribute__((__gnu_inline__, __always_inline__, __artificial__))
233_readgsbase_u64 (void)
234{
235 return __builtin_ia32_rdgsbase64 ();
236}
237
238extern __inline void
239__attribute__((__gnu_inline__, __always_inline__, __artificial__))
240_writefsbase_u32 (unsigned int __B)
241{
242 __builtin_ia32_wrfsbase32 (__B);
243}
244
245extern __inline void
246__attribute__((__gnu_inline__, __always_inline__, __artificial__))
247_writefsbase_u64 (unsigned long long __B)
248{
249 __builtin_ia32_wrfsbase64 (__B);
250}
251
252extern __inline void
253__attribute__((__gnu_inline__, __always_inline__, __artificial__))
254_writegsbase_u32 (unsigned int __B)
255{
256 __builtin_ia32_wrgsbase32 (__B);
257}
258
259extern __inline void
260__attribute__((__gnu_inline__, __always_inline__, __artificial__))
261_writegsbase_u64 (unsigned long long __B)
262{
263 __builtin_ia32_wrgsbase64 (__B);
264}
97db2bf7
ST
265#ifdef __DISABLE_FSGSBASE__
266#undef __DISABLE_FSGSBASE__
267#pragma GCC pop_options
268#endif /* __DISABLE_FSGSBASE__ */
269
270#ifndef __RDRND__
271#pragma GCC push_options
272#pragma GCC target("rdrnd")
273#define __DISABLE_RDRND__
274#endif /* __RDRND__ */
11c4a1c0 275extern __inline int
4ee89d5f 276__attribute__((__gnu_inline__, __always_inline__, __artificial__))
11c4a1c0 277_rdrand64_step (unsigned long long *__P)
4ee89d5f 278{
11c4a1c0 279 return __builtin_ia32_rdrand64_step (__P);
4ee89d5f 280}
97db2bf7
ST
281#ifdef __DISABLE_RDRND__
282#undef __DISABLE_RDRND__
283#pragma GCC pop_options
284#endif /* __DISABLE_RDRND__ */
285
4ee89d5f
L
286#endif /* __x86_64__ */
287
41f8d1fc
AK
288#ifndef __PTWRITE__
289#pragma GCC push_options
290#pragma GCC target("ptwrite")
291#define __DISABLE_PTWRITE__
292#endif
293
294#ifdef __x86_64__
295extern __inline void
296__attribute__((__gnu_inline__, __always_inline__, __artificial__))
297_ptwrite64 (unsigned long long __B)
298{
299 __builtin_ia32_ptwrite64 (__B);
300}
301#endif /* __x86_64__ */
302
303extern __inline void
304__attribute__((__gnu_inline__, __always_inline__, __artificial__))
305_ptwrite32 (unsigned __B)
306{
307 __builtin_ia32_ptwrite32 (__B);
308}
309#ifdef __DISABLE_PTWRITE__
310#undef __DISABLE_PTWRITE__
311#pragma GCC pop_options
312#endif /* __DISABLE_PTWRITE__ */
313
21898431 314#endif /* _IMMINTRIN_H_INCLUDED */