]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/i386/immintrin.h
Enable support for bfloat16 which will be in Future Cooper Lake.
[thirdparty/gcc.git] / gcc / config / i386 / immintrin.h
CommitLineData
a5544970 1/* Copyright (C) 2008-2019 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
c1618f82
AI
99#include <shaintrin.h>
100
f13677ba 101#include <lzcntintrin.h>
f13677ba 102
f13677ba 103#include <bmiintrin.h>
f13677ba 104
f13677ba 105#include <bmi2intrin.h>
f13677ba 106
2ddd46d6 107#include <fmaintrin.h>
2ddd46d6 108
87ca01b7 109#include <f16cintrin.h>
87ca01b7 110
bf2eaa3f 111#include <rtmintrin.h>
bf2eaa3f 112
bf2eaa3f 113#include <xtestintrin.h>
bf2eaa3f 114
2a25448c
IT
115#include <cetintrin.h>
116
9d54607a
JK
117#include <gfniintrin.h>
118
e157d456
JK
119#include <vaesintrin.h>
120
6557be99
JK
121#include <vpclmulqdqintrin.h>
122
37d51c75
SP
123#include <movdirintrin.h>
124
5a6e3d79
SP
125#include <sgxintrin.h>
126
127#include <pconfigintrin.h>
128
129#include <waitpkgintrin.h>
130
131#include <cldemoteintrin.h>
132
4f0e90fa
HL
133#include <avx512bf16vlintrin.h>
134
135#include <avx512bf16intrin.h>
136
6c0d746f
L
137#include <rdseedintrin.h>
138
139#include <prfchwintrin.h>
140
141#include <adxintrin.h>
142
143#include <clwbintrin.h>
144
145#include <clflushoptintrin.h>
146
147#include <wbnoinvdintrin.h>
148
149#include <pkuintrin.h>
150
13b93d4b
OM
151extern __inline void
152__attribute__((__gnu_inline__, __always_inline__, __artificial__))
153_wbinvd (void)
154{
155 __builtin_ia32_wbinvd ();
156}
157
97db2bf7
ST
158#ifndef __RDRND__
159#pragma GCC push_options
160#pragma GCC target("rdrnd")
161#define __DISABLE_RDRND__
162#endif /* __RDRND__ */
11c4a1c0 163extern __inline int
4ee89d5f 164__attribute__((__gnu_inline__, __always_inline__, __artificial__))
11c4a1c0 165_rdrand16_step (unsigned short *__P)
4ee89d5f 166{
11c4a1c0 167 return __builtin_ia32_rdrand16_step (__P);
4ee89d5f
L
168}
169
11c4a1c0 170extern __inline int
4ee89d5f 171__attribute__((__gnu_inline__, __always_inline__, __artificial__))
11c4a1c0 172_rdrand32_step (unsigned int *__P)
4ee89d5f 173{
11c4a1c0 174 return __builtin_ia32_rdrand32_step (__P);
4ee89d5f 175}
97db2bf7
ST
176#ifdef __DISABLE_RDRND__
177#undef __DISABLE_RDRND__
178#pragma GCC pop_options
179#endif /* __DISABLE_RDRND__ */
4ee89d5f 180
1d516992
JK
181#ifndef __RDPID__
182#pragma GCC push_options
183#pragma GCC target("rdpid")
184#define __DISABLE_RDPID__
185#endif /* __RDPID__ */
186extern __inline unsigned int
187__attribute__((__gnu_inline__, __always_inline__, __artificial__))
188_rdpid_u32 (void)
189{
190 return __builtin_ia32_rdpid ();
191}
192#ifdef __DISABLE_RDPID__
193#undef __DISABLE_RDPID__
194#pragma GCC pop_options
195#endif /* __DISABLE_RDPID__ */
196
4ee89d5f 197#ifdef __x86_64__
97db2bf7
ST
198
199#ifndef __FSGSBASE__
200#pragma GCC push_options
201#pragma GCC target("fsgsbase")
202#define __DISABLE_FSGSBASE__
203#endif /* __FSGSBASE__ */
4ee89d5f
L
204extern __inline unsigned int
205__attribute__((__gnu_inline__, __always_inline__, __artificial__))
206_readfsbase_u32 (void)
207{
208 return __builtin_ia32_rdfsbase32 ();
209}
210
211extern __inline unsigned long long
212__attribute__((__gnu_inline__, __always_inline__, __artificial__))
213_readfsbase_u64 (void)
214{
215 return __builtin_ia32_rdfsbase64 ();
216}
217
218extern __inline unsigned int
219__attribute__((__gnu_inline__, __always_inline__, __artificial__))
220_readgsbase_u32 (void)
221{
222 return __builtin_ia32_rdgsbase32 ();
223}
224
225extern __inline unsigned long long
226__attribute__((__gnu_inline__, __always_inline__, __artificial__))
227_readgsbase_u64 (void)
228{
229 return __builtin_ia32_rdgsbase64 ();
230}
231
232extern __inline void
233__attribute__((__gnu_inline__, __always_inline__, __artificial__))
234_writefsbase_u32 (unsigned int __B)
235{
236 __builtin_ia32_wrfsbase32 (__B);
237}
238
239extern __inline void
240__attribute__((__gnu_inline__, __always_inline__, __artificial__))
241_writefsbase_u64 (unsigned long long __B)
242{
243 __builtin_ia32_wrfsbase64 (__B);
244}
245
246extern __inline void
247__attribute__((__gnu_inline__, __always_inline__, __artificial__))
248_writegsbase_u32 (unsigned int __B)
249{
250 __builtin_ia32_wrgsbase32 (__B);
251}
252
253extern __inline void
254__attribute__((__gnu_inline__, __always_inline__, __artificial__))
255_writegsbase_u64 (unsigned long long __B)
256{
257 __builtin_ia32_wrgsbase64 (__B);
258}
97db2bf7
ST
259#ifdef __DISABLE_FSGSBASE__
260#undef __DISABLE_FSGSBASE__
261#pragma GCC pop_options
262#endif /* __DISABLE_FSGSBASE__ */
263
264#ifndef __RDRND__
265#pragma GCC push_options
266#pragma GCC target("rdrnd")
267#define __DISABLE_RDRND__
268#endif /* __RDRND__ */
11c4a1c0 269extern __inline int
4ee89d5f 270__attribute__((__gnu_inline__, __always_inline__, __artificial__))
11c4a1c0 271_rdrand64_step (unsigned long long *__P)
4ee89d5f 272{
11c4a1c0 273 return __builtin_ia32_rdrand64_step (__P);
4ee89d5f 274}
97db2bf7
ST
275#ifdef __DISABLE_RDRND__
276#undef __DISABLE_RDRND__
277#pragma GCC pop_options
278#endif /* __DISABLE_RDRND__ */
279
4ee89d5f
L
280#endif /* __x86_64__ */
281
41f8d1fc
AK
282#ifndef __PTWRITE__
283#pragma GCC push_options
284#pragma GCC target("ptwrite")
285#define __DISABLE_PTWRITE__
286#endif
287
288#ifdef __x86_64__
289extern __inline void
290__attribute__((__gnu_inline__, __always_inline__, __artificial__))
291_ptwrite64 (unsigned long long __B)
292{
293 __builtin_ia32_ptwrite64 (__B);
294}
295#endif /* __x86_64__ */
296
297extern __inline void
298__attribute__((__gnu_inline__, __always_inline__, __artificial__))
299_ptwrite32 (unsigned __B)
300{
301 __builtin_ia32_ptwrite32 (__B);
302}
303#ifdef __DISABLE_PTWRITE__
304#undef __DISABLE_PTWRITE__
305#pragma GCC pop_options
306#endif /* __DISABLE_PTWRITE__ */
307
21898431 308#endif /* _IMMINTRIN_H_INCLUDED */