]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/i386/immintrin.h
re PR rtl-optimization/85455 (ICE in verify_loop_structure, at cfgloop.c:1708 (error...
[thirdparty/gcc.git] / gcc / config / i386 / immintrin.h
CommitLineData
85ec4feb 1/* Copyright (C) 2008-2018 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
21898431 41#include <avxintrin.h>
21898431 42
977e83a3 43#include <avx2intrin.h>
977e83a3 44
756c5857
AI
45#include <avx512fintrin.h>
46
47#include <avx512erintrin.h>
48
49#include <avx512pfintrin.h>
50
51#include <avx512cdintrin.h>
52
936c0fe4
AI
53#include <avx512vlintrin.h>
54
55#include <avx512bwintrin.h>
56
57#include <avx512dqintrin.h>
58
59#include <avx512vlbwintrin.h>
60
61#include <avx512vldqintrin.h>
62
4190ea38
IT
63#include <avx512ifmaintrin.h>
64
65#include <avx512ifmavlintrin.h>
66
3dcc8af5
IT
67#include <avx512vbmiintrin.h>
68
69#include <avx512vbmivlintrin.h>
70
5fbb13a7
KY
71#include <avx5124fmapsintrin.h>
72
73#include <avx5124vnniwintrin.h>
74
79fc8ffe
AS
75#include <avx512vpopcntdqintrin.h>
76
11cca3ca
JK
77#include <avx512vbmi2intrin.h>
78
79#include <avx512vbmi2vlintrin.h>
80
69ddc3e5
JK
81#include <avx512vnniintrin.h>
82
83#include <avx512vnnivlintrin.h>
84
e2a29465
JK
85#include <avx512vpopcntdqvlintrin.h>
86
87#include <avx512bitalgintrin.h>
88
c1618f82
AI
89#include <shaintrin.h>
90
f13677ba 91#include <lzcntintrin.h>
f13677ba 92
f13677ba 93#include <bmiintrin.h>
f13677ba 94
f13677ba 95#include <bmi2intrin.h>
f13677ba 96
2ddd46d6 97#include <fmaintrin.h>
2ddd46d6 98
87ca01b7 99#include <f16cintrin.h>
87ca01b7 100
bf2eaa3f 101#include <rtmintrin.h>
bf2eaa3f 102
bf2eaa3f 103#include <xtestintrin.h>
bf2eaa3f 104
2a25448c
IT
105#include <cetintrin.h>
106
9d54607a
JK
107#include <gfniintrin.h>
108
e157d456
JK
109#include <vaesintrin.h>
110
6557be99
JK
111#include <vpclmulqdqintrin.h>
112
13b93d4b
OM
113extern __inline void
114__attribute__((__gnu_inline__, __always_inline__, __artificial__))
115_wbinvd (void)
116{
117 __builtin_ia32_wbinvd ();
118}
119
97db2bf7
ST
120#ifndef __RDRND__
121#pragma GCC push_options
122#pragma GCC target("rdrnd")
123#define __DISABLE_RDRND__
124#endif /* __RDRND__ */
11c4a1c0 125extern __inline int
4ee89d5f 126__attribute__((__gnu_inline__, __always_inline__, __artificial__))
11c4a1c0 127_rdrand16_step (unsigned short *__P)
4ee89d5f 128{
11c4a1c0 129 return __builtin_ia32_rdrand16_step (__P);
4ee89d5f
L
130}
131
11c4a1c0 132extern __inline int
4ee89d5f 133__attribute__((__gnu_inline__, __always_inline__, __artificial__))
11c4a1c0 134_rdrand32_step (unsigned int *__P)
4ee89d5f 135{
11c4a1c0 136 return __builtin_ia32_rdrand32_step (__P);
4ee89d5f 137}
97db2bf7
ST
138#ifdef __DISABLE_RDRND__
139#undef __DISABLE_RDRND__
140#pragma GCC pop_options
141#endif /* __DISABLE_RDRND__ */
4ee89d5f 142
1d516992
JK
143#ifndef __RDPID__
144#pragma GCC push_options
145#pragma GCC target("rdpid")
146#define __DISABLE_RDPID__
147#endif /* __RDPID__ */
148extern __inline unsigned int
149__attribute__((__gnu_inline__, __always_inline__, __artificial__))
150_rdpid_u32 (void)
151{
152 return __builtin_ia32_rdpid ();
153}
154#ifdef __DISABLE_RDPID__
155#undef __DISABLE_RDPID__
156#pragma GCC pop_options
157#endif /* __DISABLE_RDPID__ */
158
4ee89d5f 159#ifdef __x86_64__
97db2bf7
ST
160
161#ifndef __FSGSBASE__
162#pragma GCC push_options
163#pragma GCC target("fsgsbase")
164#define __DISABLE_FSGSBASE__
165#endif /* __FSGSBASE__ */
4ee89d5f
L
166extern __inline unsigned int
167__attribute__((__gnu_inline__, __always_inline__, __artificial__))
168_readfsbase_u32 (void)
169{
170 return __builtin_ia32_rdfsbase32 ();
171}
172
173extern __inline unsigned long long
174__attribute__((__gnu_inline__, __always_inline__, __artificial__))
175_readfsbase_u64 (void)
176{
177 return __builtin_ia32_rdfsbase64 ();
178}
179
180extern __inline unsigned int
181__attribute__((__gnu_inline__, __always_inline__, __artificial__))
182_readgsbase_u32 (void)
183{
184 return __builtin_ia32_rdgsbase32 ();
185}
186
187extern __inline unsigned long long
188__attribute__((__gnu_inline__, __always_inline__, __artificial__))
189_readgsbase_u64 (void)
190{
191 return __builtin_ia32_rdgsbase64 ();
192}
193
194extern __inline void
195__attribute__((__gnu_inline__, __always_inline__, __artificial__))
196_writefsbase_u32 (unsigned int __B)
197{
198 __builtin_ia32_wrfsbase32 (__B);
199}
200
201extern __inline void
202__attribute__((__gnu_inline__, __always_inline__, __artificial__))
203_writefsbase_u64 (unsigned long long __B)
204{
205 __builtin_ia32_wrfsbase64 (__B);
206}
207
208extern __inline void
209__attribute__((__gnu_inline__, __always_inline__, __artificial__))
210_writegsbase_u32 (unsigned int __B)
211{
212 __builtin_ia32_wrgsbase32 (__B);
213}
214
215extern __inline void
216__attribute__((__gnu_inline__, __always_inline__, __artificial__))
217_writegsbase_u64 (unsigned long long __B)
218{
219 __builtin_ia32_wrgsbase64 (__B);
220}
97db2bf7
ST
221#ifdef __DISABLE_FSGSBASE__
222#undef __DISABLE_FSGSBASE__
223#pragma GCC pop_options
224#endif /* __DISABLE_FSGSBASE__ */
225
226#ifndef __RDRND__
227#pragma GCC push_options
228#pragma GCC target("rdrnd")
229#define __DISABLE_RDRND__
230#endif /* __RDRND__ */
11c4a1c0 231extern __inline int
4ee89d5f 232__attribute__((__gnu_inline__, __always_inline__, __artificial__))
11c4a1c0 233_rdrand64_step (unsigned long long *__P)
4ee89d5f 234{
11c4a1c0 235 return __builtin_ia32_rdrand64_step (__P);
4ee89d5f 236}
97db2bf7
ST
237#ifdef __DISABLE_RDRND__
238#undef __DISABLE_RDRND__
239#pragma GCC pop_options
240#endif /* __DISABLE_RDRND__ */
241
4ee89d5f
L
242#endif /* __x86_64__ */
243
21898431 244#endif /* _IMMINTRIN_H_INCLUDED */