]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/i386/immintrin.h
Enable VAES support [1/5]
[thirdparty/gcc.git] / gcc / config / i386 / immintrin.h
CommitLineData
cbe34bb5 1/* Copyright (C) 2008-2017 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
c1618f82
AI
85#include <shaintrin.h>
86
f13677ba 87#include <lzcntintrin.h>
f13677ba 88
f13677ba 89#include <bmiintrin.h>
f13677ba 90
f13677ba 91#include <bmi2intrin.h>
f13677ba 92
2ddd46d6 93#include <fmaintrin.h>
2ddd46d6 94
87ca01b7 95#include <f16cintrin.h>
87ca01b7 96
bf2eaa3f 97#include <rtmintrin.h>
bf2eaa3f 98
bf2eaa3f 99#include <xtestintrin.h>
bf2eaa3f 100
2a25448c
IT
101#include <cetintrin.h>
102
9d54607a
JK
103#include <gfniintrin.h>
104
97db2bf7
ST
105#ifndef __RDRND__
106#pragma GCC push_options
107#pragma GCC target("rdrnd")
108#define __DISABLE_RDRND__
109#endif /* __RDRND__ */
11c4a1c0 110extern __inline int
4ee89d5f 111__attribute__((__gnu_inline__, __always_inline__, __artificial__))
11c4a1c0 112_rdrand16_step (unsigned short *__P)
4ee89d5f 113{
11c4a1c0 114 return __builtin_ia32_rdrand16_step (__P);
4ee89d5f
L
115}
116
11c4a1c0 117extern __inline int
4ee89d5f 118__attribute__((__gnu_inline__, __always_inline__, __artificial__))
11c4a1c0 119_rdrand32_step (unsigned int *__P)
4ee89d5f 120{
11c4a1c0 121 return __builtin_ia32_rdrand32_step (__P);
4ee89d5f 122}
97db2bf7
ST
123#ifdef __DISABLE_RDRND__
124#undef __DISABLE_RDRND__
125#pragma GCC pop_options
126#endif /* __DISABLE_RDRND__ */
4ee89d5f 127
1d516992
JK
128#ifndef __RDPID__
129#pragma GCC push_options
130#pragma GCC target("rdpid")
131#define __DISABLE_RDPID__
132#endif /* __RDPID__ */
133extern __inline unsigned int
134__attribute__((__gnu_inline__, __always_inline__, __artificial__))
135_rdpid_u32 (void)
136{
137 return __builtin_ia32_rdpid ();
138}
139#ifdef __DISABLE_RDPID__
140#undef __DISABLE_RDPID__
141#pragma GCC pop_options
142#endif /* __DISABLE_RDPID__ */
143
4ee89d5f 144#ifdef __x86_64__
97db2bf7
ST
145
146#ifndef __FSGSBASE__
147#pragma GCC push_options
148#pragma GCC target("fsgsbase")
149#define __DISABLE_FSGSBASE__
150#endif /* __FSGSBASE__ */
4ee89d5f
L
151extern __inline unsigned int
152__attribute__((__gnu_inline__, __always_inline__, __artificial__))
153_readfsbase_u32 (void)
154{
155 return __builtin_ia32_rdfsbase32 ();
156}
157
158extern __inline unsigned long long
159__attribute__((__gnu_inline__, __always_inline__, __artificial__))
160_readfsbase_u64 (void)
161{
162 return __builtin_ia32_rdfsbase64 ();
163}
164
165extern __inline unsigned int
166__attribute__((__gnu_inline__, __always_inline__, __artificial__))
167_readgsbase_u32 (void)
168{
169 return __builtin_ia32_rdgsbase32 ();
170}
171
172extern __inline unsigned long long
173__attribute__((__gnu_inline__, __always_inline__, __artificial__))
174_readgsbase_u64 (void)
175{
176 return __builtin_ia32_rdgsbase64 ();
177}
178
179extern __inline void
180__attribute__((__gnu_inline__, __always_inline__, __artificial__))
181_writefsbase_u32 (unsigned int __B)
182{
183 __builtin_ia32_wrfsbase32 (__B);
184}
185
186extern __inline void
187__attribute__((__gnu_inline__, __always_inline__, __artificial__))
188_writefsbase_u64 (unsigned long long __B)
189{
190 __builtin_ia32_wrfsbase64 (__B);
191}
192
193extern __inline void
194__attribute__((__gnu_inline__, __always_inline__, __artificial__))
195_writegsbase_u32 (unsigned int __B)
196{
197 __builtin_ia32_wrgsbase32 (__B);
198}
199
200extern __inline void
201__attribute__((__gnu_inline__, __always_inline__, __artificial__))
202_writegsbase_u64 (unsigned long long __B)
203{
204 __builtin_ia32_wrgsbase64 (__B);
205}
97db2bf7
ST
206#ifdef __DISABLE_FSGSBASE__
207#undef __DISABLE_FSGSBASE__
208#pragma GCC pop_options
209#endif /* __DISABLE_FSGSBASE__ */
210
211#ifndef __RDRND__
212#pragma GCC push_options
213#pragma GCC target("rdrnd")
214#define __DISABLE_RDRND__
215#endif /* __RDRND__ */
11c4a1c0 216extern __inline int
4ee89d5f 217__attribute__((__gnu_inline__, __always_inline__, __artificial__))
11c4a1c0 218_rdrand64_step (unsigned long long *__P)
4ee89d5f 219{
11c4a1c0 220 return __builtin_ia32_rdrand64_step (__P);
4ee89d5f 221}
97db2bf7
ST
222#ifdef __DISABLE_RDRND__
223#undef __DISABLE_RDRND__
224#pragma GCC pop_options
225#endif /* __DISABLE_RDRND__ */
226
4ee89d5f
L
227#endif /* __x86_64__ */
228
21898431 229#endif /* _IMMINTRIN_H_INCLUDED */