1<html lang="en"> 2<head> 3<title>Paired-Single 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="MIPS-Loongson-Built_002din-Functions.html#MIPS-Loongson-Built_002din-Functions" title="MIPS Loongson Built-in Functions"> 9<link rel="prev" href="Paired_002dSingle-Arithmetic.html#Paired_002dSingle-Arithmetic" title="Paired-Single Arithmetic"> 10<link rel="next" href="MIPS_002d3D-Built_002din-Functions.html#MIPS_002d3D-Built_002din-Functions" title="MIPS-3D 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="Paired-Single-Built-in-Functions"></a> 51<a name="Paired_002dSingle-Built_002din-Functions"></a> 52<p> 53Next: <a rel="next" accesskey="n" href="MIPS_002d3D-Built_002din-Functions.html#MIPS_002d3D-Built_002din-Functions">MIPS-3D Built-in Functions</a>, 54Previous: <a rel="previous" accesskey="p" href="Paired_002dSingle-Arithmetic.html#Paired_002dSingle-Arithmetic">Paired-Single Arithmetic</a>, 55Up: <a rel="up" accesskey="u" href="MIPS-Loongson-Built_002din-Functions.html#MIPS-Loongson-Built_002din-Functions">MIPS Loongson Built-in Functions</a> 56<hr> 57</div> 58 59<h5 class="subsubsection">6.54.9.2 Paired-Single Built-in Functions</h5> 60 61<p>The following paired-single functions map directly to a particular 62MIPS instruction. Please refer to the architecture specification 63for details on what each instruction does. 64 65 <dl> 66<dt><code>v2sf __builtin_mips_pll_ps (v2sf, v2sf)</code><dd>Pair lower lower (<code>pll.ps</code>). 67 68 <br><dt><code>v2sf __builtin_mips_pul_ps (v2sf, v2sf)</code><dd>Pair upper lower (<code>pul.ps</code>). 69 70 <br><dt><code>v2sf __builtin_mips_plu_ps (v2sf, v2sf)</code><dd>Pair lower upper (<code>plu.ps</code>). 71 72 <br><dt><code>v2sf __builtin_mips_puu_ps (v2sf, v2sf)</code><dd>Pair upper upper (<code>puu.ps</code>). 73 74 <br><dt><code>v2sf __builtin_mips_cvt_ps_s (float, float)</code><dd>Convert pair to paired single (<code>cvt.ps.s</code>). 75 76 <br><dt><code>float __builtin_mips_cvt_s_pl (v2sf)</code><dd>Convert pair lower to single (<code>cvt.s.pl</code>). 77 78 <br><dt><code>float __builtin_mips_cvt_s_pu (v2sf)</code><dd>Convert pair upper to single (<code>cvt.s.pu</code>). 79 80 <br><dt><code>v2sf __builtin_mips_abs_ps (v2sf)</code><dd>Absolute value (<code>abs.ps</code>). 81 82 <br><dt><code>v2sf __builtin_mips_alnv_ps (v2sf, v2sf, int)</code><dd>Align variable (<code>alnv.ps</code>). 83 84 <p><em>Note:</em> The value of the third parameter must be 0 or 4 85modulo 8, otherwise the result will be unpredictable. Please read the 86instruction description for details. 87</dl> 88 89 <p>The following multi-instruction functions are also available. 90In each case, <var>cond</var> can be any of the 16 floating-point conditions: 91<code>f</code>, <code>un</code>, <code>eq</code>, <code>ueq</code>, <code>olt</code>, <code>ult</code>, 92<code>ole</code>, <code>ule</code>, <code>sf</code>, <code>ngle</code>, <code>seq</code>, <code>ngl</code>, 93<code>lt</code>, <code>nge</code>, <code>le</code> or <code>ngt</code>. 94 95 <dl> 96<dt><code>v2sf __builtin_mips_movt_c_</code><var>cond</var><code>_ps (v2sf </code><var>a</var><code>, v2sf </code><var>b</var><code>, v2sf </code><var>c</var><code>, v2sf </code><var>d</var><code>)</code><dt><code>v2sf __builtin_mips_movf_c_</code><var>cond</var><code>_ps (v2sf </code><var>a</var><code>, v2sf </code><var>b</var><code>, v2sf </code><var>c</var><code>, v2sf </code><var>d</var><code>)</code><dd>Conditional move based on floating point comparison (<code>c.</code><var>cond</var><code>.ps</code>, 97<code>movt.ps</code>/<code>movf.ps</code>). 98 99 <p>The <code>movt</code> functions return the value <var>x</var> computed by: 100 101 <pre class="smallexample"> c.<var>cond</var>.ps <var>cc</var>,<var>a</var>,<var>b</var> 102 mov.ps <var>x</var>,<var>c</var> 103 movt.ps <var>x</var>,<var>d</var>,<var>cc</var> 104</pre> 105 <p>The <code>movf</code> functions are similar but use <code>movf.ps</code> instead 106of <code>movt.ps</code>. 107 108 <br><dt><code>int __builtin_mips_upper_c_</code><var>cond</var><code>_ps (v2sf </code><var>a</var><code>, v2sf </code><var>b</var><code>)</code><dt><code>int __builtin_mips_lower_c_</code><var>cond</var><code>_ps (v2sf </code><var>a</var><code>, v2sf </code><var>b</var><code>)</code><dd>Comparison of two paired-single values (<code>c.</code><var>cond</var><code>.ps</code>, 109<code>bc1t</code>/<code>bc1f</code>). 110 111 <p>These functions compare <var>a</var> and <var>b</var> using <code>c.</code><var>cond</var><code>.ps</code> 112and return either the upper or lower half of the result. For example: 113 114 <pre class="smallexample"> v2sf a, b; 115 if (__builtin_mips_upper_c_eq_ps (a, b)) 116 upper_halves_are_equal (); 117 else 118 upper_halves_are_unequal (); 119 120 if (__builtin_mips_lower_c_eq_ps (a, b)) 121 lower_halves_are_equal (); 122 else 123 lower_halves_are_unequal (); 124</pre> 125 </dl> 126 127 </body></html> 128 129