• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/toolchains/hndtools-armeabi-2011.09/share/doc/arm-arm-none-eabi/html/gcc/
1<html lang="en">
2<head>
3<title>X86 Built-in Functions - Using the GNU Compiler Collection (GCC)</title>
4<meta http-equiv="Content-Type" content="text/html">
5<meta name="description" content="Using the GNU Compiler Collection (GCC)">
6<meta name="generator" content="makeinfo 4.13">
7<link title="Top" rel="start" href="index.html#Top">
8<link rel="up" href="Target-Builtins.html#Target-Builtins" title="Target Builtins">
9<link rel="prev" href="FR_002dV-Built_002din-Functions.html#FR_002dV-Built_002din-Functions" title="FR-V Built-in Functions">
10<link rel="next" href="MIPS-DSP-Built_002din-Functions.html#MIPS-DSP-Built_002din-Functions" title="MIPS DSP Built-in Functions">
11<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
12<!--
13Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
141998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
152010 Free Software Foundation, Inc.
16
17Permission is granted to copy, distribute and/or modify this document
18under the terms of the GNU Free Documentation License, Version 1.3 or
19any later version published by the Free Software Foundation; with the
20Invariant Sections being ``Funding Free Software'', the Front-Cover
21Texts being (a) (see below), and with the Back-Cover Texts being (b)
22(see below).  A copy of the license is included in the section entitled
23``GNU Free Documentation License''.
24
25(a) The FSF's Front-Cover Text is:
26
27     A GNU Manual
28
29(b) The FSF's Back-Cover Text is:
30
31     You have freedom to copy and modify this GNU Manual, like GNU
32     software.  Copies published by the Free Software Foundation raise
33     funds for GNU development.-->
34<meta http-equiv="Content-Style-Type" content="text/css">
35<style type="text/css"><!--
36  pre.display { font-family:inherit }
37  pre.format  { font-family:inherit }
38  pre.smalldisplay { font-family:inherit; font-size:smaller }
39  pre.smallformat  { font-family:inherit; font-size:smaller }
40  pre.smallexample { font-size:smaller }
41  pre.smalllisp    { font-size:smaller }
42  span.sc    { font-variant:small-caps }
43  span.roman { font-family:serif; font-weight:normal; } 
44  span.sansserif { font-family:sans-serif; font-weight:normal; } 
45--></style>
46<link rel="stylesheet" type="text/css" href="../cs.css">
47</head>
48<body>
49<div class="node">
50<a name="X86-Built-in-Functions"></a>
51<a name="X86-Built_002din-Functions"></a>
52<p>
53Next:&nbsp;<a rel="next" accesskey="n" href="MIPS-DSP-Built_002din-Functions.html#MIPS-DSP-Built_002din-Functions">MIPS DSP Built-in Functions</a>,
54Previous:&nbsp;<a rel="previous" accesskey="p" href="FR_002dV-Built_002din-Functions.html#FR_002dV-Built_002din-Functions">FR-V Built-in Functions</a>,
55Up:&nbsp;<a rel="up" accesskey="u" href="Target-Builtins.html#Target-Builtins">Target Builtins</a>
56<hr>
57</div>
58
59<h4 class="subsection">6.54.6 X86 Built-in Functions</h4>
60
61<p>These built-in functions are available for the i386 and x86-64 family
62of computers, depending on the command-line switches used.
63
64 <p>Note that, if you specify command-line switches such as <samp><span class="option">-msse</span></samp>,
65the compiler could use the extended instruction sets even if the built-ins
66are not used explicitly in the program.  For this reason, applications
67which perform runtime CPU detection must compile separate files for each
68supported architecture, using the appropriate flags.  In particular,
69the file containing the CPU detection code should be compiled without
70these options.
71
72 <p>The following machine modes are available for use with MMX built-in functions
73(see <a href="Vector-Extensions.html#Vector-Extensions">Vector Extensions</a>): <code>V2SI</code> for a vector of two 32-bit integers,
74<code>V4HI</code> for a vector of four 16-bit integers, and <code>V8QI</code> for a
75vector of eight 8-bit integers.  Some of the built-in functions operate on
76MMX registers as a whole 64-bit entity, these use <code>V1DI</code> as their mode.
77
78 <p>If 3DNow! extensions are enabled, <code>V2SF</code> is used as a mode for a vector
79of two 32-bit floating point values.
80
81 <p>If SSE extensions are enabled, <code>V4SF</code> is used for a vector of four 32-bit
82floating point values.  Some instructions use a vector of four 32-bit
83integers, these use <code>V4SI</code>.  Finally, some instructions operate on an
84entire vector register, interpreting it as a 128-bit integer, these use mode
85<code>TI</code>.
86
87 <p>In 64-bit mode, the x86-64 family of processors uses additional built-in
88functions for efficient use of <code>TF</code> (<code>__float128</code>) 128-bit
89floating point and <code>TC</code> 128-bit complex floating point values.
90
91 <p>The following floating point built-in functions are available in 64-bit
92mode.  All of them implement the function that is part of the name.
93
94<pre class="smallexample">     __float128 __builtin_fabsq (__float128)
95     __float128 __builtin_copysignq (__float128, __float128)
96</pre>
97 <p>The following floating point built-in functions are made available in the
9864-bit mode.
99
100     <dl>
101<dt><code>__float128 __builtin_infq (void)</code><dd>Similar to <code>__builtin_inf</code>, except the return type is <code>__float128</code>. 
102<a name="index-g_t_005f_005fbuiltin_005finfq-3188"></a>
103<br><dt><code>__float128 __builtin_huge_valq (void)</code><dd>Similar to <code>__builtin_huge_val</code>, except the return type is <code>__float128</code>. 
104<a name="index-g_t_005f_005fbuiltin_005fhuge_005fvalq-3189"></a></dl>
105
106 <p>The following built-in functions are made available by <samp><span class="option">-mmmx</span></samp>. 
107All of them generate the machine instruction that is part of the name.
108
109<pre class="smallexample">     v8qi __builtin_ia32_paddb (v8qi, v8qi)
110     v4hi __builtin_ia32_paddw (v4hi, v4hi)
111     v2si __builtin_ia32_paddd (v2si, v2si)
112     v8qi __builtin_ia32_psubb (v8qi, v8qi)
113     v4hi __builtin_ia32_psubw (v4hi, v4hi)
114     v2si __builtin_ia32_psubd (v2si, v2si)
115     v8qi __builtin_ia32_paddsb (v8qi, v8qi)
116     v4hi __builtin_ia32_paddsw (v4hi, v4hi)
117     v8qi __builtin_ia32_psubsb (v8qi, v8qi)
118     v4hi __builtin_ia32_psubsw (v4hi, v4hi)
119     v8qi __builtin_ia32_paddusb (v8qi, v8qi)
120     v4hi __builtin_ia32_paddusw (v4hi, v4hi)
121     v8qi __builtin_ia32_psubusb (v8qi, v8qi)
122     v4hi __builtin_ia32_psubusw (v4hi, v4hi)
123     v4hi __builtin_ia32_pmullw (v4hi, v4hi)
124     v4hi __builtin_ia32_pmulhw (v4hi, v4hi)
125     di __builtin_ia32_pand (di, di)
126     di __builtin_ia32_pandn (di,di)
127     di __builtin_ia32_por (di, di)
128     di __builtin_ia32_pxor (di, di)
129     v8qi __builtin_ia32_pcmpeqb (v8qi, v8qi)
130     v4hi __builtin_ia32_pcmpeqw (v4hi, v4hi)
131     v2si __builtin_ia32_pcmpeqd (v2si, v2si)
132     v8qi __builtin_ia32_pcmpgtb (v8qi, v8qi)
133     v4hi __builtin_ia32_pcmpgtw (v4hi, v4hi)
134     v2si __builtin_ia32_pcmpgtd (v2si, v2si)
135     v8qi __builtin_ia32_punpckhbw (v8qi, v8qi)
136     v4hi __builtin_ia32_punpckhwd (v4hi, v4hi)
137     v2si __builtin_ia32_punpckhdq (v2si, v2si)
138     v8qi __builtin_ia32_punpcklbw (v8qi, v8qi)
139     v4hi __builtin_ia32_punpcklwd (v4hi, v4hi)
140     v2si __builtin_ia32_punpckldq (v2si, v2si)
141     v8qi __builtin_ia32_packsswb (v4hi, v4hi)
142     v4hi __builtin_ia32_packssdw (v2si, v2si)
143     v8qi __builtin_ia32_packuswb (v4hi, v4hi)
144     
145     v4hi __builtin_ia32_psllw (v4hi, v4hi)
146     v2si __builtin_ia32_pslld (v2si, v2si)
147     v1di __builtin_ia32_psllq (v1di, v1di)
148     v4hi __builtin_ia32_psrlw (v4hi, v4hi)
149     v2si __builtin_ia32_psrld (v2si, v2si)
150     v1di __builtin_ia32_psrlq (v1di, v1di)
151     v4hi __builtin_ia32_psraw (v4hi, v4hi)
152     v2si __builtin_ia32_psrad (v2si, v2si)
153     v4hi __builtin_ia32_psllwi (v4hi, int)
154     v2si __builtin_ia32_pslldi (v2si, int)
155     v1di __builtin_ia32_psllqi (v1di, int)
156     v4hi __builtin_ia32_psrlwi (v4hi, int)
157     v2si __builtin_ia32_psrldi (v2si, int)
158     v1di __builtin_ia32_psrlqi (v1di, int)
159     v4hi __builtin_ia32_psrawi (v4hi, int)
160     v2si __builtin_ia32_psradi (v2si, int)
161     
162</pre>
163 <p>The following built-in functions are made available either with
164<samp><span class="option">-msse</span></samp>, or with a combination of <samp><span class="option">-m3dnow</span></samp> and
165<samp><span class="option">-march=athlon</span></samp>.  All of them generate the machine
166instruction that is part of the name.
167
168<pre class="smallexample">     v4hi __builtin_ia32_pmulhuw (v4hi, v4hi)
169     v8qi __builtin_ia32_pavgb (v8qi, v8qi)
170     v4hi __builtin_ia32_pavgw (v4hi, v4hi)
171     v1di __builtin_ia32_psadbw (v8qi, v8qi)
172     v8qi __builtin_ia32_pmaxub (v8qi, v8qi)
173     v4hi __builtin_ia32_pmaxsw (v4hi, v4hi)
174     v8qi __builtin_ia32_pminub (v8qi, v8qi)
175     v4hi __builtin_ia32_pminsw (v4hi, v4hi)
176     int __builtin_ia32_pextrw (v4hi, int)
177     v4hi __builtin_ia32_pinsrw (v4hi, int, int)
178     int __builtin_ia32_pmovmskb (v8qi)
179     void __builtin_ia32_maskmovq (v8qi, v8qi, char *)
180     void __builtin_ia32_movntq (di *, di)
181     void __builtin_ia32_sfence (void)
182</pre>
183 <p>The following built-in functions are available when <samp><span class="option">-msse</span></samp> is used. 
184All of them generate the machine instruction that is part of the name.
185
186<pre class="smallexample">     int __builtin_ia32_comieq (v4sf, v4sf)
187     int __builtin_ia32_comineq (v4sf, v4sf)
188     int __builtin_ia32_comilt (v4sf, v4sf)
189     int __builtin_ia32_comile (v4sf, v4sf)
190     int __builtin_ia32_comigt (v4sf, v4sf)
191     int __builtin_ia32_comige (v4sf, v4sf)
192     int __builtin_ia32_ucomieq (v4sf, v4sf)
193     int __builtin_ia32_ucomineq (v4sf, v4sf)
194     int __builtin_ia32_ucomilt (v4sf, v4sf)
195     int __builtin_ia32_ucomile (v4sf, v4sf)
196     int __builtin_ia32_ucomigt (v4sf, v4sf)
197     int __builtin_ia32_ucomige (v4sf, v4sf)
198     v4sf __builtin_ia32_addps (v4sf, v4sf)
199     v4sf __builtin_ia32_subps (v4sf, v4sf)
200     v4sf __builtin_ia32_mulps (v4sf, v4sf)
201     v4sf __builtin_ia32_divps (v4sf, v4sf)
202     v4sf __builtin_ia32_addss (v4sf, v4sf)
203     v4sf __builtin_ia32_subss (v4sf, v4sf)
204     v4sf __builtin_ia32_mulss (v4sf, v4sf)
205     v4sf __builtin_ia32_divss (v4sf, v4sf)
206     v4si __builtin_ia32_cmpeqps (v4sf, v4sf)
207     v4si __builtin_ia32_cmpltps (v4sf, v4sf)
208     v4si __builtin_ia32_cmpleps (v4sf, v4sf)
209     v4si __builtin_ia32_cmpgtps (v4sf, v4sf)
210     v4si __builtin_ia32_cmpgeps (v4sf, v4sf)
211     v4si __builtin_ia32_cmpunordps (v4sf, v4sf)
212     v4si __builtin_ia32_cmpneqps (v4sf, v4sf)
213     v4si __builtin_ia32_cmpnltps (v4sf, v4sf)
214     v4si __builtin_ia32_cmpnleps (v4sf, v4sf)
215     v4si __builtin_ia32_cmpngtps (v4sf, v4sf)
216     v4si __builtin_ia32_cmpngeps (v4sf, v4sf)
217     v4si __builtin_ia32_cmpordps (v4sf, v4sf)
218     v4si __builtin_ia32_cmpeqss (v4sf, v4sf)
219     v4si __builtin_ia32_cmpltss (v4sf, v4sf)
220     v4si __builtin_ia32_cmpless (v4sf, v4sf)
221     v4si __builtin_ia32_cmpunordss (v4sf, v4sf)
222     v4si __builtin_ia32_cmpneqss (v4sf, v4sf)
223     v4si __builtin_ia32_cmpnlts (v4sf, v4sf)
224     v4si __builtin_ia32_cmpnless (v4sf, v4sf)
225     v4si __builtin_ia32_cmpordss (v4sf, v4sf)
226     v4sf __builtin_ia32_maxps (v4sf, v4sf)
227     v4sf __builtin_ia32_maxss (v4sf, v4sf)
228     v4sf __builtin_ia32_minps (v4sf, v4sf)
229     v4sf __builtin_ia32_minss (v4sf, v4sf)
230     v4sf __builtin_ia32_andps (v4sf, v4sf)
231     v4sf __builtin_ia32_andnps (v4sf, v4sf)
232     v4sf __builtin_ia32_orps (v4sf, v4sf)
233     v4sf __builtin_ia32_xorps (v4sf, v4sf)
234     v4sf __builtin_ia32_movss (v4sf, v4sf)
235     v4sf __builtin_ia32_movhlps (v4sf, v4sf)
236     v4sf __builtin_ia32_movlhps (v4sf, v4sf)
237     v4sf __builtin_ia32_unpckhps (v4sf, v4sf)
238     v4sf __builtin_ia32_unpcklps (v4sf, v4sf)
239     v4sf __builtin_ia32_cvtpi2ps (v4sf, v2si)
240     v4sf __builtin_ia32_cvtsi2ss (v4sf, int)
241     v2si __builtin_ia32_cvtps2pi (v4sf)
242     int __builtin_ia32_cvtss2si (v4sf)
243     v2si __builtin_ia32_cvttps2pi (v4sf)
244     int __builtin_ia32_cvttss2si (v4sf)
245     v4sf __builtin_ia32_rcpps (v4sf)
246     v4sf __builtin_ia32_rsqrtps (v4sf)
247     v4sf __builtin_ia32_sqrtps (v4sf)
248     v4sf __builtin_ia32_rcpss (v4sf)
249     v4sf __builtin_ia32_rsqrtss (v4sf)
250     v4sf __builtin_ia32_sqrtss (v4sf)
251     v4sf __builtin_ia32_shufps (v4sf, v4sf, int)
252     void __builtin_ia32_movntps (float *, v4sf)
253     int __builtin_ia32_movmskps (v4sf)
254</pre>
255 <p>The following built-in functions are available when <samp><span class="option">-msse</span></samp> is used.
256
257     <dl>
258<dt><code>v4sf __builtin_ia32_loadaps (float *)</code><dd>Generates the <code>movaps</code> machine instruction as a load from memory. 
259<br><dt><code>void __builtin_ia32_storeaps (float *, v4sf)</code><dd>Generates the <code>movaps</code> machine instruction as a store to memory. 
260<br><dt><code>v4sf __builtin_ia32_loadups (float *)</code><dd>Generates the <code>movups</code> machine instruction as a load from memory. 
261<br><dt><code>void __builtin_ia32_storeups (float *, v4sf)</code><dd>Generates the <code>movups</code> machine instruction as a store to memory. 
262<br><dt><code>v4sf __builtin_ia32_loadsss (float *)</code><dd>Generates the <code>movss</code> machine instruction as a load from memory. 
263<br><dt><code>void __builtin_ia32_storess (float *, v4sf)</code><dd>Generates the <code>movss</code> machine instruction as a store to memory. 
264<br><dt><code>v4sf __builtin_ia32_loadhps (v4sf, const v2sf *)</code><dd>Generates the <code>movhps</code> machine instruction as a load from memory. 
265<br><dt><code>v4sf __builtin_ia32_loadlps (v4sf, const v2sf *)</code><dd>Generates the <code>movlps</code> machine instruction as a load from memory
266<br><dt><code>void __builtin_ia32_storehps (v2sf *, v4sf)</code><dd>Generates the <code>movhps</code> machine instruction as a store to memory. 
267<br><dt><code>void __builtin_ia32_storelps (v2sf *, v4sf)</code><dd>Generates the <code>movlps</code> machine instruction as a store to memory. 
268</dl>
269
270 <p>The following built-in functions are available when <samp><span class="option">-msse2</span></samp> is used. 
271All of them generate the machine instruction that is part of the name.
272
273<pre class="smallexample">     int __builtin_ia32_comisdeq (v2df, v2df)
274     int __builtin_ia32_comisdlt (v2df, v2df)
275     int __builtin_ia32_comisdle (v2df, v2df)
276     int __builtin_ia32_comisdgt (v2df, v2df)
277     int __builtin_ia32_comisdge (v2df, v2df)
278     int __builtin_ia32_comisdneq (v2df, v2df)
279     int __builtin_ia32_ucomisdeq (v2df, v2df)
280     int __builtin_ia32_ucomisdlt (v2df, v2df)
281     int __builtin_ia32_ucomisdle (v2df, v2df)
282     int __builtin_ia32_ucomisdgt (v2df, v2df)
283     int __builtin_ia32_ucomisdge (v2df, v2df)
284     int __builtin_ia32_ucomisdneq (v2df, v2df)
285     v2df __builtin_ia32_cmpeqpd (v2df, v2df)
286     v2df __builtin_ia32_cmpltpd (v2df, v2df)
287     v2df __builtin_ia32_cmplepd (v2df, v2df)
288     v2df __builtin_ia32_cmpgtpd (v2df, v2df)
289     v2df __builtin_ia32_cmpgepd (v2df, v2df)
290     v2df __builtin_ia32_cmpunordpd (v2df, v2df)
291     v2df __builtin_ia32_cmpneqpd (v2df, v2df)
292     v2df __builtin_ia32_cmpnltpd (v2df, v2df)
293     v2df __builtin_ia32_cmpnlepd (v2df, v2df)
294     v2df __builtin_ia32_cmpngtpd (v2df, v2df)
295     v2df __builtin_ia32_cmpngepd (v2df, v2df)
296     v2df __builtin_ia32_cmpordpd (v2df, v2df)
297     v2df __builtin_ia32_cmpeqsd (v2df, v2df)
298     v2df __builtin_ia32_cmpltsd (v2df, v2df)
299     v2df __builtin_ia32_cmplesd (v2df, v2df)
300     v2df __builtin_ia32_cmpunordsd (v2df, v2df)
301     v2df __builtin_ia32_cmpneqsd (v2df, v2df)
302     v2df __builtin_ia32_cmpnltsd (v2df, v2df)
303     v2df __builtin_ia32_cmpnlesd (v2df, v2df)
304     v2df __builtin_ia32_cmpordsd (v2df, v2df)
305     v2di __builtin_ia32_paddq (v2di, v2di)
306     v2di __builtin_ia32_psubq (v2di, v2di)
307     v2df __builtin_ia32_addpd (v2df, v2df)
308     v2df __builtin_ia32_subpd (v2df, v2df)
309     v2df __builtin_ia32_mulpd (v2df, v2df)
310     v2df __builtin_ia32_divpd (v2df, v2df)
311     v2df __builtin_ia32_addsd (v2df, v2df)
312     v2df __builtin_ia32_subsd (v2df, v2df)
313     v2df __builtin_ia32_mulsd (v2df, v2df)
314     v2df __builtin_ia32_divsd (v2df, v2df)
315     v2df __builtin_ia32_minpd (v2df, v2df)
316     v2df __builtin_ia32_maxpd (v2df, v2df)
317     v2df __builtin_ia32_minsd (v2df, v2df)
318     v2df __builtin_ia32_maxsd (v2df, v2df)
319     v2df __builtin_ia32_andpd (v2df, v2df)
320     v2df __builtin_ia32_andnpd (v2df, v2df)
321     v2df __builtin_ia32_orpd (v2df, v2df)
322     v2df __builtin_ia32_xorpd (v2df, v2df)
323     v2df __builtin_ia32_movsd (v2df, v2df)
324     v2df __builtin_ia32_unpckhpd (v2df, v2df)
325     v2df __builtin_ia32_unpcklpd (v2df, v2df)
326     v16qi __builtin_ia32_paddb128 (v16qi, v16qi)
327     v8hi __builtin_ia32_paddw128 (v8hi, v8hi)
328     v4si __builtin_ia32_paddd128 (v4si, v4si)
329     v2di __builtin_ia32_paddq128 (v2di, v2di)
330     v16qi __builtin_ia32_psubb128 (v16qi, v16qi)
331     v8hi __builtin_ia32_psubw128 (v8hi, v8hi)
332     v4si __builtin_ia32_psubd128 (v4si, v4si)
333     v2di __builtin_ia32_psubq128 (v2di, v2di)
334     v8hi __builtin_ia32_pmullw128 (v8hi, v8hi)
335     v8hi __builtin_ia32_pmulhw128 (v8hi, v8hi)
336     v2di __builtin_ia32_pand128 (v2di, v2di)
337     v2di __builtin_ia32_pandn128 (v2di, v2di)
338     v2di __builtin_ia32_por128 (v2di, v2di)
339     v2di __builtin_ia32_pxor128 (v2di, v2di)
340     v16qi __builtin_ia32_pavgb128 (v16qi, v16qi)
341     v8hi __builtin_ia32_pavgw128 (v8hi, v8hi)
342     v16qi __builtin_ia32_pcmpeqb128 (v16qi, v16qi)
343     v8hi __builtin_ia32_pcmpeqw128 (v8hi, v8hi)
344     v4si __builtin_ia32_pcmpeqd128 (v4si, v4si)
345     v16qi __builtin_ia32_pcmpgtb128 (v16qi, v16qi)
346     v8hi __builtin_ia32_pcmpgtw128 (v8hi, v8hi)
347     v4si __builtin_ia32_pcmpgtd128 (v4si, v4si)
348     v16qi __builtin_ia32_pmaxub128 (v16qi, v16qi)
349     v8hi __builtin_ia32_pmaxsw128 (v8hi, v8hi)
350     v16qi __builtin_ia32_pminub128 (v16qi, v16qi)
351     v8hi __builtin_ia32_pminsw128 (v8hi, v8hi)
352     v16qi __builtin_ia32_punpckhbw128 (v16qi, v16qi)
353     v8hi __builtin_ia32_punpckhwd128 (v8hi, v8hi)
354     v4si __builtin_ia32_punpckhdq128 (v4si, v4si)
355     v2di __builtin_ia32_punpckhqdq128 (v2di, v2di)
356     v16qi __builtin_ia32_punpcklbw128 (v16qi, v16qi)
357     v8hi __builtin_ia32_punpcklwd128 (v8hi, v8hi)
358     v4si __builtin_ia32_punpckldq128 (v4si, v4si)
359     v2di __builtin_ia32_punpcklqdq128 (v2di, v2di)
360     v16qi __builtin_ia32_packsswb128 (v8hi, v8hi)
361     v8hi __builtin_ia32_packssdw128 (v4si, v4si)
362     v16qi __builtin_ia32_packuswb128 (v8hi, v8hi)
363     v8hi __builtin_ia32_pmulhuw128 (v8hi, v8hi)
364     void __builtin_ia32_maskmovdqu (v16qi, v16qi)
365     v2df __builtin_ia32_loadupd (double *)
366     void __builtin_ia32_storeupd (double *, v2df)
367     v2df __builtin_ia32_loadhpd (v2df, double const *)
368     v2df __builtin_ia32_loadlpd (v2df, double const *)
369     int __builtin_ia32_movmskpd (v2df)
370     int __builtin_ia32_pmovmskb128 (v16qi)
371     void __builtin_ia32_movnti (int *, int)
372     void __builtin_ia32_movntpd (double *, v2df)
373     void __builtin_ia32_movntdq (v2df *, v2df)
374     v4si __builtin_ia32_pshufd (v4si, int)
375     v8hi __builtin_ia32_pshuflw (v8hi, int)
376     v8hi __builtin_ia32_pshufhw (v8hi, int)
377     v2di __builtin_ia32_psadbw128 (v16qi, v16qi)
378     v2df __builtin_ia32_sqrtpd (v2df)
379     v2df __builtin_ia32_sqrtsd (v2df)
380     v2df __builtin_ia32_shufpd (v2df, v2df, int)
381     v2df __builtin_ia32_cvtdq2pd (v4si)
382     v4sf __builtin_ia32_cvtdq2ps (v4si)
383     v4si __builtin_ia32_cvtpd2dq (v2df)
384     v2si __builtin_ia32_cvtpd2pi (v2df)
385     v4sf __builtin_ia32_cvtpd2ps (v2df)
386     v4si __builtin_ia32_cvttpd2dq (v2df)
387     v2si __builtin_ia32_cvttpd2pi (v2df)
388     v2df __builtin_ia32_cvtpi2pd (v2si)
389     int __builtin_ia32_cvtsd2si (v2df)
390     int __builtin_ia32_cvttsd2si (v2df)
391     long long __builtin_ia32_cvtsd2si64 (v2df)
392     long long __builtin_ia32_cvttsd2si64 (v2df)
393     v4si __builtin_ia32_cvtps2dq (v4sf)
394     v2df __builtin_ia32_cvtps2pd (v4sf)
395     v4si __builtin_ia32_cvttps2dq (v4sf)
396     v2df __builtin_ia32_cvtsi2sd (v2df, int)
397     v2df __builtin_ia32_cvtsi642sd (v2df, long long)
398     v4sf __builtin_ia32_cvtsd2ss (v4sf, v2df)
399     v2df __builtin_ia32_cvtss2sd (v2df, v4sf)
400     void __builtin_ia32_clflush (const void *)
401     void __builtin_ia32_lfence (void)
402     void __builtin_ia32_mfence (void)
403     v16qi __builtin_ia32_loaddqu (const char *)
404     void __builtin_ia32_storedqu (char *, v16qi)
405     v1di __builtin_ia32_pmuludq (v2si, v2si)
406     v2di __builtin_ia32_pmuludq128 (v4si, v4si)
407     v8hi __builtin_ia32_psllw128 (v8hi, v8hi)
408     v4si __builtin_ia32_pslld128 (v4si, v4si)
409     v2di __builtin_ia32_psllq128 (v2di, v2di)
410     v8hi __builtin_ia32_psrlw128 (v8hi, v8hi)
411     v4si __builtin_ia32_psrld128 (v4si, v4si)
412     v2di __builtin_ia32_psrlq128 (v2di, v2di)
413     v8hi __builtin_ia32_psraw128 (v8hi, v8hi)
414     v4si __builtin_ia32_psrad128 (v4si, v4si)
415     v2di __builtin_ia32_pslldqi128 (v2di, int)
416     v8hi __builtin_ia32_psllwi128 (v8hi, int)
417     v4si __builtin_ia32_pslldi128 (v4si, int)
418     v2di __builtin_ia32_psllqi128 (v2di, int)
419     v2di __builtin_ia32_psrldqi128 (v2di, int)
420     v8hi __builtin_ia32_psrlwi128 (v8hi, int)
421     v4si __builtin_ia32_psrldi128 (v4si, int)
422     v2di __builtin_ia32_psrlqi128 (v2di, int)
423     v8hi __builtin_ia32_psrawi128 (v8hi, int)
424     v4si __builtin_ia32_psradi128 (v4si, int)
425     v4si __builtin_ia32_pmaddwd128 (v8hi, v8hi)
426     v2di __builtin_ia32_movq128 (v2di)
427</pre>
428 <p>The following built-in functions are available when <samp><span class="option">-msse3</span></samp> is used. 
429All of them generate the machine instruction that is part of the name.
430
431<pre class="smallexample">     v2df __builtin_ia32_addsubpd (v2df, v2df)
432     v4sf __builtin_ia32_addsubps (v4sf, v4sf)
433     v2df __builtin_ia32_haddpd (v2df, v2df)
434     v4sf __builtin_ia32_haddps (v4sf, v4sf)
435     v2df __builtin_ia32_hsubpd (v2df, v2df)
436     v4sf __builtin_ia32_hsubps (v4sf, v4sf)
437     v16qi __builtin_ia32_lddqu (char const *)
438     void __builtin_ia32_monitor (void *, unsigned int, unsigned int)
439     v2df __builtin_ia32_movddup (v2df)
440     v4sf __builtin_ia32_movshdup (v4sf)
441     v4sf __builtin_ia32_movsldup (v4sf)
442     void __builtin_ia32_mwait (unsigned int, unsigned int)
443</pre>
444 <p>The following built-in functions are available when <samp><span class="option">-msse3</span></samp> is used.
445
446     <dl>
447<dt><code>v2df __builtin_ia32_loadddup (double const *)</code><dd>Generates the <code>movddup</code> machine instruction as a load from memory. 
448</dl>
449
450 <p>The following built-in functions are available when <samp><span class="option">-mssse3</span></samp> is used. 
451All of them generate the machine instruction that is part of the name
452with MMX registers.
453
454<pre class="smallexample">     v2si __builtin_ia32_phaddd (v2si, v2si)
455     v4hi __builtin_ia32_phaddw (v4hi, v4hi)
456     v4hi __builtin_ia32_phaddsw (v4hi, v4hi)
457     v2si __builtin_ia32_phsubd (v2si, v2si)
458     v4hi __builtin_ia32_phsubw (v4hi, v4hi)
459     v4hi __builtin_ia32_phsubsw (v4hi, v4hi)
460     v4hi __builtin_ia32_pmaddubsw (v8qi, v8qi)
461     v4hi __builtin_ia32_pmulhrsw (v4hi, v4hi)
462     v8qi __builtin_ia32_pshufb (v8qi, v8qi)
463     v8qi __builtin_ia32_psignb (v8qi, v8qi)
464     v2si __builtin_ia32_psignd (v2si, v2si)
465     v4hi __builtin_ia32_psignw (v4hi, v4hi)
466     v1di __builtin_ia32_palignr (v1di, v1di, int)
467     v8qi __builtin_ia32_pabsb (v8qi)
468     v2si __builtin_ia32_pabsd (v2si)
469     v4hi __builtin_ia32_pabsw (v4hi)
470</pre>
471 <p>The following built-in functions are available when <samp><span class="option">-mssse3</span></samp> is used. 
472All of them generate the machine instruction that is part of the name
473with SSE registers.
474
475<pre class="smallexample">     v4si __builtin_ia32_phaddd128 (v4si, v4si)
476     v8hi __builtin_ia32_phaddw128 (v8hi, v8hi)
477     v8hi __builtin_ia32_phaddsw128 (v8hi, v8hi)
478     v4si __builtin_ia32_phsubd128 (v4si, v4si)
479     v8hi __builtin_ia32_phsubw128 (v8hi, v8hi)
480     v8hi __builtin_ia32_phsubsw128 (v8hi, v8hi)
481     v8hi __builtin_ia32_pmaddubsw128 (v16qi, v16qi)
482     v8hi __builtin_ia32_pmulhrsw128 (v8hi, v8hi)
483     v16qi __builtin_ia32_pshufb128 (v16qi, v16qi)
484     v16qi __builtin_ia32_psignb128 (v16qi, v16qi)
485     v4si __builtin_ia32_psignd128 (v4si, v4si)
486     v8hi __builtin_ia32_psignw128 (v8hi, v8hi)
487     v2di __builtin_ia32_palignr128 (v2di, v2di, int)
488     v16qi __builtin_ia32_pabsb128 (v16qi)
489     v4si __builtin_ia32_pabsd128 (v4si)
490     v8hi __builtin_ia32_pabsw128 (v8hi)
491</pre>
492 <p>The following built-in functions are available when <samp><span class="option">-msse4.1</span></samp> is
493used.  All of them generate the machine instruction that is part of the
494name.
495
496<pre class="smallexample">     v2df __builtin_ia32_blendpd (v2df, v2df, const int)
497     v4sf __builtin_ia32_blendps (v4sf, v4sf, const int)
498     v2df __builtin_ia32_blendvpd (v2df, v2df, v2df)
499     v4sf __builtin_ia32_blendvps (v4sf, v4sf, v4sf)
500     v2df __builtin_ia32_dppd (v2df, v2df, const int)
501     v4sf __builtin_ia32_dpps (v4sf, v4sf, const int)
502     v4sf __builtin_ia32_insertps128 (v4sf, v4sf, const int)
503     v2di __builtin_ia32_movntdqa (v2di *);
504     v16qi __builtin_ia32_mpsadbw128 (v16qi, v16qi, const int)
505     v8hi __builtin_ia32_packusdw128 (v4si, v4si)
506     v16qi __builtin_ia32_pblendvb128 (v16qi, v16qi, v16qi)
507     v8hi __builtin_ia32_pblendw128 (v8hi, v8hi, const int)
508     v2di __builtin_ia32_pcmpeqq (v2di, v2di)
509     v8hi __builtin_ia32_phminposuw128 (v8hi)
510     v16qi __builtin_ia32_pmaxsb128 (v16qi, v16qi)
511     v4si __builtin_ia32_pmaxsd128 (v4si, v4si)
512     v4si __builtin_ia32_pmaxud128 (v4si, v4si)
513     v8hi __builtin_ia32_pmaxuw128 (v8hi, v8hi)
514     v16qi __builtin_ia32_pminsb128 (v16qi, v16qi)
515     v4si __builtin_ia32_pminsd128 (v4si, v4si)
516     v4si __builtin_ia32_pminud128 (v4si, v4si)
517     v8hi __builtin_ia32_pminuw128 (v8hi, v8hi)
518     v4si __builtin_ia32_pmovsxbd128 (v16qi)
519     v2di __builtin_ia32_pmovsxbq128 (v16qi)
520     v8hi __builtin_ia32_pmovsxbw128 (v16qi)
521     v2di __builtin_ia32_pmovsxdq128 (v4si)
522     v4si __builtin_ia32_pmovsxwd128 (v8hi)
523     v2di __builtin_ia32_pmovsxwq128 (v8hi)
524     v4si __builtin_ia32_pmovzxbd128 (v16qi)
525     v2di __builtin_ia32_pmovzxbq128 (v16qi)
526     v8hi __builtin_ia32_pmovzxbw128 (v16qi)
527     v2di __builtin_ia32_pmovzxdq128 (v4si)
528     v4si __builtin_ia32_pmovzxwd128 (v8hi)
529     v2di __builtin_ia32_pmovzxwq128 (v8hi)
530     v2di __builtin_ia32_pmuldq128 (v4si, v4si)
531     v4si __builtin_ia32_pmulld128 (v4si, v4si)
532     int __builtin_ia32_ptestc128 (v2di, v2di)
533     int __builtin_ia32_ptestnzc128 (v2di, v2di)
534     int __builtin_ia32_ptestz128 (v2di, v2di)
535     v2df __builtin_ia32_roundpd (v2df, const int)
536     v4sf __builtin_ia32_roundps (v4sf, const int)
537     v2df __builtin_ia32_roundsd (v2df, v2df, const int)
538     v4sf __builtin_ia32_roundss (v4sf, v4sf, const int)
539</pre>
540 <p>The following built-in functions are available when <samp><span class="option">-msse4.1</span></samp> is
541used.
542
543     <dl>
544<dt><code>v4sf __builtin_ia32_vec_set_v4sf (v4sf, float, const int)</code><dd>Generates the <code>insertps</code> machine instruction. 
545<br><dt><code>int __builtin_ia32_vec_ext_v16qi (v16qi, const int)</code><dd>Generates the <code>pextrb</code> machine instruction. 
546<br><dt><code>v16qi __builtin_ia32_vec_set_v16qi (v16qi, int, const int)</code><dd>Generates the <code>pinsrb</code> machine instruction. 
547<br><dt><code>v4si __builtin_ia32_vec_set_v4si (v4si, int, const int)</code><dd>Generates the <code>pinsrd</code> machine instruction. 
548<br><dt><code>v2di __builtin_ia32_vec_set_v2di (v2di, long long, const int)</code><dd>Generates the <code>pinsrq</code> machine instruction in 64bit mode. 
549</dl>
550
551 <p>The following built-in functions are changed to generate new SSE4.1
552instructions when <samp><span class="option">-msse4.1</span></samp> is used.
553
554     <dl>
555<dt><code>float __builtin_ia32_vec_ext_v4sf (v4sf, const int)</code><dd>Generates the <code>extractps</code> machine instruction. 
556<br><dt><code>int __builtin_ia32_vec_ext_v4si (v4si, const int)</code><dd>Generates the <code>pextrd</code> machine instruction. 
557<br><dt><code>long long __builtin_ia32_vec_ext_v2di (v2di, const int)</code><dd>Generates the <code>pextrq</code> machine instruction in 64bit mode. 
558</dl>
559
560 <p>The following built-in functions are available when <samp><span class="option">-msse4.2</span></samp> is
561used.  All of them generate the machine instruction that is part of the
562name.
563
564<pre class="smallexample">     v16qi __builtin_ia32_pcmpestrm128 (v16qi, int, v16qi, int, const int)
565     int __builtin_ia32_pcmpestri128 (v16qi, int, v16qi, int, const int)
566     int __builtin_ia32_pcmpestria128 (v16qi, int, v16qi, int, const int)
567     int __builtin_ia32_pcmpestric128 (v16qi, int, v16qi, int, const int)
568     int __builtin_ia32_pcmpestrio128 (v16qi, int, v16qi, int, const int)
569     int __builtin_ia32_pcmpestris128 (v16qi, int, v16qi, int, const int)
570     int __builtin_ia32_pcmpestriz128 (v16qi, int, v16qi, int, const int)
571     v16qi __builtin_ia32_pcmpistrm128 (v16qi, v16qi, const int)
572     int __builtin_ia32_pcmpistri128 (v16qi, v16qi, const int)
573     int __builtin_ia32_pcmpistria128 (v16qi, v16qi, const int)
574     int __builtin_ia32_pcmpistric128 (v16qi, v16qi, const int)
575     int __builtin_ia32_pcmpistrio128 (v16qi, v16qi, const int)
576     int __builtin_ia32_pcmpistris128 (v16qi, v16qi, const int)
577     int __builtin_ia32_pcmpistriz128 (v16qi, v16qi, const int)
578     v2di __builtin_ia32_pcmpgtq (v2di, v2di)
579</pre>
580 <p>The following built-in functions are available when <samp><span class="option">-msse4.2</span></samp> is
581used.
582
583     <dl>
584<dt><code>unsigned int __builtin_ia32_crc32qi (unsigned int, unsigned char)</code><dd>Generates the <code>crc32b</code> machine instruction. 
585<br><dt><code>unsigned int __builtin_ia32_crc32hi (unsigned int, unsigned short)</code><dd>Generates the <code>crc32w</code> machine instruction. 
586<br><dt><code>unsigned int __builtin_ia32_crc32si (unsigned int, unsigned int)</code><dd>Generates the <code>crc32l</code> machine instruction. 
587<br><dt><code>unsigned long long __builtin_ia32_crc32di (unsigned long long, unsigned long long)</code><dd>Generates the <code>crc32q</code> machine instruction. 
588</dl>
589
590 <p>The following built-in functions are changed to generate new SSE4.2
591instructions when <samp><span class="option">-msse4.2</span></samp> is used.
592
593     <dl>
594<dt><code>int __builtin_popcount (unsigned int)</code><dd>Generates the <code>popcntl</code> machine instruction. 
595<br><dt><code>int __builtin_popcountl (unsigned long)</code><dd>Generates the <code>popcntl</code> or <code>popcntq</code> machine instruction,
596depending on the size of <code>unsigned long</code>. 
597<br><dt><code>int __builtin_popcountll (unsigned long long)</code><dd>Generates the <code>popcntq</code> machine instruction. 
598</dl>
599
600 <p>The following built-in functions are available when <samp><span class="option">-mavx</span></samp> is
601used. All of them generate the machine instruction that is part of the
602name.
603
604<pre class="smallexample">     v4df __builtin_ia32_addpd256 (v4df,v4df)
605     v8sf __builtin_ia32_addps256 (v8sf,v8sf)
606     v4df __builtin_ia32_addsubpd256 (v4df,v4df)
607     v8sf __builtin_ia32_addsubps256 (v8sf,v8sf)
608     v4df __builtin_ia32_andnpd256 (v4df,v4df)
609     v8sf __builtin_ia32_andnps256 (v8sf,v8sf)
610     v4df __builtin_ia32_andpd256 (v4df,v4df)
611     v8sf __builtin_ia32_andps256 (v8sf,v8sf)
612     v4df __builtin_ia32_blendpd256 (v4df,v4df,int)
613     v8sf __builtin_ia32_blendps256 (v8sf,v8sf,int)
614     v4df __builtin_ia32_blendvpd256 (v4df,v4df,v4df)
615     v8sf __builtin_ia32_blendvps256 (v8sf,v8sf,v8sf)
616     v2df __builtin_ia32_cmppd (v2df,v2df,int)
617     v4df __builtin_ia32_cmppd256 (v4df,v4df,int)
618     v4sf __builtin_ia32_cmpps (v4sf,v4sf,int)
619     v8sf __builtin_ia32_cmpps256 (v8sf,v8sf,int)
620     v2df __builtin_ia32_cmpsd (v2df,v2df,int)
621     v4sf __builtin_ia32_cmpss (v4sf,v4sf,int)
622     v4df __builtin_ia32_cvtdq2pd256 (v4si)
623     v8sf __builtin_ia32_cvtdq2ps256 (v8si)
624     v4si __builtin_ia32_cvtpd2dq256 (v4df)
625     v4sf __builtin_ia32_cvtpd2ps256 (v4df)
626     v8si __builtin_ia32_cvtps2dq256 (v8sf)
627     v4df __builtin_ia32_cvtps2pd256 (v4sf)
628     v4si __builtin_ia32_cvttpd2dq256 (v4df)
629     v8si __builtin_ia32_cvttps2dq256 (v8sf)
630     v4df __builtin_ia32_divpd256 (v4df,v4df)
631     v8sf __builtin_ia32_divps256 (v8sf,v8sf)
632     v8sf __builtin_ia32_dpps256 (v8sf,v8sf,int)
633     v4df __builtin_ia32_haddpd256 (v4df,v4df)
634     v8sf __builtin_ia32_haddps256 (v8sf,v8sf)
635     v4df __builtin_ia32_hsubpd256 (v4df,v4df)
636     v8sf __builtin_ia32_hsubps256 (v8sf,v8sf)
637     v32qi __builtin_ia32_lddqu256 (pcchar)
638     v32qi __builtin_ia32_loaddqu256 (pcchar)
639     v4df __builtin_ia32_loadupd256 (pcdouble)
640     v8sf __builtin_ia32_loadups256 (pcfloat)
641     v2df __builtin_ia32_maskloadpd (pcv2df,v2df)
642     v4df __builtin_ia32_maskloadpd256 (pcv4df,v4df)
643     v4sf __builtin_ia32_maskloadps (pcv4sf,v4sf)
644     v8sf __builtin_ia32_maskloadps256 (pcv8sf,v8sf)
645     void __builtin_ia32_maskstorepd (pv2df,v2df,v2df)
646     void __builtin_ia32_maskstorepd256 (pv4df,v4df,v4df)
647     void __builtin_ia32_maskstoreps (pv4sf,v4sf,v4sf)
648     void __builtin_ia32_maskstoreps256 (pv8sf,v8sf,v8sf)
649     v4df __builtin_ia32_maxpd256 (v4df,v4df)
650     v8sf __builtin_ia32_maxps256 (v8sf,v8sf)
651     v4df __builtin_ia32_minpd256 (v4df,v4df)
652     v8sf __builtin_ia32_minps256 (v8sf,v8sf)
653     v4df __builtin_ia32_movddup256 (v4df)
654     int __builtin_ia32_movmskpd256 (v4df)
655     int __builtin_ia32_movmskps256 (v8sf)
656     v8sf __builtin_ia32_movshdup256 (v8sf)
657     v8sf __builtin_ia32_movsldup256 (v8sf)
658     v4df __builtin_ia32_mulpd256 (v4df,v4df)
659     v8sf __builtin_ia32_mulps256 (v8sf,v8sf)
660     v4df __builtin_ia32_orpd256 (v4df,v4df)
661     v8sf __builtin_ia32_orps256 (v8sf,v8sf)
662     v2df __builtin_ia32_pd_pd256 (v4df)
663     v4df __builtin_ia32_pd256_pd (v2df)
664     v4sf __builtin_ia32_ps_ps256 (v8sf)
665     v8sf __builtin_ia32_ps256_ps (v4sf)
666     int __builtin_ia32_ptestc256 (v4di,v4di,ptest)
667     int __builtin_ia32_ptestnzc256 (v4di,v4di,ptest)
668     int __builtin_ia32_ptestz256 (v4di,v4di,ptest)
669     v8sf __builtin_ia32_rcpps256 (v8sf)
670     v4df __builtin_ia32_roundpd256 (v4df,int)
671     v8sf __builtin_ia32_roundps256 (v8sf,int)
672     v8sf __builtin_ia32_rsqrtps_nr256 (v8sf)
673     v8sf __builtin_ia32_rsqrtps256 (v8sf)
674     v4df __builtin_ia32_shufpd256 (v4df,v4df,int)
675     v8sf __builtin_ia32_shufps256 (v8sf,v8sf,int)
676     v4si __builtin_ia32_si_si256 (v8si)
677     v8si __builtin_ia32_si256_si (v4si)
678     v4df __builtin_ia32_sqrtpd256 (v4df)
679     v8sf __builtin_ia32_sqrtps_nr256 (v8sf)
680     v8sf __builtin_ia32_sqrtps256 (v8sf)
681     void __builtin_ia32_storedqu256 (pchar,v32qi)
682     void __builtin_ia32_storeupd256 (pdouble,v4df)
683     void __builtin_ia32_storeups256 (pfloat,v8sf)
684     v4df __builtin_ia32_subpd256 (v4df,v4df)
685     v8sf __builtin_ia32_subps256 (v8sf,v8sf)
686     v4df __builtin_ia32_unpckhpd256 (v4df,v4df)
687     v8sf __builtin_ia32_unpckhps256 (v8sf,v8sf)
688     v4df __builtin_ia32_unpcklpd256 (v4df,v4df)
689     v8sf __builtin_ia32_unpcklps256 (v8sf,v8sf)
690     v4df __builtin_ia32_vbroadcastf128_pd256 (pcv2df)
691     v8sf __builtin_ia32_vbroadcastf128_ps256 (pcv4sf)
692     v4df __builtin_ia32_vbroadcastsd256 (pcdouble)
693     v4sf __builtin_ia32_vbroadcastss (pcfloat)
694     v8sf __builtin_ia32_vbroadcastss256 (pcfloat)
695     v2df __builtin_ia32_vextractf128_pd256 (v4df,int)
696     v4sf __builtin_ia32_vextractf128_ps256 (v8sf,int)
697     v4si __builtin_ia32_vextractf128_si256 (v8si,int)
698     v4df __builtin_ia32_vinsertf128_pd256 (v4df,v2df,int)
699     v8sf __builtin_ia32_vinsertf128_ps256 (v8sf,v4sf,int)
700     v8si __builtin_ia32_vinsertf128_si256 (v8si,v4si,int)
701     v4df __builtin_ia32_vperm2f128_pd256 (v4df,v4df,int)
702     v8sf __builtin_ia32_vperm2f128_ps256 (v8sf,v8sf,int)
703     v8si __builtin_ia32_vperm2f128_si256 (v8si,v8si,int)
704     v2df __builtin_ia32_vpermil2pd (v2df,v2df,v2di,int)
705     v4df __builtin_ia32_vpermil2pd256 (v4df,v4df,v4di,int)
706     v4sf __builtin_ia32_vpermil2ps (v4sf,v4sf,v4si,int)
707     v8sf __builtin_ia32_vpermil2ps256 (v8sf,v8sf,v8si,int)
708     v2df __builtin_ia32_vpermilpd (v2df,int)
709     v4df __builtin_ia32_vpermilpd256 (v4df,int)
710     v4sf __builtin_ia32_vpermilps (v4sf,int)
711     v8sf __builtin_ia32_vpermilps256 (v8sf,int)
712     v2df __builtin_ia32_vpermilvarpd (v2df,v2di)
713     v4df __builtin_ia32_vpermilvarpd256 (v4df,v4di)
714     v4sf __builtin_ia32_vpermilvarps (v4sf,v4si)
715     v8sf __builtin_ia32_vpermilvarps256 (v8sf,v8si)
716     int __builtin_ia32_vtestcpd (v2df,v2df,ptest)
717     int __builtin_ia32_vtestcpd256 (v4df,v4df,ptest)
718     int __builtin_ia32_vtestcps (v4sf,v4sf,ptest)
719     int __builtin_ia32_vtestcps256 (v8sf,v8sf,ptest)
720     int __builtin_ia32_vtestnzcpd (v2df,v2df,ptest)
721     int __builtin_ia32_vtestnzcpd256 (v4df,v4df,ptest)
722     int __builtin_ia32_vtestnzcps (v4sf,v4sf,ptest)
723     int __builtin_ia32_vtestnzcps256 (v8sf,v8sf,ptest)
724     int __builtin_ia32_vtestzpd (v2df,v2df,ptest)
725     int __builtin_ia32_vtestzpd256 (v4df,v4df,ptest)
726     int __builtin_ia32_vtestzps (v4sf,v4sf,ptest)
727     int __builtin_ia32_vtestzps256 (v8sf,v8sf,ptest)
728     void __builtin_ia32_vzeroall (void)
729     void __builtin_ia32_vzeroupper (void)
730     v4df __builtin_ia32_xorpd256 (v4df,v4df)
731     v8sf __builtin_ia32_xorps256 (v8sf,v8sf)
732</pre>
733 <p>The following built-in functions are available when <samp><span class="option">-maes</span></samp> is
734used.  All of them generate the machine instruction that is part of the
735name.
736
737<pre class="smallexample">     v2di __builtin_ia32_aesenc128 (v2di, v2di)
738     v2di __builtin_ia32_aesenclast128 (v2di, v2di)
739     v2di __builtin_ia32_aesdec128 (v2di, v2di)
740     v2di __builtin_ia32_aesdeclast128 (v2di, v2di)
741     v2di __builtin_ia32_aeskeygenassist128 (v2di, const int)
742     v2di __builtin_ia32_aesimc128 (v2di)
743</pre>
744 <p>The following built-in function is available when <samp><span class="option">-mpclmul</span></samp> is
745used.
746
747     <dl>
748<dt><code>v2di __builtin_ia32_pclmulqdq128 (v2di, v2di, const int)</code><dd>Generates the <code>pclmulqdq</code> machine instruction. 
749</dl>
750
751 <p>The following built-in function is available when <samp><span class="option">-mfsgsbase</span></samp> is
752used.  All of them generate the machine instruction that is part of the
753name.
754
755<pre class="smallexample">     unsigned int __builtin_ia32_rdfsbase32 (void)
756     unsigned long long __builtin_ia32_rdfsbase64 (void)
757     unsigned int __builtin_ia32_rdgsbase32 (void)
758     unsigned long long __builtin_ia32_rdgsbase64 (void)
759     void _writefsbase_u32 (unsigned int)
760     void _writefsbase_u64 (unsigned long long)
761     void _writegsbase_u32 (unsigned int)
762     void _writegsbase_u64 (unsigned long long)
763</pre>
764 <p>The following built-in function is available when <samp><span class="option">-mrdrnd</span></samp> is
765used.  All of them generate the machine instruction that is part of the
766name.
767
768<pre class="smallexample">     unsigned int __builtin_ia32_rdrand16_step (unsigned short *)
769     unsigned int __builtin_ia32_rdrand32_step (unsigned int *)
770     unsigned int __builtin_ia32_rdrand64_step (unsigned long long *)
771</pre>
772 <p>The following built-in functions are available when <samp><span class="option">-msse4a</span></samp> is used. 
773All of them generate the machine instruction that is part of the name.
774
775<pre class="smallexample">     void __builtin_ia32_movntsd (double *, v2df)
776     void __builtin_ia32_movntss (float *, v4sf)
777     v2di __builtin_ia32_extrq  (v2di, v16qi)
778     v2di __builtin_ia32_extrqi (v2di, const unsigned int, const unsigned int)
779     v2di __builtin_ia32_insertq (v2di, v2di)
780     v2di __builtin_ia32_insertqi (v2di, v2di, const unsigned int, const unsigned int)
781</pre>
782 <p>The following built-in functions are available when <samp><span class="option">-mxop</span></samp> is used.
783<pre class="smallexample">     v2df __builtin_ia32_vfrczpd (v2df)
784     v4sf __builtin_ia32_vfrczps (v4sf)
785     v2df __builtin_ia32_vfrczsd (v2df, v2df)
786     v4sf __builtin_ia32_vfrczss (v4sf, v4sf)
787     v4df __builtin_ia32_vfrczpd256 (v4df)
788     v8sf __builtin_ia32_vfrczps256 (v8sf)
789     v2di __builtin_ia32_vpcmov (v2di, v2di, v2di)
790     v2di __builtin_ia32_vpcmov_v2di (v2di, v2di, v2di)
791     v4si __builtin_ia32_vpcmov_v4si (v4si, v4si, v4si)
792     v8hi __builtin_ia32_vpcmov_v8hi (v8hi, v8hi, v8hi)
793     v16qi __builtin_ia32_vpcmov_v16qi (v16qi, v16qi, v16qi)
794     v2df __builtin_ia32_vpcmov_v2df (v2df, v2df, v2df)
795     v4sf __builtin_ia32_vpcmov_v4sf (v4sf, v4sf, v4sf)
796     v4di __builtin_ia32_vpcmov_v4di256 (v4di, v4di, v4di)
797     v8si __builtin_ia32_vpcmov_v8si256 (v8si, v8si, v8si)
798     v16hi __builtin_ia32_vpcmov_v16hi256 (v16hi, v16hi, v16hi)
799     v32qi __builtin_ia32_vpcmov_v32qi256 (v32qi, v32qi, v32qi)
800     v4df __builtin_ia32_vpcmov_v4df256 (v4df, v4df, v4df)
801     v8sf __builtin_ia32_vpcmov_v8sf256 (v8sf, v8sf, v8sf)
802     v16qi __builtin_ia32_vpcomeqb (v16qi, v16qi)
803     v8hi __builtin_ia32_vpcomeqw (v8hi, v8hi)
804     v4si __builtin_ia32_vpcomeqd (v4si, v4si)
805     v2di __builtin_ia32_vpcomeqq (v2di, v2di)
806     v16qi __builtin_ia32_vpcomequb (v16qi, v16qi)
807     v4si __builtin_ia32_vpcomequd (v4si, v4si)
808     v2di __builtin_ia32_vpcomequq (v2di, v2di)
809     v8hi __builtin_ia32_vpcomequw (v8hi, v8hi)
810     v8hi __builtin_ia32_vpcomeqw (v8hi, v8hi)
811     v16qi __builtin_ia32_vpcomfalseb (v16qi, v16qi)
812     v4si __builtin_ia32_vpcomfalsed (v4si, v4si)
813     v2di __builtin_ia32_vpcomfalseq (v2di, v2di)
814     v16qi __builtin_ia32_vpcomfalseub (v16qi, v16qi)
815     v4si __builtin_ia32_vpcomfalseud (v4si, v4si)
816     v2di __builtin_ia32_vpcomfalseuq (v2di, v2di)
817     v8hi __builtin_ia32_vpcomfalseuw (v8hi, v8hi)
818     v8hi __builtin_ia32_vpcomfalsew (v8hi, v8hi)
819     v16qi __builtin_ia32_vpcomgeb (v16qi, v16qi)
820     v4si __builtin_ia32_vpcomged (v4si, v4si)
821     v2di __builtin_ia32_vpcomgeq (v2di, v2di)
822     v16qi __builtin_ia32_vpcomgeub (v16qi, v16qi)
823     v4si __builtin_ia32_vpcomgeud (v4si, v4si)
824     v2di __builtin_ia32_vpcomgeuq (v2di, v2di)
825     v8hi __builtin_ia32_vpcomgeuw (v8hi, v8hi)
826     v8hi __builtin_ia32_vpcomgew (v8hi, v8hi)
827     v16qi __builtin_ia32_vpcomgtb (v16qi, v16qi)
828     v4si __builtin_ia32_vpcomgtd (v4si, v4si)
829     v2di __builtin_ia32_vpcomgtq (v2di, v2di)
830     v16qi __builtin_ia32_vpcomgtub (v16qi, v16qi)
831     v4si __builtin_ia32_vpcomgtud (v4si, v4si)
832     v2di __builtin_ia32_vpcomgtuq (v2di, v2di)
833     v8hi __builtin_ia32_vpcomgtuw (v8hi, v8hi)
834     v8hi __builtin_ia32_vpcomgtw (v8hi, v8hi)
835     v16qi __builtin_ia32_vpcomleb (v16qi, v16qi)
836     v4si __builtin_ia32_vpcomled (v4si, v4si)
837     v2di __builtin_ia32_vpcomleq (v2di, v2di)
838     v16qi __builtin_ia32_vpcomleub (v16qi, v16qi)
839     v4si __builtin_ia32_vpcomleud (v4si, v4si)
840     v2di __builtin_ia32_vpcomleuq (v2di, v2di)
841     v8hi __builtin_ia32_vpcomleuw (v8hi, v8hi)
842     v8hi __builtin_ia32_vpcomlew (v8hi, v8hi)
843     v16qi __builtin_ia32_vpcomltb (v16qi, v16qi)
844     v4si __builtin_ia32_vpcomltd (v4si, v4si)
845     v2di __builtin_ia32_vpcomltq (v2di, v2di)
846     v16qi __builtin_ia32_vpcomltub (v16qi, v16qi)
847     v4si __builtin_ia32_vpcomltud (v4si, v4si)
848     v2di __builtin_ia32_vpcomltuq (v2di, v2di)
849     v8hi __builtin_ia32_vpcomltuw (v8hi, v8hi)
850     v8hi __builtin_ia32_vpcomltw (v8hi, v8hi)
851     v16qi __builtin_ia32_vpcomneb (v16qi, v16qi)
852     v4si __builtin_ia32_vpcomned (v4si, v4si)
853     v2di __builtin_ia32_vpcomneq (v2di, v2di)
854     v16qi __builtin_ia32_vpcomneub (v16qi, v16qi)
855     v4si __builtin_ia32_vpcomneud (v4si, v4si)
856     v2di __builtin_ia32_vpcomneuq (v2di, v2di)
857     v8hi __builtin_ia32_vpcomneuw (v8hi, v8hi)
858     v8hi __builtin_ia32_vpcomnew (v8hi, v8hi)
859     v16qi __builtin_ia32_vpcomtrueb (v16qi, v16qi)
860     v4si __builtin_ia32_vpcomtrued (v4si, v4si)
861     v2di __builtin_ia32_vpcomtrueq (v2di, v2di)
862     v16qi __builtin_ia32_vpcomtrueub (v16qi, v16qi)
863     v4si __builtin_ia32_vpcomtrueud (v4si, v4si)
864     v2di __builtin_ia32_vpcomtrueuq (v2di, v2di)
865     v8hi __builtin_ia32_vpcomtrueuw (v8hi, v8hi)
866     v8hi __builtin_ia32_vpcomtruew (v8hi, v8hi)
867     v4si __builtin_ia32_vphaddbd (v16qi)
868     v2di __builtin_ia32_vphaddbq (v16qi)
869     v8hi __builtin_ia32_vphaddbw (v16qi)
870     v2di __builtin_ia32_vphadddq (v4si)
871     v4si __builtin_ia32_vphaddubd (v16qi)
872     v2di __builtin_ia32_vphaddubq (v16qi)
873     v8hi __builtin_ia32_vphaddubw (v16qi)
874     v2di __builtin_ia32_vphaddudq (v4si)
875     v4si __builtin_ia32_vphadduwd (v8hi)
876     v2di __builtin_ia32_vphadduwq (v8hi)
877     v4si __builtin_ia32_vphaddwd (v8hi)
878     v2di __builtin_ia32_vphaddwq (v8hi)
879     v8hi __builtin_ia32_vphsubbw (v16qi)
880     v2di __builtin_ia32_vphsubdq (v4si)
881     v4si __builtin_ia32_vphsubwd (v8hi)
882     v4si __builtin_ia32_vpmacsdd (v4si, v4si, v4si)
883     v2di __builtin_ia32_vpmacsdqh (v4si, v4si, v2di)
884     v2di __builtin_ia32_vpmacsdql (v4si, v4si, v2di)
885     v4si __builtin_ia32_vpmacssdd (v4si, v4si, v4si)
886     v2di __builtin_ia32_vpmacssdqh (v4si, v4si, v2di)
887     v2di __builtin_ia32_vpmacssdql (v4si, v4si, v2di)
888     v4si __builtin_ia32_vpmacsswd (v8hi, v8hi, v4si)
889     v8hi __builtin_ia32_vpmacssww (v8hi, v8hi, v8hi)
890     v4si __builtin_ia32_vpmacswd (v8hi, v8hi, v4si)
891     v8hi __builtin_ia32_vpmacsww (v8hi, v8hi, v8hi)
892     v4si __builtin_ia32_vpmadcsswd (v8hi, v8hi, v4si)
893     v4si __builtin_ia32_vpmadcswd (v8hi, v8hi, v4si)
894     v16qi __builtin_ia32_vpperm (v16qi, v16qi, v16qi)
895     v16qi __builtin_ia32_vprotb (v16qi, v16qi)
896     v4si __builtin_ia32_vprotd (v4si, v4si)
897     v2di __builtin_ia32_vprotq (v2di, v2di)
898     v8hi __builtin_ia32_vprotw (v8hi, v8hi)
899     v16qi __builtin_ia32_vpshab (v16qi, v16qi)
900     v4si __builtin_ia32_vpshad (v4si, v4si)
901     v2di __builtin_ia32_vpshaq (v2di, v2di)
902     v8hi __builtin_ia32_vpshaw (v8hi, v8hi)
903     v16qi __builtin_ia32_vpshlb (v16qi, v16qi)
904     v4si __builtin_ia32_vpshld (v4si, v4si)
905     v2di __builtin_ia32_vpshlq (v2di, v2di)
906     v8hi __builtin_ia32_vpshlw (v8hi, v8hi)
907</pre>
908 <p>The following built-in functions are available when <samp><span class="option">-mfma4</span></samp> is used. 
909All of them generate the machine instruction that is part of the name
910with MMX registers.
911
912<pre class="smallexample">     v2df __builtin_ia32_fmaddpd (v2df, v2df, v2df)
913     v4sf __builtin_ia32_fmaddps (v4sf, v4sf, v4sf)
914     v2df __builtin_ia32_fmaddsd (v2df, v2df, v2df)
915     v4sf __builtin_ia32_fmaddss (v4sf, v4sf, v4sf)
916     v2df __builtin_ia32_fmsubpd (v2df, v2df, v2df)
917     v4sf __builtin_ia32_fmsubps (v4sf, v4sf, v4sf)
918     v2df __builtin_ia32_fmsubsd (v2df, v2df, v2df)
919     v4sf __builtin_ia32_fmsubss (v4sf, v4sf, v4sf)
920     v2df __builtin_ia32_fnmaddpd (v2df, v2df, v2df)
921     v4sf __builtin_ia32_fnmaddps (v4sf, v4sf, v4sf)
922     v2df __builtin_ia32_fnmaddsd (v2df, v2df, v2df)
923     v4sf __builtin_ia32_fnmaddss (v4sf, v4sf, v4sf)
924     v2df __builtin_ia32_fnmsubpd (v2df, v2df, v2df)
925     v4sf __builtin_ia32_fnmsubps (v4sf, v4sf, v4sf)
926     v2df __builtin_ia32_fnmsubsd (v2df, v2df, v2df)
927     v4sf __builtin_ia32_fnmsubss (v4sf, v4sf, v4sf)
928     v2df __builtin_ia32_fmaddsubpd  (v2df, v2df, v2df)
929     v4sf __builtin_ia32_fmaddsubps  (v4sf, v4sf, v4sf)
930     v2df __builtin_ia32_fmsubaddpd  (v2df, v2df, v2df)
931     v4sf __builtin_ia32_fmsubaddps  (v4sf, v4sf, v4sf)
932     v4df __builtin_ia32_fmaddpd256 (v4df, v4df, v4df)
933     v8sf __builtin_ia32_fmaddps256 (v8sf, v8sf, v8sf)
934     v4df __builtin_ia32_fmsubpd256 (v4df, v4df, v4df)
935     v8sf __builtin_ia32_fmsubps256 (v8sf, v8sf, v8sf)
936     v4df __builtin_ia32_fnmaddpd256 (v4df, v4df, v4df)
937     v8sf __builtin_ia32_fnmaddps256 (v8sf, v8sf, v8sf)
938     v4df __builtin_ia32_fnmsubpd256 (v4df, v4df, v4df)
939     v8sf __builtin_ia32_fnmsubps256 (v8sf, v8sf, v8sf)
940     v4df __builtin_ia32_fmaddsubpd256 (v4df, v4df, v4df)
941     v8sf __builtin_ia32_fmaddsubps256 (v8sf, v8sf, v8sf)
942     v4df __builtin_ia32_fmsubaddpd256 (v4df, v4df, v4df)
943     v8sf __builtin_ia32_fmsubaddps256 (v8sf, v8sf, v8sf)
944     
945</pre>
946 <p>The following built-in functions are available when <samp><span class="option">-mlwp</span></samp> is used.
947
948<pre class="smallexample">     void __builtin_ia32_llwpcb16 (void *);
949     void __builtin_ia32_llwpcb32 (void *);
950     void __builtin_ia32_llwpcb64 (void *);
951     void * __builtin_ia32_llwpcb16 (void);
952     void * __builtin_ia32_llwpcb32 (void);
953     void * __builtin_ia32_llwpcb64 (void);
954     void __builtin_ia32_lwpval16 (unsigned short, unsigned int, unsigned short)
955     void __builtin_ia32_lwpval32 (unsigned int, unsigned int, unsigned int)
956     void __builtin_ia32_lwpval64 (unsigned __int64, unsigned int, unsigned int)
957     unsigned char __builtin_ia32_lwpins16 (unsigned short, unsigned int, unsigned short)
958     unsigned char __builtin_ia32_lwpins32 (unsigned int, unsigned int, unsigned int)
959     unsigned char __builtin_ia32_lwpins64 (unsigned __int64, unsigned int, unsigned int)
960</pre>
961 <p>The following built-in functions are available when <samp><span class="option">-mbmi</span></samp> is used. 
962All of them generate the machine instruction that is part of the name.
963<pre class="smallexample">     unsigned int __builtin_ia32_bextr_u32(unsigned int, unsigned int);
964     unsigned long long __builtin_ia32_bextr_u64 (unsigned long long, unsigned long long);
965     unsigned short __builtin_ia32_lzcnt_16(unsigned short);
966     unsigned int __builtin_ia32_lzcnt_u32(unsigned int);
967     unsigned long long __builtin_ia32_lzcnt_u64 (unsigned long long);
968</pre>
969 <p>The following built-in functions are available when <samp><span class="option">-mtbm</span></samp> is used. 
970Both of them generate the immediate form of the bextr machine instruction.
971<pre class="smallexample">     unsigned int __builtin_ia32_bextri_u32 (unsigned int, const unsigned int);
972     unsigned long long __builtin_ia32_bextri_u64 (unsigned long long, const unsigned long long);
973</pre>
974 <p>The following built-in functions are available when <samp><span class="option">-m3dnow</span></samp> is used. 
975All of them generate the machine instruction that is part of the name.
976
977<pre class="smallexample">     void __builtin_ia32_femms (void)
978     v8qi __builtin_ia32_pavgusb (v8qi, v8qi)
979     v2si __builtin_ia32_pf2id (v2sf)
980     v2sf __builtin_ia32_pfacc (v2sf, v2sf)
981     v2sf __builtin_ia32_pfadd (v2sf, v2sf)
982     v2si __builtin_ia32_pfcmpeq (v2sf, v2sf)
983     v2si __builtin_ia32_pfcmpge (v2sf, v2sf)
984     v2si __builtin_ia32_pfcmpgt (v2sf, v2sf)
985     v2sf __builtin_ia32_pfmax (v2sf, v2sf)
986     v2sf __builtin_ia32_pfmin (v2sf, v2sf)
987     v2sf __builtin_ia32_pfmul (v2sf, v2sf)
988     v2sf __builtin_ia32_pfrcp (v2sf)
989     v2sf __builtin_ia32_pfrcpit1 (v2sf, v2sf)
990     v2sf __builtin_ia32_pfrcpit2 (v2sf, v2sf)
991     v2sf __builtin_ia32_pfrsqrt (v2sf)
992     v2sf __builtin_ia32_pfrsqrtit1 (v2sf, v2sf)
993     v2sf __builtin_ia32_pfsub (v2sf, v2sf)
994     v2sf __builtin_ia32_pfsubr (v2sf, v2sf)
995     v2sf __builtin_ia32_pi2fd (v2si)
996     v4hi __builtin_ia32_pmulhrw (v4hi, v4hi)
997</pre>
998 <p>The following built-in functions are available when both <samp><span class="option">-m3dnow</span></samp>
999and <samp><span class="option">-march=athlon</span></samp> are used.  All of them generate the machine
1000instruction that is part of the name.
1001
1002<pre class="smallexample">     v2si __builtin_ia32_pf2iw (v2sf)
1003     v2sf __builtin_ia32_pfnacc (v2sf, v2sf)
1004     v2sf __builtin_ia32_pfpnacc (v2sf, v2sf)
1005     v2sf __builtin_ia32_pi2fw (v2si)
1006     v2sf __builtin_ia32_pswapdsf (v2sf)
1007     v2si __builtin_ia32_pswapdsi (v2si)
1008</pre>
1009 </body></html>
1010
1011