1<html lang="en"> 2<head> 3<title>SPU 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="SPARC-VIS-Built_002din-Functions.html#SPARC-VIS-Built_002din-Functions" title="SPARC VIS Built-in Functions"> 10<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> 11<!-- 12Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 131998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 142010 Free Software Foundation, Inc. 15 16Permission is granted to copy, distribute and/or modify this document 17under the terms of the GNU Free Documentation License, Version 1.3 or 18any later version published by the Free Software Foundation; with the 19Invariant Sections being ``Funding Free Software'', the Front-Cover 20Texts being (a) (see below), and with the Back-Cover Texts being (b) 21(see below). A copy of the license is included in the section entitled 22``GNU Free Documentation License''. 23 24(a) The FSF's Front-Cover Text is: 25 26 A GNU Manual 27 28(b) The FSF's Back-Cover Text is: 29 30 You have freedom to copy and modify this GNU Manual, like GNU 31 software. Copies published by the Free Software Foundation raise 32 funds for GNU development.--> 33<meta http-equiv="Content-Style-Type" content="text/css"> 34<style type="text/css"><!-- 35 pre.display { font-family:inherit } 36 pre.format { font-family:inherit } 37 pre.smalldisplay { font-family:inherit; font-size:smaller } 38 pre.smallformat { font-family:inherit; font-size:smaller } 39 pre.smallexample { font-size:smaller } 40 pre.smalllisp { font-size:smaller } 41 span.sc { font-variant:small-caps } 42 span.roman { font-family:serif; font-weight:normal; } 43 span.sansserif { font-family:sans-serif; font-weight:normal; } 44--></style> 45<link rel="stylesheet" type="text/css" href="../cs.css"> 46</head> 47<body> 48<div class="node"> 49<a name="SPU-Built-in-Functions"></a> 50<a name="SPU-Built_002din-Functions"></a> 51<p> 52Previous: <a rel="previous" accesskey="p" href="SPARC-VIS-Built_002din-Functions.html#SPARC-VIS-Built_002din-Functions">SPARC VIS Built-in Functions</a>, 53Up: <a rel="up" accesskey="u" href="Target-Builtins.html#Target-Builtins">Target Builtins</a> 54<hr> 55</div> 56 57<h4 class="subsection">6.54.15 SPU Built-in Functions</h4> 58 59<p>GCC provides extensions for the SPU processor as described in the 60Sony/Toshiba/IBM SPU Language Extensions Specification, which can be 61found at <a href="http://cell.scei.co.jp/">http://cell.scei.co.jp/</a> or 62<a href="http://www.ibm.com/developerworks/power/cell/">http://www.ibm.com/developerworks/power/cell/</a>. GCC's 63implementation differs in several ways. 64 65 <ul> 66<li>The optional extension of specifying vector constants in parentheses is 67not supported. 68 69 <li>A vector initializer requires no cast if the vector constant is of the 70same type as the variable it is initializing. 71 72 <li>If <code>signed</code> or <code>unsigned</code> is omitted, the signedness of the 73vector type is the default signedness of the base type. The default 74varies depending on the operating system, so a portable program should 75always specify the signedness. 76 77 <li>By default, the keyword <code>__vector</code> is added. The macro 78<code>vector</code> is defined in <code><spu_intrinsics.h></code> and can be 79undefined. 80 81 <li>GCC allows using a <code>typedef</code> name as the type specifier for a 82vector type. 83 84 <li>For C, overloaded functions are implemented with macros so the following 85does not work: 86 87 <pre class="smallexample"> spu_add ((vector signed int){1, 2, 3, 4}, foo); 88</pre> 89 <p>Since <code>spu_add</code> is a macro, the vector constant in the example 90is treated as four separate arguments. Wrap the entire argument in 91parentheses for this to work. 92 93 <li>The extended version of <code>__builtin_expect</code> is not supported. 94 95 </ul> 96 97 <p><em>Note:</em> Only the interface described in the aforementioned 98specification is supported. Internally, GCC uses built-in functions to 99implement the required functionality, but these are not supported and 100are subject to change without notice. 101 102 </body></html> 103 104