⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 x86-built-in-functions.html

📁 自己收集的linux入门到学懂高级编程书集 包括linux程序设计第三版
💻 HTML
字号:
<html lang="en"><head><title>Using the GNU Compiler Collection (GCC)</title><meta http-equiv="Content-Type" content="text/html"><meta name="description" content="Using the GNU Compiler Collection (GCC)"><meta name="generator" content="makeinfo 4.6"><!--Copyright &copy; 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.   <p>Permission is granted to copy, distribute and/or modify this documentunder the terms of the GNU Free Documentation License, Version 1.2 orany later version published by the Free Software Foundation; with theInvariant Sections being "GNU General Public License" and "FundingFree Software", the Front-Cover texts being (a) (see below), and withthe Back-Cover Texts being (b) (see below).  A copy of the license isincluded in the section entitled "GNU Free Documentation License".   <p>(a) The FSF's Front-Cover Text is:   <p>A GNU Manual   <p>(b) The FSF's Back-Cover Text is:   <p>You have freedom to copy and modify this GNU Manual, like GNU     software.  Copies published by the Free Software Foundation raise     funds for GNU development.--><meta http-equiv="Content-Style-Type" content="text/css"><style type="text/css"><!--  pre.display { font-family:inherit }  pre.format  { font-family:inherit }  pre.smalldisplay { font-family:inherit; font-size:smaller }  pre.smallformat  { font-family:inherit; font-size:smaller }  pre.smallexample { font-size:smaller }  pre.smalllisp    { font-size:smaller }--></style></head><body><div class="node"><p>Node:&nbsp;<a name="X86%20Built-in%20Functions">X86 Built-in Functions</a>,Next:&nbsp;<a rel="next" accesskey="n" href="PowerPC-AltiVec-Built-in-Functions.html#PowerPC%20AltiVec%20Built-in%20Functions">PowerPC AltiVec Built-in Functions</a>,Previous:&nbsp;<a rel="previous" accesskey="p" href="ARM-Built-in-Functions.html#ARM%20Built-in%20Functions">ARM Built-in Functions</a>,Up:&nbsp;<a rel="up" accesskey="u" href="Target-Builtins.html#Target%20Builtins">Target Builtins</a><hr><br></div><h3 class="subsection">X86 Built-in Functions</h4><p>These built-in functions are available for the i386 and x86-64 familyof computers, depending on the command-line switches used.   <p>The following machine modes are available for use with MMX built-in functions(see <a href="Vector-Extensions.html#Vector%20Extensions">Vector Extensions</a>): <code>V2SI</code> for a vector of two 32-bit integers,<code>V4HI</code> for a vector of four 16-bit integers, and <code>V8QI</code> for avector of eight 8-bit integers.  Some of the built-in functions operate onMMX registers as a whole 64-bit entity, these use <code>DI</code> as their mode.   <p>If 3Dnow extensions are enabled, <code>V2SF</code> is used as a mode for a vectorof two 32-bit floating point values.   <p>If SSE extensions are enabled, <code>V4SF</code> is used for a vector of four 32-bitfloating point values.  Some instructions use a vector of four 32-bitintegers, these use <code>V4SI</code>.  Finally, some instructions operate on anentire vector register, interpreting it as a 128-bit integer, these use mode<code>TI</code>.   <p>The following built-in functions are made available by <code>-mmmx</code>. All of them generate the machine instruction that is part of the name.<pre class="smallexample">     v8qi __builtin_ia32_paddb (v8qi, v8qi)     v4hi __builtin_ia32_paddw (v4hi, v4hi)     v2si __builtin_ia32_paddd (v2si, v2si)     v8qi __builtin_ia32_psubb (v8qi, v8qi)     v4hi __builtin_ia32_psubw (v4hi, v4hi)     v2si __builtin_ia32_psubd (v2si, v2si)     v8qi __builtin_ia32_paddsb (v8qi, v8qi)     v4hi __builtin_ia32_paddsw (v4hi, v4hi)     v8qi __builtin_ia32_psubsb (v8qi, v8qi)     v4hi __builtin_ia32_psubsw (v4hi, v4hi)     v8qi __builtin_ia32_paddusb (v8qi, v8qi)     v4hi __builtin_ia32_paddusw (v4hi, v4hi)     v8qi __builtin_ia32_psubusb (v8qi, v8qi)     v4hi __builtin_ia32_psubusw (v4hi, v4hi)     v4hi __builtin_ia32_pmullw (v4hi, v4hi)     v4hi __builtin_ia32_pmulhw (v4hi, v4hi)     di __builtin_ia32_pand (di, di)     di __builtin_ia32_pandn (di,di)     di __builtin_ia32_por (di, di)     di __builtin_ia32_pxor (di, di)     v8qi __builtin_ia32_pcmpeqb (v8qi, v8qi)     v4hi __builtin_ia32_pcmpeqw (v4hi, v4hi)     v2si __builtin_ia32_pcmpeqd (v2si, v2si)     v8qi __builtin_ia32_pcmpgtb (v8qi, v8qi)     v4hi __builtin_ia32_pcmpgtw (v4hi, v4hi)     v2si __builtin_ia32_pcmpgtd (v2si, v2si)     v8qi __builtin_ia32_punpckhbw (v8qi, v8qi)     v4hi __builtin_ia32_punpckhwd (v4hi, v4hi)     v2si __builtin_ia32_punpckhdq (v2si, v2si)     v8qi __builtin_ia32_punpcklbw (v8qi, v8qi)     v4hi __builtin_ia32_punpcklwd (v4hi, v4hi)     v2si __builtin_ia32_punpckldq (v2si, v2si)     v8qi __builtin_ia32_packsswb (v4hi, v4hi)     v4hi __builtin_ia32_packssdw (v2si, v2si)     v8qi __builtin_ia32_packuswb (v4hi, v4hi)     </pre>   <p>The following built-in functions are made available either with<code>-msse</code>, or with a combination of <code>-m3dnow</code> and<code>-march=athlon</code>.  All of them generate the machineinstruction that is part of the name.<pre class="smallexample">     v4hi __builtin_ia32_pmulhuw (v4hi, v4hi)     v8qi __builtin_ia32_pavgb (v8qi, v8qi)     v4hi __builtin_ia32_pavgw (v4hi, v4hi)     v4hi __builtin_ia32_psadbw (v8qi, v8qi)     v8qi __builtin_ia32_pmaxub (v8qi, v8qi)     v4hi __builtin_ia32_pmaxsw (v4hi, v4hi)     v8qi __builtin_ia32_pminub (v8qi, v8qi)     v4hi __builtin_ia32_pminsw (v4hi, v4hi)     int __builtin_ia32_pextrw (v4hi, int)     v4hi __builtin_ia32_pinsrw (v4hi, int, int)     int __builtin_ia32_pmovmskb (v8qi)     void __builtin_ia32_maskmovq (v8qi, v8qi, char *)     void __builtin_ia32_movntq (di *, di)     void __builtin_ia32_sfence (void)     </pre>   <p>The following built-in functions are available when <code>-msse</code> is used. All of them generate the machine instruction that is part of the name.<pre class="smallexample">     int __builtin_ia32_comieq (v4sf, v4sf)     int __builtin_ia32_comineq (v4sf, v4sf)     int __builtin_ia32_comilt (v4sf, v4sf)     int __builtin_ia32_comile (v4sf, v4sf)     int __builtin_ia32_comigt (v4sf, v4sf)     int __builtin_ia32_comige (v4sf, v4sf)     int __builtin_ia32_ucomieq (v4sf, v4sf)     int __builtin_ia32_ucomineq (v4sf, v4sf)     int __builtin_ia32_ucomilt (v4sf, v4sf)     int __builtin_ia32_ucomile (v4sf, v4sf)     int __builtin_ia32_ucomigt (v4sf, v4sf)     int __builtin_ia32_ucomige (v4sf, v4sf)     v4sf __builtin_ia32_addps (v4sf, v4sf)     v4sf __builtin_ia32_subps (v4sf, v4sf)     v4sf __builtin_ia32_mulps (v4sf, v4sf)     v4sf __builtin_ia32_divps (v4sf, v4sf)     v4sf __builtin_ia32_addss (v4sf, v4sf)     v4sf __builtin_ia32_subss (v4sf, v4sf)     v4sf __builtin_ia32_mulss (v4sf, v4sf)     v4sf __builtin_ia32_divss (v4sf, v4sf)     v4si __builtin_ia32_cmpeqps (v4sf, v4sf)     v4si __builtin_ia32_cmpltps (v4sf, v4sf)     v4si __builtin_ia32_cmpleps (v4sf, v4sf)     v4si __builtin_ia32_cmpgtps (v4sf, v4sf)     v4si __builtin_ia32_cmpgeps (v4sf, v4sf)     v4si __builtin_ia32_cmpunordps (v4sf, v4sf)     v4si __builtin_ia32_cmpneqps (v4sf, v4sf)     v4si __builtin_ia32_cmpnltps (v4sf, v4sf)     v4si __builtin_ia32_cmpnleps (v4sf, v4sf)     v4si __builtin_ia32_cmpngtps (v4sf, v4sf)     v4si __builtin_ia32_cmpngeps (v4sf, v4sf)     v4si __builtin_ia32_cmpordps (v4sf, v4sf)     v4si __builtin_ia32_cmpeqss (v4sf, v4sf)     v4si __builtin_ia32_cmpltss (v4sf, v4sf)     v4si __builtin_ia32_cmpless (v4sf, v4sf)     v4si __builtin_ia32_cmpunordss (v4sf, v4sf)     v4si __builtin_ia32_cmpneqss (v4sf, v4sf)     v4si __builtin_ia32_cmpnlts (v4sf, v4sf)     v4si __builtin_ia32_cmpnless (v4sf, v4sf)     v4si __builtin_ia32_cmpordss (v4sf, v4sf)     v4sf __builtin_ia32_maxps (v4sf, v4sf)     v4sf __builtin_ia32_maxss (v4sf, v4sf)     v4sf __builtin_ia32_minps (v4sf, v4sf)     v4sf __builtin_ia32_minss (v4sf, v4sf)     v4sf __builtin_ia32_andps (v4sf, v4sf)     v4sf __builtin_ia32_andnps (v4sf, v4sf)     v4sf __builtin_ia32_orps (v4sf, v4sf)     v4sf __builtin_ia32_xorps (v4sf, v4sf)     v4sf __builtin_ia32_movss (v4sf, v4sf)     v4sf __builtin_ia32_movhlps (v4sf, v4sf)     v4sf __builtin_ia32_movlhps (v4sf, v4sf)     v4sf __builtin_ia32_unpckhps (v4sf, v4sf)     v4sf __builtin_ia32_unpcklps (v4sf, v4sf)     v4sf __builtin_ia32_cvtpi2ps (v4sf, v2si)     v4sf __builtin_ia32_cvtsi2ss (v4sf, int)     v2si __builtin_ia32_cvtps2pi (v4sf)     int __builtin_ia32_cvtss2si (v4sf)     v2si __builtin_ia32_cvttps2pi (v4sf)     int __builtin_ia32_cvttss2si (v4sf)     v4sf __builtin_ia32_rcpps (v4sf)     v4sf __builtin_ia32_rsqrtps (v4sf)     v4sf __builtin_ia32_sqrtps (v4sf)     v4sf __builtin_ia32_rcpss (v4sf)     v4sf __builtin_ia32_rsqrtss (v4sf)     v4sf __builtin_ia32_sqrtss (v4sf)     v4sf __builtin_ia32_shufps (v4sf, v4sf, int)     void __builtin_ia32_movntps (float *, v4sf)     int __builtin_ia32_movmskps (v4sf)     </pre>   <p>The following built-in functions are available when <code>-msse</code> is used.     <dl><dt><code>v4sf __builtin_ia32_loadaps (float *)</code>     <dd>Generates the <code>movaps</code> machine instruction as a load from memory. <br><dt><code>void __builtin_ia32_storeaps (float *, v4sf)</code>     <dd>Generates the <code>movaps</code> machine instruction as a store to memory. <br><dt><code>v4sf __builtin_ia32_loadups (float *)</code>     <dd>Generates the <code>movups</code> machine instruction as a load from memory. <br><dt><code>void __builtin_ia32_storeups (float *, v4sf)</code>     <dd>Generates the <code>movups</code> machine instruction as a store to memory. <br><dt><code>v4sf __builtin_ia32_loadsss (float *)</code>     <dd>Generates the <code>movss</code> machine instruction as a load from memory. <br><dt><code>void __builtin_ia32_storess (float *, v4sf)</code>     <dd>Generates the <code>movss</code> machine instruction as a store to memory. <br><dt><code>v4sf __builtin_ia32_loadhps (v4sf, v2si *)</code>     <dd>Generates the <code>movhps</code> machine instruction as a load from memory. <br><dt><code>v4sf __builtin_ia32_loadlps (v4sf, v2si *)</code>     <dd>Generates the <code>movlps</code> machine instruction as a load from memory<br><dt><code>void __builtin_ia32_storehps (v4sf, v2si *)</code>     <dd>Generates the <code>movhps</code> machine instruction as a store to memory. <br><dt><code>void __builtin_ia32_storelps (v4sf, v2si *)</code>     <dd>Generates the <code>movlps</code> machine instruction as a store to memory. </dl>   <p>The following built-in functions are available when <code>-msse3</code> is used. All of them generate the machine instruction that is part of the name.<pre class="smallexample">     v2df __builtin_ia32_addsubpd (v2df, v2df)     v2df __builtin_ia32_addsubps (v2df, v2df)     v2df __builtin_ia32_haddpd (v2df, v2df)     v2df __builtin_ia32_haddps (v2df, v2df)     v2df __builtin_ia32_hsubpd (v2df, v2df)     v2df __builtin_ia32_hsubps (v2df, v2df)     v16qi __builtin_ia32_lddqu (char const *)     void __builtin_ia32_monitor (void *, unsigned int, unsigned int)     v2df __builtin_ia32_movddup (v2df)     v4sf __builtin_ia32_movshdup (v4sf)     v4sf __builtin_ia32_movsldup (v4sf)     void __builtin_ia32_mwait (unsigned int, unsigned int)     </pre>   <p>The following built-in functions are available when <code>-msse3</code> is used.     <dl><dt><code>v2df __builtin_ia32_loadddup (double const *)</code>     <dd>Generates the <code>movddup</code> machine instruction as a load from memory. </dl>   <p>The following built-in functions are available when <code>-m3dnow</code> is used. All of them generate the machine instruction that is part of the name.<pre class="smallexample">     void __builtin_ia32_femms (void)     v8qi __builtin_ia32_pavgusb (v8qi, v8qi)     v2si __builtin_ia32_pf2id (v2sf)     v2sf __builtin_ia32_pfacc (v2sf, v2sf)     v2sf __builtin_ia32_pfadd (v2sf, v2sf)     v2si __builtin_ia32_pfcmpeq (v2sf, v2sf)     v2si __builtin_ia32_pfcmpge (v2sf, v2sf)     v2si __builtin_ia32_pfcmpgt (v2sf, v2sf)     v2sf __builtin_ia32_pfmax (v2sf, v2sf)     v2sf __builtin_ia32_pfmin (v2sf, v2sf)     v2sf __builtin_ia32_pfmul (v2sf, v2sf)     v2sf __builtin_ia32_pfrcp (v2sf)     v2sf __builtin_ia32_pfrcpit1 (v2sf, v2sf)     v2sf __builtin_ia32_pfrcpit2 (v2sf, v2sf)     v2sf __builtin_ia32_pfrsqrt (v2sf)     v2sf __builtin_ia32_pfrsqrtit1 (v2sf, v2sf)     v2sf __builtin_ia32_pfsub (v2sf, v2sf)     v2sf __builtin_ia32_pfsubr (v2sf, v2sf)     v2sf __builtin_ia32_pi2fd (v2si)     v4hi __builtin_ia32_pmulhrw (v4hi, v4hi)     </pre>   <p>The following built-in functions are available when both <code>-m3dnow</code>and <code>-march=athlon</code> are used.  All of them generate the machineinstruction that is part of the name.<pre class="smallexample">     v2si __builtin_ia32_pf2iw (v2sf)     v2sf __builtin_ia32_pfnacc (v2sf, v2sf)     v2sf __builtin_ia32_pfpnacc (v2sf, v2sf)     v2sf __builtin_ia32_pi2fw (v2si)     v2sf __builtin_ia32_pswapdsf (v2sf)     v2si __builtin_ia32_pswapdsi (v2si)     </pre>   </body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -