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: <a rel="next" accesskey="n" href="MIPS-DSP-Built_002din-Functions.html#MIPS-DSP-Built_002din-Functions">MIPS DSP Built-in Functions</a>, 54Previous: <a rel="previous" accesskey="p" href="FR_002dV-Built_002din-Functions.html#FR_002dV-Built_002din-Functions">FR-V Built-in Functions</a>, 55Up: <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