Mercurial > hg > CbC > CbC_gcc
comparison gcc/doc/extend.texi @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
111:04ced10e8804 | 131:84e7813d76e9 |
---|---|
1 c Copyright (C) 1988-2017 Free Software Foundation, Inc. | 1 c Copyright (C) 1988-2018 Free Software Foundation, Inc. |
2 | 2 |
3 @c This is part of the GCC manual. | 3 @c This is part of the GCC manual. |
4 @c For copying conditions, see the file gcc.texi. | 4 @c For copying conditions, see the file gcc.texi. |
5 | 5 |
6 @node C Extensions | 6 @node C Extensions |
24 | 24 |
25 @menu | 25 @menu |
26 * Statement Exprs:: Putting statements and declarations inside expressions. | 26 * Statement Exprs:: Putting statements and declarations inside expressions. |
27 * Local Labels:: Labels local to a block. | 27 * Local Labels:: Labels local to a block. |
28 * Labels as Values:: Getting pointers to labels, and computed gotos. | 28 * Labels as Values:: Getting pointers to labels, and computed gotos. |
29 * Nested Functions:: As in Algol and Pascal, lexical scoping of functions. | 29 * Nested Functions:: Nested function in GNU C. |
30 * Constructing Calls:: Dispatching a call to another function. | 30 * Constructing Calls:: Dispatching a call to another function. |
31 * Typeof:: @code{typeof}: referring to the type of an expression. | 31 * Typeof:: @code{typeof}: referring to the type of an expression. |
32 * Conditionals:: Omitting the middle operand of a @samp{?:} expression. | 32 * Conditionals:: Omitting the middle operand of a @samp{?:} expression. |
33 * __int128:: 128-bit integers---@code{__int128}. | 33 * __int128:: 128-bit integers---@code{__int128}. |
34 * Long Long:: Double-word integers---@code{long long int}. | 34 * Long Long:: Double-word integers---@code{long long int}. |
82 * Integer Overflow Builtins:: Built-in functions to perform arithmetics and | 82 * Integer Overflow Builtins:: Built-in functions to perform arithmetics and |
83 arithmetic overflow checking. | 83 arithmetic overflow checking. |
84 * x86 specific memory model extensions for transactional memory:: x86 memory models. | 84 * x86 specific memory model extensions for transactional memory:: x86 memory models. |
85 * Object Size Checking:: Built-in functions for limited buffer overflow | 85 * Object Size Checking:: Built-in functions for limited buffer overflow |
86 checking. | 86 checking. |
87 * Pointer Bounds Checker builtins:: Built-in functions for Pointer Bounds Checker. | |
88 * Cilk Plus Builtins:: Built-in functions for the Cilk Plus language extension. | |
89 * Other Builtins:: Other built-in functions. | 87 * Other Builtins:: Other built-in functions. |
90 * Target Builtins:: Built-in functions specific to particular targets. | 88 * Target Builtins:: Built-in functions specific to particular targets. |
91 * Target Format Checks:: Format checks specific to particular targets. | 89 * Target Format Checks:: Format checks specific to particular targets. |
92 * Pragmas:: Pragmas accepted by GCC. | 90 * Pragmas:: Pragmas accepted by GCC. |
93 * Unnamed Fields:: Unnamed struct/union fields within structs/unions. | 91 * Unnamed Fields:: Unnamed struct/union fields within structs/unions. |
843 @cindex double-word arithmetic | 841 @cindex double-word arithmetic |
844 @cindex multiprecision arithmetic | 842 @cindex multiprecision arithmetic |
845 @cindex @code{LL} integer suffix | 843 @cindex @code{LL} integer suffix |
846 @cindex @code{ULL} integer suffix | 844 @cindex @code{ULL} integer suffix |
847 | 845 |
848 ISO C99 supports data types for integers that are at least 64 bits wide, | 846 ISO C99 and ISO C++11 support data types for integers that are at least |
849 and as an extension GCC supports them in C90 mode and in C++. | 847 64 bits wide, and as an extension GCC supports them in C90 and C++98 modes. |
850 Simply write @code{long long int} for a signed integer, or | 848 Simply write @code{long long int} for a signed integer, or |
851 @code{unsigned long long int} for an unsigned integer. To make an | 849 @code{unsigned long long int} for an unsigned integer. To make an |
852 integer constant of type @code{long long int}, add the suffix @samp{LL} | 850 integer constant of type @code{long long int}, add the suffix @samp{LL} |
853 to the integer. To make an integer constant of type @code{unsigned long | 851 to the integer. To make an integer constant of type @code{unsigned long |
854 long int}, add the suffix @samp{ULL} to the integer. | 852 long int}, add the suffix @samp{ULL} to the integer. |
895 value, but you can form any complex value you like by adding one to a | 893 value, but you can form any complex value you like by adding one to a |
896 real constant. This is a GNU extension; if you have an ISO C99 | 894 real constant. This is a GNU extension; if you have an ISO C99 |
897 conforming C library (such as the GNU C Library), and want to construct complex | 895 conforming C library (such as the GNU C Library), and want to construct complex |
898 constants of floating type, you should include @code{<complex.h>} and | 896 constants of floating type, you should include @code{<complex.h>} and |
899 use the macros @code{I} or @code{_Complex_I} instead. | 897 use the macros @code{I} or @code{_Complex_I} instead. |
898 | |
899 The ISO C++14 library also defines the @samp{i} suffix, so C++14 code | |
900 that includes the @samp{<complex>} header cannot use @samp{i} for the | |
901 GNU extension. The @samp{j} suffix still has the GNU meaning. | |
900 | 902 |
901 @cindex @code{__real__} keyword | 903 @cindex @code{__real__} keyword |
902 @cindex @code{__imag__} keyword | 904 @cindex @code{__imag__} keyword |
903 To extract the real part of a complex-valued expression @var{exp}, write | 905 To extract the real part of a complex-valued expression @var{exp}, write |
904 @code{__real__ @var{exp}}. Likewise, use @code{__imag__} to | 906 @code{__real__ @var{exp}}. Likewise, use @code{__imag__} to |
1043 arithmetic and other operations, @code{__fp16} values in C or C++ | 1045 arithmetic and other operations, @code{__fp16} values in C or C++ |
1044 expressions are automatically promoted to @code{float}. | 1046 expressions are automatically promoted to @code{float}. |
1045 | 1047 |
1046 The ARM target provides hardware support for conversions between | 1048 The ARM target provides hardware support for conversions between |
1047 @code{__fp16} and @code{float} values | 1049 @code{__fp16} and @code{float} values |
1048 as an extension to VFP and NEON (Advanced SIMD), and from ARMv8 provides | 1050 as an extension to VFP and NEON (Advanced SIMD), and from ARMv8-A provides |
1049 hardware support for conversions between @code{__fp16} and @code{double} | 1051 hardware support for conversions between @code{__fp16} and @code{double} |
1050 values. GCC generates code using these hardware instructions if you | 1052 values. GCC generates code using these hardware instructions if you |
1051 compile with options to select an FPU that provides them; | 1053 compile with options to select an FPU that provides them; |
1052 for example, @option{-mfpu=neon-fp16 -mfloat-abi=softfp}, | 1054 for example, @option{-mfpu=neon-fp16 -mfloat-abi=softfp}, |
1053 in addition to the @option{-mfp16-format} option to select | 1055 in addition to the @option{-mfp16-format} option to select |
1117 | 1119 |
1118 @node Hex Floats | 1120 @node Hex Floats |
1119 @section Hex Floats | 1121 @section Hex Floats |
1120 @cindex hex floats | 1122 @cindex hex floats |
1121 | 1123 |
1122 ISO C99 supports floating-point numbers written not only in the usual | 1124 ISO C99 and ISO C++17 support floating-point numbers written not only in |
1123 decimal notation, such as @code{1.55e1}, but also numbers such as | 1125 the usual decimal notation, such as @code{1.55e1}, but also numbers such as |
1124 @code{0x1.fp3} written in hexadecimal format. As a GNU extension, GCC | 1126 @code{0x1.fp3} written in hexadecimal format. As a GNU extension, GCC |
1125 supports this in C90 mode (except in some cases when strictly | 1127 supports this in C90 mode (except in some cases when strictly |
1126 conforming) and in C++. In that format the | 1128 conforming) and in C++98, C++11 and C++14 modes. In that format the |
1127 @samp{0x} hex introducer and the @samp{p} or @samp{P} exponent field are | 1129 @samp{0x} hex introducer and the @samp{p} or @samp{P} exponent field are |
1128 mandatory. The exponent is a decimal number that indicates the power of | 1130 mandatory. The exponent is a decimal number that indicates the power of |
1129 2 by which the significant part is multiplied. Thus @samp{0x1.f} is | 1131 2 by which the significant part is multiplied. Thus @samp{0x1.f} is |
1130 @tex | 1132 @tex |
1131 $1 {15\over16}$, | 1133 $1 {15\over16}$, |
1533 @cindex arrays of length zero | 1535 @cindex arrays of length zero |
1534 @cindex zero-length arrays | 1536 @cindex zero-length arrays |
1535 @cindex length-zero arrays | 1537 @cindex length-zero arrays |
1536 @cindex flexible array members | 1538 @cindex flexible array members |
1537 | 1539 |
1538 Zero-length arrays are allowed in GNU C@. They are very useful as the | 1540 Declaring zero-length arrays is allowed in GNU C as an extension. |
1539 last element of a structure that is really a header for a variable-length | 1541 A zero-length array can be useful as the last element of a structure |
1540 object: | 1542 that is really a header for a variable-length object: |
1541 | 1543 |
1542 @smallexample | 1544 @smallexample |
1543 struct line @{ | 1545 struct line @{ |
1544 int length; | 1546 int length; |
1545 char contents[0]; | 1547 char contents[0]; |
1548 struct line *thisline = (struct line *) | 1550 struct line *thisline = (struct line *) |
1549 malloc (sizeof (struct line) + this_length); | 1551 malloc (sizeof (struct line) + this_length); |
1550 thisline->length = this_length; | 1552 thisline->length = this_length; |
1551 @end smallexample | 1553 @end smallexample |
1552 | 1554 |
1553 In ISO C90, you would have to give @code{contents} a length of 1, which | 1555 Although the size of a zero-length array is zero, an array member of |
1554 means either you waste space or complicate the argument to @code{malloc}. | 1556 this kind may increase the size of the enclosing type as a result of tail |
1555 | 1557 padding. The offset of a zero-length array member from the beginning |
1556 In ISO C99, you would use a @dfn{flexible array member}, which is | 1558 of the enclosing structure is the same as the offset of an array with |
1557 slightly different in syntax and semantics: | 1559 one or more elements of the same type. The alignment of a zero-length |
1560 array is the same as the alignment of its elements. | |
1561 | |
1562 Declaring zero-length arrays in other contexts, including as interior | |
1563 members of structure objects or as non-member objects, is discouraged. | |
1564 Accessing elements of zero-length arrays declared in such contexts is | |
1565 undefined and may be diagnosed. | |
1566 | |
1567 In the absence of the zero-length array extension, in ISO C90 | |
1568 the @code{contents} array in the example above would typically be declared | |
1569 to have a single element. Unlike a zero-length array which only contributes | |
1570 to the size of the enclosing structure for the purposes of alignment, | |
1571 a one-element array always occupies at least as much space as a single | |
1572 object of the type. Although using one-element arrays this way is | |
1573 discouraged, GCC handles accesses to trailing one-element array members | |
1574 analogously to zero-length arrays. | |
1575 | |
1576 The preferred mechanism to declare variable-length types like | |
1577 @code{struct line} above is the ISO C99 @dfn{flexible array member}, | |
1578 with slightly different syntax and semantics: | |
1558 | 1579 |
1559 @itemize @bullet | 1580 @itemize @bullet |
1560 @item | 1581 @item |
1561 Flexible array members are written as @code{contents[]} without | 1582 Flexible array members are written as @code{contents[]} without |
1562 the @code{0}. | 1583 the @code{0}. |
2045 @smallexample | 2066 @smallexample |
2046 int widths[] = @{ [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 @}; | 2067 int widths[] = @{ [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 @}; |
2047 @end smallexample | 2068 @end smallexample |
2048 | 2069 |
2049 @noindent | 2070 @noindent |
2050 If the value in it has side-effects, the side-effects happen only once, | 2071 If the value in it has side effects, the side effects happen only once, |
2051 not for each initialized field by the range initializer. | 2072 not for each initialized field by the range initializer. |
2052 | 2073 |
2053 @noindent | 2074 @noindent |
2054 Note that the length of the array is the highest value specified | 2075 Note that the length of the array is the highest value specified |
2055 plus one. | 2076 plus one. |
2142 @end smallexample | 2163 @end smallexample |
2143 | 2164 |
2144 @noindent | 2165 @noindent |
2145 If the same field is initialized multiple times, it has the value from | 2166 If the same field is initialized multiple times, it has the value from |
2146 the last initialization. If any such overridden initialization has | 2167 the last initialization. If any such overridden initialization has |
2147 side-effect, it is unspecified whether the side-effect happens or not. | 2168 side effect, it is unspecified whether the side effect happens or not. |
2148 Currently, GCC discards them and issues a warning. | 2169 Currently, GCC discards them and issues a warning. |
2149 | 2170 |
2150 @node Case Ranges | 2171 @node Case Ranges |
2151 @section Case Ranges | 2172 @section Case Ranges |
2152 @cindex case ranges | 2173 @cindex case ranges |
2270 Function attributes are introduced by the @code{__attribute__} keyword | 2291 Function attributes are introduced by the @code{__attribute__} keyword |
2271 on a declaration, followed by an attribute specification inside double | 2292 on a declaration, followed by an attribute specification inside double |
2272 parentheses. You can specify multiple attributes in a declaration by | 2293 parentheses. You can specify multiple attributes in a declaration by |
2273 separating them by commas within the double parentheses or by | 2294 separating them by commas within the double parentheses or by |
2274 immediately following an attribute declaration with another attribute | 2295 immediately following an attribute declaration with another attribute |
2275 declaration. @xref{Attribute Syntax}, for the exact rules on | 2296 declaration. @xref{Attribute Syntax}, for the exact rules on attribute |
2276 attribute syntax and placement. | 2297 syntax and placement. Compatible attribute specifications on distinct |
2298 declarations of the same function are merged. An attribute specification | |
2299 that is not compatible with attributes already applied to a declaration | |
2300 of the same function is ignored with a warning. | |
2277 | 2301 |
2278 GCC also supports attributes on | 2302 GCC also supports attributes on |
2279 variable declarations (@pxref{Variable Attributes}), | 2303 variable declarations (@pxref{Variable Attributes}), |
2280 labels (@pxref{Label Attributes}), | 2304 labels (@pxref{Label Attributes}), |
2281 enumerators (@pxref{Enumerator Attributes}), | 2305 enumerators (@pxref{Enumerator Attributes}), |
2298 * ARC Function Attributes:: | 2322 * ARC Function Attributes:: |
2299 * ARM Function Attributes:: | 2323 * ARM Function Attributes:: |
2300 * AVR Function Attributes:: | 2324 * AVR Function Attributes:: |
2301 * Blackfin Function Attributes:: | 2325 * Blackfin Function Attributes:: |
2302 * CR16 Function Attributes:: | 2326 * CR16 Function Attributes:: |
2327 * C-SKY Function Attributes:: | |
2303 * Epiphany Function Attributes:: | 2328 * Epiphany Function Attributes:: |
2304 * H8/300 Function Attributes:: | 2329 * H8/300 Function Attributes:: |
2305 * IA-64 Function Attributes:: | 2330 * IA-64 Function Attributes:: |
2306 * M32C Function Attributes:: | 2331 * M32C Function Attributes:: |
2307 * M32R/D Function Attributes:: | 2332 * M32R/D Function Attributes:: |
2314 * MSP430 Function Attributes:: | 2339 * MSP430 Function Attributes:: |
2315 * NDS32 Function Attributes:: | 2340 * NDS32 Function Attributes:: |
2316 * Nios II Function Attributes:: | 2341 * Nios II Function Attributes:: |
2317 * Nvidia PTX Function Attributes:: | 2342 * Nvidia PTX Function Attributes:: |
2318 * PowerPC Function Attributes:: | 2343 * PowerPC Function Attributes:: |
2344 * RISC-V Function Attributes:: | |
2319 * RL78 Function Attributes:: | 2345 * RL78 Function Attributes:: |
2320 * RX Function Attributes:: | 2346 * RX Function Attributes:: |
2321 * S/390 Function Attributes:: | 2347 * S/390 Function Attributes:: |
2322 * SH Function Attributes:: | 2348 * SH Function Attributes:: |
2323 * SPU Function Attributes:: | 2349 * SPU Function Attributes:: |
2456 @noindent | 2482 @noindent |
2457 declares that @code{my_alloc1} returns 16-byte aligned pointer and | 2483 declares that @code{my_alloc1} returns 16-byte aligned pointer and |
2458 that @code{my_alloc2} returns a pointer whose value modulo 32 is equal | 2484 that @code{my_alloc2} returns a pointer whose value modulo 32 is equal |
2459 to 8. | 2485 to 8. |
2460 | 2486 |
2461 @item bnd_instrument | |
2462 @cindex @code{bnd_instrument} function attribute | |
2463 The @code{bnd_instrument} attribute on functions is used to inform the | |
2464 compiler that the function should be instrumented when compiled | |
2465 with the @option{-fchkp-instrument-marked-only} option. | |
2466 | |
2467 @item bnd_legacy | |
2468 @cindex @code{bnd_legacy} function attribute | |
2469 @cindex Pointer Bounds Checker attributes | |
2470 The @code{bnd_legacy} attribute on functions is used to inform the | |
2471 compiler that the function should not be instrumented when compiled | |
2472 with the @option{-fcheck-pointer-bounds} option. | |
2473 | |
2474 @item cold | 2487 @item cold |
2475 @cindex @code{cold} function attribute | 2488 @cindex @code{cold} function attribute |
2476 The @code{cold} attribute on functions is used to inform the compiler that | 2489 The @code{cold} attribute on functions is used to inform the compiler that |
2477 the function is unlikely to be executed. The function is optimized for | 2490 the function is unlikely to be executed. The function is optimized for |
2478 size rather than speed and on many targets it is placed into a special | 2491 size rather than speed and on many targets it is placed into a special |
2488 | 2501 |
2489 @item const | 2502 @item const |
2490 @cindex @code{const} function attribute | 2503 @cindex @code{const} function attribute |
2491 @cindex functions that have no side effects | 2504 @cindex functions that have no side effects |
2492 Many functions do not examine any values except their arguments, and | 2505 Many functions do not examine any values except their arguments, and |
2493 have no effects except the return value. Basically this is just slightly | 2506 have no effects except to return a value. Calls to such functions lend |
2494 more strict class than the @code{pure} attribute below, since function is not | 2507 themselves to optimization such as common subexpression elimination. |
2495 allowed to read global memory. | 2508 The @code{const} attribute imposes greater restrictions on a function's |
2509 definition than the similar @code{pure} attribute below because it prohibits | |
2510 the function from reading global variables. Consequently, the presence of | |
2511 the attribute on a function declaration allows GCC to emit more efficient | |
2512 code for some calls to the function. Decorating the same function with | |
2513 both the @code{const} and the @code{pure} attribute is diagnosed. | |
2496 | 2514 |
2497 @cindex pointer arguments | 2515 @cindex pointer arguments |
2498 Note that a function that has pointer arguments and examines the data | 2516 Note that a function that has pointer arguments and examines the data |
2499 pointed to must @emph{not} be declared @code{const}. Likewise, a | 2517 pointed to must @emph{not} be declared @code{const}. Likewise, a |
2500 function that calls a non-@code{const} function usually must not be | 2518 function that calls a non-@code{const} function usually must not be |
2501 @code{const}. It does not make sense for a @code{const} function to | 2519 @code{const}. Because a @code{const} function cannot have any side |
2502 return @code{void}. | 2520 effects it does not make sense for such a function to return @code{void}. |
2521 Declaring such a function is diagnosed. | |
2503 | 2522 |
2504 @item constructor | 2523 @item constructor |
2505 @itemx destructor | 2524 @itemx destructor |
2506 @itemx constructor (@var{priority}) | 2525 @itemx constructor (@var{priority}) |
2507 @itemx destructor (@var{priority}) | 2526 @itemx destructor (@var{priority}) |
2552 present. | 2571 present. |
2553 | 2572 |
2554 The @code{deprecated} attribute can also be used for variables and | 2573 The @code{deprecated} attribute can also be used for variables and |
2555 types (@pxref{Variable Attributes}, @pxref{Type Attributes}.) | 2574 types (@pxref{Variable Attributes}, @pxref{Type Attributes}.) |
2556 | 2575 |
2576 The message attached to the attribute is affected by the setting of | |
2577 the @option{-fmessage-length} option. | |
2578 | |
2557 @item error ("@var{message}") | 2579 @item error ("@var{message}") |
2558 @itemx warning ("@var{message}") | 2580 @itemx warning ("@var{message}") |
2559 @cindex @code{error} function attribute | 2581 @cindex @code{error} function attribute |
2560 @cindex @code{warning} function attribute | 2582 @cindex @code{warning} function attribute |
2561 If the @code{error} or @code{warning} attribute | 2583 If the @code{error} or @code{warning} attribute |
2591 | 2613 |
2592 @item flatten | 2614 @item flatten |
2593 @cindex @code{flatten} function attribute | 2615 @cindex @code{flatten} function attribute |
2594 Generally, inlining into a function is limited. For a function marked with | 2616 Generally, inlining into a function is limited. For a function marked with |
2595 this attribute, every call inside this function is inlined, if possible. | 2617 this attribute, every call inside this function is inlined, if possible. |
2596 Whether the function itself is considered for inlining depends on its size and | 2618 Functions declared with attribute @code{noinline} and similar are not |
2597 the current inlining parameters. | 2619 inlined. Whether the function itself is considered for inlining depends |
2620 on its size and the current inlining parameters. | |
2598 | 2621 |
2599 @item format (@var{archetype}, @var{string-index}, @var{first-to-check}) | 2622 @item format (@var{archetype}, @var{string-index}, @var{first-to-check}) |
2600 @cindex @code{format} function attribute | 2623 @cindex @code{format} function attribute |
2601 @cindex functions with @code{printf}, @code{scanf}, @code{strftime} or @code{strfmon} style arguments | 2624 @cindex functions with @code{printf}, @code{scanf}, @code{strftime} or @code{strfmon} style arguments |
2602 @opindex Wformat | 2625 @opindex Wformat |
2674 Target Machines}. | 2697 Target Machines}. |
2675 | 2698 |
2676 @item format_arg (@var{string-index}) | 2699 @item format_arg (@var{string-index}) |
2677 @cindex @code{format_arg} function attribute | 2700 @cindex @code{format_arg} function attribute |
2678 @opindex Wformat-nonliteral | 2701 @opindex Wformat-nonliteral |
2679 The @code{format_arg} attribute specifies that a function takes a format | 2702 The @code{format_arg} attribute specifies that a function takes one or |
2680 string for a @code{printf}, @code{scanf}, @code{strftime} or | 2703 more format strings for a @code{printf}, @code{scanf}, @code{strftime} or |
2681 @code{strfmon} style function and modifies it (for example, to translate | 2704 @code{strfmon} style function and modifies it (for example, to translate |
2682 it into another language), so the result can be passed to a | 2705 it into another language), so the result can be passed to a |
2683 @code{printf}, @code{scanf}, @code{strftime} or @code{strfmon} style | 2706 @code{printf}, @code{scanf}, @code{strftime} or @code{strfmon} style |
2684 function (with the remaining arguments to the format function the same | 2707 function (with the remaining arguments to the format function the same |
2685 as they would have been for the unmodified string). For example, the | 2708 as they would have been for the unmodified string). Multiple |
2709 @code{format_arg} attributes may be applied to the same function, each | |
2710 designating a distinct parameter as a format string. For example, the | |
2686 declaration: | 2711 declaration: |
2687 | 2712 |
2688 @smallexample | 2713 @smallexample |
2689 extern char * | 2714 extern char * |
2690 my_dgettext (char *my_domain, const char *my_format) | 2715 my_dgettext (char *my_domain, const char *my_format) |
2699 @code{format_arg} attribute had not been specified, all the compiler | 2724 @code{format_arg} attribute had not been specified, all the compiler |
2700 could tell in such calls to format functions would be that the format | 2725 could tell in such calls to format functions would be that the format |
2701 string argument is not constant; this would generate a warning when | 2726 string argument is not constant; this would generate a warning when |
2702 @option{-Wformat-nonliteral} is used, but the calls could not be checked | 2727 @option{-Wformat-nonliteral} is used, but the calls could not be checked |
2703 without the attribute. | 2728 without the attribute. |
2729 | |
2730 In calls to a function declared with more than one @code{format_arg} | |
2731 attribute, each with a distinct argument value, the corresponding | |
2732 actual function arguments are checked against all format strings | |
2733 designated by the attributes. This capability is designed to support | |
2734 the GNU @code{ngettext} family of functions. | |
2704 | 2735 |
2705 The parameter @var{string-index} specifies which argument is the format | 2736 The parameter @var{string-index} specifies which argument is the format |
2706 string argument (starting from one). Since non-static C++ methods have | 2737 string argument (starting from one). Since non-static C++ methods have |
2707 an implicit @code{this} argument, the arguments of such methods should | 2738 an implicit @code{this} argument, the arguments of such methods should |
2708 be counted from two. | 2739 be counted from two. |
2918 This tells the compiler that a function is @code{malloc}-like, i.e., | 2949 This tells the compiler that a function is @code{malloc}-like, i.e., |
2919 that the pointer @var{P} returned by the function cannot alias any | 2950 that the pointer @var{P} returned by the function cannot alias any |
2920 other pointer valid when the function returns, and moreover no | 2951 other pointer valid when the function returns, and moreover no |
2921 pointers to valid objects occur in any storage addressed by @var{P}. | 2952 pointers to valid objects occur in any storage addressed by @var{P}. |
2922 | 2953 |
2923 Using this attribute can improve optimization. Functions like | 2954 Using this attribute can improve optimization. Compiler predicts |
2955 that a function with the attribute returns non-null in most cases. | |
2956 Functions like | |
2924 @code{malloc} and @code{calloc} have this property because they return | 2957 @code{malloc} and @code{calloc} have this property because they return |
2925 a pointer to uninitialized or zeroed-out storage. However, functions | 2958 a pointer to uninitialized or zeroed-out storage. However, functions |
2926 like @code{realloc} do not have this property, as they can return a | 2959 like @code{realloc} do not have this property, as they can return a |
2927 pointer to storage containing pointers. | 2960 pointer to storage containing pointers. |
2928 | 2961 |
2962 @option{-fsanitize} option can be provided. | 2995 @option{-fsanitize} option can be provided. |
2963 | 2996 |
2964 @smallexample | 2997 @smallexample |
2965 void __attribute__ ((no_sanitize ("alignment", "object-size"))) | 2998 void __attribute__ ((no_sanitize ("alignment", "object-size"))) |
2966 f () @{ /* @r{Do something.} */; @} | 2999 f () @{ /* @r{Do something.} */; @} |
3000 void __attribute__ ((no_sanitize ("alignment,object-size"))) | |
3001 g () @{ /* @r{Do something.} */; @} | |
2967 @end smallexample | 3002 @end smallexample |
2968 | 3003 |
2969 @item no_sanitize_address | 3004 @item no_sanitize_address |
2970 @itemx no_address_safety_analysis | 3005 @itemx no_address_safety_analysis |
2971 @cindex @code{no_sanitize_address} function attribute | 3006 @cindex @code{no_sanitize_address} function attribute |
3013 @cindex @code{noinline} function attribute | 3048 @cindex @code{noinline} function attribute |
3014 This function attribute prevents a function from being considered for | 3049 This function attribute prevents a function from being considered for |
3015 inlining. | 3050 inlining. |
3016 @c Don't enumerate the optimizations by name here; we try to be | 3051 @c Don't enumerate the optimizations by name here; we try to be |
3017 @c future-compatible with this mechanism. | 3052 @c future-compatible with this mechanism. |
3018 If the function does not have side-effects, there are optimizations | 3053 If the function does not have side effects, there are optimizations |
3019 other than inlining that cause function calls to be optimized away, | 3054 other than inlining that cause function calls to be optimized away, |
3020 although the function call is live. To keep such calls from being | 3055 although the function call is live. To keep such calls from being |
3021 optimized away, put | 3056 optimized away, put |
3022 @smallexample | 3057 @smallexample |
3023 asm (""); | 3058 asm (""); |
3024 @end smallexample | 3059 @end smallexample |
3025 | 3060 |
3026 @noindent | 3061 @noindent |
3027 (@pxref{Extended Asm}) in the called function, to serve as a special | 3062 (@pxref{Extended Asm}) in the called function, to serve as a special |
3028 side-effect. | 3063 side effect. |
3029 | 3064 |
3030 @item noipa | 3065 @item noipa |
3031 @cindex @code{noipa} function attribute | 3066 @cindex @code{noipa} function attribute |
3032 Disable interprocedural optimizations between the function with this | 3067 Disable interprocedural optimizations between the function with this |
3033 attribute and its callers, as if the body of the function is not available | 3068 attribute and its callers, as if the body of the function is not available |
3038 existing and future optimizations employing interprocedural analysis, | 3073 existing and future optimizations employing interprocedural analysis, |
3039 including those that do not have an attribute suitable for disabling | 3074 including those that do not have an attribute suitable for disabling |
3040 them individually. This attribute is supported mainly for the purpose | 3075 them individually. This attribute is supported mainly for the purpose |
3041 of testing the compiler. | 3076 of testing the compiler. |
3042 | 3077 |
3043 @item nonnull (@var{arg-index}, @dots{}) | 3078 @item nonnull |
3079 @itemx nonnull (@var{arg-index}, @dots{}) | |
3044 @cindex @code{nonnull} function attribute | 3080 @cindex @code{nonnull} function attribute |
3045 @cindex functions with non-null pointer arguments | 3081 @cindex functions with non-null pointer arguments |
3046 The @code{nonnull} attribute specifies that some function parameters should | 3082 The @code{nonnull} attribute specifies that some function parameters should |
3047 be non-null pointers. For instance, the declaration: | 3083 be non-null pointers. For instance, the declaration: |
3048 | 3084 |
3055 @noindent | 3091 @noindent |
3056 causes the compiler to check that, in calls to @code{my_memcpy}, | 3092 causes the compiler to check that, in calls to @code{my_memcpy}, |
3057 arguments @var{dest} and @var{src} are non-null. If the compiler | 3093 arguments @var{dest} and @var{src} are non-null. If the compiler |
3058 determines that a null pointer is passed in an argument slot marked | 3094 determines that a null pointer is passed in an argument slot marked |
3059 as non-null, and the @option{-Wnonnull} option is enabled, a warning | 3095 as non-null, and the @option{-Wnonnull} option is enabled, a warning |
3060 is issued. The compiler may also choose to make optimizations based | 3096 is issued. @xref{Warning Options}. Unless disabled by |
3061 on the knowledge that certain function arguments will never be null. | 3097 the @option{-fno-delete-null-pointer-checks} option the compiler may |
3062 | 3098 also perform optimizations based on the knowledge that certain function |
3063 If no argument index list is given to the @code{nonnull} attribute, | 3099 arguments cannot be null. In addition, |
3100 the @option{-fisolate-erroneous-paths-attribute} option can be specified | |
3101 to have GCC transform calls with null arguments to non-null functions | |
3102 into traps. @xref{Optimize Options}. | |
3103 | |
3104 If no @var{arg-index} is given to the @code{nonnull} attribute, | |
3064 all pointer arguments are marked as non-null. To illustrate, the | 3105 all pointer arguments are marked as non-null. To illustrate, the |
3065 following declaration is equivalent to the previous example: | 3106 following declaration is equivalent to the previous example: |
3066 | 3107 |
3067 @smallexample | 3108 @smallexample |
3068 extern void * | 3109 extern void * |
3128 uninitialized variables. | 3169 uninitialized variables. |
3129 | 3170 |
3130 The @code{noreturn} keyword does not affect the exceptional path when that | 3171 The @code{noreturn} keyword does not affect the exceptional path when that |
3131 applies: a @code{noreturn}-marked function may still return to the caller | 3172 applies: a @code{noreturn}-marked function may still return to the caller |
3132 by throwing an exception or calling @code{longjmp}. | 3173 by throwing an exception or calling @code{longjmp}. |
3174 | |
3175 In order to preserve backtraces, GCC will never turn calls to | |
3176 @code{noreturn} functions into tail calls. | |
3133 | 3177 |
3134 Do not assume that registers saved by the calling function are | 3178 Do not assume that registers saved by the calling function are |
3135 restored before calling the @code{noreturn} function. | 3179 restored before calling the @code{noreturn} function. |
3136 | 3180 |
3137 It does not make sense for a @code{noreturn} function to have a return | 3181 It does not make sense for a @code{noreturn} function to have a return |
3185 @item pure | 3229 @item pure |
3186 @cindex @code{pure} function attribute | 3230 @cindex @code{pure} function attribute |
3187 @cindex functions that have no side effects | 3231 @cindex functions that have no side effects |
3188 Many functions have no effects except the return value and their | 3232 Many functions have no effects except the return value and their |
3189 return value depends only on the parameters and/or global variables. | 3233 return value depends only on the parameters and/or global variables. |
3190 Such a function can be subject | 3234 Calls to such functions can be subject |
3191 to common subexpression elimination and loop optimization just as an | 3235 to common subexpression elimination and loop optimization just as an |
3192 arithmetic operator would be. These functions should be declared | 3236 arithmetic operator would be. These functions should be declared |
3193 with the attribute @code{pure}. For example, | 3237 with the attribute @code{pure}. For example, |
3194 | 3238 |
3195 @smallexample | 3239 @smallexample |
3202 | 3246 |
3203 Some common examples of pure functions are @code{strlen} or @code{memcmp}. | 3247 Some common examples of pure functions are @code{strlen} or @code{memcmp}. |
3204 Interesting non-pure functions are functions with infinite loops or those | 3248 Interesting non-pure functions are functions with infinite loops or those |
3205 depending on volatile memory or other system resource, that may change between | 3249 depending on volatile memory or other system resource, that may change between |
3206 two consecutive calls (such as @code{feof} in a multithreading environment). | 3250 two consecutive calls (such as @code{feof} in a multithreading environment). |
3251 | |
3252 The @code{pure} attribute imposes similar but looser restrictions on | |
3253 a function's defintion than the @code{const} attribute: it allows the | |
3254 function to read global variables. Decorating the same function with | |
3255 both the @code{pure} and the @code{const} attribute is diagnosed. | |
3256 Because a @code{pure} function cannot have any side effects it does not | |
3257 make sense for such a function to return @code{void}. Declaring such | |
3258 a function is diagnosed. | |
3207 | 3259 |
3208 @item returns_nonnull | 3260 @item returns_nonnull |
3209 @cindex @code{returns_nonnull} function attribute | 3261 @cindex @code{returns_nonnull} function attribute |
3210 The @code{returns_nonnull} attribute specifies that the function | 3262 The @code{returns_nonnull} attribute specifies that the function |
3211 return value should be a non-null pointer. For instance, the declaration: | 3263 return value should be a non-null pointer. For instance, the declaration: |
3293 The optional argument @var{mask} may have the value | 3345 The optional argument @var{mask} may have the value |
3294 @code{notinbranch} or @code{inbranch}, | 3346 @code{notinbranch} or @code{inbranch}, |
3295 and instructs the compiler to generate non-masked or masked | 3347 and instructs the compiler to generate non-masked or masked |
3296 clones correspondingly. By default, all clones are generated. | 3348 clones correspondingly. By default, all clones are generated. |
3297 | 3349 |
3298 The attribute should not be used together with Cilk Plus @code{vector} | |
3299 attribute on the same function. | |
3300 | |
3301 If the attribute is specified and @code{#pragma omp declare simd} is | 3350 If the attribute is specified and @code{#pragma omp declare simd} is |
3302 present on a declaration and the @option{-fopenmp} or @option{-fopenmp-simd} | 3351 present on a declaration and the @option{-fopenmp} or @option{-fopenmp-simd} |
3303 switch is specified, then the attribute is ignored. | 3352 switch is specified, then the attribute is ignored. |
3304 | 3353 |
3305 @item stack_protect | 3354 @item stack_protect |
3590 Indicates that code should be generated for a particular code model for | 3639 Indicates that code should be generated for a particular code model for |
3591 this function. The behavior and permissible arguments are the same as | 3640 this function. The behavior and permissible arguments are the same as |
3592 for the command line option @option{-mcmodel=}. | 3641 for the command line option @option{-mcmodel=}. |
3593 | 3642 |
3594 @item strict-align | 3643 @item strict-align |
3644 @itemx no-strict-align | |
3595 @cindex @code{strict-align} function attribute, AArch64 | 3645 @cindex @code{strict-align} function attribute, AArch64 |
3596 Indicates that the compiler should not assume that unaligned memory references | 3646 @code{strict-align} indicates that the compiler should not assume that unaligned |
3597 are handled by the system. The behavior is the same as for the command-line | 3647 memory references are handled by the system. To allow the compiler to assume |
3598 option @option{-mstrict-align}. | 3648 that aligned memory references are handled by the system, the inverse attribute |
3649 @code{no-strict-align} can be specified. The behavior is same as for the | |
3650 command-line option @option{-mstrict-align} and @option{-mno-strict-align}. | |
3599 | 3651 |
3600 @item omit-leaf-frame-pointer | 3652 @item omit-leaf-frame-pointer |
3601 @cindex @code{omit-leaf-frame-pointer} function attribute, AArch64 | 3653 @cindex @code{omit-leaf-frame-pointer} function attribute, AArch64 |
3602 Indicates that the frame pointer should be omitted for a leaf function call. | 3654 Indicates that the frame pointer should be omitted for a leaf function call. |
3603 To keep the frame pointer, the inverse attribute | 3655 To keep the frame pointer, the inverse attribute |
3749 branch-and-link instruction, which has a 25-bit offset from | 3801 branch-and-link instruction, which has a 25-bit offset from |
3750 the call site. A function marked with the @code{short_call} | 3802 the call site. A function marked with the @code{short_call} |
3751 attribute will always be close enough to be called with a conditional | 3803 attribute will always be close enough to be called with a conditional |
3752 branch-and-link instruction, which has a 21-bit offset from | 3804 branch-and-link instruction, which has a 21-bit offset from |
3753 the call site. | 3805 the call site. |
3806 | |
3807 @item jli_always | |
3808 @cindex @code{jli_always} function attribute, ARC | |
3809 Forces a particular function to be called using @code{jli} | |
3810 instruction. The @code{jli} instruction makes use of a table stored | |
3811 into @code{.jlitab} section, which holds the location of the functions | |
3812 which are addressed using this instruction. | |
3813 | |
3814 @item jli_fixed | |
3815 @cindex @code{jli_fixed} function attribute, ARC | |
3816 Identical like the above one, but the location of the function in the | |
3817 @code{jli} table is known and given as an attribute parameter. | |
3818 | |
3819 @item secure_call | |
3820 @cindex @code{secure_call} function attribute, ARC | |
3821 This attribute allows one to mark secure-code functions that are | |
3822 callable from normal mode. The location of the secure call function | |
3823 into the @code{sjli} table needs to be passed as argument. | |
3824 | |
3754 @end table | 3825 @end table |
3755 | 3826 |
3756 @node ARM Function Attributes | 3827 @node ARM Function Attributes |
3757 @subsection ARM Function Attributes | 3828 @subsection ARM Function Attributes |
3758 | 3829 |
3855 @item fpu= | 3926 @item fpu= |
3856 @cindex @code{target("fpu=")} function attribute, ARM | 3927 @cindex @code{target("fpu=")} function attribute, ARM |
3857 Specifies the fpu for which to tune the performance of this function. | 3928 Specifies the fpu for which to tune the performance of this function. |
3858 The behavior and permissible arguments are the same as for the @option{-mfpu=} | 3929 The behavior and permissible arguments are the same as for the @option{-mfpu=} |
3859 command-line option. | 3930 command-line option. |
3931 | |
3932 @item arch= | |
3933 @cindex @code{arch=} function attribute, ARM | |
3934 Specifies the architecture version and architectural extensions to use | |
3935 for this function. The behavior and permissible arguments are the same as | |
3936 for the @option{-march=} command-line option. | |
3937 | |
3938 The above target attributes can be specified as follows: | |
3939 | |
3940 @smallexample | |
3941 __attribute__((target("arch=armv8-a+crc"))) | |
3942 int | |
3943 f (int a) | |
3944 @{ | |
3945 return a + 5; | |
3946 @} | |
3947 @end smallexample | |
3948 | |
3949 Additionally, the architectural extension string may be specified on its | |
3950 own. This can be used to turn on and off particular architectural extensions | |
3951 without having to specify a particular architecture version or core. Example: | |
3952 | |
3953 @smallexample | |
3954 __attribute__((target("+crc+nocrypto"))) | |
3955 int | |
3956 foo (int a) | |
3957 @{ | |
3958 return a + 5; | |
3959 @} | |
3960 @end smallexample | |
3961 | |
3962 In this example @code{target("+crc+nocrypto")} enables the @code{crc} | |
3963 extension and disables the @code{crypto} extension for the function @code{foo} | |
3964 without modifying an existing @option{-march=} or @option{-mcpu} option. | |
3860 | 3965 |
3861 @end table | 3966 @end table |
3862 | 3967 |
3863 @end table | 3968 @end table |
3864 | 3969 |
4058 Use this attribute to indicate | 4163 Use this attribute to indicate |
4059 that the specified function is an interrupt handler. The compiler generates | 4164 that the specified function is an interrupt handler. The compiler generates |
4060 function entry and exit sequences suitable for use in an interrupt handler | 4165 function entry and exit sequences suitable for use in an interrupt handler |
4061 when this attribute is present. | 4166 when this attribute is present. |
4062 @end table | 4167 @end table |
4168 | |
4169 @node C-SKY Function Attributes | |
4170 @subsection C-SKY Function Attributes | |
4171 | |
4172 These function attributes are supported by the C-SKY back end: | |
4173 | |
4174 @table @code | |
4175 @item interrupt | |
4176 @itemx isr | |
4177 @cindex @code{interrupt} function attribute, C-SKY | |
4178 @cindex @code{isr} function attribute, C-SKY | |
4179 Use these attributes to indicate that the specified function | |
4180 is an interrupt handler. | |
4181 The compiler generates function entry and exit sequences suitable for | |
4182 use in an interrupt handler when either of these attributes are present. | |
4183 | |
4184 Use of these options requires the @option{-mistack} command-line option | |
4185 to enable support for the necessary interrupt stack instructions. They | |
4186 are ignored with a warning otherwise. @xref{C-SKY Options}. | |
4187 | |
4188 @item naked | |
4189 @cindex @code{naked} function attribute, C-SKY | |
4190 This attribute allows the compiler to construct the | |
4191 requisite function declaration, while allowing the body of the | |
4192 function to be assembly code. The specified function will not have | |
4193 prologue/epilogue sequences generated by the compiler. Only basic | |
4194 @code{asm} statements can safely be included in naked functions | |
4195 (@pxref{Basic Asm}). While using extended @code{asm} or a mixture of | |
4196 basic @code{asm} and C code may appear to work, they cannot be | |
4197 depended upon to work reliably and are not supported. | |
4198 @end table | |
4199 | |
4063 | 4200 |
4064 @node Epiphany Function Attributes | 4201 @node Epiphany Function Attributes |
4065 @subsection Epiphany Function Attributes | 4202 @subsection Epiphany Function Attributes |
4066 | 4203 |
4067 These function attributes are supported by the Epiphany back end: | 4204 These function attributes are supported by the Epiphany back end: |
5047 On the PowerPC, the inliner does not inline a | 5184 On the PowerPC, the inliner does not inline a |
5048 function that has different target options than the caller, unless the | 5185 function that has different target options than the caller, unless the |
5049 callee has a subset of the target options of the caller. | 5186 callee has a subset of the target options of the caller. |
5050 @end table | 5187 @end table |
5051 | 5188 |
5189 @node RISC-V Function Attributes | |
5190 @subsection RISC-V Function Attributes | |
5191 | |
5192 These function attributes are supported by the RISC-V back end: | |
5193 | |
5194 @table @code | |
5195 @item naked | |
5196 @cindex @code{naked} function attribute, RISC-V | |
5197 This attribute allows the compiler to construct the | |
5198 requisite function declaration, while allowing the body of the | |
5199 function to be assembly code. The specified function will not have | |
5200 prologue/epilogue sequences generated by the compiler. Only basic | |
5201 @code{asm} statements can safely be included in naked functions | |
5202 (@pxref{Basic Asm}). While using extended @code{asm} or a mixture of | |
5203 basic @code{asm} and C code may appear to work, they cannot be | |
5204 depended upon to work reliably and are not supported. | |
5205 | |
5206 @item interrupt | |
5207 @cindex @code{interrupt} function attribute, RISC-V | |
5208 Use this attribute to indicate that the specified function is an interrupt | |
5209 handler. The compiler generates function entry and exit sequences suitable | |
5210 for use in an interrupt handler when this attribute is present. | |
5211 | |
5212 You can specify the kind of interrupt to be handled by adding an optional | |
5213 parameter to the interrupt attribute like this: | |
5214 | |
5215 @smallexample | |
5216 void f (void) __attribute__ ((interrupt ("user"))); | |
5217 @end smallexample | |
5218 | |
5219 Permissible values for this parameter are @code{user}, @code{supervisor}, | |
5220 and @code{machine}. If there is no parameter, then it defaults to | |
5221 @code{machine}. | |
5222 @end table | |
5223 | |
5052 @node RL78 Function Attributes | 5224 @node RL78 Function Attributes |
5053 @subsection RL78 Function Attributes | 5225 @subsection RL78 Function Attributes |
5054 | 5226 |
5055 These function attributes are supported by the RL78 back end: | 5227 These function attributes are supported by the RL78 back end: |
5056 | 5228 |
5098 Use this attribute to indicate | 5270 Use this attribute to indicate |
5099 that the specified function is an interrupt handler. The compiler generates | 5271 that the specified function is an interrupt handler. The compiler generates |
5100 function entry and exit sequences suitable for use in an interrupt handler | 5272 function entry and exit sequences suitable for use in an interrupt handler |
5101 when this attribute is present. | 5273 when this attribute is present. |
5102 | 5274 |
5103 On RX targets, you may specify one or more vector numbers as arguments | 5275 On RX and RL78 targets, you may specify one or more vector numbers as arguments |
5104 to the attribute, as well as naming an alternate table name. | 5276 to the attribute, as well as naming an alternate table name. |
5105 Parameters are handled sequentially, so one handler can be assigned to | 5277 Parameters are handled sequentially, so one handler can be assigned to |
5106 multiple entries in multiple tables. One may also pass the magic | 5278 multiple entries in multiple tables. One may also pass the magic |
5107 string @code{"$default"} which causes the function to be used for any | 5279 string @code{"$default"} which causes the function to be used for any |
5108 unfilled slots in the current table. | 5280 unfilled slots in the current table. |
5476 Use this attribute to indicate that the specified function has no | 5648 Use this attribute to indicate that the specified function has no |
5477 caller-saved registers. That is, all registers are callee-saved. For | 5649 caller-saved registers. That is, all registers are callee-saved. For |
5478 example, this attribute can be used for a function called from an | 5650 example, this attribute can be used for a function called from an |
5479 interrupt handler. The compiler generates proper function entry and | 5651 interrupt handler. The compiler generates proper function entry and |
5480 exit sequences to save and restore any modified registers, except for | 5652 exit sequences to save and restore any modified registers, except for |
5481 the EFLAGS register. Since GCC doesn't preserve MPX, SSE, MMX nor x87 | 5653 the EFLAGS register. Since GCC doesn't preserve SSE, MMX nor x87 |
5482 states, the GCC option @option{-mgeneral-regs-only} should be used to | 5654 states, the GCC option @option{-mgeneral-regs-only} should be used to |
5483 compile functions with @code{no_caller_saved_registers} attribute. | 5655 compile functions with @code{no_caller_saved_registers} attribute. |
5484 | 5656 |
5485 @item interrupt | 5657 @item interrupt |
5486 @cindex @code{interrupt} function attribute, x86 | 5658 @cindex @code{interrupt} function attribute, x86 |
5490 entry and exit sequences suitable for use in an interrupt handler when | 5662 entry and exit sequences suitable for use in an interrupt handler when |
5491 this attribute is present. The @code{IRET} instruction, instead of the | 5663 this attribute is present. The @code{IRET} instruction, instead of the |
5492 @code{RET} instruction, is used to return from interrupt handlers. All | 5664 @code{RET} instruction, is used to return from interrupt handlers. All |
5493 registers, except for the EFLAGS register which is restored by the | 5665 registers, except for the EFLAGS register which is restored by the |
5494 @code{IRET} instruction, are preserved by the compiler. Since GCC | 5666 @code{IRET} instruction, are preserved by the compiler. Since GCC |
5495 doesn't preserve MPX, SSE, MMX nor x87 states, the GCC option | 5667 doesn't preserve SSE, MMX nor x87 states, the GCC option |
5496 @option{-mgeneral-regs-only} should be used to compile interrupt and | 5668 @option{-mgeneral-regs-only} should be used to compile interrupt and |
5497 exception handlers. | 5669 exception handlers. |
5498 | 5670 |
5499 Any interruptible-without-stack-switch code must be compiled with | 5671 Any interruptible-without-stack-switch code must be compiled with |
5500 @option{-mno-red-zone} since interrupt handlers can and will, because | 5672 @option{-mno-red-zone} since interrupt handlers can and will, because |
5688 @cindex @code{target("fpmath=@var{FPMATH}")} function attribute, x86 | 5860 @cindex @code{target("fpmath=@var{FPMATH}")} function attribute, x86 |
5689 Specify which floating-point unit to use. You must specify the | 5861 Specify which floating-point unit to use. You must specify the |
5690 @code{target("fpmath=sse,387")} option as | 5862 @code{target("fpmath=sse,387")} option as |
5691 @code{target("fpmath=sse+387")} because the comma would separate | 5863 @code{target("fpmath=sse+387")} because the comma would separate |
5692 different options. | 5864 different options. |
5865 | |
5866 @item indirect_branch("@var{choice}") | |
5867 @cindex @code{indirect_branch} function attribute, x86 | |
5868 On x86 targets, the @code{indirect_branch} attribute causes the compiler | |
5869 to convert indirect call and jump with @var{choice}. @samp{keep} | |
5870 keeps indirect call and jump unmodified. @samp{thunk} converts indirect | |
5871 call and jump to call and return thunk. @samp{thunk-inline} converts | |
5872 indirect call and jump to inlined call and return thunk. | |
5873 @samp{thunk-extern} converts indirect call and jump to external call | |
5874 and return thunk provided in a separate object file. | |
5875 | |
5876 @item function_return("@var{choice}") | |
5877 @cindex @code{function_return} function attribute, x86 | |
5878 On x86 targets, the @code{function_return} attribute causes the compiler | |
5879 to convert function return with @var{choice}. @samp{keep} keeps function | |
5880 return unmodified. @samp{thunk} converts function return to call and | |
5881 return thunk. @samp{thunk-inline} converts function return to inlined | |
5882 call and return thunk. @samp{thunk-extern} converts function return to | |
5883 external call and return thunk provided in a separate object file. | |
5693 | 5884 |
5694 @item nocf_check | 5885 @item nocf_check |
5695 @cindex @code{nocf_check} function attribute | 5886 @cindex @code{nocf_check} function attribute |
5696 The @code{nocf_check} attribute on a function is used to inform the | 5887 The @code{nocf_check} attribute on a function is used to inform the |
5697 compiler that the function's prologue should not be instrumented when | 5888 compiler that the function's prologue should not be instrumented when |
5719 @{ | 5910 @{ |
5720 int foo (void) __attribute__(nocf_check); | 5911 int foo (void) __attribute__(nocf_check); |
5721 void (*foo1)(void) __attribute__(nocf_check); | 5912 void (*foo1)(void) __attribute__(nocf_check); |
5722 void (*foo2)(void); | 5913 void (*foo2)(void); |
5723 | 5914 |
5915 /* foo's address is assumed to be valid. */ | |
5724 int | 5916 int |
5725 foo (void) /* The function's address is assumed to be valid. */ | 5917 foo (void) |
5726 | 5918 |
5727 /* This call site is not checked for control-flow validity. */ | 5919 /* This call site is not checked for control-flow |
5920 validity. */ | |
5728 (*foo1)(); | 5921 (*foo1)(); |
5729 | 5922 |
5730 foo1 = foo2; /* A warning is printed about attribute mismatch. */ | 5923 /* A warning is issued about attribute mismatch. */ |
5731 /* This call site is still not checked for control-flow validity. */ | 5924 foo1 = foo2; |
5925 | |
5926 /* This call site is still not checked. */ | |
5732 (*foo1)(); | 5927 (*foo1)(); |
5733 | 5928 |
5734 /* This call site is checked for control-flow validity. */ | 5929 /* This call site is checked. */ |
5735 (*foo2)(); | 5930 (*foo2)(); |
5736 | 5931 |
5737 foo2 = foo1; /* A warning is printed about attribute mismatch. */ | 5932 /* A warning is issued about attribute mismatch. */ |
5738 /* This call site is still checked for control-flow validity. */ | 5933 foo2 = foo1; |
5934 | |
5935 /* This call site is still checked. */ | |
5739 (*foo2)(); | 5936 (*foo2)(); |
5740 | 5937 |
5741 return 0; | 5938 return 0; |
5742 @} | 5939 @} |
5743 @end smallexample | 5940 @end smallexample |
5941 | |
5942 @item indirect_return | |
5943 @cindex @code{indirect_return} function attribute, x86 | |
5944 | |
5945 The @code{indirect_return} attribute can be applied to a function, | |
5946 as well as variable or type of function pointer to inform the | |
5947 compiler that the function may return via indirect branch. | |
5744 | 5948 |
5745 @end table | 5949 @end table |
5746 | 5950 |
5747 On the x86, the inliner does not inline a | 5951 On the x86, the inliner does not inline a |
5748 function that has different target options than the caller, unless the | 5952 function that has different target options than the caller, unless the |
5785 @xref{Attribute Syntax}, for details of the exact syntax for using | 5989 @xref{Attribute Syntax}, for details of the exact syntax for using |
5786 attributes. | 5990 attributes. |
5787 | 5991 |
5788 @menu | 5992 @menu |
5789 * Common Variable Attributes:: | 5993 * Common Variable Attributes:: |
5994 * ARC Variable Attributes:: | |
5790 * AVR Variable Attributes:: | 5995 * AVR Variable Attributes:: |
5791 * Blackfin Variable Attributes:: | 5996 * Blackfin Variable Attributes:: |
5792 * H8/300 Variable Attributes:: | 5997 * H8/300 Variable Attributes:: |
5793 * IA-64 Variable Attributes:: | 5998 * IA-64 Variable Attributes:: |
5794 * M32R/D Variable Attributes:: | 5999 * M32R/D Variable Attributes:: |
5967 | 6172 |
5968 The @code{deprecated} attribute can also be used for functions and | 6173 The @code{deprecated} attribute can also be used for functions and |
5969 types (@pxref{Common Function Attributes}, | 6174 types (@pxref{Common Function Attributes}, |
5970 @pxref{Common Type Attributes}). | 6175 @pxref{Common Type Attributes}). |
5971 | 6176 |
5972 @item nonstring (@var{nonstring}) | 6177 The message attached to the attribute is affected by the setting of |
5973 @cindex @code{nonstring} variable attribute | 6178 the @option{-fmessage-length} option. |
5974 The @code{nonstring} variable attribute specifies that an object or member | |
5975 declaration with type array of @code{char} or pointer to @code{char} is | |
5976 intended to store character arrays that do not necessarily contain | |
5977 a terminating @code{NUL} character. This is useful to avoid warnings | |
5978 when such an array or pointer is used as an argument to a bounded string | |
5979 manipulation function such as @code{strncpy}. For example, without the | |
5980 attribute, GCC will issue a warning for the call below because it may | |
5981 truncate the copy without appending the terminating NUL character. Using | |
5982 the attribute makes it possible to suppress the warning. | |
5983 | |
5984 @smallexample | |
5985 struct Data | |
5986 @{ | |
5987 char name [32] __attribute__ ((nonstring)); | |
5988 @}; | |
5989 void f (struct Data *pd, const char *s) | |
5990 @{ | |
5991 strncpy (pd->name, s, sizeof pd->name); | |
5992 @dots{} | |
5993 @} | |
5994 @end smallexample | |
5995 | 6179 |
5996 @item mode (@var{mode}) | 6180 @item mode (@var{mode}) |
5997 @cindex @code{mode} variable attribute | 6181 @cindex @code{mode} variable attribute |
5998 This attribute specifies the data type for the declaration---whichever | 6182 This attribute specifies the data type for the declaration---whichever |
5999 type corresponds to the mode @var{mode}. This in effect lets you | 6183 type corresponds to the mode @var{mode}. This in effect lets you |
6004 You may also specify a mode of @code{byte} or @code{__byte__} to | 6188 You may also specify a mode of @code{byte} or @code{__byte__} to |
6005 indicate the mode corresponding to a one-byte integer, @code{word} or | 6189 indicate the mode corresponding to a one-byte integer, @code{word} or |
6006 @code{__word__} for the mode of a one-word integer, and @code{pointer} | 6190 @code{__word__} for the mode of a one-word integer, and @code{pointer} |
6007 or @code{__pointer__} for the mode used to represent pointers. | 6191 or @code{__pointer__} for the mode used to represent pointers. |
6008 | 6192 |
6193 @item nonstring | |
6194 @cindex @code{nonstring} variable attribute | |
6195 The @code{nonstring} variable attribute specifies that an object or member | |
6196 declaration with type array of @code{char}, @code{signed char}, or | |
6197 @code{unsigned char}, or pointer to such a type is intended to store | |
6198 character arrays that do not necessarily contain a terminating @code{NUL}. | |
6199 This is useful in detecting uses of such arrays or pointers with functions | |
6200 that expect @code{NUL}-terminated strings, and to avoid warnings when such | |
6201 an array or pointer is used as an argument to a bounded string manipulation | |
6202 function such as @code{strncpy}. For example, without the attribute, GCC | |
6203 will issue a warning for the @code{strncpy} call below because it may | |
6204 truncate the copy without appending the terminating @code{NUL} character. | |
6205 Using the attribute makes it possible to suppress the warning. However, | |
6206 when the array is declared with the attribute the call to @code{strlen} is | |
6207 diagnosed because when the array doesn't contain a @code{NUL}-terminated | |
6208 string the call is undefined. To copy, compare, of search non-string | |
6209 character arrays use the @code{memcpy}, @code{memcmp}, @code{memchr}, | |
6210 and other functions that operate on arrays of bytes. In addition, | |
6211 calling @code{strnlen} and @code{strndup} with such arrays is safe | |
6212 provided a suitable bound is specified, and not diagnosed. | |
6213 | |
6214 @smallexample | |
6215 struct Data | |
6216 @{ | |
6217 char name [32] __attribute__ ((nonstring)); | |
6218 @}; | |
6219 | |
6220 int f (struct Data *pd, const char *s) | |
6221 @{ | |
6222 strncpy (pd->name, s, sizeof pd->name); | |
6223 @dots{} | |
6224 return strlen (pd->name); // unsafe, gets a warning | |
6225 @} | |
6226 @end smallexample | |
6227 | |
6009 @item packed | 6228 @item packed |
6010 @cindex @code{packed} variable attribute | 6229 @cindex @code{packed} variable attribute |
6011 The @code{packed} attribute specifies that a variable or structure field | 6230 The @code{packed} attribute specifies that a structure member should have |
6012 should have the smallest possible alignment---one byte for a variable, | 6231 the smallest possible alignment---one bit for a bit-field and one byte |
6013 and one bit for a field, unless you specify a larger value with the | 6232 otherwise, unless a larger value is specified with the @code{aligned} |
6014 @code{aligned} attribute. | 6233 attribute. The attribute does not apply to non-member objects. |
6015 | 6234 |
6016 Here is a structure in which the field @code{x} is packed, so that it | 6235 For example in the structure below, the member array @code{x} is packed |
6017 immediately follows @code{a}: | 6236 so that it immediately follows @code{a} with no intervening padding: |
6018 | 6237 |
6019 @smallexample | 6238 @smallexample |
6020 struct foo | 6239 struct foo |
6021 @{ | 6240 @{ |
6022 char a; | 6241 char a; |
6144 | 6363 |
6145 @item weak | 6364 @item weak |
6146 @cindex @code{weak} variable attribute | 6365 @cindex @code{weak} variable attribute |
6147 The @code{weak} attribute is described in | 6366 The @code{weak} attribute is described in |
6148 @ref{Common Function Attributes}. | 6367 @ref{Common Function Attributes}. |
6368 | |
6369 @end table | |
6370 | |
6371 @node ARC Variable Attributes | |
6372 @subsection ARC Variable Attributes | |
6373 | |
6374 @table @code | |
6375 @item aux | |
6376 @cindex @code{aux} variable attribute, ARC | |
6377 The @code{aux} attribute is used to directly access the ARC's | |
6378 auxiliary register space from C. The auxilirary register number is | |
6379 given via attribute argument. | |
6149 | 6380 |
6150 @end table | 6381 @end table |
6151 | 6382 |
6152 @node AVR Variable Attributes | 6383 @node AVR Variable Attributes |
6153 @subsection AVR Variable Attributes | 6384 @subsection AVR Variable Attributes |
6697 @xref{Attribute Syntax}, for details of the exact syntax for using | 6928 @xref{Attribute Syntax}, for details of the exact syntax for using |
6698 attributes. | 6929 attributes. |
6699 | 6930 |
6700 @menu | 6931 @menu |
6701 * Common Type Attributes:: | 6932 * Common Type Attributes:: |
6933 * ARC Type Attributes:: | |
6702 * ARM Type Attributes:: | 6934 * ARM Type Attributes:: |
6703 * MeP Type Attributes:: | 6935 * MeP Type Attributes:: |
6704 * PowerPC Type Attributes:: | 6936 * PowerPC Type Attributes:: |
6705 * SPU Type Attributes:: | 6937 * SPU Type Attributes:: |
6706 * x86 Type Attributes:: | 6938 * x86 Type Attributes:: |
6840 __u64 x; | 7072 __u64 x; |
6841 @} __attribute__((aligned(8))); | 7073 @} __attribute__((aligned(8))); |
6842 @end smallexample | 7074 @end smallexample |
6843 | 7075 |
6844 This warning can be disabled by @option{-Wno-if-not-aligned}. | 7076 This warning can be disabled by @option{-Wno-if-not-aligned}. |
6845 | |
6846 @item bnd_variable_size | |
6847 @cindex @code{bnd_variable_size} type attribute | |
6848 @cindex Pointer Bounds Checker attributes | |
6849 When applied to a structure field, this attribute tells Pointer | |
6850 Bounds Checker that the size of this field should not be computed | |
6851 using static type information. It may be used to mark variably-sized | |
6852 static array fields placed at the end of a structure. | |
6853 | |
6854 @smallexample | |
6855 struct S | |
6856 @{ | |
6857 int size; | |
6858 char data[1]; | |
6859 @} | |
6860 S *p = (S *)malloc (sizeof(S) + 100); | |
6861 p->data[10] = 0; //Bounds violation | |
6862 @end smallexample | |
6863 | |
6864 @noindent | |
6865 By using an attribute for the field we may avoid unwanted bound | |
6866 violation checks: | |
6867 | |
6868 @smallexample | |
6869 struct S | |
6870 @{ | |
6871 int size; | |
6872 char data[1] __attribute__((bnd_variable_size)); | |
6873 @} | |
6874 S *p = (S *)malloc (sizeof(S) + 100); | |
6875 p->data[10] = 0; //OK | |
6876 @end smallexample | |
6877 | 7077 |
6878 @item deprecated | 7078 @item deprecated |
6879 @itemx deprecated (@var{msg}) | 7079 @itemx deprecated (@var{msg}) |
6880 @cindex @code{deprecated} type attribute | 7080 @cindex @code{deprecated} type attribute |
6881 The @code{deprecated} attribute results in a warning if the type | 7081 The @code{deprecated} attribute results in a warning if the type |
6901 results in a warning on line 2 and 3 but not lines 4, 5, or 6. No | 7101 results in a warning on line 2 and 3 but not lines 4, 5, or 6. No |
6902 warning is issued for line 4 because T2 is not explicitly | 7102 warning is issued for line 4 because T2 is not explicitly |
6903 deprecated. Line 5 has no warning because T3 is explicitly | 7103 deprecated. Line 5 has no warning because T3 is explicitly |
6904 deprecated. Similarly for line 6. The optional @var{msg} | 7104 deprecated. Similarly for line 6. The optional @var{msg} |
6905 argument, which must be a string, is printed in the warning if | 7105 argument, which must be a string, is printed in the warning if |
6906 present. | 7106 present. Control characters in the string will be replaced with |
7107 escape sequences, and if the @option{-fmessage-length} option is set | |
7108 to 0 (its default value) then any newline characters will be ignored. | |
6907 | 7109 |
6908 The @code{deprecated} attribute can also be used for functions and | 7110 The @code{deprecated} attribute can also be used for functions and |
6909 variables (@pxref{Function Attributes}, @pxref{Variable Attributes}.) | 7111 variables (@pxref{Function Attributes}, @pxref{Variable Attributes}.) |
7112 | |
7113 The message attached to the attribute is affected by the setting of | |
7114 the @option{-fmessage-length} option. | |
6910 | 7115 |
6911 @item designated_init | 7116 @item designated_init |
6912 @cindex @code{designated_init} type attribute | 7117 @cindex @code{designated_init} type attribute |
6913 This attribute may only be applied to structure types. It indicates | 7118 This attribute may only be applied to structure types. It indicates |
6914 that any initialization of an object of this type must use designated | 7119 that any initialization of an object of this type must use designated |
6959 If you replaced @code{short_a} with @code{short} in the variable | 7164 If you replaced @code{short_a} with @code{short} in the variable |
6960 declaration, the above program would abort when compiled with | 7165 declaration, the above program would abort when compiled with |
6961 @option{-fstrict-aliasing}, which is on by default at @option{-O2} or | 7166 @option{-fstrict-aliasing}, which is on by default at @option{-O2} or |
6962 above. | 7167 above. |
6963 | 7168 |
7169 @item mode (@var{mode}) | |
7170 @cindex @code{mode} type attribute | |
7171 This attribute specifies the data type for the declaration---whichever | |
7172 type corresponds to the mode @var{mode}. This in effect lets you | |
7173 request an integer or floating-point type according to its width. | |
7174 | |
7175 @xref{Machine Modes,,, gccint, GNU Compiler Collection (GCC) Internals}, | |
7176 for a list of the possible keywords for @var{mode}. | |
7177 You may also specify a mode of @code{byte} or @code{__byte__} to | |
7178 indicate the mode corresponding to a one-byte integer, @code{word} or | |
7179 @code{__word__} for the mode of a one-word integer, and @code{pointer} | |
7180 or @code{__pointer__} for the mode used to represent pointers. | |
7181 | |
6964 @item packed | 7182 @item packed |
6965 @cindex @code{packed} type attribute | 7183 @cindex @code{packed} type attribute |
6966 This attribute, attached to @code{struct} or @code{union} type | 7184 This attribute, attached to @code{struct} or @code{union} type |
6967 definition, specifies that each member (other than zero-width bit-fields) | 7185 definition, specifies that each member (other than zero-width bit-fields) |
6968 of the structure or union is placed to minimize the memory required. When | 7186 of the structure or union is placed to minimize the memory required. When |
7129 @end table | 7347 @end table |
7130 | 7348 |
7131 To specify multiple attributes, separate them by commas within the | 7349 To specify multiple attributes, separate them by commas within the |
7132 double parentheses: for example, @samp{__attribute__ ((aligned (16), | 7350 double parentheses: for example, @samp{__attribute__ ((aligned (16), |
7133 packed))}. | 7351 packed))}. |
7352 | |
7353 @node ARC Type Attributes | |
7354 @subsection ARC Type Attributes | |
7355 | |
7356 @cindex @code{uncached} type attribute, ARC | |
7357 Declaring objects with @code{uncached} allows you to exclude | |
7358 data-cache participation in load and store operations on those objects | |
7359 without involving the additional semantic implications of | |
7360 @code{volatile}. The @code{.di} instruction suffix is used for all | |
7361 loads and stores of data declared @code{uncached}. | |
7134 | 7362 |
7135 @node ARM Type Attributes | 7363 @node ARM Type Attributes |
7136 @subsection ARM Type Attributes | 7364 @subsection ARM Type Attributes |
7137 | 7365 |
7138 @cindex @code{notshared} type attribute, ARM | 7366 @cindex @code{notshared} type attribute, ARM |
7773 | 8001 |
7774 GCC implements three different semantics of declaring a function | 8002 GCC implements three different semantics of declaring a function |
7775 inline. One is available with @option{-std=gnu89} or | 8003 inline. One is available with @option{-std=gnu89} or |
7776 @option{-fgnu89-inline} or when @code{gnu_inline} attribute is present | 8004 @option{-fgnu89-inline} or when @code{gnu_inline} attribute is present |
7777 on all inline declarations, another when | 8005 on all inline declarations, another when |
7778 @option{-std=c99}, @option{-std=c11}, | 8006 @option{-std=c99}, |
7779 @option{-std=gnu99} or @option{-std=gnu11} | 8007 @option{-std=gnu99} or an option for a later C version is used |
7780 (without @option{-fgnu89-inline}), and the third | 8008 (without @option{-fgnu89-inline}), and the third |
7781 is used when compiling C++. | 8009 is used when compiling C++. |
7782 | 8010 |
7783 To declare a function inline, use the @code{inline} keyword in its | 8011 To declare a function inline, use the @code{inline} keyword in its |
7784 declaration, like this: | 8012 declaration, like this: |
9123 | 9351 |
9124 top: | 9352 top: |
9125 | 9353 |
9126 asm volatile goto ("some assembler instructions here" | 9354 asm volatile goto ("some assembler instructions here" |
9127 : /* No outputs. */ | 9355 : /* No outputs. */ |
9128 : "q" (iInt), "X" (sizeof(unsigned char) + 1) | 9356 : "q" (iInt), "X" (sizeof(unsigned char) + 1), "i" (42) |
9129 : /* No clobbers. */ | 9357 : /* No clobbers. */ |
9130 : top); | 9358 : top); |
9131 @} | 9359 @} |
9132 @end example | 9360 @end example |
9133 | 9361 |
9134 With no modifiers, this is what the output from the operands would be for the | 9362 With no modifiers, this is what the output from the operands would be |
9135 @samp{att} and @samp{intel} dialects of assembler: | 9363 for the @samp{att} and @samp{intel} dialects of assembler: |
9136 | 9364 |
9137 @multitable {Operand} {$.L2} {OFFSET FLAT:.L2} | 9365 @multitable {Operand} {$.L2} {OFFSET FLAT:.L2} |
9138 @headitem Operand @tab @samp{att} @tab @samp{intel} | 9366 @headitem Operand @tab @samp{att} @tab @samp{intel} |
9139 @item @code{%0} | 9367 @item @code{%0} |
9140 @tab @code{%eax} | 9368 @tab @code{%eax} |
9141 @tab @code{eax} | 9369 @tab @code{eax} |
9142 @item @code{%1} | 9370 @item @code{%1} |
9143 @tab @code{$2} | 9371 @tab @code{$2} |
9144 @tab @code{2} | 9372 @tab @code{2} |
9145 @item @code{%2} | 9373 @item @code{%3} |
9146 @tab @code{$.L2} | 9374 @tab @code{$.L3} |
9147 @tab @code{OFFSET FLAT:.L2} | 9375 @tab @code{OFFSET FLAT:.L3} |
9148 @end multitable | 9376 @end multitable |
9149 | 9377 |
9150 The table below shows the list of supported modifiers and their effects. | 9378 The table below shows the list of supported modifiers and their effects. |
9151 | 9379 |
9152 @multitable {Modifier} {Print the opcode suffix for the size of th} {Operand} {@samp{att}} {@samp{intel}} | 9380 @multitable {Modifier} {Print the opcode suffix for the size of th} {Operand} {@samp{att}} {@samp{intel}} |
9153 @headitem Modifier @tab Description @tab Operand @tab @samp{att} @tab @samp{intel} | 9381 @headitem Modifier @tab Description @tab Operand @tab @samp{att} @tab @samp{intel} |
9382 @item @code{a} | |
9383 @tab Print an absolute memory reference. | |
9384 @tab @code{%A0} | |
9385 @tab @code{*%rax} | |
9386 @tab @code{rax} | |
9387 @item @code{b} | |
9388 @tab Print the QImode name of the register. | |
9389 @tab @code{%b0} | |
9390 @tab @code{%al} | |
9391 @tab @code{al} | |
9392 @item @code{c} | |
9393 @tab Require a constant operand and print the constant expression with no punctuation. | |
9394 @tab @code{%c1} | |
9395 @tab @code{2} | |
9396 @tab @code{2} | |
9397 @item @code{E} | |
9398 @tab Print the address in Double Integer (DImode) mode (8 bytes) when the target is 64-bit. | |
9399 Otherwise mode is unspecified (VOIDmode). | |
9400 @tab @code{%E1} | |
9401 @tab @code{%(rax)} | |
9402 @tab @code{[rax]} | |
9403 @item @code{h} | |
9404 @tab Print the QImode name for a ``high'' register. | |
9405 @tab @code{%h0} | |
9406 @tab @code{%ah} | |
9407 @tab @code{ah} | |
9408 @item @code{H} | |
9409 @tab Add 8 bytes to an offsettable memory reference. Useful when accessing the | |
9410 high 8 bytes of SSE values. For a memref in (%rax), it generates | |
9411 @tab @code{%H0} | |
9412 @tab @code{8(%rax)} | |
9413 @tab @code{8[rax]} | |
9414 @item @code{k} | |
9415 @tab Print the SImode name of the register. | |
9416 @tab @code{%k0} | |
9417 @tab @code{%eax} | |
9418 @tab @code{eax} | |
9419 @item @code{l} | |
9420 @tab Print the label name with no punctuation. | |
9421 @tab @code{%l3} | |
9422 @tab @code{.L3} | |
9423 @tab @code{.L3} | |
9424 @item @code{p} | |
9425 @tab Print raw symbol name (without syntax-specific prefixes). | |
9426 @tab @code{%p2} | |
9427 @tab @code{42} | |
9428 @tab @code{42} | |
9429 @item @code{P} | |
9430 @tab If used for a function, print the PLT suffix and generate PIC code. | |
9431 For example, emit @code{foo@@PLT} instead of 'foo' for the function | |
9432 foo(). If used for a constant, drop all syntax-specific prefixes and | |
9433 issue the bare constant. See @code{p} above. | |
9434 @item @code{q} | |
9435 @tab Print the DImode name of the register. | |
9436 @tab @code{%q0} | |
9437 @tab @code{%rax} | |
9438 @tab @code{rax} | |
9439 @item @code{w} | |
9440 @tab Print the HImode name of the register. | |
9441 @tab @code{%w0} | |
9442 @tab @code{%ax} | |
9443 @tab @code{ax} | |
9154 @item @code{z} | 9444 @item @code{z} |
9155 @tab Print the opcode suffix for the size of the current integer operand (one of @code{b}/@code{w}/@code{l}/@code{q}). | 9445 @tab Print the opcode suffix for the size of the current integer operand (one of @code{b}/@code{w}/@code{l}/@code{q}). |
9156 @tab @code{%z0} | 9446 @tab @code{%z0} |
9157 @tab @code{l} | 9447 @tab @code{l} |
9158 @tab | 9448 @tab |
9159 @item @code{b} | |
9160 @tab Print the QImode name of the register. | |
9161 @tab @code{%b0} | |
9162 @tab @code{%al} | |
9163 @tab @code{al} | |
9164 @item @code{h} | |
9165 @tab Print the QImode name for a ``high'' register. | |
9166 @tab @code{%h0} | |
9167 @tab @code{%ah} | |
9168 @tab @code{ah} | |
9169 @item @code{w} | |
9170 @tab Print the HImode name of the register. | |
9171 @tab @code{%w0} | |
9172 @tab @code{%ax} | |
9173 @tab @code{ax} | |
9174 @item @code{k} | |
9175 @tab Print the SImode name of the register. | |
9176 @tab @code{%k0} | |
9177 @tab @code{%eax} | |
9178 @tab @code{eax} | |
9179 @item @code{q} | |
9180 @tab Print the DImode name of the register. | |
9181 @tab @code{%q0} | |
9182 @tab @code{%rax} | |
9183 @tab @code{rax} | |
9184 @item @code{l} | |
9185 @tab Print the label name with no punctuation. | |
9186 @tab @code{%l2} | |
9187 @tab @code{.L2} | |
9188 @tab @code{.L2} | |
9189 @item @code{c} | |
9190 @tab Require a constant operand and print the constant expression with no punctuation. | |
9191 @tab @code{%c1} | |
9192 @tab @code{2} | |
9193 @tab @code{2} | |
9194 @end multitable | 9449 @end multitable |
9450 | |
9451 @code{V} is a special modifier which prints the name of the full integer | |
9452 register without @code{%}. | |
9195 | 9453 |
9196 @anchor{x86floatingpointasmoperands} | 9454 @anchor{x86floatingpointasmoperands} |
9197 @subsubsection x86 Floating-Point @code{asm} Operands | 9455 @subsubsection x86 Floating-Point @code{asm} Operands |
9198 | 9456 |
9199 On x86 targets, there are several rules on the usage of stack-like registers | 9457 On x86 targets, there are several rules on the usage of stack-like registers |
9384 a global variable the declaration appears outside a function. The | 9642 a global variable the declaration appears outside a function. The |
9385 @code{register} keyword is required, and cannot be combined with | 9643 @code{register} keyword is required, and cannot be combined with |
9386 @code{static}. The register name must be a valid register name for the | 9644 @code{static}. The register name must be a valid register name for the |
9387 target platform. | 9645 target platform. |
9388 | 9646 |
9647 Do not use type qualifiers such as @code{const} and @code{volatile}, as | |
9648 the outcome may be contrary to expectations. In particular, using the | |
9649 @code{volatile} qualifier does not fully prevent the compiler from | |
9650 optimizing accesses to the register. | |
9651 | |
9389 Registers are a scarce resource on most systems and allowing the | 9652 Registers are a scarce resource on most systems and allowing the |
9390 compiler to manage their usage usually results in the best code. However, | 9653 compiler to manage their usage usually results in the best code. However, |
9391 under special circumstances it can make sense to reserve some globally. | 9654 under special circumstances it can make sense to reserve some globally. |
9392 For example this may be useful in programs such as programming language | 9655 For example this may be useful in programs such as programming language |
9393 interpreters that have a couple of global variables that are accessed | 9656 interpreters that have a couple of global variables that are accessed |
9395 | 9658 |
9396 After defining a global register variable, for the current compilation | 9659 After defining a global register variable, for the current compilation |
9397 unit: | 9660 unit: |
9398 | 9661 |
9399 @itemize @bullet | 9662 @itemize @bullet |
9400 @item The register is reserved entirely for this use, and will not be | 9663 @item If the register is a call-saved register, call ABI is affected: |
9401 allocated for any other purpose. | 9664 the register will not be restored in function epilogue sequences after |
9402 @item The register is not saved and restored by any functions. | 9665 the variable has been assigned. Therefore, functions cannot safely |
9403 @item Stores into this register are never deleted even if they appear to be | 9666 return to callers that assume standard ABI. |
9404 dead, but references may be deleted, moved or simplified. | 9667 @item Conversely, if the register is a call-clobbered register, making |
9668 calls to functions that use standard ABI may lose contents of the variable. | |
9669 Such calls may be created by the compiler even if none are evident in | |
9670 the original program, for example when libgcc functions are used to | |
9671 make up for unavailable instructions. | |
9672 @item Accesses to the variable may be optimized as usual and the register | |
9673 remains available for allocation and use in any computations, provided that | |
9674 observable values of the variable are not affected. | |
9675 @item If the variable is referenced in inline assembly, the type of access | |
9676 must be provided to the compiler via constraints (@pxref{Constraints}). | |
9677 Accesses from basic asms are not supported. | |
9405 @end itemize | 9678 @end itemize |
9406 | 9679 |
9407 Note that these points @emph{only} apply to code that is compiled with the | 9680 Note that these points @emph{only} apply to code that is compiled with the |
9408 definition. The behavior of code that is merely linked in (for example | 9681 definition. The behavior of code that is merely linked in (for example |
9409 code from libraries) is not affected. | 9682 code from libraries) is not affected. |
9441 the comparison function unless the @code{qsort} function itself is rebuilt. | 9714 the comparison function unless the @code{qsort} function itself is rebuilt. |
9442 | 9715 |
9443 Similarly, it is not safe to access the global register variables from signal | 9716 Similarly, it is not safe to access the global register variables from signal |
9444 handlers or from more than one thread of control. Unless you recompile | 9717 handlers or from more than one thread of control. Unless you recompile |
9445 them specially for the task at hand, the system library routines may | 9718 them specially for the task at hand, the system library routines may |
9446 temporarily use the register for other things. | 9719 temporarily use the register for other things. Furthermore, since the register |
9720 is not reserved exclusively for the variable, accessing it from handlers of | |
9721 asynchronous signals may observe unrelated temporary values residing in the | |
9722 register. | |
9447 | 9723 |
9448 @cindex register variable after @code{longjmp} | 9724 @cindex register variable after @code{longjmp} |
9449 @cindex global register after @code{longjmp} | 9725 @cindex global register after @code{longjmp} |
9450 @cindex value after @code{longjmp} | 9726 @cindex value after @code{longjmp} |
9451 @findex longjmp | 9727 @findex longjmp |
9456 register variables. To be portable, the function that called @code{setjmp} | 9732 register variables. To be portable, the function that called @code{setjmp} |
9457 should make other arrangements to save the values of the global register | 9733 should make other arrangements to save the values of the global register |
9458 variables, and to restore them in a @code{longjmp}. This way, the same | 9734 variables, and to restore them in a @code{longjmp}. This way, the same |
9459 thing happens regardless of what @code{longjmp} does. | 9735 thing happens regardless of what @code{longjmp} does. |
9460 | 9736 |
9461 Eventually there may be a way of asking the compiler to choose a register | |
9462 automatically, but first we need to figure out how it should choose and | |
9463 how to enable you to guide the choice. No solution is evident. | |
9464 | |
9465 @node Local Register Variables | 9737 @node Local Register Variables |
9466 @subsubsection Specifying Registers for Local Variables | 9738 @subsubsection Specifying Registers for Local Variables |
9467 @anchor{Local Reg Vars} | 9739 @anchor{Local Reg Vars} |
9468 @cindex local variables, specifying registers | 9740 @cindex local variables, specifying registers |
9469 @cindex specifying registers for local variables | 9741 @cindex specifying registers for local variables |
9481 that this is the same syntax used for defining global register variables, | 9753 that this is the same syntax used for defining global register variables, |
9482 but for a local variable the declaration appears within a function. The | 9754 but for a local variable the declaration appears within a function. The |
9483 @code{register} keyword is required, and cannot be combined with | 9755 @code{register} keyword is required, and cannot be combined with |
9484 @code{static}. The register name must be a valid register name for the | 9756 @code{static}. The register name must be a valid register name for the |
9485 target platform. | 9757 target platform. |
9758 | |
9759 Do not use type qualifiers such as @code{const} and @code{volatile}, as | |
9760 the outcome may be contrary to expectations. In particular, when the | |
9761 @code{const} qualifier is used, the compiler may substitute the | |
9762 variable with its initializer in @code{asm} statements, which may cause | |
9763 the corresponding operand to appear in a different register. | |
9486 | 9764 |
9487 As with global register variables, it is recommended that you choose | 9765 As with global register variables, it is recommended that you choose |
9488 a register that is normally saved and restored by function calls on your | 9766 a register that is normally saved and restored by function calls on your |
9489 machine, so that calls to library routines will not clobber it. | 9767 machine, so that calls to library routines will not clobber it. |
9490 | 9768 |
10511 | 10789 |
10512 The built-in functions promote the first two operands into infinite precision signed type | 10790 The built-in functions promote the first two operands into infinite precision signed type |
10513 and perform addition on those promoted operands. The result is then | 10791 and perform addition on those promoted operands. The result is then |
10514 cast to the type of the third argument. If the cast result is equal to the infinite | 10792 cast to the type of the third argument. If the cast result is equal to the infinite |
10515 precision result, the built-in functions return false, otherwise they return true. | 10793 precision result, the built-in functions return false, otherwise they return true. |
10516 The value of the third argument is ignored, just the side-effects in the third argument | 10794 The value of the third argument is ignored, just the side effects in the third argument |
10517 are evaluated, and no integral argument promotions are performed on the last argument. | 10795 are evaluated, and no integral argument promotions are performed on the last argument. |
10518 If the third argument is a bit-field, the type used for the result cast has the | 10796 If the third argument is a bit-field, the type used for the result cast has the |
10519 precision and signedness of the given bit-field, rather than precision and signedness | 10797 precision and signedness of the given bit-field, rather than precision and signedness |
10520 of the underlying type. | 10798 of the underlying type. |
10521 | 10799 |
10607 | 10885 |
10608 @deftypefn {Built-in Function} {size_t} __builtin_object_size (const void * @var{ptr}, int @var{type}) | 10886 @deftypefn {Built-in Function} {size_t} __builtin_object_size (const void * @var{ptr}, int @var{type}) |
10609 is a built-in construct that returns a constant number of bytes from | 10887 is a built-in construct that returns a constant number of bytes from |
10610 @var{ptr} to the end of the object @var{ptr} pointer points to | 10888 @var{ptr} to the end of the object @var{ptr} pointer points to |
10611 (if known at compile time). @code{__builtin_object_size} never evaluates | 10889 (if known at compile time). @code{__builtin_object_size} never evaluates |
10612 its arguments for side-effects. If there are any side-effects in them, it | 10890 its arguments for side effects. If there are any side effects in them, it |
10613 returns @code{(size_t) -1} for @var{type} 0 or 1 and @code{(size_t) 0} | 10891 returns @code{(size_t) -1} for @var{type} 0 or 1 and @code{(size_t) 0} |
10614 for @var{type} 2 or 3. If there are multiple objects @var{ptr} can | 10892 for @var{type} 2 or 3. If there are multiple objects @var{ptr} can |
10615 point to and all of them are known at compile time, the returned number | 10893 point to and all of them are known at compile time, the returned number |
10616 is the maximum of remaining byte counts in those objects if @var{type} & 2 is | 10894 is the maximum of remaining byte counts in those objects if @var{type} & 2 is |
10617 0 and minimum if nonzero. If it is not possible to determine which objects | 10895 0 and minimum if nonzero. If it is not possible to determine which objects |
10712 These have just one additional argument, @var{flag}, right before | 10990 These have just one additional argument, @var{flag}, right before |
10713 format string @var{fmt}. If the compiler is able to optimize them to | 10991 format string @var{fmt}. If the compiler is able to optimize them to |
10714 @code{fputc} etc.@: functions, it does, otherwise the checking function | 10992 @code{fputc} etc.@: functions, it does, otherwise the checking function |
10715 is called and the @var{flag} argument passed to it. | 10993 is called and the @var{flag} argument passed to it. |
10716 | 10994 |
10717 @node Pointer Bounds Checker builtins | |
10718 @section Pointer Bounds Checker Built-in Functions | |
10719 @cindex Pointer Bounds Checker builtins | |
10720 @findex __builtin___bnd_set_ptr_bounds | |
10721 @findex __builtin___bnd_narrow_ptr_bounds | |
10722 @findex __builtin___bnd_copy_ptr_bounds | |
10723 @findex __builtin___bnd_init_ptr_bounds | |
10724 @findex __builtin___bnd_null_ptr_bounds | |
10725 @findex __builtin___bnd_store_ptr_bounds | |
10726 @findex __builtin___bnd_chk_ptr_lbounds | |
10727 @findex __builtin___bnd_chk_ptr_ubounds | |
10728 @findex __builtin___bnd_chk_ptr_bounds | |
10729 @findex __builtin___bnd_get_ptr_lbound | |
10730 @findex __builtin___bnd_get_ptr_ubound | |
10731 | |
10732 GCC provides a set of built-in functions to control Pointer Bounds Checker | |
10733 instrumentation. Note that all Pointer Bounds Checker builtins can be used | |
10734 even if you compile with Pointer Bounds Checker off | |
10735 (@option{-fno-check-pointer-bounds}). | |
10736 The behavior may differ in such case as documented below. | |
10737 | |
10738 @deftypefn {Built-in Function} {void *} __builtin___bnd_set_ptr_bounds (const void *@var{q}, size_t @var{size}) | |
10739 | |
10740 This built-in function returns a new pointer with the value of @var{q}, and | |
10741 associate it with the bounds [@var{q}, @var{q}+@var{size}-1]. With Pointer | |
10742 Bounds Checker off, the built-in function just returns the first argument. | |
10743 | |
10744 @smallexample | |
10745 extern void *__wrap_malloc (size_t n) | |
10746 @{ | |
10747 void *p = (void *)__real_malloc (n); | |
10748 if (!p) return __builtin___bnd_null_ptr_bounds (p); | |
10749 return __builtin___bnd_set_ptr_bounds (p, n); | |
10750 @} | |
10751 @end smallexample | |
10752 | |
10753 @end deftypefn | |
10754 | |
10755 @deftypefn {Built-in Function} {void *} __builtin___bnd_narrow_ptr_bounds (const void *@var{p}, const void *@var{q}, size_t @var{size}) | |
10756 | |
10757 This built-in function returns a new pointer with the value of @var{p} | |
10758 and associates it with the narrowed bounds formed by the intersection | |
10759 of bounds associated with @var{q} and the bounds | |
10760 [@var{p}, @var{p} + @var{size} - 1]. | |
10761 With Pointer Bounds Checker off, the built-in function just returns the first | |
10762 argument. | |
10763 | |
10764 @smallexample | |
10765 void init_objects (object *objs, size_t size) | |
10766 @{ | |
10767 size_t i; | |
10768 /* Initialize objects one-by-one passing pointers with bounds of | |
10769 an object, not the full array of objects. */ | |
10770 for (i = 0; i < size; i++) | |
10771 init_object (__builtin___bnd_narrow_ptr_bounds (objs + i, objs, | |
10772 sizeof(object))); | |
10773 @} | |
10774 @end smallexample | |
10775 | |
10776 @end deftypefn | |
10777 | |
10778 @deftypefn {Built-in Function} {void *} __builtin___bnd_copy_ptr_bounds (const void *@var{q}, const void *@var{r}) | |
10779 | |
10780 This built-in function returns a new pointer with the value of @var{q}, | |
10781 and associates it with the bounds already associated with pointer @var{r}. | |
10782 With Pointer Bounds Checker off, the built-in function just returns the first | |
10783 argument. | |
10784 | |
10785 @smallexample | |
10786 /* Here is a way to get pointer to object's field but | |
10787 still with the full object's bounds. */ | |
10788 int *field_ptr = __builtin___bnd_copy_ptr_bounds (&objptr->int_field, | |
10789 objptr); | |
10790 @end smallexample | |
10791 | |
10792 @end deftypefn | |
10793 | |
10794 @deftypefn {Built-in Function} {void *} __builtin___bnd_init_ptr_bounds (const void *@var{q}) | |
10795 | |
10796 This built-in function returns a new pointer with the value of @var{q}, and | |
10797 associates it with INIT (allowing full memory access) bounds. With Pointer | |
10798 Bounds Checker off, the built-in function just returns the first argument. | |
10799 | |
10800 @end deftypefn | |
10801 | |
10802 @deftypefn {Built-in Function} {void *} __builtin___bnd_null_ptr_bounds (const void *@var{q}) | |
10803 | |
10804 This built-in function returns a new pointer with the value of @var{q}, and | |
10805 associates it with NULL (allowing no memory access) bounds. With Pointer | |
10806 Bounds Checker off, the built-in function just returns the first argument. | |
10807 | |
10808 @end deftypefn | |
10809 | |
10810 @deftypefn {Built-in Function} void __builtin___bnd_store_ptr_bounds (const void **@var{ptr_addr}, const void *@var{ptr_val}) | |
10811 | |
10812 This built-in function stores the bounds associated with pointer @var{ptr_val} | |
10813 and location @var{ptr_addr} into Bounds Table. This can be useful to propagate | |
10814 bounds from legacy code without touching the associated pointer's memory when | |
10815 pointers are copied as integers. With Pointer Bounds Checker off, the built-in | |
10816 function call is ignored. | |
10817 | |
10818 @end deftypefn | |
10819 | |
10820 @deftypefn {Built-in Function} void __builtin___bnd_chk_ptr_lbounds (const void *@var{q}) | |
10821 | |
10822 This built-in function checks if the pointer @var{q} is within the lower | |
10823 bound of its associated bounds. With Pointer Bounds Checker off, the built-in | |
10824 function call is ignored. | |
10825 | |
10826 @smallexample | |
10827 extern void *__wrap_memset (void *dst, int c, size_t len) | |
10828 @{ | |
10829 if (len > 0) | |
10830 @{ | |
10831 __builtin___bnd_chk_ptr_lbounds (dst); | |
10832 __builtin___bnd_chk_ptr_ubounds ((char *)dst + len - 1); | |
10833 __real_memset (dst, c, len); | |
10834 @} | |
10835 return dst; | |
10836 @} | |
10837 @end smallexample | |
10838 | |
10839 @end deftypefn | |
10840 | |
10841 @deftypefn {Built-in Function} void __builtin___bnd_chk_ptr_ubounds (const void *@var{q}) | |
10842 | |
10843 This built-in function checks if the pointer @var{q} is within the upper | |
10844 bound of its associated bounds. With Pointer Bounds Checker off, the built-in | |
10845 function call is ignored. | |
10846 | |
10847 @end deftypefn | |
10848 | |
10849 @deftypefn {Built-in Function} void __builtin___bnd_chk_ptr_bounds (const void *@var{q}, size_t @var{size}) | |
10850 | |
10851 This built-in function checks if [@var{q}, @var{q} + @var{size} - 1] is within | |
10852 the lower and upper bounds associated with @var{q}. With Pointer Bounds Checker | |
10853 off, the built-in function call is ignored. | |
10854 | |
10855 @smallexample | |
10856 extern void *__wrap_memcpy (void *dst, const void *src, size_t n) | |
10857 @{ | |
10858 if (n > 0) | |
10859 @{ | |
10860 __bnd_chk_ptr_bounds (dst, n); | |
10861 __bnd_chk_ptr_bounds (src, n); | |
10862 __real_memcpy (dst, src, n); | |
10863 @} | |
10864 return dst; | |
10865 @} | |
10866 @end smallexample | |
10867 | |
10868 @end deftypefn | |
10869 | |
10870 @deftypefn {Built-in Function} {const void *} __builtin___bnd_get_ptr_lbound (const void *@var{q}) | |
10871 | |
10872 This built-in function returns the lower bound associated | |
10873 with the pointer @var{q}, as a pointer value. | |
10874 This is useful for debugging using @code{printf}. | |
10875 With Pointer Bounds Checker off, the built-in function returns 0. | |
10876 | |
10877 @smallexample | |
10878 void *lb = __builtin___bnd_get_ptr_lbound (q); | |
10879 void *ub = __builtin___bnd_get_ptr_ubound (q); | |
10880 printf ("q = %p lb(q) = %p ub(q) = %p", q, lb, ub); | |
10881 @end smallexample | |
10882 | |
10883 @end deftypefn | |
10884 | |
10885 @deftypefn {Built-in Function} {const void *} __builtin___bnd_get_ptr_ubound (const void *@var{q}) | |
10886 | |
10887 This built-in function returns the upper bound (which is a pointer) associated | |
10888 with the pointer @var{q}. With Pointer Bounds Checker off, | |
10889 the built-in function returns -1. | |
10890 | |
10891 @end deftypefn | |
10892 | |
10893 @node Cilk Plus Builtins | |
10894 @section Cilk Plus C/C++ Language Extension Built-in Functions | |
10895 | |
10896 GCC provides support for the following built-in reduction functions if Cilk Plus | |
10897 is enabled. Cilk Plus can be enabled using the @option{-fcilkplus} flag. | |
10898 | |
10899 @itemize @bullet | |
10900 @item @code{__sec_implicit_index} | |
10901 @item @code{__sec_reduce} | |
10902 @item @code{__sec_reduce_add} | |
10903 @item @code{__sec_reduce_all_nonzero} | |
10904 @item @code{__sec_reduce_all_zero} | |
10905 @item @code{__sec_reduce_any_nonzero} | |
10906 @item @code{__sec_reduce_any_zero} | |
10907 @item @code{__sec_reduce_max} | |
10908 @item @code{__sec_reduce_min} | |
10909 @item @code{__sec_reduce_max_ind} | |
10910 @item @code{__sec_reduce_min_ind} | |
10911 @item @code{__sec_reduce_mul} | |
10912 @item @code{__sec_reduce_mutating} | |
10913 @end itemize | |
10914 | |
10915 Further details and examples about these built-in functions are described | |
10916 in the Cilk Plus language manual which can be found at | |
10917 @uref{https://www.cilkplus.org}. | |
10918 | |
10919 @node Other Builtins | 10995 @node Other Builtins |
10920 @section Other Built-in Functions Provided by GCC | 10996 @section Other Built-in Functions Provided by GCC |
10921 @cindex built-in functions | 10997 @cindex built-in functions |
10922 @findex __builtin_alloca | 10998 @findex __builtin_alloca |
10923 @findex __builtin_alloca_with_align | 10999 @findex __builtin_alloca_with_align |
10924 @findex __builtin_alloca_with_align_and_max | 11000 @findex __builtin_alloca_with_align_and_max |
10925 @findex __builtin_call_with_static_chain | 11001 @findex __builtin_call_with_static_chain |
11002 @findex __builtin_extend_pointer | |
10926 @findex __builtin_fpclassify | 11003 @findex __builtin_fpclassify |
10927 @findex __builtin_isfinite | 11004 @findex __builtin_isfinite |
10928 @findex __builtin_isnormal | 11005 @findex __builtin_isnormal |
10929 @findex __builtin_isgreater | 11006 @findex __builtin_isgreater |
10930 @findex __builtin_isgreaterequal | 11007 @findex __builtin_isgreaterequal |
10934 @findex __builtin_islessgreater | 11011 @findex __builtin_islessgreater |
10935 @findex __builtin_isunordered | 11012 @findex __builtin_isunordered |
10936 @findex __builtin_powi | 11013 @findex __builtin_powi |
10937 @findex __builtin_powif | 11014 @findex __builtin_powif |
10938 @findex __builtin_powil | 11015 @findex __builtin_powil |
11016 @findex __builtin_speculation_safe_value | |
10939 @findex _Exit | 11017 @findex _Exit |
10940 @findex _exit | 11018 @findex _exit |
10941 @findex abort | 11019 @findex abort |
10942 @findex abs | 11020 @findex abs |
10943 @findex acos | 11021 @findex acos |
11279 @findex strncasecmp | 11357 @findex strncasecmp |
11280 @findex strncat | 11358 @findex strncat |
11281 @findex strncmp | 11359 @findex strncmp |
11282 @findex strncpy | 11360 @findex strncpy |
11283 @findex strndup | 11361 @findex strndup |
11362 @findex strnlen | |
11284 @findex strpbrk | 11363 @findex strpbrk |
11285 @findex strrchr | 11364 @findex strrchr |
11286 @findex strspn | 11365 @findex strspn |
11287 @findex strstr | 11366 @findex strstr |
11288 @findex tan | 11367 @findex tan |
11362 @code{signbit}, @code{signbitf}, @code{signbitl}, @code{signbitd32}, | 11441 @code{signbit}, @code{signbitf}, @code{signbitl}, @code{signbitd32}, |
11363 @code{signbitd64}, @code{signbitd128}, @code{significandf}, | 11442 @code{signbitd64}, @code{signbitd128}, @code{significandf}, |
11364 @code{significandl}, @code{significand}, @code{sincosf}, | 11443 @code{significandl}, @code{significand}, @code{sincosf}, |
11365 @code{sincosl}, @code{sincos}, @code{stpcpy}, @code{stpncpy}, | 11444 @code{sincosl}, @code{sincos}, @code{stpcpy}, @code{stpncpy}, |
11366 @code{strcasecmp}, @code{strdup}, @code{strfmon}, @code{strncasecmp}, | 11445 @code{strcasecmp}, @code{strdup}, @code{strfmon}, @code{strncasecmp}, |
11367 @code{strndup}, @code{toascii}, @code{y0f}, @code{y0l}, @code{y0}, | 11446 @code{strndup}, @code{strnlen}, @code{toascii}, @code{y0f}, @code{y0l}, |
11368 @code{y1f}, @code{y1l}, @code{y1}, @code{ynf}, @code{ynl} and | 11447 @code{y0}, @code{y1f}, @code{y1l}, @code{y1}, @code{ynf}, @code{ynl} and |
11369 @code{yn} | 11448 @code{yn} |
11370 may be handled as built-in functions. | 11449 may be handled as built-in functions. |
11371 All these functions have corresponding versions | 11450 All these functions have corresponding versions |
11372 prefixed with @code{__builtin_}, which may be used even in strict C90 | 11451 prefixed with @code{__builtin_}, which may be used even in strict C90 |
11373 mode. | 11452 mode. |
11577 expression, it has no effect on code generation and no attempt is made to | 11656 expression, it has no effect on code generation and no attempt is made to |
11578 check its compatibility with @var{size}. | 11657 check its compatibility with @var{size}. |
11579 | 11658 |
11580 @end deftypefn | 11659 @end deftypefn |
11581 | 11660 |
11661 @deftypefn {Built-in Function} @var{type} __builtin_speculation_safe_value (@var{type} val, @var{type} failval) | |
11662 | |
11663 This built-in function can be used to help mitigate against unsafe | |
11664 speculative execution. @var{type} may be any integral type or any | |
11665 pointer type. | |
11666 | |
11667 @enumerate | |
11668 @item | |
11669 If the CPU is not speculatively executing the code, then @var{val} | |
11670 is returned. | |
11671 @item | |
11672 If the CPU is executing speculatively then either: | |
11673 @itemize | |
11674 @item | |
11675 The function may cause execution to pause until it is known that the | |
11676 code is no-longer being executed speculatively (in which case | |
11677 @var{val} can be returned, as above); or | |
11678 @item | |
11679 The function may use target-dependent speculation tracking state to cause | |
11680 @var{failval} to be returned when it is known that speculative | |
11681 execution has incorrectly predicted a conditional branch operation. | |
11682 @end itemize | |
11683 @end enumerate | |
11684 | |
11685 The second argument, @var{failval}, is optional and defaults to zero | |
11686 if omitted. | |
11687 | |
11688 GCC defines the preprocessor macro | |
11689 @code{__HAVE_BUILTIN_SPECULATION_SAFE_VALUE} for targets that have been | |
11690 updated to support this builtin. | |
11691 | |
11692 The built-in function can be used where a variable appears to be used in a | |
11693 safe way, but the CPU, due to speculative execution may temporarily ignore | |
11694 the bounds checks. Consider, for example, the following function: | |
11695 | |
11696 @smallexample | |
11697 int array[500]; | |
11698 int f (unsigned untrusted_index) | |
11699 @{ | |
11700 if (untrusted_index < 500) | |
11701 return array[untrusted_index]; | |
11702 return 0; | |
11703 @} | |
11704 @end smallexample | |
11705 | |
11706 If the function is called repeatedly with @code{untrusted_index} less | |
11707 than the limit of 500, then a branch predictor will learn that the | |
11708 block of code that returns a value stored in @code{array} will be | |
11709 executed. If the function is subsequently called with an | |
11710 out-of-range value it will still try to execute that block of code | |
11711 first until the CPU determines that the prediction was incorrect | |
11712 (the CPU will unwind any incorrect operations at that point). | |
11713 However, depending on how the result of the function is used, it might be | |
11714 possible to leave traces in the cache that can reveal what was stored | |
11715 at the out-of-bounds location. The built-in function can be used to | |
11716 provide some protection against leaking data in this way by changing | |
11717 the code to: | |
11718 | |
11719 @smallexample | |
11720 int array[500]; | |
11721 int f (unsigned untrusted_index) | |
11722 @{ | |
11723 if (untrusted_index < 500) | |
11724 return array[__builtin_speculation_safe_value (untrusted_index)]; | |
11725 return 0; | |
11726 @} | |
11727 @end smallexample | |
11728 | |
11729 The built-in function will either cause execution to stall until the | |
11730 conditional branch has been fully resolved, or it may permit | |
11731 speculative execution to continue, but using 0 instead of | |
11732 @code{untrusted_value} if that exceeds the limit. | |
11733 | |
11734 If accessing any memory location is potentially unsafe when speculative | |
11735 execution is incorrect, then the code can be rewritten as | |
11736 | |
11737 @smallexample | |
11738 int array[500]; | |
11739 int f (unsigned untrusted_index) | |
11740 @{ | |
11741 if (untrusted_index < 500) | |
11742 return *__builtin_speculation_safe_value (&array[untrusted_index], NULL); | |
11743 return 0; | |
11744 @} | |
11745 @end smallexample | |
11746 | |
11747 which will cause a @code{NULL} pointer to be used for the unsafe case. | |
11748 | |
11749 @end deftypefn | |
11750 | |
11582 @deftypefn {Built-in Function} int __builtin_types_compatible_p (@var{type1}, @var{type2}) | 11751 @deftypefn {Built-in Function} int __builtin_types_compatible_p (@var{type1}, @var{type2}) |
11583 | 11752 |
11584 You can use the built-in function @code{__builtin_types_compatible_p} to | 11753 You can use the built-in function @code{__builtin_types_compatible_p} to |
11585 determine whether two types are the same. | 11754 determine whether two types are the same. |
11586 | 11755 |
11651 | 11820 |
11652 This built-in function is analogous to the @samp{? :} operator in C, | 11821 This built-in function is analogous to the @samp{? :} operator in C, |
11653 except that the expression returned has its type unaltered by promotion | 11822 except that the expression returned has its type unaltered by promotion |
11654 rules. Also, the built-in function does not evaluate the expression | 11823 rules. Also, the built-in function does not evaluate the expression |
11655 that is not chosen. For example, if @var{const_exp} evaluates to true, | 11824 that is not chosen. For example, if @var{const_exp} evaluates to true, |
11656 @var{exp2} is not evaluated even if it has side-effects. | 11825 @var{exp2} is not evaluated even if it has side effects. |
11657 | 11826 |
11658 This built-in function can return an lvalue if the chosen argument is an | 11827 This built-in function can return an lvalue if the chosen argument is an |
11659 lvalue. | 11828 lvalue. |
11660 | 11829 |
11661 If @var{exp1} is returned, the return type is the same as @var{exp1}'s | 11830 If @var{exp1} is returned, the return type is the same as @var{exp1}'s |
11682 @var{const_exp}) may still generate syntax errors. This may change in | 11851 @var{const_exp}) may still generate syntax errors. This may change in |
11683 future revisions. | 11852 future revisions. |
11684 | 11853 |
11685 @end deftypefn | 11854 @end deftypefn |
11686 | 11855 |
11856 @deftypefn {Built-in Function} @var{type} __builtin_tgmath (@var{functions}, @var{arguments}) | |
11857 | |
11858 The built-in function @code{__builtin_tgmath}, available only for C | |
11859 and Objective-C, calls a function determined according to the rules of | |
11860 @code{<tgmath.h>} macros. It is intended to be used in | |
11861 implementations of that header, so that expansions of macros from that | |
11862 header only expand each of their arguments once, to avoid problems | |
11863 when calls to such macros are nested inside the arguments of other | |
11864 calls to such macros; in addition, it results in better diagnostics | |
11865 for invalid calls to @code{<tgmath.h>} macros than implementations | |
11866 using other GNU C language features. For example, the @code{pow} | |
11867 type-generic macro might be defined as: | |
11868 | |
11869 @smallexample | |
11870 #define pow(a, b) __builtin_tgmath (powf, pow, powl, \ | |
11871 cpowf, cpow, cpowl, a, b) | |
11872 @end smallexample | |
11873 | |
11874 The arguments to @code{__builtin_tgmath} are at least two pointers to | |
11875 functions, followed by the arguments to the type-generic macro (which | |
11876 will be passed as arguments to the selected function). All the | |
11877 pointers to functions must be pointers to prototyped functions, none | |
11878 of which may have variable arguments, and all of which must have the | |
11879 same number of parameters; the number of parameters of the first | |
11880 function determines how many arguments to @code{__builtin_tgmath} are | |
11881 interpreted as function pointers, and how many as the arguments to the | |
11882 called function. | |
11883 | |
11884 The types of the specified functions must all be different, but | |
11885 related to each other in the same way as a set of functions that may | |
11886 be selected between by a macro in @code{<tgmath.h>}. This means that | |
11887 the functions are parameterized by a floating-point type @var{t}, | |
11888 different for each such function. The function return types may all | |
11889 be the same type, or they may be @var{t} for each function, or they | |
11890 may be the real type corresponding to @var{t} for each function (if | |
11891 some of the types @var{t} are complex). Likewise, for each parameter | |
11892 position, the type of the parameter in that position may always be the | |
11893 same type, or may be @var{t} for each function (this case must apply | |
11894 for at least one parameter position), or may be the real type | |
11895 corresponding to @var{t} for each function. | |
11896 | |
11897 The standard rules for @code{<tgmath.h>} macros are used to find a | |
11898 common type @var{u} from the types of the arguments for parameters | |
11899 whose types vary between the functions; complex integer types (a GNU | |
11900 extension) are treated like @code{_Complex double} for this purpose | |
11901 (or @code{_Complex _Float64} if all the function return types are the | |
11902 same @code{_Float@var{n}} or @code{_Float@var{n}x} type). | |
11903 If the function return types vary, or are all the same integer type, | |
11904 the function called is the one for which @var{t} is @var{u}, and it is | |
11905 an error if there is no such function. If the function return types | |
11906 are all the same floating-point type, the type-generic macro is taken | |
11907 to be one of those from TS 18661 that rounds the result to a narrower | |
11908 type; if there is a function for which @var{t} is @var{u}, it is | |
11909 called, and otherwise the first function, if any, for which @var{t} | |
11910 has at least the range and precision of @var{u} is called, and it is | |
11911 an error if there is no such function. | |
11912 | |
11913 @end deftypefn | |
11914 | |
11687 @deftypefn {Built-in Function} @var{type} __builtin_complex (@var{real}, @var{imag}) | 11915 @deftypefn {Built-in Function} @var{type} __builtin_complex (@var{real}, @var{imag}) |
11688 | 11916 |
11689 The built-in function @code{__builtin_complex} is provided for use in | 11917 The built-in function @code{__builtin_complex} is provided for use in |
11690 implementing the ISO C11 macros @code{CMPLXF}, @code{CMPLX} and | 11918 implementing the ISO C11 macros @code{CMPLXF}, @code{CMPLX} and |
11691 @code{CMPLXL}. @var{real} and @var{imag} must have the same type, a | 11919 @code{CMPLXL}. @var{real} and @var{imag} must have the same type, a |
11775 foo (*ptr); | 12003 foo (*ptr); |
11776 @end smallexample | 12004 @end smallexample |
11777 | 12005 |
11778 @noindent | 12006 @noindent |
11779 when testing pointer or floating-point values. | 12007 when testing pointer or floating-point values. |
12008 @end deftypefn | |
12009 | |
12010 @deftypefn {Built-in Function} long __builtin_expect_with_probability | |
12011 (long @var{exp}, long @var{c}, long @var{probability}) | |
12012 | |
12013 The built-in has same semantics as @code{__builtin_expect_with_probability}, | |
12014 but user can provide expected probability (in percent) for value of @var{exp}. | |
12015 Last argument @var{probability} is of float type and valid values | |
12016 are in inclusive range 0.0f and 1.0f. | |
11780 @end deftypefn | 12017 @end deftypefn |
11781 | 12018 |
11782 @deftypefn {Built-in Function} void __builtin_trap (void) | 12019 @deftypefn {Built-in Function} void __builtin_trap (void) |
11783 This function causes the program to exit abnormally. GCC implements | 12020 This function causes the program to exit abnormally. GCC implements |
11784 this function by using a target-dependent mechanism (such as | 12021 this function by using a target-dependent mechanism (such as |
12239 @end deftypefn | 12476 @end deftypefn |
12240 | 12477 |
12241 @deftypefn {Built-in Function} uint64_t __builtin_bswap64 (uint64_t x) | 12478 @deftypefn {Built-in Function} uint64_t __builtin_bswap64 (uint64_t x) |
12242 Similar to @code{__builtin_bswap32}, except the argument and return types | 12479 Similar to @code{__builtin_bswap32}, except the argument and return types |
12243 are 64 bit. | 12480 are 64 bit. |
12481 @end deftypefn | |
12482 | |
12483 @deftypefn {Built-in Function} Pmode __builtin_extend_pointer (void * x) | |
12484 On targets where the user visible pointer size is smaller than the size | |
12485 of an actual hardware address this function returns the extended user | |
12486 pointer. Targets where this is true included ILP32 mode on x86_64 or | |
12487 Aarch64. This function is mainly useful when writing inline assembly | |
12488 code. | |
12489 @end deftypefn | |
12490 | |
12491 @deftypefn {Built-in Function} int __builtin_goacc_parlevel_id (int x) | |
12492 Returns the openacc gang, worker or vector id depending on whether @var{x} is | |
12493 0, 1 or 2. | |
12494 @end deftypefn | |
12495 | |
12496 @deftypefn {Built-in Function} int __builtin_goacc_parlevel_size (int x) | |
12497 Returns the openacc gang, worker or vector size depending on whether @var{x} is | |
12498 0, 1 or 2. | |
12244 @end deftypefn | 12499 @end deftypefn |
12245 | 12500 |
12246 @node Target Builtins | 12501 @node Target Builtins |
12247 @section Built-in Functions Specific to Particular Target Machines | 12502 @section Built-in Functions Specific to Particular Target Machines |
12248 | 12503 |
12269 * MIPS SIMD Architecture (MSA) Support:: | 12524 * MIPS SIMD Architecture (MSA) Support:: |
12270 * Other MIPS Built-in Functions:: | 12525 * Other MIPS Built-in Functions:: |
12271 * MSP430 Built-in Functions:: | 12526 * MSP430 Built-in Functions:: |
12272 * NDS32 Built-in Functions:: | 12527 * NDS32 Built-in Functions:: |
12273 * picoChip Built-in Functions:: | 12528 * picoChip Built-in Functions:: |
12274 * PowerPC Built-in Functions:: | 12529 * Basic PowerPC Built-in Functions:: |
12275 * PowerPC AltiVec/VSX Built-in Functions:: | 12530 * PowerPC AltiVec/VSX Built-in Functions:: |
12276 * PowerPC Hardware Transactional Memory Built-in Functions:: | 12531 * PowerPC Hardware Transactional Memory Built-in Functions:: |
12277 * PowerPC Atomic Memory Operation Functions:: | 12532 * PowerPC Atomic Memory Operation Functions:: |
12278 * RX Built-in Functions:: | 12533 * RX Built-in Functions:: |
12279 * S/390 System z Built-in Functions:: | 12534 * S/390 System z Built-in Functions:: |
12283 * TI C6X Built-in Functions:: | 12538 * TI C6X Built-in Functions:: |
12284 * TILE-Gx Built-in Functions:: | 12539 * TILE-Gx Built-in Functions:: |
12285 * TILEPro Built-in Functions:: | 12540 * TILEPro Built-in Functions:: |
12286 * x86 Built-in Functions:: | 12541 * x86 Built-in Functions:: |
12287 * x86 transactional memory intrinsics:: | 12542 * x86 transactional memory intrinsics:: |
12543 * x86 control-flow protection intrinsics:: | |
12288 @end menu | 12544 @end menu |
12289 | 12545 |
12290 @node AArch64 Built-in Functions | 12546 @node AArch64 Built-in Functions |
12291 @subsection AArch64 Built-in Functions | 12547 @subsection AArch64 Built-in Functions |
12292 | 12548 |
15327 Halt. The processor stops execution. This built-in is useful for | 15583 Halt. The processor stops execution. This built-in is useful for |
15328 implementing assertions. | 15584 implementing assertions. |
15329 | 15585 |
15330 @end table | 15586 @end table |
15331 | 15587 |
15332 @node PowerPC Built-in Functions | 15588 @node Basic PowerPC Built-in Functions |
15333 @subsection PowerPC Built-in Functions | 15589 @subsection Basic PowerPC Built-in Functions |
15334 | 15590 |
15335 The following built-in functions are always available and can be used to | 15591 @menu |
15336 check the PowerPC target platform type: | 15592 * Basic PowerPC Built-in Functions Available on all Configurations:: |
15593 * Basic PowerPC Built-in Functions Available on ISA 2.05:: | |
15594 * Basic PowerPC Built-in Functions Available on ISA 2.06:: | |
15595 * Basic PowerPC Built-in Functions Available on ISA 2.07:: | |
15596 * Basic PowerPC Built-in Functions Available on ISA 3.0:: | |
15597 @end menu | |
15598 | |
15599 This section describes PowerPC built-in functions that do not require | |
15600 the inclusion of any special header files to declare prototypes or | |
15601 provide macro definitions. The sections that follow describe | |
15602 additional PowerPC built-in functions. | |
15603 | |
15604 @node Basic PowerPC Built-in Functions Available on all Configurations | |
15605 @subsubsection Basic PowerPC Built-in Functions Available on all Configurations | |
15337 | 15606 |
15338 @deftypefn {Built-in Function} void __builtin_cpu_init (void) | 15607 @deftypefn {Built-in Function} void __builtin_cpu_init (void) |
15339 This function is a @code{nop} on the PowerPC platform and is included solely | 15608 This function is a @code{nop} on the PowerPC platform and is included solely |
15340 to maintain API compatibility with the x86 builtins. | 15609 to maintain API compatibility with the x86 builtins. |
15341 @end deftypefn | 15610 @end deftypefn |
15436 CPU supports the set of compatible performance monitoring events. | 15705 CPU supports the set of compatible performance monitoring events. |
15437 @item booke | 15706 @item booke |
15438 CPU supports the Embedded ISA category. | 15707 CPU supports the Embedded ISA category. |
15439 @item cellbe | 15708 @item cellbe |
15440 CPU has a CELL broadband engine. | 15709 CPU has a CELL broadband engine. |
15710 @item darn | |
15711 CPU supports the @code{darn} (deliver a random number) instruction. | |
15441 @item dfp | 15712 @item dfp |
15442 CPU has a decimal floating point unit. | 15713 CPU has a decimal floating point unit. |
15443 @item dscr | 15714 @item dscr |
15444 CPU supports the data stream control register. | 15715 CPU supports the data stream control register. |
15445 @item ebb | 15716 @item ebb |
15452 CPU has a floating point unit. | 15723 CPU has a floating point unit. |
15453 @item htm | 15724 @item htm |
15454 CPU has hardware transaction memory instructions. | 15725 CPU has hardware transaction memory instructions. |
15455 @item htm-nosc | 15726 @item htm-nosc |
15456 Kernel aborts hardware transactions when a syscall is made. | 15727 Kernel aborts hardware transactions when a syscall is made. |
15728 @item htm-no-suspend | |
15729 CPU supports hardware transaction memory but does not support the | |
15730 @code{tsuspend.} instruction. | |
15457 @item ic_snoop | 15731 @item ic_snoop |
15458 CPU supports icache snooping capabilities. | 15732 CPU supports icache snooping capabilities. |
15459 @item ieee128 | 15733 @item ieee128 |
15460 CPU supports 128-bit IEEE binary floating point instructions. | 15734 CPU supports 128-bit IEEE binary floating point instructions. |
15461 @item isel | 15735 @item isel |
15480 CPU supports the old POWER ISA (eg, 601) | 15754 CPU supports the old POWER ISA (eg, 601) |
15481 @item ppc64 | 15755 @item ppc64 |
15482 CPU supports 64-bit mode execution. | 15756 CPU supports 64-bit mode execution. |
15483 @item ppcle | 15757 @item ppcle |
15484 CPU supports a little-endian mode that uses address swizzling. | 15758 CPU supports a little-endian mode that uses address swizzling. |
15759 @item scv | |
15760 Kernel supports system call vectored. | |
15485 @item smt | 15761 @item smt |
15486 CPU support simultaneous multi-threading. | 15762 CPU support simultaneous multi-threading. |
15487 @item spe | 15763 @item spe |
15488 CPU has a signal processing extension unit. | 15764 CPU has a signal processing extension unit. |
15489 @item tar | 15765 @item tar |
15511 dst = __fadd (src1, src2); // Software FP addition function. | 15787 dst = __fadd (src1, src2); // Software FP addition function. |
15512 @} | 15788 @} |
15513 @end smallexample | 15789 @end smallexample |
15514 @end deftypefn | 15790 @end deftypefn |
15515 | 15791 |
15516 These built-in functions are available for the PowerPC family of | 15792 The following built-in functions are also available on all PowerPC |
15517 processors: | 15793 processors: |
15518 @smallexample | 15794 @smallexample |
15519 float __builtin_recipdivf (float, float); | |
15520 float __builtin_rsqrtf (float); | |
15521 double __builtin_recipdiv (double, double); | |
15522 double __builtin_rsqrt (double); | |
15523 uint64_t __builtin_ppc_get_timebase (); | 15795 uint64_t __builtin_ppc_get_timebase (); |
15524 unsigned long __builtin_ppc_mftb (); | 15796 unsigned long __builtin_ppc_mftb (); |
15525 double __builtin_unpack_longdouble (long double, int); | 15797 __ibm128 __builtin_unpack_ibm128 (__ibm128, int); |
15526 long double __builtin_pack_longdouble (double, double); | 15798 __ibm128 __builtin_pack_ibm128 (double, double); |
15527 @end smallexample | 15799 double __builtin_mffs (void); |
15528 | 15800 void __builtin_mtfsb0 (const int); |
15529 The @code{vec_rsqrt}, @code{__builtin_rsqrt}, and | 15801 void __builtin_mtfsb1 (const int); |
15530 @code{__builtin_rsqrtf} functions generate multiple instructions to | 15802 void __builtin_set_fpscr_rn (int); |
15531 implement the reciprocal sqrt functionality using reciprocal sqrt | 15803 @end smallexample |
15532 estimate instructions. | |
15533 | |
15534 The @code{__builtin_recipdiv}, and @code{__builtin_recipdivf} | |
15535 functions generate multiple instructions to implement division using | |
15536 the reciprocal estimate instructions. | |
15537 | 15804 |
15538 The @code{__builtin_ppc_get_timebase} and @code{__builtin_ppc_mftb} | 15805 The @code{__builtin_ppc_get_timebase} and @code{__builtin_ppc_mftb} |
15539 functions generate instructions to read the Time Base Register. The | 15806 functions generate instructions to read the Time Base Register. The |
15540 @code{__builtin_ppc_get_timebase} function may generate multiple | 15807 @code{__builtin_ppc_get_timebase} function may generate multiple |
15541 instructions and always returns the 64 bits of the Time Base Register. | 15808 instructions and always returns the 64 bits of the Time Base Register. |
15542 The @code{__builtin_ppc_mftb} function always generates one instruction and | 15809 The @code{__builtin_ppc_mftb} function always generates one instruction and |
15543 returns the Time Base Register value as an unsigned long, throwing away | 15810 returns the Time Base Register value as an unsigned long, throwing away |
15544 the most significant word on 32-bit environments. | 15811 the most significant word on 32-bit environments. The @code{__builtin_mffs} |
15545 | 15812 return the value of the FPSCR register. Note, ISA 3.0 supports the |
15546 Additional built-in functions are available for the 64-bit PowerPC | 15813 @code{__builtin_mffsl()} which permits software to read the control and |
15547 family of processors, for efficient use of 128-bit floating point | 15814 non-sticky status bits in the FSPCR without the higher latency associated with |
15548 (@code{__float128}) values. | 15815 accessing the sticky status bits. The |
15549 | 15816 @code{__builtin_mtfsb0} and @code{__builtin_mtfsb1} take the bit to change |
15550 The following floating-point built-in functions are available with | 15817 as an argument. The valid bit range is between 0 and 31. The builtins map to |
15551 @code{-mfloat128} and Altivec support. All of them implement the | 15818 the @code{mtfsb0} and @code{mtfsb1} instructions which take the argument and |
15552 function that is part of the name. | 15819 add 32. Hence these instructions only modify the FPSCR[32:63] bits by |
15553 | 15820 changing the specified bit to a zero or one respectively. The |
15554 @smallexample | 15821 @code{__builtin_set_fpscr_rn} builtin allows changing both of the floating |
15555 __float128 __builtin_fabsq (__float128) | 15822 point rounding mode bits. The argument is a 2-bit value. The argument can |
15556 __float128 __builtin_copysignq (__float128, __float128) | 15823 either be a const int or stored in a variable. The builtin uses the ISA 3.0 |
15557 @end smallexample | 15824 instruction @code{mffscrn} if available, otherwise it reads the FPSCR, masks |
15558 | 15825 the current rounding mode bits out and OR's in the new value. |
15559 The following built-in functions are available with @code{-mfloat128} | 15826 |
15560 and Altivec support. | 15827 @node Basic PowerPC Built-in Functions Available on ISA 2.05 |
15561 | 15828 @subsubsection Basic PowerPC Built-in Functions Available on ISA 2.05 |
15562 @table @code | 15829 |
15563 @item __float128 __builtin_infq (void) | 15830 The basic built-in functions described in this section are |
15564 Similar to @code{__builtin_inf}, except the return type is @code{__float128}. | 15831 available on the PowerPC family of processors starting with ISA 2.05 |
15565 @findex __builtin_infq | 15832 or later. Unless specific options are explicitly disabled on the |
15566 | 15833 command line, specifying option @option{-mcpu=power6} has the effect of |
15567 @item __float128 __builtin_huge_valq (void) | 15834 enabling the @option{-mpowerpc64}, @option{-mpowerpc-gpopt}, |
15568 Similar to @code{__builtin_huge_val}, except the return type is @code{__float128}. | 15835 @option{-mpowerpc-gfxopt}, @option{-mmfcrf}, @option{-mpopcntb}, |
15569 @findex __builtin_huge_valq | 15836 @option{-mfprnd}, @option{-mcmpb}, @option{-mhard-dfp}, and |
15570 | 15837 @option{-mrecip-precision} options. Specify the |
15571 @item __float128 __builtin_nanq (void) | 15838 @option{-maltivec} and @option{-mfpgpr} options explicitly in |
15572 Similar to @code{__builtin_nan}, except the return type is @code{__float128}. | 15839 combination with the above options if they are desired. |
15573 @findex __builtin_nanq | 15840 |
15574 | 15841 The following functions require option @option{-mcmpb}. |
15575 @item __float128 __builtin_nansq (void) | |
15576 Similar to @code{__builtin_nans}, except the return type is @code{__float128}. | |
15577 @findex __builtin_nansq | |
15578 @end table | |
15579 | |
15580 The following built-in functions are available on Linux 64-bit systems | |
15581 that use the ISA 3.0 instruction set. | |
15582 | |
15583 @table @code | |
15584 @item __float128 __builtin_sqrtf128 (__float128) | |
15585 Perform a 128-bit IEEE floating point square root operation. | |
15586 @findex __builtin_sqrtf128 | |
15587 | |
15588 @item __float128 __builtin_fmaf128 (__float128, __float128, __float128) | |
15589 Perform a 128-bit IEEE floating point fused multiply and add operation. | |
15590 @findex __builtin_fmaf128 | |
15591 | |
15592 @item __float128 __builtin_addf128_round_to_odd (__float128, __float128) | |
15593 Perform a 128-bit IEEE floating point add using round to odd as the | |
15594 rounding mode. | |
15595 @findex __builtin_addf128_round_to_odd | |
15596 | |
15597 @item __float128 __builtin_subf128_round_to_odd (__float128, __float128) | |
15598 Perform a 128-bit IEEE floating point subtract using round to odd as | |
15599 the rounding mode. | |
15600 @findex __builtin_subf128_round_to_odd | |
15601 | |
15602 @item __float128 __builtin_mulf128_round_to_odd (__float128, __float128) | |
15603 Perform a 128-bit IEEE floating point multiply using round to odd as | |
15604 the rounding mode. | |
15605 @findex __builtin_mulf128_round_to_odd | |
15606 | |
15607 @item __float128 __builtin_divf128_round_to_odd (__float128, __float128) | |
15608 Perform a 128-bit IEEE floating point divide using round to odd as | |
15609 the rounding mode. | |
15610 @findex __builtin_divf128_round_to_odd | |
15611 | |
15612 @item __float128 __builtin_sqrtf128_round_to_odd (__float128) | |
15613 Perform a 128-bit IEEE floating point square root using round to odd | |
15614 as the rounding mode. | |
15615 @findex __builtin_sqrtf128_round_to_odd | |
15616 | |
15617 @item __float128 __builtin_fmaf128 (__float128, __float128, __float128) | |
15618 Perform a 128-bit IEEE floating point fused multiply and add operation | |
15619 using round to odd as the rounding mode. | |
15620 @findex __builtin_fmaf128_round_to_odd | |
15621 | |
15622 @item double __builtin_truncf128_round_to_odd (__float128) | |
15623 Convert a 128-bit IEEE floating point value to @code{double} using | |
15624 round to odd as the rounding mode. | |
15625 @findex __builtin_truncf128_round_to_odd | |
15626 @end table | |
15627 | |
15628 The following built-in functions are available for the PowerPC family | |
15629 of processors, starting with ISA 2.05 or later (@option{-mcpu=power6} | |
15630 or @option{-mcmpb}): | |
15631 @smallexample | 15842 @smallexample |
15632 unsigned long long __builtin_cmpb (unsigned long long int, unsigned long long int); | 15843 unsigned long long __builtin_cmpb (unsigned long long int, unsigned long long int); |
15633 unsigned int __builtin_cmpb (unsigned int, unsigned int); | 15844 unsigned int __builtin_cmpb (unsigned int, unsigned int); |
15634 @end smallexample | 15845 @end smallexample |
15635 | 15846 |
15641 are not equal. If either of the arguments to this built-in function | 15852 are not equal. If either of the arguments to this built-in function |
15642 is wider than 32 bits, the function call expands into the form that | 15853 is wider than 32 bits, the function call expands into the form that |
15643 expects @code{unsigned long long int} arguments | 15854 expects @code{unsigned long long int} arguments |
15644 which is only available on 64-bit targets. | 15855 which is only available on 64-bit targets. |
15645 | 15856 |
15646 The following built-in functions are available for the PowerPC family | 15857 The following built-in functions are available |
15647 of processors, starting with ISA 2.06 or later (@option{-mcpu=power7} | 15858 when hardware decimal floating point |
15648 or @option{-mpopcntd}): | 15859 (@option{-mhard-dfp}) is available: |
15649 @smallexample | 15860 @smallexample |
15650 long __builtin_bpermd (long, long); | 15861 void __builtin_set_fpscr_drn(int); |
15862 _Decimal64 __builtin_ddedpd (int, _Decimal64); | |
15863 _Decimal128 __builtin_ddedpdq (int, _Decimal128); | |
15864 _Decimal64 __builtin_denbcd (int, _Decimal64); | |
15865 _Decimal128 __builtin_denbcdq (int, _Decimal128); | |
15866 _Decimal64 __builtin_diex (long long, _Decimal64); | |
15867 _Decimal128 _builtin_diexq (long long, _Decimal128); | |
15868 _Decimal64 __builtin_dscli (_Decimal64, int); | |
15869 _Decimal128 __builtin_dscliq (_Decimal128, int); | |
15870 _Decimal64 __builtin_dscri (_Decimal64, int); | |
15871 _Decimal128 __builtin_dscriq (_Decimal128, int); | |
15872 long long __builtin_dxex (_Decimal64); | |
15873 long long __builtin_dxexq (_Decimal128); | |
15874 _Decimal128 __builtin_pack_dec128 (unsigned long long, unsigned long long); | |
15875 unsigned long long __builtin_unpack_dec128 (_Decimal128, int); | |
15876 | |
15877 The @code{__builtin_set_fpscr_drn} builtin allows changing the three decimal | |
15878 floating point rounding mode bits. The argument is a 3-bit value. The | |
15879 argument can either be a const int or the value can be stored in a variable. | |
15880 The builtin uses the ISA 3.0 instruction @code{mffscdrn} if available. | |
15881 Otherwise the builtin reads the FPSCR, masks the current decimal rounding | |
15882 mode bits out and OR's in the new value. | |
15883 | |
15884 @end smallexample | |
15885 | |
15886 The following functions require @option{-mhard-float}, | |
15887 @option{-mpowerpc-gfxopt}, and @option{-mpopcntb} options. | |
15888 | |
15889 @smallexample | |
15890 double __builtin_recipdiv (double, double); | |
15891 float __builtin_recipdivf (float, float); | |
15892 double __builtin_rsqrt (double); | |
15893 float __builtin_rsqrtf (float); | |
15894 @end smallexample | |
15895 | |
15896 The @code{vec_rsqrt}, @code{__builtin_rsqrt}, and | |
15897 @code{__builtin_rsqrtf} functions generate multiple instructions to | |
15898 implement the reciprocal sqrt functionality using reciprocal sqrt | |
15899 estimate instructions. | |
15900 | |
15901 The @code{__builtin_recipdiv}, and @code{__builtin_recipdivf} | |
15902 functions generate multiple instructions to implement division using | |
15903 the reciprocal estimate instructions. | |
15904 | |
15905 The following functions require @option{-mhard-float} and | |
15906 @option{-mmultiple} options. | |
15907 | |
15908 The @code{__builtin_unpack_longdouble} function takes a | |
15909 @code{long double} argument and a compile time constant of 0 or 1. If | |
15910 the constant is 0, the first @code{double} within the | |
15911 @code{long double} is returned, otherwise the second @code{double} | |
15912 is returned. The @code{__builtin_unpack_longdouble} function is only | |
15913 availble if @code{long double} uses the IBM extended double | |
15914 representation. | |
15915 | |
15916 The @code{__builtin_pack_longdouble} function takes two @code{double} | |
15917 arguments and returns a @code{long double} value that combines the two | |
15918 arguments. The @code{__builtin_pack_longdouble} function is only | |
15919 availble if @code{long double} uses the IBM extended double | |
15920 representation. | |
15921 | |
15922 The @code{__builtin_unpack_ibm128} function takes a @code{__ibm128} | |
15923 argument and a compile time constant of 0 or 1. If the constant is 0, | |
15924 the first @code{double} within the @code{__ibm128} is returned, | |
15925 otherwise the second @code{double} is returned. | |
15926 | |
15927 The @code{__builtin_pack_ibm128} function takes two @code{double} | |
15928 arguments and returns a @code{__ibm128} value that combines the two | |
15929 arguments. | |
15930 | |
15931 Additional built-in functions are available for the 64-bit PowerPC | |
15932 family of processors, for efficient use of 128-bit floating point | |
15933 (@code{__float128}) values. | |
15934 | |
15935 @node Basic PowerPC Built-in Functions Available on ISA 2.06 | |
15936 @subsubsection Basic PowerPC Built-in Functions Available on ISA 2.06 | |
15937 | |
15938 The basic built-in functions described in this section are | |
15939 available on the PowerPC family of processors starting with ISA 2.05 | |
15940 or later. Unless specific options are explicitly disabled on the | |
15941 command line, specifying option @option{-mcpu=power7} has the effect of | |
15942 enabling all the same options as for @option{-mcpu=power6} in | |
15943 addition to the @option{-maltivec}, @option{-mpopcntd}, and | |
15944 @option{-mvsx} options. | |
15945 | |
15946 The following basic built-in functions require @option{-mpopcntd}: | |
15947 @smallexample | |
15948 unsigned int __builtin_addg6s (unsigned int, unsigned int); | |
15949 long long __builtin_bpermd (long long, long long); | |
15950 unsigned int __builtin_cbcdtd (unsigned int); | |
15951 unsigned int __builtin_cdtbcd (unsigned int); | |
15952 long long __builtin_divde (long long, long long); | |
15953 unsigned long long __builtin_divdeu (unsigned long long, unsigned long long); | |
15651 int __builtin_divwe (int, int); | 15954 int __builtin_divwe (int, int); |
15652 int __builtin_divweo (int, int); | |
15653 unsigned int __builtin_divweu (unsigned int, unsigned int); | 15955 unsigned int __builtin_divweu (unsigned int, unsigned int); |
15654 unsigned int __builtin_divweuo (unsigned int, unsigned int); | 15956 vector __int128 __builtin_pack_vector_int128 (long long, long long); |
15655 long __builtin_divde (long, long); | 15957 void __builtin_rs6000_speculation_barrier (void); |
15656 long __builtin_divdeo (long, long); | 15958 long long __builtin_unpack_vector_int128 (vector __int128, signed char); |
15657 unsigned long __builtin_divdeu (unsigned long, unsigned long); | 15959 @end smallexample |
15658 unsigned long __builtin_divdeuo (unsigned long, unsigned long); | 15960 |
15659 unsigned int cdtbcd (unsigned int); | 15961 Of these, the @code{__builtin_divde} and @code{__builtin_divdeu} functions |
15660 unsigned int cbcdtd (unsigned int); | 15962 require a 64-bit environment. |
15661 unsigned int addg6s (unsigned int, unsigned int); | 15963 |
15662 @end smallexample | 15964 The following basic built-in functions, which are also supported on |
15663 | 15965 x86 targets, require @option{-mfloat128}. |
15664 The @code{__builtin_divde}, @code{__builtin_divdeo}, | 15966 @smallexample |
15665 @code{__builtin_divdeu}, @code{__builtin_divdeou} functions require a | 15967 __float128 __builtin_fabsq (__float128); |
15666 64-bit environment support ISA 2.06 or later. | 15968 __float128 __builtin_copysignq (__float128, __float128); |
15667 | 15969 __float128 __builtin_infq (void); |
15668 The following built-in functions are available for the PowerPC family | 15970 __float128 __builtin_huge_valq (void); |
15669 of processors, starting with ISA 3.0 or later (@option{-mcpu=power9}): | 15971 __float128 __builtin_nanq (void); |
15972 __float128 __builtin_nansq (void); | |
15973 | |
15974 __float128 __builtin_sqrtf128 (__float128); | |
15975 __float128 __builtin_fmaf128 (__float128, __float128, __float128); | |
15976 @end smallexample | |
15977 | |
15978 @node Basic PowerPC Built-in Functions Available on ISA 2.07 | |
15979 @subsubsection Basic PowerPC Built-in Functions Available on ISA 2.07 | |
15980 | |
15981 The basic built-in functions described in this section are | |
15982 available on the PowerPC family of processors starting with ISA 2.07 | |
15983 or later. Unless specific options are explicitly disabled on the | |
15984 command line, specifying option @option{-mcpu=power8} has the effect of | |
15985 enabling all the same options as for @option{-mcpu=power7} in | |
15986 addition to the @option{-mpower8-fusion}, @option{-mpower8-vector}, | |
15987 @option{-mcrypto}, @option{-mhtm}, @option{-mquad-memory}, and | |
15988 @option{-mquad-memory-atomic} options. | |
15989 | |
15990 This section intentionally empty. | |
15991 | |
15992 @node Basic PowerPC Built-in Functions Available on ISA 3.0 | |
15993 @subsubsection Basic PowerPC Built-in Functions Available on ISA 3.0 | |
15994 | |
15995 The basic built-in functions described in this section are | |
15996 available on the PowerPC family of processors starting with ISA 3.0 | |
15997 or later. Unless specific options are explicitly disabled on the | |
15998 command line, specifying option @option{-mcpu=power9} has the effect of | |
15999 enabling all the same options as for @option{-mcpu=power8} in | |
16000 addition to the @option{-misel} option. | |
16001 | |
16002 The following built-in functions are available on Linux 64-bit systems | |
16003 that use the ISA 3.0 instruction set (@option{-mcpu=power9}): | |
16004 | |
16005 @table @code | |
16006 @item __float128 __builtin_addf128_round_to_odd (__float128, __float128) | |
16007 Perform a 128-bit IEEE floating point add using round to odd as the | |
16008 rounding mode. | |
16009 @findex __builtin_addf128_round_to_odd | |
16010 | |
16011 @item __float128 __builtin_subf128_round_to_odd (__float128, __float128) | |
16012 Perform a 128-bit IEEE floating point subtract using round to odd as | |
16013 the rounding mode. | |
16014 @findex __builtin_subf128_round_to_odd | |
16015 | |
16016 @item __float128 __builtin_mulf128_round_to_odd (__float128, __float128) | |
16017 Perform a 128-bit IEEE floating point multiply using round to odd as | |
16018 the rounding mode. | |
16019 @findex __builtin_mulf128_round_to_odd | |
16020 | |
16021 @item __float128 __builtin_divf128_round_to_odd (__float128, __float128) | |
16022 Perform a 128-bit IEEE floating point divide using round to odd as | |
16023 the rounding mode. | |
16024 @findex __builtin_divf128_round_to_odd | |
16025 | |
16026 @item __float128 __builtin_sqrtf128_round_to_odd (__float128) | |
16027 Perform a 128-bit IEEE floating point square root using round to odd | |
16028 as the rounding mode. | |
16029 @findex __builtin_sqrtf128_round_to_odd | |
16030 | |
16031 @item __float128 __builtin_fmaf128_round_to_odd (__float128, __float128, __float128) | |
16032 Perform a 128-bit IEEE floating point fused multiply and add operation | |
16033 using round to odd as the rounding mode. | |
16034 @findex __builtin_fmaf128_round_to_odd | |
16035 | |
16036 @item double __builtin_truncf128_round_to_odd (__float128) | |
16037 Convert a 128-bit IEEE floating point value to @code{double} using | |
16038 round to odd as the rounding mode. | |
16039 @findex __builtin_truncf128_round_to_odd | |
16040 @end table | |
16041 | |
16042 The following additional built-in functions are also available for the | |
16043 PowerPC family of processors, starting with ISA 3.0 or later: | |
15670 @smallexample | 16044 @smallexample |
15671 long long __builtin_darn (void); | 16045 long long __builtin_darn (void); |
15672 long long __builtin_darn_raw (void); | 16046 long long __builtin_darn_raw (void); |
15673 int __builtin_darn_32 (void); | 16047 int __builtin_darn_32 (void); |
15674 | |
15675 unsigned int scalar_extract_exp (double source); | |
15676 unsigned long long int scalar_extract_exp (__ieee128 source); | |
15677 | |
15678 unsigned long long int scalar_extract_sig (double source); | |
15679 unsigned __int128 scalar_extract_sig (__ieee128 source); | |
15680 | |
15681 double | |
15682 scalar_insert_exp (unsigned long long int significand, unsigned long long int exponent); | |
15683 double | |
15684 scalar_insert_exp (double significand, unsigned long long int exponent); | |
15685 | |
15686 ieee_128 | |
15687 scalar_insert_exp (unsigned __int128 significand, unsigned long long int exponent); | |
15688 ieee_128 | |
15689 scalar_insert_exp (ieee_128 significand, unsigned long long int exponent); | |
15690 | |
15691 int scalar_cmp_exp_gt (double arg1, double arg2); | |
15692 int scalar_cmp_exp_lt (double arg1, double arg2); | |
15693 int scalar_cmp_exp_eq (double arg1, double arg2); | |
15694 int scalar_cmp_exp_unordered (double arg1, double arg2); | |
15695 | |
15696 bool scalar_test_data_class (float source, const int condition); | |
15697 bool scalar_test_data_class (double source, const int condition); | |
15698 bool scalar_test_data_class (__ieee128 source, const int condition); | |
15699 | |
15700 bool scalar_test_neg (float source); | |
15701 bool scalar_test_neg (double source); | |
15702 bool scalar_test_neg (__ieee128 source); | |
15703 | |
15704 int __builtin_byte_in_set (unsigned char u, unsigned long long set); | |
15705 int __builtin_byte_in_range (unsigned char u, unsigned int range); | |
15706 int __builtin_byte_in_either_range (unsigned char u, unsigned int ranges); | |
15707 | |
15708 int __builtin_dfp_dtstsfi_lt (unsigned int comparison, _Decimal64 value); | |
15709 int __builtin_dfp_dtstsfi_lt (unsigned int comparison, _Decimal128 value); | |
15710 int __builtin_dfp_dtstsfi_lt_dd (unsigned int comparison, _Decimal64 value); | |
15711 int __builtin_dfp_dtstsfi_lt_td (unsigned int comparison, _Decimal128 value); | |
15712 | |
15713 int __builtin_dfp_dtstsfi_gt (unsigned int comparison, _Decimal64 value); | |
15714 int __builtin_dfp_dtstsfi_gt (unsigned int comparison, _Decimal128 value); | |
15715 int __builtin_dfp_dtstsfi_gt_dd (unsigned int comparison, _Decimal64 value); | |
15716 int __builtin_dfp_dtstsfi_gt_td (unsigned int comparison, _Decimal128 value); | |
15717 | |
15718 int __builtin_dfp_dtstsfi_eq (unsigned int comparison, _Decimal64 value); | |
15719 int __builtin_dfp_dtstsfi_eq (unsigned int comparison, _Decimal128 value); | |
15720 int __builtin_dfp_dtstsfi_eq_dd (unsigned int comparison, _Decimal64 value); | |
15721 int __builtin_dfp_dtstsfi_eq_td (unsigned int comparison, _Decimal128 value); | |
15722 | |
15723 int __builtin_dfp_dtstsfi_ov (unsigned int comparison, _Decimal64 value); | |
15724 int __builtin_dfp_dtstsfi_ov (unsigned int comparison, _Decimal128 value); | |
15725 int __builtin_dfp_dtstsfi_ov_dd (unsigned int comparison, _Decimal64 value); | |
15726 int __builtin_dfp_dtstsfi_ov_td (unsigned int comparison, _Decimal128 value); | |
15727 @end smallexample | 16048 @end smallexample |
15728 | 16049 |
15729 The @code{__builtin_darn} and @code{__builtin_darn_raw} | 16050 The @code{__builtin_darn} and @code{__builtin_darn_raw} |
15730 functions require a | 16051 functions require a |
15731 64-bit environment supporting ISA 3.0 or later. | 16052 64-bit environment supporting ISA 3.0 or later. |
15732 The @code{__builtin_darn} function provides a 64-bit conditioned | 16053 The @code{__builtin_darn} function provides a 64-bit conditioned |
15733 random number. The @code{__builtin_darn_raw} function provides a | 16054 random number. The @code{__builtin_darn_raw} function provides a |
15734 64-bit raw random number. The @code{__builtin_darn_32} function | 16055 64-bit raw random number. The @code{__builtin_darn_32} function |
15735 provides a 32-bit random number. | 16056 provides a 32-bit conditioned random number. |
15736 | 16057 |
15737 The @code{scalar_extract_exp} and @code{scalar_extract_sig} | 16058 The following additional built-in functions are also available for the |
15738 functions require a 64-bit environment supporting ISA 3.0 or later. | 16059 PowerPC family of processors, starting with ISA 3.0 or later: |
15739 The @code{scalar_extract_exp} and @code{scalar_extract_sig} built-in | 16060 |
15740 functions return the significand and the biased exponent value | 16061 @smallexample |
15741 respectively of their @code{source} arguments. | 16062 int __builtin_byte_in_set (unsigned char u, unsigned long long set); |
15742 When supplied with a 64-bit @code{source} argument, the | 16063 int __builtin_byte_in_range (unsigned char u, unsigned int range); |
15743 result returned by @code{scalar_extract_sig} has | 16064 int __builtin_byte_in_either_range (unsigned char u, unsigned int ranges); |
15744 the @code{0x0010000000000000} bit set if the | 16065 |
15745 function's @code{source} argument is in normalized form. | 16066 int __builtin_dfp_dtstsfi_lt (unsigned int comparison, _Decimal64 value); |
15746 Otherwise, this bit is set to 0. | 16067 int __builtin_dfp_dtstsfi_lt (unsigned int comparison, _Decimal128 value); |
15747 When supplied with a 128-bit @code{source} argument, the | 16068 int __builtin_dfp_dtstsfi_lt_dd (unsigned int comparison, _Decimal64 value); |
15748 @code{0x00010000000000000000000000000000} bit of the result is | 16069 int __builtin_dfp_dtstsfi_lt_td (unsigned int comparison, _Decimal128 value); |
15749 treated similarly. | 16070 |
15750 Note that the sign of the significand is not represented in the result | 16071 int __builtin_dfp_dtstsfi_gt (unsigned int comparison, _Decimal64 value); |
15751 returned from the @code{scalar_extract_sig} function. Use the | 16072 int __builtin_dfp_dtstsfi_gt (unsigned int comparison, _Decimal128 value); |
15752 @code{scalar_test_neg} function to test the sign of its @code{double} | 16073 int __builtin_dfp_dtstsfi_gt_dd (unsigned int comparison, _Decimal64 value); |
15753 argument. | 16074 int __builtin_dfp_dtstsfi_gt_td (unsigned int comparison, _Decimal128 value); |
15754 | 16075 |
15755 The @code{scalar_insert_exp} | 16076 int __builtin_dfp_dtstsfi_eq (unsigned int comparison, _Decimal64 value); |
15756 functions require a 64-bit environment supporting ISA 3.0 or later. | 16077 int __builtin_dfp_dtstsfi_eq (unsigned int comparison, _Decimal128 value); |
15757 When supplied with a 64-bit first argument, the | 16078 int __builtin_dfp_dtstsfi_eq_dd (unsigned int comparison, _Decimal64 value); |
15758 @code{scalar_insert_exp} built-in function returns a double-precision | 16079 int __builtin_dfp_dtstsfi_eq_td (unsigned int comparison, _Decimal128 value); |
15759 floating point value that is constructed by assembling the values of its | 16080 |
15760 @code{significand} and @code{exponent} arguments. The sign of the | 16081 int __builtin_dfp_dtstsfi_ov (unsigned int comparison, _Decimal64 value); |
15761 result is copied from the most significant bit of the | 16082 int __builtin_dfp_dtstsfi_ov (unsigned int comparison, _Decimal128 value); |
15762 @code{significand} argument. The significand and exponent components | 16083 int __builtin_dfp_dtstsfi_ov_dd (unsigned int comparison, _Decimal64 value); |
15763 of the result are composed of the least significant 11 bits of the | 16084 int __builtin_dfp_dtstsfi_ov_td (unsigned int comparison, _Decimal128 value); |
15764 @code{exponent} argument and the least significant 52 bits of the | 16085 |
15765 @code{significand} argument respectively. | 16086 double __builtin_mffsl(void); |
15766 | 16087 |
15767 When supplied with a 128-bit first argument, the | 16088 @end smallexample |
15768 @code{scalar_insert_exp} built-in function returns a quad-precision | |
15769 ieee floating point value. The sign bit of the result is copied from | |
15770 the most significant bit of the @code{significand} argument. | |
15771 The significand and exponent components of the result are composed of | |
15772 the least significant 15 bits of the @code{exponent} argument and the | |
15773 least significant 112 bits of the @code{significand} argument respectively. | |
15774 | |
15775 The @code{scalar_cmp_exp_gt}, @code{scalar_cmp_exp_lt}, | |
15776 @code{scalar_cmp_exp_eq}, and @code{scalar_cmp_exp_unordered} built-in | |
15777 functions return a non-zero value if @code{arg1} is greater than, less | |
15778 than, equal to, or not comparable to @code{arg2} respectively. The | |
15779 arguments are not comparable if one or the other equals NaN (not a | |
15780 number). | |
15781 | |
15782 The @code{scalar_test_data_class} built-in function returns 1 | |
15783 if any of the condition tests enabled by the value of the | |
15784 @code{condition} variable are true, and 0 otherwise. The | |
15785 @code{condition} argument must be a compile-time constant integer with | |
15786 value not exceeding 127. The | |
15787 @code{condition} argument is encoded as a bitmask with each bit | |
15788 enabling the testing of a different condition, as characterized by the | |
15789 following: | |
15790 @smallexample | |
15791 0x40 Test for NaN | |
15792 0x20 Test for +Infinity | |
15793 0x10 Test for -Infinity | |
15794 0x08 Test for +Zero | |
15795 0x04 Test for -Zero | |
15796 0x02 Test for +Denormal | |
15797 0x01 Test for -Denormal | |
15798 @end smallexample | |
15799 | |
15800 The @code{scalar_test_neg} built-in function returns 1 if its | |
15801 @code{source} argument holds a negative value, 0 otherwise. | |
15802 | |
15803 The @code{__builtin_byte_in_set} function requires a | 16089 The @code{__builtin_byte_in_set} function requires a |
15804 64-bit environment supporting ISA 3.0 or later. This function returns | 16090 64-bit environment supporting ISA 3.0 or later. This function returns |
15805 a non-zero value if and only if its @code{u} argument exactly equals one of | 16091 a non-zero value if and only if its @code{u} argument exactly equals one of |
15806 the eight bytes contained within its 64-bit @code{set} argument. | 16092 the eight bytes contained within its 64-bit @code{set} argument. |
15807 | 16093 |
15848 The @code{__builtin_dfp_dtstsfi_ov_dd} and | 16134 The @code{__builtin_dfp_dtstsfi_ov_dd} and |
15849 @code{__builtin_dfp_dtstsfi_ov_td} functions behave similarly, but | 16135 @code{__builtin_dfp_dtstsfi_ov_td} functions behave similarly, but |
15850 require that the type of the @code{value} argument be | 16136 require that the type of the @code{value} argument be |
15851 @code{__Decimal64} and @code{__Decimal128} respectively. | 16137 @code{__Decimal64} and @code{__Decimal128} respectively. |
15852 | 16138 |
15853 The following built-in functions are also available for the PowerPC family | 16139 The @code{__builtin_mffsl} uses the ISA 3.0 @code{mffsl} instruction to read |
15854 of processors, starting with ISA 3.0 or later | 16140 the FPSCR. The instruction is a lower latency version of the @code{mffs} |
15855 (@option{-mcpu=power9}). These string functions are described | 16141 instruction. If the @code{mffsl} instruction is not available, then the |
15856 separately in order to group the descriptions closer to the function | 16142 builtin uses the older @code{mffs} instruction to read the FPSCR. |
15857 prototypes: | 16143 |
15858 @smallexample | |
15859 int vec_all_nez (vector signed char, vector signed char); | |
15860 int vec_all_nez (vector unsigned char, vector unsigned char); | |
15861 int vec_all_nez (vector signed short, vector signed short); | |
15862 int vec_all_nez (vector unsigned short, vector unsigned short); | |
15863 int vec_all_nez (vector signed int, vector signed int); | |
15864 int vec_all_nez (vector unsigned int, vector unsigned int); | |
15865 | |
15866 int vec_any_eqz (vector signed char, vector signed char); | |
15867 int vec_any_eqz (vector unsigned char, vector unsigned char); | |
15868 int vec_any_eqz (vector signed short, vector signed short); | |
15869 int vec_any_eqz (vector unsigned short, vector unsigned short); | |
15870 int vec_any_eqz (vector signed int, vector signed int); | |
15871 int vec_any_eqz (vector unsigned int, vector unsigned int); | |
15872 | |
15873 vector bool char vec_cmpnez (vector signed char arg1, vector signed char arg2); | |
15874 vector bool char vec_cmpnez (vector unsigned char arg1, vector unsigned char arg2); | |
15875 vector bool short vec_cmpnez (vector signed short arg1, vector signed short arg2); | |
15876 vector bool short vec_cmpnez (vector unsigned short arg1, vector unsigned short arg2); | |
15877 vector bool int vec_cmpnez (vector signed int arg1, vector signed int arg2); | |
15878 vector bool int vec_cmpnez (vector unsigned int, vector unsigned int); | |
15879 | |
15880 vector signed char vec_cnttz (vector signed char); | |
15881 vector unsigned char vec_cnttz (vector unsigned char); | |
15882 vector signed short vec_cnttz (vector signed short); | |
15883 vector unsigned short vec_cnttz (vector unsigned short); | |
15884 vector signed int vec_cnttz (vector signed int); | |
15885 vector unsigned int vec_cnttz (vector unsigned int); | |
15886 vector signed long long vec_cnttz (vector signed long long); | |
15887 vector unsigned long long vec_cnttz (vector unsigned long long); | |
15888 | |
15889 signed int vec_cntlz_lsbb (vector signed char); | |
15890 signed int vec_cntlz_lsbb (vector unsigned char); | |
15891 | |
15892 signed int vec_cnttz_lsbb (vector signed char); | |
15893 signed int vec_cnttz_lsbb (vector unsigned char); | |
15894 | |
15895 vector unsigned short vec_pack_to_short_fp32 (vector float, vector float); | |
15896 | |
15897 vector signed char vec_xl_be (signed long long, signed char *); | |
15898 vector unsigned char vec_xl_be (signed long long, unsigned char *); | |
15899 vector signed int vec_xl_be (signed long long, signed int *); | |
15900 vector unsigned int vec_xl_be (signed long long, unsigned int *); | |
15901 vector signed __int128 vec_xl_be (signed long long, signed __int128 *); | |
15902 vector unsigned __int128 vec_xl_be (signed long long, unsigned __int128 *); | |
15903 vector signed long long vec_xl_be (signed long long, signed long long *); | |
15904 vector unsigned long long vec_xl_be (signed long long, unsigned long long *); | |
15905 vector signed short vec_xl_be (signed long long, signed short *); | |
15906 vector unsigned short vec_xl_be (signed long long, unsigned short *); | |
15907 vector double vec_xl_be (signed long long, double *); | |
15908 vector float vec_xl_be (signed long long, float *); | |
15909 | |
15910 vector signed char vec_xl_len (signed char *addr, size_t len); | |
15911 vector unsigned char vec_xl_len (unsigned char *addr, size_t len); | |
15912 vector signed int vec_xl_len (signed int *addr, size_t len); | |
15913 vector unsigned int vec_xl_len (unsigned int *addr, size_t len); | |
15914 vector signed __int128 vec_xl_len (signed __int128 *addr, size_t len); | |
15915 vector unsigned __int128 vec_xl_len (unsigned __int128 *addr, size_t len); | |
15916 vector signed long long vec_xl_len (signed long long *addr, size_t len); | |
15917 vector unsigned long long vec_xl_len (unsigned long long *addr, size_t len); | |
15918 vector signed short vec_xl_len (signed short *addr, size_t len); | |
15919 vector unsigned short vec_xl_len (unsigned short *addr, size_t len); | |
15920 vector double vec_xl_len (double *addr, size_t len); | |
15921 vector float vec_xl_len (float *addr, size_t len); | |
15922 | |
15923 vector unsigned char vec_xl_len_r (unsigned char *addr, size_t len); | |
15924 | |
15925 void vec_xst_len (vector signed char data, signed char *addr, size_t len); | |
15926 void vec_xst_len (vector unsigned char data, unsigned char *addr, size_t len); | |
15927 void vec_xst_len (vector signed int data, signed int *addr, size_t len); | |
15928 void vec_xst_len (vector unsigned int data, unsigned int *addr, size_t len); | |
15929 void vec_xst_len (vector unsigned __int128 data, unsigned __int128 *addr, size_t len); | |
15930 void vec_xst_len (vector signed long long data, signed long long *addr, size_t len); | |
15931 void vec_xst_len (vector unsigned long long data, unsigned long long *addr, size_t len); | |
15932 void vec_xst_len (vector signed short data, signed short *addr, size_t len); | |
15933 void vec_xst_len (vector unsigned short data, unsigned short *addr, size_t len); | |
15934 void vec_xst_len (vector signed __int128 data, signed __int128 *addr, size_t len); | |
15935 void vec_xst_len (vector double data, double *addr, size_t len); | |
15936 void vec_xst_len (vector float data, float *addr, size_t len); | |
15937 | |
15938 void vec_xst_len_r (vector unsigned char data, unsigned char *addr, size_t len); | |
15939 | |
15940 signed char vec_xlx (unsigned int index, vector signed char data); | |
15941 unsigned char vec_xlx (unsigned int index, vector unsigned char data); | |
15942 signed short vec_xlx (unsigned int index, vector signed short data); | |
15943 unsigned short vec_xlx (unsigned int index, vector unsigned short data); | |
15944 signed int vec_xlx (unsigned int index, vector signed int data); | |
15945 unsigned int vec_xlx (unsigned int index, vector unsigned int data); | |
15946 float vec_xlx (unsigned int index, vector float data); | |
15947 | |
15948 signed char vec_xrx (unsigned int index, vector signed char data); | |
15949 unsigned char vec_xrx (unsigned int index, vector unsigned char data); | |
15950 signed short vec_xrx (unsigned int index, vector signed short data); | |
15951 unsigned short vec_xrx (unsigned int index, vector unsigned short data); | |
15952 signed int vec_xrx (unsigned int index, vector signed int data); | |
15953 unsigned int vec_xrx (unsigned int index, vector unsigned int data); | |
15954 float vec_xrx (unsigned int index, vector float data); | |
15955 @end smallexample | |
15956 | |
15957 The @code{vec_all_nez}, @code{vec_any_eqz}, and @code{vec_cmpnez} | |
15958 perform pairwise comparisons between the elements at the same | |
15959 positions within their two vector arguments. | |
15960 The @code{vec_all_nez} function returns a | |
15961 non-zero value if and only if all pairwise comparisons are not | |
15962 equal and no element of either vector argument contains a zero. | |
15963 The @code{vec_any_eqz} function returns a | |
15964 non-zero value if and only if at least one pairwise comparison is equal | |
15965 or if at least one element of either vector argument contains a zero. | |
15966 The @code{vec_cmpnez} function returns a vector of the same type as | |
15967 its two arguments, within which each element consists of all ones to | |
15968 denote that either the corresponding elements of the incoming arguments are | |
15969 not equal or that at least one of the corresponding elements contains | |
15970 zero. Otherwise, the element of the returned vector contains all zeros. | |
15971 | |
15972 The @code{vec_cntlz_lsbb} function returns the count of the number of | |
15973 consecutive leading byte elements (starting from position 0 within the | |
15974 supplied vector argument) for which the least-significant bit | |
15975 equals zero. The @code{vec_cnttz_lsbb} function returns the count of | |
15976 the number of consecutive trailing byte elements (starting from | |
15977 position 15 and counting backwards within the supplied vector | |
15978 argument) for which the least-significant bit equals zero. | |
15979 | |
15980 The @code{vec_xl_len} and @code{vec_xst_len} functions require a | |
15981 64-bit environment supporting ISA 3.0 or later. The @code{vec_xl_len} | |
15982 function loads a variable length vector from memory. The | |
15983 @code{vec_xst_len} function stores a variable length vector to memory. | |
15984 With both the @code{vec_xl_len} and @code{vec_xst_len} functions, the | |
15985 @code{addr} argument represents the memory address to or from which | |
15986 data will be transferred, and the | |
15987 @code{len} argument represents the number of bytes to be | |
15988 transferred, as computed by the C expression @code{min((len & 0xff), 16)}. | |
15989 If this expression's value is not a multiple of the vector element's | |
15990 size, the behavior of this function is undefined. | |
15991 In the case that the underlying computer is configured to run in | |
15992 big-endian mode, the data transfer moves bytes 0 to @code{(len - 1)} of | |
15993 the corresponding vector. In little-endian mode, the data transfer | |
15994 moves bytes @code{(16 - len)} to @code{15} of the corresponding | |
15995 vector. For the load function, any bytes of the result vector that | |
15996 are not loaded from memory are set to zero. | |
15997 The value of the @code{addr} argument need not be aligned on a | |
15998 multiple of the vector's element size. | |
15999 | |
16000 The @code{vec_xlx} and @code{vec_xrx} functions extract the single | |
16001 element selected by the @code{index} argument from the vector | |
16002 represented by the @code{data} argument. The @code{index} argument | |
16003 always specifies a byte offset, regardless of the size of the vector | |
16004 element. With @code{vec_xlx}, @code{index} is the offset of the first | |
16005 byte of the element to be extracted. With @code{vec_xrx}, @code{index} | |
16006 represents the last byte of the element to be extracted, measured | |
16007 from the right end of the vector. In other words, the last byte of | |
16008 the element to be extracted is found at position @code{(15 - index)}. | |
16009 There is no requirement that @code{index} be a multiple of the vector | |
16010 element size. However, if the size of the vector element added to | |
16011 @code{index} is greater than 15, the content of the returned value is | |
16012 undefined. | |
16013 | |
16014 The following built-in functions are available for the PowerPC family | |
16015 of processors when hardware decimal floating point | |
16016 (@option{-mhard-dfp}) is available: | |
16017 @smallexample | |
16018 long long __builtin_dxex (_Decimal64); | |
16019 long long __builtin_dxexq (_Decimal128); | |
16020 _Decimal64 __builtin_ddedpd (int, _Decimal64); | |
16021 _Decimal128 __builtin_ddedpdq (int, _Decimal128); | |
16022 _Decimal64 __builtin_denbcd (int, _Decimal64); | |
16023 _Decimal128 __builtin_denbcdq (int, _Decimal128); | |
16024 _Decimal64 __builtin_diex (long long, _Decimal64); | |
16025 _Decimal128 _builtin_diexq (long long, _Decimal128); | |
16026 _Decimal64 __builtin_dscli (_Decimal64, int); | |
16027 _Decimal128 __builtin_dscliq (_Decimal128, int); | |
16028 _Decimal64 __builtin_dscri (_Decimal64, int); | |
16029 _Decimal128 __builtin_dscriq (_Decimal128, int); | |
16030 unsigned long long __builtin_unpack_dec128 (_Decimal128, int); | |
16031 _Decimal128 __builtin_pack_dec128 (unsigned long long, unsigned long long); | |
16032 @end smallexample | |
16033 | |
16034 The following built-in functions are available for the PowerPC family | |
16035 of processors when the Vector Scalar (vsx) instruction set is | |
16036 available: | |
16037 @smallexample | |
16038 unsigned long long __builtin_unpack_vector_int128 (vector __int128_t, int); | |
16039 vector __int128_t __builtin_pack_vector_int128 (unsigned long long, | |
16040 unsigned long long); | |
16041 @end smallexample | |
16042 | 16144 |
16043 @node PowerPC AltiVec/VSX Built-in Functions | 16145 @node PowerPC AltiVec/VSX Built-in Functions |
16044 @subsection PowerPC AltiVec Built-in Functions | 16146 @subsection PowerPC AltiVec/VSX Built-in Functions |
16045 | 16147 |
16046 GCC provides an interface for the PowerPC family of processors to access | 16148 GCC provides an interface for the PowerPC family of processors to access |
16047 the AltiVec operations described in Motorola's AltiVec Programming | 16149 the AltiVec operations described in Motorola's AltiVec Programming |
16048 Interface Manual. The interface is made available by including | 16150 Interface Manual. The interface is made available by including |
16049 @code{<altivec.h>} and using @option{-maltivec} and | 16151 @code{<altivec.h>} and using @option{-maltivec} and |
16063 vector unsigned int | 16165 vector unsigned int |
16064 vector signed int | 16166 vector signed int |
16065 vector bool int | 16167 vector bool int |
16066 vector float | 16168 vector float |
16067 @end smallexample | 16169 @end smallexample |
16068 | |
16069 If @option{-mvsx} is used the following additional vector types are | |
16070 implemented. | |
16071 | |
16072 @smallexample | |
16073 vector unsigned long | |
16074 vector signed long | |
16075 vector double | |
16076 @end smallexample | |
16077 | |
16078 The long types are only implemented for 64-bit code generation, and | |
16079 the long type is only used in the floating point/integer conversion | |
16080 instructions. | |
16081 | 16170 |
16082 GCC's implementation of the high-level language interface available from | 16171 GCC's implementation of the high-level language interface available from |
16083 C and C++ code differs from Motorola's documentation in several ways. | 16172 C and C++ code differs from Motorola's documentation in several ways. |
16084 | 16173 |
16085 @itemize @bullet | 16174 @itemize @bullet |
16134 provided by compliant compilers. Programmers should preferentially use | 16223 provided by compliant compilers. Programmers should preferentially use |
16135 the interfaces described therein. However, historically GCC has provided | 16224 the interfaces described therein. However, historically GCC has provided |
16136 additional interfaces for access to vector instructions. These are | 16225 additional interfaces for access to vector instructions. These are |
16137 briefly described below. | 16226 briefly described below. |
16138 | 16227 |
16228 @menu | |
16229 * PowerPC AltiVec Built-in Functions on ISA 2.05:: | |
16230 * PowerPC AltiVec Built-in Functions Available on ISA 2.06:: | |
16231 * PowerPC AltiVec Built-in Functions Available on ISA 2.07:: | |
16232 * PowerPC AltiVec Built-in Functions Available on ISA 3.0:: | |
16233 @end menu | |
16234 | |
16235 @node PowerPC AltiVec Built-in Functions on ISA 2.05 | |
16236 @subsubsection PowerPC AltiVec Built-in Functions on ISA 2.05 | |
16237 | |
16139 The following interfaces are supported for the generic and specific | 16238 The following interfaces are supported for the generic and specific |
16140 AltiVec operations and the AltiVec predicates. In cases where there | 16239 AltiVec operations and the AltiVec predicates. In cases where there |
16141 is a direct mapping between generic and specific operations, only the | 16240 is a direct mapping between generic and specific operations, only the |
16142 generic names are shown here, although the specific operations can also | 16241 generic names are shown here, although the specific operations can also |
16143 be used. | 16242 be used. |
16158 vector signed char vec_add (vector bool char, vector signed char); | 16257 vector signed char vec_add (vector bool char, vector signed char); |
16159 vector signed char vec_add (vector signed char, vector bool char); | 16258 vector signed char vec_add (vector signed char, vector bool char); |
16160 vector signed char vec_add (vector signed char, vector signed char); | 16259 vector signed char vec_add (vector signed char, vector signed char); |
16161 vector unsigned char vec_add (vector bool char, vector unsigned char); | 16260 vector unsigned char vec_add (vector bool char, vector unsigned char); |
16162 vector unsigned char vec_add (vector unsigned char, vector bool char); | 16261 vector unsigned char vec_add (vector unsigned char, vector bool char); |
16163 vector unsigned char vec_add (vector unsigned char, | 16262 vector unsigned char vec_add (vector unsigned char, vector unsigned char); |
16164 vector unsigned char); | |
16165 vector signed short vec_add (vector bool short, vector signed short); | 16263 vector signed short vec_add (vector bool short, vector signed short); |
16166 vector signed short vec_add (vector signed short, vector bool short); | 16264 vector signed short vec_add (vector signed short, vector bool short); |
16167 vector signed short vec_add (vector signed short, vector signed short); | 16265 vector signed short vec_add (vector signed short, vector signed short); |
16168 vector unsigned short vec_add (vector bool short, | 16266 vector unsigned short vec_add (vector bool short, vector unsigned short); |
16169 vector unsigned short); | 16267 vector unsigned short vec_add (vector unsigned short, vector bool short); |
16170 vector unsigned short vec_add (vector unsigned short, | 16268 vector unsigned short vec_add (vector unsigned short, vector unsigned short); |
16171 vector bool short); | |
16172 vector unsigned short vec_add (vector unsigned short, | |
16173 vector unsigned short); | |
16174 vector signed int vec_add (vector bool int, vector signed int); | 16269 vector signed int vec_add (vector bool int, vector signed int); |
16175 vector signed int vec_add (vector signed int, vector bool int); | 16270 vector signed int vec_add (vector signed int, vector bool int); |
16176 vector signed int vec_add (vector signed int, vector signed int); | 16271 vector signed int vec_add (vector signed int, vector signed int); |
16177 vector unsigned int vec_add (vector bool int, vector unsigned int); | 16272 vector unsigned int vec_add (vector bool int, vector unsigned int); |
16178 vector unsigned int vec_add (vector unsigned int, vector bool int); | 16273 vector unsigned int vec_add (vector unsigned int, vector bool int); |
16179 vector unsigned int vec_add (vector unsigned int, vector unsigned int); | 16274 vector unsigned int vec_add (vector unsigned int, vector unsigned int); |
16180 vector float vec_add (vector float, vector float); | 16275 vector float vec_add (vector float, vector float); |
16181 | 16276 |
16182 vector float vec_vaddfp (vector float, vector float); | |
16183 | |
16184 vector signed int vec_vadduwm (vector bool int, vector signed int); | |
16185 vector signed int vec_vadduwm (vector signed int, vector bool int); | |
16186 vector signed int vec_vadduwm (vector signed int, vector signed int); | |
16187 vector unsigned int vec_vadduwm (vector bool int, vector unsigned int); | |
16188 vector unsigned int vec_vadduwm (vector unsigned int, vector bool int); | |
16189 vector unsigned int vec_vadduwm (vector unsigned int, | |
16190 vector unsigned int); | |
16191 | |
16192 vector signed short vec_vadduhm (vector bool short, | |
16193 vector signed short); | |
16194 vector signed short vec_vadduhm (vector signed short, | |
16195 vector bool short); | |
16196 vector signed short vec_vadduhm (vector signed short, | |
16197 vector signed short); | |
16198 vector unsigned short vec_vadduhm (vector bool short, | |
16199 vector unsigned short); | |
16200 vector unsigned short vec_vadduhm (vector unsigned short, | |
16201 vector bool short); | |
16202 vector unsigned short vec_vadduhm (vector unsigned short, | |
16203 vector unsigned short); | |
16204 | |
16205 vector signed char vec_vaddubm (vector bool char, vector signed char); | |
16206 vector signed char vec_vaddubm (vector signed char, vector bool char); | |
16207 vector signed char vec_vaddubm (vector signed char, vector signed char); | |
16208 vector unsigned char vec_vaddubm (vector bool char, | |
16209 vector unsigned char); | |
16210 vector unsigned char vec_vaddubm (vector unsigned char, | |
16211 vector bool char); | |
16212 vector unsigned char vec_vaddubm (vector unsigned char, | |
16213 vector unsigned char); | |
16214 | |
16215 vector unsigned int vec_addc (vector unsigned int, vector unsigned int); | 16277 vector unsigned int vec_addc (vector unsigned int, vector unsigned int); |
16216 | 16278 |
16217 vector unsigned char vec_adds (vector bool char, vector unsigned char); | 16279 vector unsigned char vec_adds (vector bool char, vector unsigned char); |
16218 vector unsigned char vec_adds (vector unsigned char, vector bool char); | 16280 vector unsigned char vec_adds (vector unsigned char, vector bool char); |
16219 vector unsigned char vec_adds (vector unsigned char, | 16281 vector unsigned char vec_adds (vector unsigned char, vector unsigned char); |
16220 vector unsigned char); | |
16221 vector signed char vec_adds (vector bool char, vector signed char); | 16282 vector signed char vec_adds (vector bool char, vector signed char); |
16222 vector signed char vec_adds (vector signed char, vector bool char); | 16283 vector signed char vec_adds (vector signed char, vector bool char); |
16223 vector signed char vec_adds (vector signed char, vector signed char); | 16284 vector signed char vec_adds (vector signed char, vector signed char); |
16224 vector unsigned short vec_adds (vector bool short, | 16285 vector unsigned short vec_adds (vector bool short, vector unsigned short); |
16225 vector unsigned short); | 16286 vector unsigned short vec_adds (vector unsigned short, vector bool short); |
16226 vector unsigned short vec_adds (vector unsigned short, | 16287 vector unsigned short vec_adds (vector unsigned short, vector unsigned short); |
16227 vector bool short); | |
16228 vector unsigned short vec_adds (vector unsigned short, | |
16229 vector unsigned short); | |
16230 vector signed short vec_adds (vector bool short, vector signed short); | 16288 vector signed short vec_adds (vector bool short, vector signed short); |
16231 vector signed short vec_adds (vector signed short, vector bool short); | 16289 vector signed short vec_adds (vector signed short, vector bool short); |
16232 vector signed short vec_adds (vector signed short, vector signed short); | 16290 vector signed short vec_adds (vector signed short, vector signed short); |
16233 vector unsigned int vec_adds (vector bool int, vector unsigned int); | 16291 vector unsigned int vec_adds (vector bool int, vector unsigned int); |
16234 vector unsigned int vec_adds (vector unsigned int, vector bool int); | 16292 vector unsigned int vec_adds (vector unsigned int, vector bool int); |
16235 vector unsigned int vec_adds (vector unsigned int, vector unsigned int); | 16293 vector unsigned int vec_adds (vector unsigned int, vector unsigned int); |
16236 vector signed int vec_adds (vector bool int, vector signed int); | 16294 vector signed int vec_adds (vector bool int, vector signed int); |
16237 vector signed int vec_adds (vector signed int, vector bool int); | 16295 vector signed int vec_adds (vector signed int, vector bool int); |
16238 vector signed int vec_adds (vector signed int, vector signed int); | 16296 vector signed int vec_adds (vector signed int, vector signed int); |
16239 | |
16240 vector signed int vec_vaddsws (vector bool int, vector signed int); | |
16241 vector signed int vec_vaddsws (vector signed int, vector bool int); | |
16242 vector signed int vec_vaddsws (vector signed int, vector signed int); | |
16243 | |
16244 vector unsigned int vec_vadduws (vector bool int, vector unsigned int); | |
16245 vector unsigned int vec_vadduws (vector unsigned int, vector bool int); | |
16246 vector unsigned int vec_vadduws (vector unsigned int, | |
16247 vector unsigned int); | |
16248 | |
16249 vector signed short vec_vaddshs (vector bool short, | |
16250 vector signed short); | |
16251 vector signed short vec_vaddshs (vector signed short, | |
16252 vector bool short); | |
16253 vector signed short vec_vaddshs (vector signed short, | |
16254 vector signed short); | |
16255 | |
16256 vector unsigned short vec_vadduhs (vector bool short, | |
16257 vector unsigned short); | |
16258 vector unsigned short vec_vadduhs (vector unsigned short, | |
16259 vector bool short); | |
16260 vector unsigned short vec_vadduhs (vector unsigned short, | |
16261 vector unsigned short); | |
16262 | |
16263 vector signed char vec_vaddsbs (vector bool char, vector signed char); | |
16264 vector signed char vec_vaddsbs (vector signed char, vector bool char); | |
16265 vector signed char vec_vaddsbs (vector signed char, vector signed char); | |
16266 | |
16267 vector unsigned char vec_vaddubs (vector bool char, | |
16268 vector unsigned char); | |
16269 vector unsigned char vec_vaddubs (vector unsigned char, | |
16270 vector bool char); | |
16271 vector unsigned char vec_vaddubs (vector unsigned char, | |
16272 vector unsigned char); | |
16273 | |
16274 vector float vec_and (vector float, vector float); | |
16275 vector float vec_and (vector float, vector bool int); | |
16276 vector float vec_and (vector bool int, vector float); | |
16277 vector bool int vec_and (vector bool int, vector bool int); | |
16278 vector signed int vec_and (vector bool int, vector signed int); | |
16279 vector signed int vec_and (vector signed int, vector bool int); | |
16280 vector signed int vec_and (vector signed int, vector signed int); | |
16281 vector unsigned int vec_and (vector bool int, vector unsigned int); | |
16282 vector unsigned int vec_and (vector unsigned int, vector bool int); | |
16283 vector unsigned int vec_and (vector unsigned int, vector unsigned int); | |
16284 vector bool short vec_and (vector bool short, vector bool short); | |
16285 vector signed short vec_and (vector bool short, vector signed short); | |
16286 vector signed short vec_and (vector signed short, vector bool short); | |
16287 vector signed short vec_and (vector signed short, vector signed short); | |
16288 vector unsigned short vec_and (vector bool short, | |
16289 vector unsigned short); | |
16290 vector unsigned short vec_and (vector unsigned short, | |
16291 vector bool short); | |
16292 vector unsigned short vec_and (vector unsigned short, | |
16293 vector unsigned short); | |
16294 vector signed char vec_and (vector bool char, vector signed char); | |
16295 vector bool char vec_and (vector bool char, vector bool char); | |
16296 vector signed char vec_and (vector signed char, vector bool char); | |
16297 vector signed char vec_and (vector signed char, vector signed char); | |
16298 vector unsigned char vec_and (vector bool char, vector unsigned char); | |
16299 vector unsigned char vec_and (vector unsigned char, vector bool char); | |
16300 vector unsigned char vec_and (vector unsigned char, | |
16301 vector unsigned char); | |
16302 | |
16303 vector float vec_andc (vector float, vector float); | |
16304 vector float vec_andc (vector float, vector bool int); | |
16305 vector float vec_andc (vector bool int, vector float); | |
16306 vector bool int vec_andc (vector bool int, vector bool int); | |
16307 vector signed int vec_andc (vector bool int, vector signed int); | |
16308 vector signed int vec_andc (vector signed int, vector bool int); | |
16309 vector signed int vec_andc (vector signed int, vector signed int); | |
16310 vector unsigned int vec_andc (vector bool int, vector unsigned int); | |
16311 vector unsigned int vec_andc (vector unsigned int, vector bool int); | |
16312 vector unsigned int vec_andc (vector unsigned int, vector unsigned int); | |
16313 vector bool short vec_andc (vector bool short, vector bool short); | |
16314 vector signed short vec_andc (vector bool short, vector signed short); | |
16315 vector signed short vec_andc (vector signed short, vector bool short); | |
16316 vector signed short vec_andc (vector signed short, vector signed short); | |
16317 vector unsigned short vec_andc (vector bool short, | |
16318 vector unsigned short); | |
16319 vector unsigned short vec_andc (vector unsigned short, | |
16320 vector bool short); | |
16321 vector unsigned short vec_andc (vector unsigned short, | |
16322 vector unsigned short); | |
16323 vector signed char vec_andc (vector bool char, vector signed char); | |
16324 vector bool char vec_andc (vector bool char, vector bool char); | |
16325 vector signed char vec_andc (vector signed char, vector bool char); | |
16326 vector signed char vec_andc (vector signed char, vector signed char); | |
16327 vector unsigned char vec_andc (vector bool char, vector unsigned char); | |
16328 vector unsigned char vec_andc (vector unsigned char, vector bool char); | |
16329 vector unsigned char vec_andc (vector unsigned char, | |
16330 vector unsigned char); | |
16331 | |
16332 vector unsigned char vec_avg (vector unsigned char, | |
16333 vector unsigned char); | |
16334 vector signed char vec_avg (vector signed char, vector signed char); | |
16335 vector unsigned short vec_avg (vector unsigned short, | |
16336 vector unsigned short); | |
16337 vector signed short vec_avg (vector signed short, vector signed short); | |
16338 vector unsigned int vec_avg (vector unsigned int, vector unsigned int); | |
16339 vector signed int vec_avg (vector signed int, vector signed int); | |
16340 | |
16341 vector signed int vec_vavgsw (vector signed int, vector signed int); | |
16342 | |
16343 vector unsigned int vec_vavguw (vector unsigned int, | |
16344 vector unsigned int); | |
16345 | |
16346 vector signed short vec_vavgsh (vector signed short, | |
16347 vector signed short); | |
16348 | |
16349 vector unsigned short vec_vavguh (vector unsigned short, | |
16350 vector unsigned short); | |
16351 | |
16352 vector signed char vec_vavgsb (vector signed char, vector signed char); | |
16353 | |
16354 vector unsigned char vec_vavgub (vector unsigned char, | |
16355 vector unsigned char); | |
16356 | |
16357 vector float vec_copysign (vector float); | |
16358 | |
16359 vector float vec_ceil (vector float); | |
16360 | |
16361 vector signed int vec_cmpb (vector float, vector float); | |
16362 | |
16363 vector bool char vec_cmpeq (vector bool char, vector bool char); | |
16364 vector bool short vec_cmpeq (vector bool short, vector bool short); | |
16365 vector bool int vec_cmpeq (vector bool int, vector bool int); | |
16366 vector bool char vec_cmpeq (vector signed char, vector signed char); | |
16367 vector bool char vec_cmpeq (vector unsigned char, vector unsigned char); | |
16368 vector bool short vec_cmpeq (vector signed short, vector signed short); | |
16369 vector bool short vec_cmpeq (vector unsigned short, | |
16370 vector unsigned short); | |
16371 vector bool int vec_cmpeq (vector signed int, vector signed int); | |
16372 vector bool int vec_cmpeq (vector unsigned int, vector unsigned int); | |
16373 vector bool int vec_cmpeq (vector float, vector float); | |
16374 | |
16375 vector bool int vec_vcmpeqfp (vector float, vector float); | |
16376 | |
16377 vector bool int vec_vcmpequw (vector signed int, vector signed int); | |
16378 vector bool int vec_vcmpequw (vector unsigned int, vector unsigned int); | |
16379 | |
16380 vector bool short vec_vcmpequh (vector signed short, | |
16381 vector signed short); | |
16382 vector bool short vec_vcmpequh (vector unsigned short, | |
16383 vector unsigned short); | |
16384 | |
16385 vector bool char vec_vcmpequb (vector signed char, vector signed char); | |
16386 vector bool char vec_vcmpequb (vector unsigned char, | |
16387 vector unsigned char); | |
16388 | |
16389 vector bool int vec_cmpge (vector float, vector float); | |
16390 | |
16391 vector bool char vec_cmpgt (vector unsigned char, vector unsigned char); | |
16392 vector bool char vec_cmpgt (vector signed char, vector signed char); | |
16393 vector bool short vec_cmpgt (vector unsigned short, | |
16394 vector unsigned short); | |
16395 vector bool short vec_cmpgt (vector signed short, vector signed short); | |
16396 vector bool int vec_cmpgt (vector unsigned int, vector unsigned int); | |
16397 vector bool int vec_cmpgt (vector signed int, vector signed int); | |
16398 vector bool int vec_cmpgt (vector float, vector float); | |
16399 | |
16400 vector bool int vec_vcmpgtfp (vector float, vector float); | |
16401 | |
16402 vector bool int vec_vcmpgtsw (vector signed int, vector signed int); | |
16403 | |
16404 vector bool int vec_vcmpgtuw (vector unsigned int, vector unsigned int); | |
16405 | |
16406 vector bool short vec_vcmpgtsh (vector signed short, | |
16407 vector signed short); | |
16408 | |
16409 vector bool short vec_vcmpgtuh (vector unsigned short, | |
16410 vector unsigned short); | |
16411 | |
16412 vector bool char vec_vcmpgtsb (vector signed char, vector signed char); | |
16413 | |
16414 vector bool char vec_vcmpgtub (vector unsigned char, | |
16415 vector unsigned char); | |
16416 | |
16417 vector bool int vec_cmple (vector float, vector float); | |
16418 | |
16419 vector bool char vec_cmplt (vector unsigned char, vector unsigned char); | |
16420 vector bool char vec_cmplt (vector signed char, vector signed char); | |
16421 vector bool short vec_cmplt (vector unsigned short, | |
16422 vector unsigned short); | |
16423 vector bool short vec_cmplt (vector signed short, vector signed short); | |
16424 vector bool int vec_cmplt (vector unsigned int, vector unsigned int); | |
16425 vector bool int vec_cmplt (vector signed int, vector signed int); | |
16426 vector bool int vec_cmplt (vector float, vector float); | |
16427 | |
16428 vector float vec_cpsgn (vector float, vector float); | |
16429 | |
16430 vector float vec_ctf (vector unsigned int, const int); | |
16431 vector float vec_ctf (vector signed int, const int); | |
16432 vector double vec_ctf (vector unsigned long, const int); | |
16433 vector double vec_ctf (vector signed long, const int); | |
16434 | |
16435 vector float vec_vcfsx (vector signed int, const int); | |
16436 | |
16437 vector float vec_vcfux (vector unsigned int, const int); | |
16438 | |
16439 vector signed int vec_cts (vector float, const int); | |
16440 vector signed long vec_cts (vector double, const int); | |
16441 | |
16442 vector unsigned int vec_ctu (vector float, const int); | |
16443 vector unsigned long vec_ctu (vector double, const int); | |
16444 | |
16445 vector double vec_doublee (vector float); | |
16446 vector double vec_doublee (vector signed int); | |
16447 vector double vec_doublee (vector unsigned int); | |
16448 | |
16449 vector double vec_doubleo (vector float); | |
16450 vector double vec_doubleo (vector signed int); | |
16451 vector double vec_doubleo (vector unsigned int); | |
16452 | |
16453 vector double vec_doubleh (vector float); | |
16454 vector double vec_doubleh (vector signed int); | |
16455 vector double vec_doubleh (vector unsigned int); | |
16456 | |
16457 vector double vec_doublel (vector float); | |
16458 vector double vec_doublel (vector signed int); | |
16459 vector double vec_doublel (vector unsigned int); | |
16460 | |
16461 void vec_dss (const int); | |
16462 | |
16463 void vec_dssall (void); | |
16464 | |
16465 void vec_dst (const vector unsigned char *, int, const int); | |
16466 void vec_dst (const vector signed char *, int, const int); | |
16467 void vec_dst (const vector bool char *, int, const int); | |
16468 void vec_dst (const vector unsigned short *, int, const int); | |
16469 void vec_dst (const vector signed short *, int, const int); | |
16470 void vec_dst (const vector bool short *, int, const int); | |
16471 void vec_dst (const vector pixel *, int, const int); | |
16472 void vec_dst (const vector unsigned int *, int, const int); | |
16473 void vec_dst (const vector signed int *, int, const int); | |
16474 void vec_dst (const vector bool int *, int, const int); | |
16475 void vec_dst (const vector float *, int, const int); | |
16476 void vec_dst (const unsigned char *, int, const int); | |
16477 void vec_dst (const signed char *, int, const int); | |
16478 void vec_dst (const unsigned short *, int, const int); | |
16479 void vec_dst (const short *, int, const int); | |
16480 void vec_dst (const unsigned int *, int, const int); | |
16481 void vec_dst (const int *, int, const int); | |
16482 void vec_dst (const unsigned long *, int, const int); | |
16483 void vec_dst (const long *, int, const int); | |
16484 void vec_dst (const float *, int, const int); | |
16485 | |
16486 void vec_dstst (const vector unsigned char *, int, const int); | |
16487 void vec_dstst (const vector signed char *, int, const int); | |
16488 void vec_dstst (const vector bool char *, int, const int); | |
16489 void vec_dstst (const vector unsigned short *, int, const int); | |
16490 void vec_dstst (const vector signed short *, int, const int); | |
16491 void vec_dstst (const vector bool short *, int, const int); | |
16492 void vec_dstst (const vector pixel *, int, const int); | |
16493 void vec_dstst (const vector unsigned int *, int, const int); | |
16494 void vec_dstst (const vector signed int *, int, const int); | |
16495 void vec_dstst (const vector bool int *, int, const int); | |
16496 void vec_dstst (const vector float *, int, const int); | |
16497 void vec_dstst (const unsigned char *, int, const int); | |
16498 void vec_dstst (const signed char *, int, const int); | |
16499 void vec_dstst (const unsigned short *, int, const int); | |
16500 void vec_dstst (const short *, int, const int); | |
16501 void vec_dstst (const unsigned int *, int, const int); | |
16502 void vec_dstst (const int *, int, const int); | |
16503 void vec_dstst (const unsigned long *, int, const int); | |
16504 void vec_dstst (const long *, int, const int); | |
16505 void vec_dstst (const float *, int, const int); | |
16506 | |
16507 void vec_dststt (const vector unsigned char *, int, const int); | |
16508 void vec_dststt (const vector signed char *, int, const int); | |
16509 void vec_dststt (const vector bool char *, int, const int); | |
16510 void vec_dststt (const vector unsigned short *, int, const int); | |
16511 void vec_dststt (const vector signed short *, int, const int); | |
16512 void vec_dststt (const vector bool short *, int, const int); | |
16513 void vec_dststt (const vector pixel *, int, const int); | |
16514 void vec_dststt (const vector unsigned int *, int, const int); | |
16515 void vec_dststt (const vector signed int *, int, const int); | |
16516 void vec_dststt (const vector bool int *, int, const int); | |
16517 void vec_dststt (const vector float *, int, const int); | |
16518 void vec_dststt (const unsigned char *, int, const int); | |
16519 void vec_dststt (const signed char *, int, const int); | |
16520 void vec_dststt (const unsigned short *, int, const int); | |
16521 void vec_dststt (const short *, int, const int); | |
16522 void vec_dststt (const unsigned int *, int, const int); | |
16523 void vec_dststt (const int *, int, const int); | |
16524 void vec_dststt (const unsigned long *, int, const int); | |
16525 void vec_dststt (const long *, int, const int); | |
16526 void vec_dststt (const float *, int, const int); | |
16527 | |
16528 void vec_dstt (const vector unsigned char *, int, const int); | |
16529 void vec_dstt (const vector signed char *, int, const int); | |
16530 void vec_dstt (const vector bool char *, int, const int); | |
16531 void vec_dstt (const vector unsigned short *, int, const int); | |
16532 void vec_dstt (const vector signed short *, int, const int); | |
16533 void vec_dstt (const vector bool short *, int, const int); | |
16534 void vec_dstt (const vector pixel *, int, const int); | |
16535 void vec_dstt (const vector unsigned int *, int, const int); | |
16536 void vec_dstt (const vector signed int *, int, const int); | |
16537 void vec_dstt (const vector bool int *, int, const int); | |
16538 void vec_dstt (const vector float *, int, const int); | |
16539 void vec_dstt (const unsigned char *, int, const int); | |
16540 void vec_dstt (const signed char *, int, const int); | |
16541 void vec_dstt (const unsigned short *, int, const int); | |
16542 void vec_dstt (const short *, int, const int); | |
16543 void vec_dstt (const unsigned int *, int, const int); | |
16544 void vec_dstt (const int *, int, const int); | |
16545 void vec_dstt (const unsigned long *, int, const int); | |
16546 void vec_dstt (const long *, int, const int); | |
16547 void vec_dstt (const float *, int, const int); | |
16548 | |
16549 vector float vec_expte (vector float); | |
16550 | |
16551 vector float vec_floor (vector float); | |
16552 | |
16553 vector float vec_float (vector signed int); | |
16554 vector float vec_float (vector unsigned int); | |
16555 | |
16556 vector float vec_float2 (vector signed long long, vector signed long long); | |
16557 vector float vec_float2 (vector unsigned long long, vector signed long long); | |
16558 | |
16559 vector float vec_floate (vector double); | |
16560 vector float vec_floate (vector signed long long); | |
16561 vector float vec_floate (vector unsigned long long); | |
16562 | |
16563 vector float vec_floato (vector double); | |
16564 vector float vec_floato (vector signed long long); | |
16565 vector float vec_floato (vector unsigned long long); | |
16566 | |
16567 vector float vec_ld (int, const vector float *); | |
16568 vector float vec_ld (int, const float *); | |
16569 vector bool int vec_ld (int, const vector bool int *); | |
16570 vector signed int vec_ld (int, const vector signed int *); | |
16571 vector signed int vec_ld (int, const int *); | |
16572 vector signed int vec_ld (int, const long *); | |
16573 vector unsigned int vec_ld (int, const vector unsigned int *); | |
16574 vector unsigned int vec_ld (int, const unsigned int *); | |
16575 vector unsigned int vec_ld (int, const unsigned long *); | |
16576 vector bool short vec_ld (int, const vector bool short *); | |
16577 vector pixel vec_ld (int, const vector pixel *); | |
16578 vector signed short vec_ld (int, const vector signed short *); | |
16579 vector signed short vec_ld (int, const short *); | |
16580 vector unsigned short vec_ld (int, const vector unsigned short *); | |
16581 vector unsigned short vec_ld (int, const unsigned short *); | |
16582 vector bool char vec_ld (int, const vector bool char *); | |
16583 vector signed char vec_ld (int, const vector signed char *); | |
16584 vector signed char vec_ld (int, const signed char *); | |
16585 vector unsigned char vec_ld (int, const vector unsigned char *); | |
16586 vector unsigned char vec_ld (int, const unsigned char *); | |
16587 | |
16588 vector signed char vec_lde (int, const signed char *); | |
16589 vector unsigned char vec_lde (int, const unsigned char *); | |
16590 vector signed short vec_lde (int, const short *); | |
16591 vector unsigned short vec_lde (int, const unsigned short *); | |
16592 vector float vec_lde (int, const float *); | |
16593 vector signed int vec_lde (int, const int *); | |
16594 vector unsigned int vec_lde (int, const unsigned int *); | |
16595 vector signed int vec_lde (int, const long *); | |
16596 vector unsigned int vec_lde (int, const unsigned long *); | |
16597 | |
16598 vector float vec_lvewx (int, float *); | |
16599 vector signed int vec_lvewx (int, int *); | |
16600 vector unsigned int vec_lvewx (int, unsigned int *); | |
16601 vector signed int vec_lvewx (int, long *); | |
16602 vector unsigned int vec_lvewx (int, unsigned long *); | |
16603 | |
16604 vector signed short vec_lvehx (int, short *); | |
16605 vector unsigned short vec_lvehx (int, unsigned short *); | |
16606 | |
16607 vector signed char vec_lvebx (int, char *); | |
16608 vector unsigned char vec_lvebx (int, unsigned char *); | |
16609 | |
16610 vector float vec_ldl (int, const vector float *); | |
16611 vector float vec_ldl (int, const float *); | |
16612 vector bool int vec_ldl (int, const vector bool int *); | |
16613 vector signed int vec_ldl (int, const vector signed int *); | |
16614 vector signed int vec_ldl (int, const int *); | |
16615 vector signed int vec_ldl (int, const long *); | |
16616 vector unsigned int vec_ldl (int, const vector unsigned int *); | |
16617 vector unsigned int vec_ldl (int, const unsigned int *); | |
16618 vector unsigned int vec_ldl (int, const unsigned long *); | |
16619 vector bool short vec_ldl (int, const vector bool short *); | |
16620 vector pixel vec_ldl (int, const vector pixel *); | |
16621 vector signed short vec_ldl (int, const vector signed short *); | |
16622 vector signed short vec_ldl (int, const short *); | |
16623 vector unsigned short vec_ldl (int, const vector unsigned short *); | |
16624 vector unsigned short vec_ldl (int, const unsigned short *); | |
16625 vector bool char vec_ldl (int, const vector bool char *); | |
16626 vector signed char vec_ldl (int, const vector signed char *); | |
16627 vector signed char vec_ldl (int, const signed char *); | |
16628 vector unsigned char vec_ldl (int, const vector unsigned char *); | |
16629 vector unsigned char vec_ldl (int, const unsigned char *); | |
16630 | |
16631 vector float vec_loge (vector float); | |
16632 | |
16633 vector unsigned char vec_lvsl (int, const volatile unsigned char *); | |
16634 vector unsigned char vec_lvsl (int, const volatile signed char *); | |
16635 vector unsigned char vec_lvsl (int, const volatile unsigned short *); | |
16636 vector unsigned char vec_lvsl (int, const volatile short *); | |
16637 vector unsigned char vec_lvsl (int, const volatile unsigned int *); | |
16638 vector unsigned char vec_lvsl (int, const volatile int *); | |
16639 vector unsigned char vec_lvsl (int, const volatile unsigned long *); | |
16640 vector unsigned char vec_lvsl (int, const volatile long *); | |
16641 vector unsigned char vec_lvsl (int, const volatile float *); | |
16642 | |
16643 vector unsigned char vec_lvsr (int, const volatile unsigned char *); | |
16644 vector unsigned char vec_lvsr (int, const volatile signed char *); | |
16645 vector unsigned char vec_lvsr (int, const volatile unsigned short *); | |
16646 vector unsigned char vec_lvsr (int, const volatile short *); | |
16647 vector unsigned char vec_lvsr (int, const volatile unsigned int *); | |
16648 vector unsigned char vec_lvsr (int, const volatile int *); | |
16649 vector unsigned char vec_lvsr (int, const volatile unsigned long *); | |
16650 vector unsigned char vec_lvsr (int, const volatile long *); | |
16651 vector unsigned char vec_lvsr (int, const volatile float *); | |
16652 | |
16653 vector float vec_madd (vector float, vector float, vector float); | |
16654 | |
16655 vector signed short vec_madds (vector signed short, | |
16656 vector signed short, | |
16657 vector signed short); | |
16658 | |
16659 vector unsigned char vec_max (vector bool char, vector unsigned char); | |
16660 vector unsigned char vec_max (vector unsigned char, vector bool char); | |
16661 vector unsigned char vec_max (vector unsigned char, | |
16662 vector unsigned char); | |
16663 vector signed char vec_max (vector bool char, vector signed char); | |
16664 vector signed char vec_max (vector signed char, vector bool char); | |
16665 vector signed char vec_max (vector signed char, vector signed char); | |
16666 vector unsigned short vec_max (vector bool short, | |
16667 vector unsigned short); | |
16668 vector unsigned short vec_max (vector unsigned short, | |
16669 vector bool short); | |
16670 vector unsigned short vec_max (vector unsigned short, | |
16671 vector unsigned short); | |
16672 vector signed short vec_max (vector bool short, vector signed short); | |
16673 vector signed short vec_max (vector signed short, vector bool short); | |
16674 vector signed short vec_max (vector signed short, vector signed short); | |
16675 vector unsigned int vec_max (vector bool int, vector unsigned int); | |
16676 vector unsigned int vec_max (vector unsigned int, vector bool int); | |
16677 vector unsigned int vec_max (vector unsigned int, vector unsigned int); | |
16678 vector signed int vec_max (vector bool int, vector signed int); | |
16679 vector signed int vec_max (vector signed int, vector bool int); | |
16680 vector signed int vec_max (vector signed int, vector signed int); | |
16681 vector float vec_max (vector float, vector float); | |
16682 | |
16683 vector float vec_vmaxfp (vector float, vector float); | |
16684 | |
16685 vector signed int vec_vmaxsw (vector bool int, vector signed int); | |
16686 vector signed int vec_vmaxsw (vector signed int, vector bool int); | |
16687 vector signed int vec_vmaxsw (vector signed int, vector signed int); | |
16688 | |
16689 vector unsigned int vec_vmaxuw (vector bool int, vector unsigned int); | |
16690 vector unsigned int vec_vmaxuw (vector unsigned int, vector bool int); | |
16691 vector unsigned int vec_vmaxuw (vector unsigned int, | |
16692 vector unsigned int); | |
16693 | |
16694 vector signed short vec_vmaxsh (vector bool short, vector signed short); | |
16695 vector signed short vec_vmaxsh (vector signed short, vector bool short); | |
16696 vector signed short vec_vmaxsh (vector signed short, | |
16697 vector signed short); | |
16698 | |
16699 vector unsigned short vec_vmaxuh (vector bool short, | |
16700 vector unsigned short); | |
16701 vector unsigned short vec_vmaxuh (vector unsigned short, | |
16702 vector bool short); | |
16703 vector unsigned short vec_vmaxuh (vector unsigned short, | |
16704 vector unsigned short); | |
16705 | |
16706 vector signed char vec_vmaxsb (vector bool char, vector signed char); | |
16707 vector signed char vec_vmaxsb (vector signed char, vector bool char); | |
16708 vector signed char vec_vmaxsb (vector signed char, vector signed char); | |
16709 | |
16710 vector unsigned char vec_vmaxub (vector bool char, | |
16711 vector unsigned char); | |
16712 vector unsigned char vec_vmaxub (vector unsigned char, | |
16713 vector bool char); | |
16714 vector unsigned char vec_vmaxub (vector unsigned char, | |
16715 vector unsigned char); | |
16716 | |
16717 vector bool char vec_mergeh (vector bool char, vector bool char); | |
16718 vector signed char vec_mergeh (vector signed char, vector signed char); | |
16719 vector unsigned char vec_mergeh (vector unsigned char, | |
16720 vector unsigned char); | |
16721 vector bool short vec_mergeh (vector bool short, vector bool short); | |
16722 vector pixel vec_mergeh (vector pixel, vector pixel); | |
16723 vector signed short vec_mergeh (vector signed short, | |
16724 vector signed short); | |
16725 vector unsigned short vec_mergeh (vector unsigned short, | |
16726 vector unsigned short); | |
16727 vector float vec_mergeh (vector float, vector float); | |
16728 vector bool int vec_mergeh (vector bool int, vector bool int); | |
16729 vector signed int vec_mergeh (vector signed int, vector signed int); | |
16730 vector unsigned int vec_mergeh (vector unsigned int, | |
16731 vector unsigned int); | |
16732 | |
16733 vector float vec_vmrghw (vector float, vector float); | |
16734 vector bool int vec_vmrghw (vector bool int, vector bool int); | |
16735 vector signed int vec_vmrghw (vector signed int, vector signed int); | |
16736 vector unsigned int vec_vmrghw (vector unsigned int, | |
16737 vector unsigned int); | |
16738 | |
16739 vector bool short vec_vmrghh (vector bool short, vector bool short); | |
16740 vector signed short vec_vmrghh (vector signed short, | |
16741 vector signed short); | |
16742 vector unsigned short vec_vmrghh (vector unsigned short, | |
16743 vector unsigned short); | |
16744 vector pixel vec_vmrghh (vector pixel, vector pixel); | |
16745 | |
16746 vector bool char vec_vmrghb (vector bool char, vector bool char); | |
16747 vector signed char vec_vmrghb (vector signed char, vector signed char); | |
16748 vector unsigned char vec_vmrghb (vector unsigned char, | |
16749 vector unsigned char); | |
16750 | |
16751 vector bool char vec_mergel (vector bool char, vector bool char); | |
16752 vector signed char vec_mergel (vector signed char, vector signed char); | |
16753 vector unsigned char vec_mergel (vector unsigned char, | |
16754 vector unsigned char); | |
16755 vector bool short vec_mergel (vector bool short, vector bool short); | |
16756 vector pixel vec_mergel (vector pixel, vector pixel); | |
16757 vector signed short vec_mergel (vector signed short, | |
16758 vector signed short); | |
16759 vector unsigned short vec_mergel (vector unsigned short, | |
16760 vector unsigned short); | |
16761 vector float vec_mergel (vector float, vector float); | |
16762 vector bool int vec_mergel (vector bool int, vector bool int); | |
16763 vector signed int vec_mergel (vector signed int, vector signed int); | |
16764 vector unsigned int vec_mergel (vector unsigned int, | |
16765 vector unsigned int); | |
16766 | |
16767 vector float vec_vmrglw (vector float, vector float); | |
16768 vector signed int vec_vmrglw (vector signed int, vector signed int); | |
16769 vector unsigned int vec_vmrglw (vector unsigned int, | |
16770 vector unsigned int); | |
16771 vector bool int vec_vmrglw (vector bool int, vector bool int); | |
16772 | |
16773 vector bool short vec_vmrglh (vector bool short, vector bool short); | |
16774 vector signed short vec_vmrglh (vector signed short, | |
16775 vector signed short); | |
16776 vector unsigned short vec_vmrglh (vector unsigned short, | |
16777 vector unsigned short); | |
16778 vector pixel vec_vmrglh (vector pixel, vector pixel); | |
16779 | |
16780 vector bool char vec_vmrglb (vector bool char, vector bool char); | |
16781 vector signed char vec_vmrglb (vector signed char, vector signed char); | |
16782 vector unsigned char vec_vmrglb (vector unsigned char, | |
16783 vector unsigned char); | |
16784 | |
16785 vector unsigned short vec_mfvscr (void); | |
16786 | |
16787 vector unsigned char vec_min (vector bool char, vector unsigned char); | |
16788 vector unsigned char vec_min (vector unsigned char, vector bool char); | |
16789 vector unsigned char vec_min (vector unsigned char, | |
16790 vector unsigned char); | |
16791 vector signed char vec_min (vector bool char, vector signed char); | |
16792 vector signed char vec_min (vector signed char, vector bool char); | |
16793 vector signed char vec_min (vector signed char, vector signed char); | |
16794 vector unsigned short vec_min (vector bool short, | |
16795 vector unsigned short); | |
16796 vector unsigned short vec_min (vector unsigned short, | |
16797 vector bool short); | |
16798 vector unsigned short vec_min (vector unsigned short, | |
16799 vector unsigned short); | |
16800 vector signed short vec_min (vector bool short, vector signed short); | |
16801 vector signed short vec_min (vector signed short, vector bool short); | |
16802 vector signed short vec_min (vector signed short, vector signed short); | |
16803 vector unsigned int vec_min (vector bool int, vector unsigned int); | |
16804 vector unsigned int vec_min (vector unsigned int, vector bool int); | |
16805 vector unsigned int vec_min (vector unsigned int, vector unsigned int); | |
16806 vector signed int vec_min (vector bool int, vector signed int); | |
16807 vector signed int vec_min (vector signed int, vector bool int); | |
16808 vector signed int vec_min (vector signed int, vector signed int); | |
16809 vector float vec_min (vector float, vector float); | |
16810 | |
16811 vector float vec_vminfp (vector float, vector float); | |
16812 | |
16813 vector signed int vec_vminsw (vector bool int, vector signed int); | |
16814 vector signed int vec_vminsw (vector signed int, vector bool int); | |
16815 vector signed int vec_vminsw (vector signed int, vector signed int); | |
16816 | |
16817 vector unsigned int vec_vminuw (vector bool int, vector unsigned int); | |
16818 vector unsigned int vec_vminuw (vector unsigned int, vector bool int); | |
16819 vector unsigned int vec_vminuw (vector unsigned int, | |
16820 vector unsigned int); | |
16821 | |
16822 vector signed short vec_vminsh (vector bool short, vector signed short); | |
16823 vector signed short vec_vminsh (vector signed short, vector bool short); | |
16824 vector signed short vec_vminsh (vector signed short, | |
16825 vector signed short); | |
16826 | |
16827 vector unsigned short vec_vminuh (vector bool short, | |
16828 vector unsigned short); | |
16829 vector unsigned short vec_vminuh (vector unsigned short, | |
16830 vector bool short); | |
16831 vector unsigned short vec_vminuh (vector unsigned short, | |
16832 vector unsigned short); | |
16833 | |
16834 vector signed char vec_vminsb (vector bool char, vector signed char); | |
16835 vector signed char vec_vminsb (vector signed char, vector bool char); | |
16836 vector signed char vec_vminsb (vector signed char, vector signed char); | |
16837 | |
16838 vector unsigned char vec_vminub (vector bool char, | |
16839 vector unsigned char); | |
16840 vector unsigned char vec_vminub (vector unsigned char, | |
16841 vector bool char); | |
16842 vector unsigned char vec_vminub (vector unsigned char, | |
16843 vector unsigned char); | |
16844 | |
16845 vector signed short vec_mladd (vector signed short, | |
16846 vector signed short, | |
16847 vector signed short); | |
16848 vector signed short vec_mladd (vector signed short, | |
16849 vector unsigned short, | |
16850 vector unsigned short); | |
16851 vector signed short vec_mladd (vector unsigned short, | |
16852 vector signed short, | |
16853 vector signed short); | |
16854 vector unsigned short vec_mladd (vector unsigned short, | |
16855 vector unsigned short, | |
16856 vector unsigned short); | |
16857 | |
16858 vector signed short vec_mradds (vector signed short, | |
16859 vector signed short, | |
16860 vector signed short); | |
16861 | |
16862 vector unsigned int vec_msum (vector unsigned char, | |
16863 vector unsigned char, | |
16864 vector unsigned int); | |
16865 vector signed int vec_msum (vector signed char, | |
16866 vector unsigned char, | |
16867 vector signed int); | |
16868 vector unsigned int vec_msum (vector unsigned short, | |
16869 vector unsigned short, | |
16870 vector unsigned int); | |
16871 vector signed int vec_msum (vector signed short, | |
16872 vector signed short, | |
16873 vector signed int); | |
16874 | |
16875 vector signed int vec_vmsumshm (vector signed short, | |
16876 vector signed short, | |
16877 vector signed int); | |
16878 | |
16879 vector unsigned int vec_vmsumuhm (vector unsigned short, | |
16880 vector unsigned short, | |
16881 vector unsigned int); | |
16882 | |
16883 vector signed int vec_vmsummbm (vector signed char, | |
16884 vector unsigned char, | |
16885 vector signed int); | |
16886 | |
16887 vector unsigned int vec_vmsumubm (vector unsigned char, | |
16888 vector unsigned char, | |
16889 vector unsigned int); | |
16890 | |
16891 vector unsigned int vec_msums (vector unsigned short, | |
16892 vector unsigned short, | |
16893 vector unsigned int); | |
16894 vector signed int vec_msums (vector signed short, | |
16895 vector signed short, | |
16896 vector signed int); | |
16897 | |
16898 vector signed int vec_vmsumshs (vector signed short, | |
16899 vector signed short, | |
16900 vector signed int); | |
16901 | |
16902 vector unsigned int vec_vmsumuhs (vector unsigned short, | |
16903 vector unsigned short, | |
16904 vector unsigned int); | |
16905 | |
16906 void vec_mtvscr (vector signed int); | |
16907 void vec_mtvscr (vector unsigned int); | |
16908 void vec_mtvscr (vector bool int); | |
16909 void vec_mtvscr (vector signed short); | |
16910 void vec_mtvscr (vector unsigned short); | |
16911 void vec_mtvscr (vector bool short); | |
16912 void vec_mtvscr (vector pixel); | |
16913 void vec_mtvscr (vector signed char); | |
16914 void vec_mtvscr (vector unsigned char); | |
16915 void vec_mtvscr (vector bool char); | |
16916 | |
16917 vector unsigned short vec_mule (vector unsigned char, | |
16918 vector unsigned char); | |
16919 vector signed short vec_mule (vector signed char, | |
16920 vector signed char); | |
16921 vector unsigned int vec_mule (vector unsigned short, | |
16922 vector unsigned short); | |
16923 vector signed int vec_mule (vector signed short, vector signed short); | |
16924 vector unsigned long long vec_mule (vector unsigned int, | |
16925 vector unsigned int); | |
16926 vector signed long long vec_mule (vector signed int, | |
16927 vector signed int); | |
16928 | |
16929 vector signed int vec_vmulesh (vector signed short, | |
16930 vector signed short); | |
16931 | |
16932 vector unsigned int vec_vmuleuh (vector unsigned short, | |
16933 vector unsigned short); | |
16934 | |
16935 vector signed short vec_vmulesb (vector signed char, | |
16936 vector signed char); | |
16937 | |
16938 vector unsigned short vec_vmuleub (vector unsigned char, | |
16939 vector unsigned char); | |
16940 | |
16941 vector unsigned short vec_mulo (vector unsigned char, | |
16942 vector unsigned char); | |
16943 vector signed short vec_mulo (vector signed char, vector signed char); | |
16944 vector unsigned int vec_mulo (vector unsigned short, | |
16945 vector unsigned short); | |
16946 vector signed int vec_mulo (vector signed short, vector signed short); | |
16947 vector unsigned long long vec_mulo (vector unsigned int, | |
16948 vector unsigned int); | |
16949 vector signed long long vec_mulo (vector signed int, | |
16950 vector signed int); | |
16951 | |
16952 vector signed int vec_vmulosh (vector signed short, | |
16953 vector signed short); | |
16954 | |
16955 vector unsigned int vec_vmulouh (vector unsigned short, | |
16956 vector unsigned short); | |
16957 | |
16958 vector signed short vec_vmulosb (vector signed char, | |
16959 vector signed char); | |
16960 | |
16961 vector unsigned short vec_vmuloub (vector unsigned char, | |
16962 vector unsigned char); | |
16963 | |
16964 vector float vec_nmsub (vector float, vector float, vector float); | |
16965 | |
16966 vector signed char vec_nabs (vector signed char); | |
16967 vector signed short vec_nabs (vector signed short); | |
16968 vector signed int vec_nabs (vector signed int); | |
16969 vector float vec_nabs (vector float); | |
16970 vector double vec_nabs (vector double); | |
16971 | |
16972 vector signed char vec_neg (vector signed char); | |
16973 vector signed short vec_neg (vector signed short); | |
16974 vector signed int vec_neg (vector signed int); | |
16975 vector signed long long vec_neg (vector signed long long); | |
16976 vector float char vec_neg (vector float); | |
16977 vector double vec_neg (vector double); | |
16978 | |
16979 vector float vec_nor (vector float, vector float); | |
16980 vector signed int vec_nor (vector signed int, vector signed int); | |
16981 vector unsigned int vec_nor (vector unsigned int, vector unsigned int); | |
16982 vector bool int vec_nor (vector bool int, vector bool int); | |
16983 vector signed short vec_nor (vector signed short, vector signed short); | |
16984 vector unsigned short vec_nor (vector unsigned short, | |
16985 vector unsigned short); | |
16986 vector bool short vec_nor (vector bool short, vector bool short); | |
16987 vector signed char vec_nor (vector signed char, vector signed char); | |
16988 vector unsigned char vec_nor (vector unsigned char, | |
16989 vector unsigned char); | |
16990 vector bool char vec_nor (vector bool char, vector bool char); | |
16991 | |
16992 vector float vec_or (vector float, vector float); | |
16993 vector float vec_or (vector float, vector bool int); | |
16994 vector float vec_or (vector bool int, vector float); | |
16995 vector bool int vec_or (vector bool int, vector bool int); | |
16996 vector signed int vec_or (vector bool int, vector signed int); | |
16997 vector signed int vec_or (vector signed int, vector bool int); | |
16998 vector signed int vec_or (vector signed int, vector signed int); | |
16999 vector unsigned int vec_or (vector bool int, vector unsigned int); | |
17000 vector unsigned int vec_or (vector unsigned int, vector bool int); | |
17001 vector unsigned int vec_or (vector unsigned int, vector unsigned int); | |
17002 vector bool short vec_or (vector bool short, vector bool short); | |
17003 vector signed short vec_or (vector bool short, vector signed short); | |
17004 vector signed short vec_or (vector signed short, vector bool short); | |
17005 vector signed short vec_or (vector signed short, vector signed short); | |
17006 vector unsigned short vec_or (vector bool short, vector unsigned short); | |
17007 vector unsigned short vec_or (vector unsigned short, vector bool short); | |
17008 vector unsigned short vec_or (vector unsigned short, | |
17009 vector unsigned short); | |
17010 vector signed char vec_or (vector bool char, vector signed char); | |
17011 vector bool char vec_or (vector bool char, vector bool char); | |
17012 vector signed char vec_or (vector signed char, vector bool char); | |
17013 vector signed char vec_or (vector signed char, vector signed char); | |
17014 vector unsigned char vec_or (vector bool char, vector unsigned char); | |
17015 vector unsigned char vec_or (vector unsigned char, vector bool char); | |
17016 vector unsigned char vec_or (vector unsigned char, | |
17017 vector unsigned char); | |
17018 | |
17019 vector signed char vec_pack (vector signed short, vector signed short); | |
17020 vector unsigned char vec_pack (vector unsigned short, | |
17021 vector unsigned short); | |
17022 vector bool char vec_pack (vector bool short, vector bool short); | |
17023 vector signed short vec_pack (vector signed int, vector signed int); | |
17024 vector unsigned short vec_pack (vector unsigned int, | |
17025 vector unsigned int); | |
17026 vector bool short vec_pack (vector bool int, vector bool int); | |
17027 | |
17028 vector bool short vec_vpkuwum (vector bool int, vector bool int); | |
17029 vector signed short vec_vpkuwum (vector signed int, vector signed int); | |
17030 vector unsigned short vec_vpkuwum (vector unsigned int, | |
17031 vector unsigned int); | |
17032 | |
17033 vector bool char vec_vpkuhum (vector bool short, vector bool short); | |
17034 vector signed char vec_vpkuhum (vector signed short, | |
17035 vector signed short); | |
17036 vector unsigned char vec_vpkuhum (vector unsigned short, | |
17037 vector unsigned short); | |
17038 | |
17039 vector pixel vec_packpx (vector unsigned int, vector unsigned int); | |
17040 | |
17041 vector unsigned char vec_packs (vector unsigned short, | |
17042 vector unsigned short); | |
17043 vector signed char vec_packs (vector signed short, vector signed short); | |
17044 vector unsigned short vec_packs (vector unsigned int, | |
17045 vector unsigned int); | |
17046 vector signed short vec_packs (vector signed int, vector signed int); | |
17047 | |
17048 vector signed short vec_vpkswss (vector signed int, vector signed int); | |
17049 | |
17050 vector unsigned short vec_vpkuwus (vector unsigned int, | |
17051 vector unsigned int); | |
17052 | |
17053 vector signed char vec_vpkshss (vector signed short, | |
17054 vector signed short); | |
17055 | |
17056 vector unsigned char vec_vpkuhus (vector unsigned short, | |
17057 vector unsigned short); | |
17058 | |
17059 vector unsigned char vec_packsu (vector unsigned short, | |
17060 vector unsigned short); | |
17061 vector unsigned char vec_packsu (vector signed short, | |
17062 vector signed short); | |
17063 vector unsigned short vec_packsu (vector unsigned int, | |
17064 vector unsigned int); | |
17065 vector unsigned short vec_packsu (vector signed int, vector signed int); | |
17066 | |
17067 vector unsigned short vec_vpkswus (vector signed int, | |
17068 vector signed int); | |
17069 | |
17070 vector unsigned char vec_vpkshus (vector signed short, | |
17071 vector signed short); | |
17072 | |
17073 vector float vec_perm (vector float, | |
17074 vector float, | |
17075 vector unsigned char); | |
17076 vector signed int vec_perm (vector signed int, | |
17077 vector signed int, | |
17078 vector unsigned char); | |
17079 vector unsigned int vec_perm (vector unsigned int, | |
17080 vector unsigned int, | |
17081 vector unsigned char); | |
17082 vector bool int vec_perm (vector bool int, | |
17083 vector bool int, | |
17084 vector unsigned char); | |
17085 vector signed short vec_perm (vector signed short, | |
17086 vector signed short, | |
17087 vector unsigned char); | |
17088 vector unsigned short vec_perm (vector unsigned short, | |
17089 vector unsigned short, | |
17090 vector unsigned char); | |
17091 vector bool short vec_perm (vector bool short, | |
17092 vector bool short, | |
17093 vector unsigned char); | |
17094 vector pixel vec_perm (vector pixel, | |
17095 vector pixel, | |
17096 vector unsigned char); | |
17097 vector signed char vec_perm (vector signed char, | |
17098 vector signed char, | |
17099 vector unsigned char); | |
17100 vector unsigned char vec_perm (vector unsigned char, | |
17101 vector unsigned char, | |
17102 vector unsigned char); | |
17103 vector bool char vec_perm (vector bool char, | |
17104 vector bool char, | |
17105 vector unsigned char); | |
17106 | |
17107 vector float vec_re (vector float); | |
17108 | |
17109 vector bool char vec_reve (vector bool char); | |
17110 vector signed char vec_reve (vector signed char); | |
17111 vector unsigned char vec_reve (vector unsigned char); | |
17112 vector bool int vec_reve (vector bool int); | |
17113 vector signed int vec_reve (vector signed int); | |
17114 vector unsigned int vec_reve (vector unsigned int); | |
17115 vector bool long long vec_reve (vector bool long long); | |
17116 vector signed long long vec_reve (vector signed long long); | |
17117 vector unsigned long long vec_reve (vector unsigned long long); | |
17118 vector bool short vec_reve (vector bool short); | |
17119 vector signed short vec_reve (vector signed short); | |
17120 vector unsigned short vec_reve (vector unsigned short); | |
17121 | |
17122 vector signed char vec_rl (vector signed char, | |
17123 vector unsigned char); | |
17124 vector unsigned char vec_rl (vector unsigned char, | |
17125 vector unsigned char); | |
17126 vector signed short vec_rl (vector signed short, vector unsigned short); | |
17127 vector unsigned short vec_rl (vector unsigned short, | |
17128 vector unsigned short); | |
17129 vector signed int vec_rl (vector signed int, vector unsigned int); | |
17130 vector unsigned int vec_rl (vector unsigned int, vector unsigned int); | |
17131 | |
17132 vector signed int vec_vrlw (vector signed int, vector unsigned int); | |
17133 vector unsigned int vec_vrlw (vector unsigned int, vector unsigned int); | |
17134 | |
17135 vector signed short vec_vrlh (vector signed short, | |
17136 vector unsigned short); | |
17137 vector unsigned short vec_vrlh (vector unsigned short, | |
17138 vector unsigned short); | |
17139 | |
17140 vector signed char vec_vrlb (vector signed char, vector unsigned char); | |
17141 vector unsigned char vec_vrlb (vector unsigned char, | |
17142 vector unsigned char); | |
17143 | |
17144 vector float vec_round (vector float); | |
17145 | |
17146 vector float vec_recip (vector float, vector float); | |
17147 | |
17148 vector float vec_rsqrt (vector float); | |
17149 | |
17150 vector float vec_rsqrte (vector float); | |
17151 | |
17152 vector float vec_sel (vector float, vector float, vector bool int); | |
17153 vector float vec_sel (vector float, vector float, vector unsigned int); | |
17154 vector signed int vec_sel (vector signed int, | |
17155 vector signed int, | |
17156 vector bool int); | |
17157 vector signed int vec_sel (vector signed int, | |
17158 vector signed int, | |
17159 vector unsigned int); | |
17160 vector unsigned int vec_sel (vector unsigned int, | |
17161 vector unsigned int, | |
17162 vector bool int); | |
17163 vector unsigned int vec_sel (vector unsigned int, | |
17164 vector unsigned int, | |
17165 vector unsigned int); | |
17166 vector bool int vec_sel (vector bool int, | |
17167 vector bool int, | |
17168 vector bool int); | |
17169 vector bool int vec_sel (vector bool int, | |
17170 vector bool int, | |
17171 vector unsigned int); | |
17172 vector signed short vec_sel (vector signed short, | |
17173 vector signed short, | |
17174 vector bool short); | |
17175 vector signed short vec_sel (vector signed short, | |
17176 vector signed short, | |
17177 vector unsigned short); | |
17178 vector unsigned short vec_sel (vector unsigned short, | |
17179 vector unsigned short, | |
17180 vector bool short); | |
17181 vector unsigned short vec_sel (vector unsigned short, | |
17182 vector unsigned short, | |
17183 vector unsigned short); | |
17184 vector bool short vec_sel (vector bool short, | |
17185 vector bool short, | |
17186 vector bool short); | |
17187 vector bool short vec_sel (vector bool short, | |
17188 vector bool short, | |
17189 vector unsigned short); | |
17190 vector signed char vec_sel (vector signed char, | |
17191 vector signed char, | |
17192 vector bool char); | |
17193 vector signed char vec_sel (vector signed char, | |
17194 vector signed char, | |
17195 vector unsigned char); | |
17196 vector unsigned char vec_sel (vector unsigned char, | |
17197 vector unsigned char, | |
17198 vector bool char); | |
17199 vector unsigned char vec_sel (vector unsigned char, | |
17200 vector unsigned char, | |
17201 vector unsigned char); | |
17202 vector bool char vec_sel (vector bool char, | |
17203 vector bool char, | |
17204 vector bool char); | |
17205 vector bool char vec_sel (vector bool char, | |
17206 vector bool char, | |
17207 vector unsigned char); | |
17208 | |
17209 vector signed long long vec_signed (vector double); | |
17210 vector signed int vec_signed (vector float); | |
17211 | |
17212 vector signed int vec_signede (vector double); | |
17213 vector signed int vec_signedo (vector double); | |
17214 vector signed int vec_signed2 (vector double, vector double); | |
17215 | |
17216 vector signed char vec_sl (vector signed char, | |
17217 vector unsigned char); | |
17218 vector unsigned char vec_sl (vector unsigned char, | |
17219 vector unsigned char); | |
17220 vector signed short vec_sl (vector signed short, vector unsigned short); | |
17221 vector unsigned short vec_sl (vector unsigned short, | |
17222 vector unsigned short); | |
17223 vector signed int vec_sl (vector signed int, vector unsigned int); | |
17224 vector unsigned int vec_sl (vector unsigned int, vector unsigned int); | |
17225 | |
17226 vector signed int vec_vslw (vector signed int, vector unsigned int); | |
17227 vector unsigned int vec_vslw (vector unsigned int, vector unsigned int); | |
17228 | |
17229 vector signed short vec_vslh (vector signed short, | |
17230 vector unsigned short); | |
17231 vector unsigned short vec_vslh (vector unsigned short, | |
17232 vector unsigned short); | |
17233 | |
17234 vector signed char vec_vslb (vector signed char, vector unsigned char); | |
17235 vector unsigned char vec_vslb (vector unsigned char, | |
17236 vector unsigned char); | |
17237 | |
17238 vector float vec_sld (vector float, vector float, const int); | |
17239 vector double vec_sld (vector double, vector double, const int); | |
17240 | |
17241 vector signed int vec_sld (vector signed int, | |
17242 vector signed int, | |
17243 const int); | |
17244 vector unsigned int vec_sld (vector unsigned int, | |
17245 vector unsigned int, | |
17246 const int); | |
17247 vector bool int vec_sld (vector bool int, | |
17248 vector bool int, | |
17249 const int); | |
17250 vector signed short vec_sld (vector signed short, | |
17251 vector signed short, | |
17252 const int); | |
17253 vector unsigned short vec_sld (vector unsigned short, | |
17254 vector unsigned short, | |
17255 const int); | |
17256 vector bool short vec_sld (vector bool short, | |
17257 vector bool short, | |
17258 const int); | |
17259 vector pixel vec_sld (vector pixel, | |
17260 vector pixel, | |
17261 const int); | |
17262 vector signed char vec_sld (vector signed char, | |
17263 vector signed char, | |
17264 const int); | |
17265 vector unsigned char vec_sld (vector unsigned char, | |
17266 vector unsigned char, | |
17267 const int); | |
17268 vector bool char vec_sld (vector bool char, | |
17269 vector bool char, | |
17270 const int); | |
17271 | |
17272 vector signed char vec_sldw (vector signed char, | |
17273 vector signed char, | |
17274 const int); | |
17275 vector unsigned char vec_sldw (vector unsigned char, | |
17276 vector unsigned char, | |
17277 const int); | |
17278 vector signed short vec_sldw (vector signed short, | |
17279 vector signed short, | |
17280 const int); | |
17281 vector unsigned short vec_sldw (vector unsigned short, | |
17282 vector unsigned short, | |
17283 const int); | |
17284 vector signed int vec_sldw (vector signed int, | |
17285 vector signed int, | |
17286 const int); | |
17287 vector unsigned int vec_sldw (vector unsigned int, | |
17288 vector unsigned int, | |
17289 const int); | |
17290 vector signed long long vec_sldw (vector signed long long, | |
17291 vector signed long long, | |
17292 const int); | |
17293 vector unsigned long long vec_sldw (vector unsigned long long, | |
17294 vector unsigned long long, | |
17295 const int); | |
17296 | |
17297 vector signed int vec_sll (vector signed int, | |
17298 vector unsigned int); | |
17299 vector signed int vec_sll (vector signed int, | |
17300 vector unsigned short); | |
17301 vector signed int vec_sll (vector signed int, | |
17302 vector unsigned char); | |
17303 vector unsigned int vec_sll (vector unsigned int, | |
17304 vector unsigned int); | |
17305 vector unsigned int vec_sll (vector unsigned int, | |
17306 vector unsigned short); | |
17307 vector unsigned int vec_sll (vector unsigned int, | |
17308 vector unsigned char); | |
17309 vector bool int vec_sll (vector bool int, | |
17310 vector unsigned int); | |
17311 vector bool int vec_sll (vector bool int, | |
17312 vector unsigned short); | |
17313 vector bool int vec_sll (vector bool int, | |
17314 vector unsigned char); | |
17315 vector signed short vec_sll (vector signed short, | |
17316 vector unsigned int); | |
17317 vector signed short vec_sll (vector signed short, | |
17318 vector unsigned short); | |
17319 vector signed short vec_sll (vector signed short, | |
17320 vector unsigned char); | |
17321 vector unsigned short vec_sll (vector unsigned short, | |
17322 vector unsigned int); | |
17323 vector unsigned short vec_sll (vector unsigned short, | |
17324 vector unsigned short); | |
17325 vector unsigned short vec_sll (vector unsigned short, | |
17326 vector unsigned char); | |
17327 vector bool short vec_sll (vector bool short, vector unsigned int); | |
17328 vector bool short vec_sll (vector bool short, vector unsigned short); | |
17329 vector bool short vec_sll (vector bool short, vector unsigned char); | |
17330 vector pixel vec_sll (vector pixel, vector unsigned int); | |
17331 vector pixel vec_sll (vector pixel, vector unsigned short); | |
17332 vector pixel vec_sll (vector pixel, vector unsigned char); | |
17333 vector signed char vec_sll (vector signed char, vector unsigned int); | |
17334 vector signed char vec_sll (vector signed char, vector unsigned short); | |
17335 vector signed char vec_sll (vector signed char, vector unsigned char); | |
17336 vector unsigned char vec_sll (vector unsigned char, | |
17337 vector unsigned int); | |
17338 vector unsigned char vec_sll (vector unsigned char, | |
17339 vector unsigned short); | |
17340 vector unsigned char vec_sll (vector unsigned char, | |
17341 vector unsigned char); | |
17342 vector bool char vec_sll (vector bool char, vector unsigned int); | |
17343 vector bool char vec_sll (vector bool char, vector unsigned short); | |
17344 vector bool char vec_sll (vector bool char, vector unsigned char); | |
17345 | |
17346 vector float vec_slo (vector float, vector signed char); | |
17347 vector float vec_slo (vector float, vector unsigned char); | |
17348 vector signed int vec_slo (vector signed int, vector signed char); | |
17349 vector signed int vec_slo (vector signed int, vector unsigned char); | |
17350 vector unsigned int vec_slo (vector unsigned int, vector signed char); | |
17351 vector unsigned int vec_slo (vector unsigned int, vector unsigned char); | |
17352 vector signed short vec_slo (vector signed short, vector signed char); | |
17353 vector signed short vec_slo (vector signed short, vector unsigned char); | |
17354 vector unsigned short vec_slo (vector unsigned short, | |
17355 vector signed char); | |
17356 vector unsigned short vec_slo (vector unsigned short, | |
17357 vector unsigned char); | |
17358 vector pixel vec_slo (vector pixel, vector signed char); | |
17359 vector pixel vec_slo (vector pixel, vector unsigned char); | |
17360 vector signed char vec_slo (vector signed char, vector signed char); | |
17361 vector signed char vec_slo (vector signed char, vector unsigned char); | |
17362 vector unsigned char vec_slo (vector unsigned char, vector signed char); | |
17363 vector unsigned char vec_slo (vector unsigned char, | |
17364 vector unsigned char); | |
17365 vector signed long long vec_slo (vector signed long long, vector signed char); | |
17366 vector signed long long vec_slo (vector signed long long, vector unsigned char); | |
17367 vector unsigned long long vec_slo (vector unsigned long long, vector signed char); | |
17368 vector unsigned long long vec_slo (vector unsigned long long, vector unsigned char); | |
17369 | |
17370 vector signed char vec_splat (vector signed char, const int); | |
17371 vector unsigned char vec_splat (vector unsigned char, const int); | |
17372 vector bool char vec_splat (vector bool char, const int); | |
17373 vector signed short vec_splat (vector signed short, const int); | |
17374 vector unsigned short vec_splat (vector unsigned short, const int); | |
17375 vector bool short vec_splat (vector bool short, const int); | |
17376 vector pixel vec_splat (vector pixel, const int); | |
17377 vector float vec_splat (vector float, const int); | |
17378 vector signed int vec_splat (vector signed int, const int); | |
17379 vector unsigned int vec_splat (vector unsigned int, const int); | |
17380 vector bool int vec_splat (vector bool int, const int); | |
17381 vector signed long vec_splat (vector signed long, const int); | |
17382 vector unsigned long vec_splat (vector unsigned long, const int); | |
17383 | |
17384 vector signed char vec_splats (signed char); | |
17385 vector unsigned char vec_splats (unsigned char); | |
17386 vector signed short vec_splats (signed short); | |
17387 vector unsigned short vec_splats (unsigned short); | |
17388 vector signed int vec_splats (signed int); | |
17389 vector unsigned int vec_splats (unsigned int); | |
17390 vector float vec_splats (float); | |
17391 | |
17392 vector float vec_vspltw (vector float, const int); | |
17393 vector signed int vec_vspltw (vector signed int, const int); | |
17394 vector unsigned int vec_vspltw (vector unsigned int, const int); | |
17395 vector bool int vec_vspltw (vector bool int, const int); | |
17396 | |
17397 vector bool short vec_vsplth (vector bool short, const int); | |
17398 vector signed short vec_vsplth (vector signed short, const int); | |
17399 vector unsigned short vec_vsplth (vector unsigned short, const int); | |
17400 vector pixel vec_vsplth (vector pixel, const int); | |
17401 | |
17402 vector signed char vec_vspltb (vector signed char, const int); | |
17403 vector unsigned char vec_vspltb (vector unsigned char, const int); | |
17404 vector bool char vec_vspltb (vector bool char, const int); | |
17405 | |
17406 vector signed char vec_splat_s8 (const int); | |
17407 | |
17408 vector signed short vec_splat_s16 (const int); | |
17409 | |
17410 vector signed int vec_splat_s32 (const int); | |
17411 | |
17412 vector unsigned char vec_splat_u8 (const int); | |
17413 | |
17414 vector unsigned short vec_splat_u16 (const int); | |
17415 | |
17416 vector unsigned int vec_splat_u32 (const int); | |
17417 | |
17418 vector signed char vec_sr (vector signed char, vector unsigned char); | |
17419 vector unsigned char vec_sr (vector unsigned char, | |
17420 vector unsigned char); | |
17421 vector signed short vec_sr (vector signed short, | |
17422 vector unsigned short); | |
17423 vector unsigned short vec_sr (vector unsigned short, | |
17424 vector unsigned short); | |
17425 vector signed int vec_sr (vector signed int, vector unsigned int); | |
17426 vector unsigned int vec_sr (vector unsigned int, vector unsigned int); | |
17427 | |
17428 vector signed int vec_vsrw (vector signed int, vector unsigned int); | |
17429 vector unsigned int vec_vsrw (vector unsigned int, vector unsigned int); | |
17430 | |
17431 vector signed short vec_vsrh (vector signed short, | |
17432 vector unsigned short); | |
17433 vector unsigned short vec_vsrh (vector unsigned short, | |
17434 vector unsigned short); | |
17435 | |
17436 vector signed char vec_vsrb (vector signed char, vector unsigned char); | |
17437 vector unsigned char vec_vsrb (vector unsigned char, | |
17438 vector unsigned char); | |
17439 | |
17440 vector signed char vec_sra (vector signed char, vector unsigned char); | |
17441 vector unsigned char vec_sra (vector unsigned char, | |
17442 vector unsigned char); | |
17443 vector signed short vec_sra (vector signed short, | |
17444 vector unsigned short); | |
17445 vector unsigned short vec_sra (vector unsigned short, | |
17446 vector unsigned short); | |
17447 vector signed int vec_sra (vector signed int, vector unsigned int); | |
17448 vector unsigned int vec_sra (vector unsigned int, vector unsigned int); | |
17449 | |
17450 vector signed int vec_vsraw (vector signed int, vector unsigned int); | |
17451 vector unsigned int vec_vsraw (vector unsigned int, | |
17452 vector unsigned int); | |
17453 | |
17454 vector signed short vec_vsrah (vector signed short, | |
17455 vector unsigned short); | |
17456 vector unsigned short vec_vsrah (vector unsigned short, | |
17457 vector unsigned short); | |
17458 | |
17459 vector signed char vec_vsrab (vector signed char, vector unsigned char); | |
17460 vector unsigned char vec_vsrab (vector unsigned char, | |
17461 vector unsigned char); | |
17462 | |
17463 vector signed int vec_srl (vector signed int, vector unsigned int); | |
17464 vector signed int vec_srl (vector signed int, vector unsigned short); | |
17465 vector signed int vec_srl (vector signed int, vector unsigned char); | |
17466 vector unsigned int vec_srl (vector unsigned int, vector unsigned int); | |
17467 vector unsigned int vec_srl (vector unsigned int, | |
17468 vector unsigned short); | |
17469 vector unsigned int vec_srl (vector unsigned int, vector unsigned char); | |
17470 vector bool int vec_srl (vector bool int, vector unsigned int); | |
17471 vector bool int vec_srl (vector bool int, vector unsigned short); | |
17472 vector bool int vec_srl (vector bool int, vector unsigned char); | |
17473 vector signed short vec_srl (vector signed short, vector unsigned int); | |
17474 vector signed short vec_srl (vector signed short, | |
17475 vector unsigned short); | |
17476 vector signed short vec_srl (vector signed short, vector unsigned char); | |
17477 vector unsigned short vec_srl (vector unsigned short, | |
17478 vector unsigned int); | |
17479 vector unsigned short vec_srl (vector unsigned short, | |
17480 vector unsigned short); | |
17481 vector unsigned short vec_srl (vector unsigned short, | |
17482 vector unsigned char); | |
17483 vector bool short vec_srl (vector bool short, vector unsigned int); | |
17484 vector bool short vec_srl (vector bool short, vector unsigned short); | |
17485 vector bool short vec_srl (vector bool short, vector unsigned char); | |
17486 vector pixel vec_srl (vector pixel, vector unsigned int); | |
17487 vector pixel vec_srl (vector pixel, vector unsigned short); | |
17488 vector pixel vec_srl (vector pixel, vector unsigned char); | |
17489 vector signed char vec_srl (vector signed char, vector unsigned int); | |
17490 vector signed char vec_srl (vector signed char, vector unsigned short); | |
17491 vector signed char vec_srl (vector signed char, vector unsigned char); | |
17492 vector unsigned char vec_srl (vector unsigned char, | |
17493 vector unsigned int); | |
17494 vector unsigned char vec_srl (vector unsigned char, | |
17495 vector unsigned short); | |
17496 vector unsigned char vec_srl (vector unsigned char, | |
17497 vector unsigned char); | |
17498 vector bool char vec_srl (vector bool char, vector unsigned int); | |
17499 vector bool char vec_srl (vector bool char, vector unsigned short); | |
17500 vector bool char vec_srl (vector bool char, vector unsigned char); | |
17501 | |
17502 vector float vec_sro (vector float, vector signed char); | |
17503 vector float vec_sro (vector float, vector unsigned char); | |
17504 vector signed int vec_sro (vector signed int, vector signed char); | |
17505 vector signed int vec_sro (vector signed int, vector unsigned char); | |
17506 vector unsigned int vec_sro (vector unsigned int, vector signed char); | |
17507 vector unsigned int vec_sro (vector unsigned int, vector unsigned char); | |
17508 vector signed short vec_sro (vector signed short, vector signed char); | |
17509 vector signed short vec_sro (vector signed short, vector unsigned char); | |
17510 vector unsigned short vec_sro (vector unsigned short, | |
17511 vector signed char); | |
17512 vector unsigned short vec_sro (vector unsigned short, | |
17513 vector unsigned char); | |
17514 vector pixel vec_sro (vector pixel, vector signed char); | |
17515 vector pixel vec_sro (vector pixel, vector unsigned char); | |
17516 vector signed char vec_sro (vector signed char, vector signed char); | |
17517 vector signed char vec_sro (vector signed char, vector unsigned char); | |
17518 vector unsigned char vec_sro (vector unsigned char, vector signed char); | |
17519 vector unsigned char vec_sro (vector unsigned char, | |
17520 vector unsigned char); | |
17521 | |
17522 void vec_st (vector float, int, vector float *); | |
17523 void vec_st (vector float, int, float *); | |
17524 void vec_st (vector signed int, int, vector signed int *); | |
17525 void vec_st (vector signed int, int, int *); | |
17526 void vec_st (vector unsigned int, int, vector unsigned int *); | |
17527 void vec_st (vector unsigned int, int, unsigned int *); | |
17528 void vec_st (vector bool int, int, vector bool int *); | |
17529 void vec_st (vector bool int, int, unsigned int *); | |
17530 void vec_st (vector bool int, int, int *); | |
17531 void vec_st (vector signed short, int, vector signed short *); | |
17532 void vec_st (vector signed short, int, short *); | |
17533 void vec_st (vector unsigned short, int, vector unsigned short *); | |
17534 void vec_st (vector unsigned short, int, unsigned short *); | |
17535 void vec_st (vector bool short, int, vector bool short *); | |
17536 void vec_st (vector bool short, int, unsigned short *); | |
17537 void vec_st (vector pixel, int, vector pixel *); | |
17538 void vec_st (vector pixel, int, unsigned short *); | |
17539 void vec_st (vector pixel, int, short *); | |
17540 void vec_st (vector bool short, int, short *); | |
17541 void vec_st (vector signed char, int, vector signed char *); | |
17542 void vec_st (vector signed char, int, signed char *); | |
17543 void vec_st (vector unsigned char, int, vector unsigned char *); | |
17544 void vec_st (vector unsigned char, int, unsigned char *); | |
17545 void vec_st (vector bool char, int, vector bool char *); | |
17546 void vec_st (vector bool char, int, unsigned char *); | |
17547 void vec_st (vector bool char, int, signed char *); | |
17548 | |
17549 void vec_ste (vector signed char, int, signed char *); | |
17550 void vec_ste (vector unsigned char, int, unsigned char *); | |
17551 void vec_ste (vector bool char, int, signed char *); | |
17552 void vec_ste (vector bool char, int, unsigned char *); | |
17553 void vec_ste (vector signed short, int, short *); | |
17554 void vec_ste (vector unsigned short, int, unsigned short *); | |
17555 void vec_ste (vector bool short, int, short *); | |
17556 void vec_ste (vector bool short, int, unsigned short *); | |
17557 void vec_ste (vector pixel, int, short *); | |
17558 void vec_ste (vector pixel, int, unsigned short *); | |
17559 void vec_ste (vector float, int, float *); | |
17560 void vec_ste (vector signed int, int, int *); | |
17561 void vec_ste (vector unsigned int, int, unsigned int *); | |
17562 void vec_ste (vector bool int, int, int *); | |
17563 void vec_ste (vector bool int, int, unsigned int *); | |
17564 | |
17565 void vec_stvewx (vector float, int, float *); | |
17566 void vec_stvewx (vector signed int, int, int *); | |
17567 void vec_stvewx (vector unsigned int, int, unsigned int *); | |
17568 void vec_stvewx (vector bool int, int, int *); | |
17569 void vec_stvewx (vector bool int, int, unsigned int *); | |
17570 | |
17571 void vec_stvehx (vector signed short, int, short *); | |
17572 void vec_stvehx (vector unsigned short, int, unsigned short *); | |
17573 void vec_stvehx (vector bool short, int, short *); | |
17574 void vec_stvehx (vector bool short, int, unsigned short *); | |
17575 void vec_stvehx (vector pixel, int, short *); | |
17576 void vec_stvehx (vector pixel, int, unsigned short *); | |
17577 | |
17578 void vec_stvebx (vector signed char, int, signed char *); | |
17579 void vec_stvebx (vector unsigned char, int, unsigned char *); | |
17580 void vec_stvebx (vector bool char, int, signed char *); | |
17581 void vec_stvebx (vector bool char, int, unsigned char *); | |
17582 | |
17583 void vec_stl (vector float, int, vector float *); | |
17584 void vec_stl (vector float, int, float *); | |
17585 void vec_stl (vector signed int, int, vector signed int *); | |
17586 void vec_stl (vector signed int, int, int *); | |
17587 void vec_stl (vector unsigned int, int, vector unsigned int *); | |
17588 void vec_stl (vector unsigned int, int, unsigned int *); | |
17589 void vec_stl (vector bool int, int, vector bool int *); | |
17590 void vec_stl (vector bool int, int, unsigned int *); | |
17591 void vec_stl (vector bool int, int, int *); | |
17592 void vec_stl (vector signed short, int, vector signed short *); | |
17593 void vec_stl (vector signed short, int, short *); | |
17594 void vec_stl (vector unsigned short, int, vector unsigned short *); | |
17595 void vec_stl (vector unsigned short, int, unsigned short *); | |
17596 void vec_stl (vector bool short, int, vector bool short *); | |
17597 void vec_stl (vector bool short, int, unsigned short *); | |
17598 void vec_stl (vector bool short, int, short *); | |
17599 void vec_stl (vector pixel, int, vector pixel *); | |
17600 void vec_stl (vector pixel, int, unsigned short *); | |
17601 void vec_stl (vector pixel, int, short *); | |
17602 void vec_stl (vector signed char, int, vector signed char *); | |
17603 void vec_stl (vector signed char, int, signed char *); | |
17604 void vec_stl (vector unsigned char, int, vector unsigned char *); | |
17605 void vec_stl (vector unsigned char, int, unsigned char *); | |
17606 void vec_stl (vector bool char, int, vector bool char *); | |
17607 void vec_stl (vector bool char, int, unsigned char *); | |
17608 void vec_stl (vector bool char, int, signed char *); | |
17609 | |
17610 vector signed char vec_sub (vector bool char, vector signed char); | |
17611 vector signed char vec_sub (vector signed char, vector bool char); | |
17612 vector signed char vec_sub (vector signed char, vector signed char); | |
17613 vector unsigned char vec_sub (vector bool char, vector unsigned char); | |
17614 vector unsigned char vec_sub (vector unsigned char, vector bool char); | |
17615 vector unsigned char vec_sub (vector unsigned char, | |
17616 vector unsigned char); | |
17617 vector signed short vec_sub (vector bool short, vector signed short); | |
17618 vector signed short vec_sub (vector signed short, vector bool short); | |
17619 vector signed short vec_sub (vector signed short, vector signed short); | |
17620 vector unsigned short vec_sub (vector bool short, | |
17621 vector unsigned short); | |
17622 vector unsigned short vec_sub (vector unsigned short, | |
17623 vector bool short); | |
17624 vector unsigned short vec_sub (vector unsigned short, | |
17625 vector unsigned short); | |
17626 vector signed int vec_sub (vector bool int, vector signed int); | |
17627 vector signed int vec_sub (vector signed int, vector bool int); | |
17628 vector signed int vec_sub (vector signed int, vector signed int); | |
17629 vector unsigned int vec_sub (vector bool int, vector unsigned int); | |
17630 vector unsigned int vec_sub (vector unsigned int, vector bool int); | |
17631 vector unsigned int vec_sub (vector unsigned int, vector unsigned int); | |
17632 vector float vec_sub (vector float, vector float); | |
17633 | |
17634 vector float vec_vsubfp (vector float, vector float); | |
17635 | |
17636 vector signed int vec_vsubuwm (vector bool int, vector signed int); | |
17637 vector signed int vec_vsubuwm (vector signed int, vector bool int); | |
17638 vector signed int vec_vsubuwm (vector signed int, vector signed int); | |
17639 vector unsigned int vec_vsubuwm (vector bool int, vector unsigned int); | |
17640 vector unsigned int vec_vsubuwm (vector unsigned int, vector bool int); | |
17641 vector unsigned int vec_vsubuwm (vector unsigned int, | |
17642 vector unsigned int); | |
17643 | |
17644 vector signed short vec_vsubuhm (vector bool short, | |
17645 vector signed short); | |
17646 vector signed short vec_vsubuhm (vector signed short, | |
17647 vector bool short); | |
17648 vector signed short vec_vsubuhm (vector signed short, | |
17649 vector signed short); | |
17650 vector unsigned short vec_vsubuhm (vector bool short, | |
17651 vector unsigned short); | |
17652 vector unsigned short vec_vsubuhm (vector unsigned short, | |
17653 vector bool short); | |
17654 vector unsigned short vec_vsubuhm (vector unsigned short, | |
17655 vector unsigned short); | |
17656 | |
17657 vector signed char vec_vsububm (vector bool char, vector signed char); | |
17658 vector signed char vec_vsububm (vector signed char, vector bool char); | |
17659 vector signed char vec_vsububm (vector signed char, vector signed char); | |
17660 vector unsigned char vec_vsububm (vector bool char, | |
17661 vector unsigned char); | |
17662 vector unsigned char vec_vsububm (vector unsigned char, | |
17663 vector bool char); | |
17664 vector unsigned char vec_vsububm (vector unsigned char, | |
17665 vector unsigned char); | |
17666 | |
17667 vector signed int vec_subc (vector signed int, vector signed int); | |
17668 vector unsigned int vec_subc (vector unsigned int, vector unsigned int); | |
17669 vector signed __int128 vec_subc (vector signed __int128, | |
17670 vector signed __int128); | |
17671 vector unsigned __int128 vec_subc (vector unsigned __int128, | |
17672 vector unsigned __int128); | |
17673 | |
17674 vector signed int vec_sube (vector signed int, vector signed int, | |
17675 vector signed int); | |
17676 vector unsigned int vec_sube (vector unsigned int, vector unsigned int, | |
17677 vector unsigned int); | |
17678 vector signed __int128 vec_sube (vector signed __int128, | |
17679 vector signed __int128, | |
17680 vector signed __int128); | |
17681 vector unsigned __int128 vec_sube (vector unsigned __int128, | |
17682 vector unsigned __int128, | |
17683 vector unsigned __int128); | |
17684 | |
17685 vector signed int vec_subec (vector signed int, vector signed int, | |
17686 vector signed int); | |
17687 vector unsigned int vec_subec (vector unsigned int, vector unsigned int, | |
17688 vector unsigned int); | |
17689 vector signed __int128 vec_subec (vector signed __int128, | |
17690 vector signed __int128, | |
17691 vector signed __int128); | |
17692 vector unsigned __int128 vec_subec (vector unsigned __int128, | |
17693 vector unsigned __int128, | |
17694 vector unsigned __int128); | |
17695 | |
17696 vector unsigned char vec_subs (vector bool char, vector unsigned char); | |
17697 vector unsigned char vec_subs (vector unsigned char, vector bool char); | |
17698 vector unsigned char vec_subs (vector unsigned char, | |
17699 vector unsigned char); | |
17700 vector signed char vec_subs (vector bool char, vector signed char); | |
17701 vector signed char vec_subs (vector signed char, vector bool char); | |
17702 vector signed char vec_subs (vector signed char, vector signed char); | |
17703 vector unsigned short vec_subs (vector bool short, | |
17704 vector unsigned short); | |
17705 vector unsigned short vec_subs (vector unsigned short, | |
17706 vector bool short); | |
17707 vector unsigned short vec_subs (vector unsigned short, | |
17708 vector unsigned short); | |
17709 vector signed short vec_subs (vector bool short, vector signed short); | |
17710 vector signed short vec_subs (vector signed short, vector bool short); | |
17711 vector signed short vec_subs (vector signed short, vector signed short); | |
17712 vector unsigned int vec_subs (vector bool int, vector unsigned int); | |
17713 vector unsigned int vec_subs (vector unsigned int, vector bool int); | |
17714 vector unsigned int vec_subs (vector unsigned int, vector unsigned int); | |
17715 vector signed int vec_subs (vector bool int, vector signed int); | |
17716 vector signed int vec_subs (vector signed int, vector bool int); | |
17717 vector signed int vec_subs (vector signed int, vector signed int); | |
17718 | |
17719 vector signed int vec_vsubsws (vector bool int, vector signed int); | |
17720 vector signed int vec_vsubsws (vector signed int, vector bool int); | |
17721 vector signed int vec_vsubsws (vector signed int, vector signed int); | |
17722 | |
17723 vector unsigned int vec_vsubuws (vector bool int, vector unsigned int); | |
17724 vector unsigned int vec_vsubuws (vector unsigned int, vector bool int); | |
17725 vector unsigned int vec_vsubuws (vector unsigned int, | |
17726 vector unsigned int); | |
17727 | |
17728 vector signed short vec_vsubshs (vector bool short, | |
17729 vector signed short); | |
17730 vector signed short vec_vsubshs (vector signed short, | |
17731 vector bool short); | |
17732 vector signed short vec_vsubshs (vector signed short, | |
17733 vector signed short); | |
17734 | |
17735 vector unsigned short vec_vsubuhs (vector bool short, | |
17736 vector unsigned short); | |
17737 vector unsigned short vec_vsubuhs (vector unsigned short, | |
17738 vector bool short); | |
17739 vector unsigned short vec_vsubuhs (vector unsigned short, | |
17740 vector unsigned short); | |
17741 | |
17742 vector signed char vec_vsubsbs (vector bool char, vector signed char); | |
17743 vector signed char vec_vsubsbs (vector signed char, vector bool char); | |
17744 vector signed char vec_vsubsbs (vector signed char, vector signed char); | |
17745 | |
17746 vector unsigned char vec_vsububs (vector bool char, | |
17747 vector unsigned char); | |
17748 vector unsigned char vec_vsububs (vector unsigned char, | |
17749 vector bool char); | |
17750 vector unsigned char vec_vsububs (vector unsigned char, | |
17751 vector unsigned char); | |
17752 | |
17753 vector unsigned int vec_sum4s (vector unsigned char, | |
17754 vector unsigned int); | |
17755 vector signed int vec_sum4s (vector signed char, vector signed int); | |
17756 vector signed int vec_sum4s (vector signed short, vector signed int); | |
17757 | |
17758 vector signed int vec_vsum4shs (vector signed short, vector signed int); | |
17759 | |
17760 vector signed int vec_vsum4sbs (vector signed char, vector signed int); | |
17761 | |
17762 vector unsigned int vec_vsum4ubs (vector unsigned char, | |
17763 vector unsigned int); | |
17764 | |
17765 vector signed int vec_sum2s (vector signed int, vector signed int); | |
17766 | |
17767 vector signed int vec_sums (vector signed int, vector signed int); | |
17768 | |
17769 vector float vec_trunc (vector float); | |
17770 | |
17771 vector signed long long vec_unsigned (vector double); | |
17772 vector signed int vec_unsigned (vector float); | |
17773 | |
17774 vector signed int vec_unsignede (vector double); | |
17775 vector signed int vec_unsignedo (vector double); | |
17776 vector signed int vec_unsigned2 (vector double, vector double); | |
17777 | |
17778 vector signed short vec_unpackh (vector signed char); | |
17779 vector bool short vec_unpackh (vector bool char); | |
17780 vector signed int vec_unpackh (vector signed short); | |
17781 vector bool int vec_unpackh (vector bool short); | |
17782 vector unsigned int vec_unpackh (vector pixel); | |
17783 | |
17784 vector bool int vec_vupkhsh (vector bool short); | |
17785 vector signed int vec_vupkhsh (vector signed short); | |
17786 | |
17787 vector unsigned int vec_vupkhpx (vector pixel); | |
17788 | |
17789 vector bool short vec_vupkhsb (vector bool char); | |
17790 vector signed short vec_vupkhsb (vector signed char); | |
17791 | |
17792 vector signed short vec_unpackl (vector signed char); | |
17793 vector bool short vec_unpackl (vector bool char); | |
17794 vector unsigned int vec_unpackl (vector pixel); | |
17795 vector signed int vec_unpackl (vector signed short); | |
17796 vector bool int vec_unpackl (vector bool short); | |
17797 | |
17798 vector unsigned int vec_vupklpx (vector pixel); | |
17799 | |
17800 vector bool int vec_vupklsh (vector bool short); | |
17801 vector signed int vec_vupklsh (vector signed short); | |
17802 | |
17803 vector bool short vec_vupklsb (vector bool char); | |
17804 vector signed short vec_vupklsb (vector signed char); | |
17805 | |
17806 vector float vec_xor (vector float, vector float); | |
17807 vector float vec_xor (vector float, vector bool int); | |
17808 vector float vec_xor (vector bool int, vector float); | |
17809 vector bool int vec_xor (vector bool int, vector bool int); | |
17810 vector signed int vec_xor (vector bool int, vector signed int); | |
17811 vector signed int vec_xor (vector signed int, vector bool int); | |
17812 vector signed int vec_xor (vector signed int, vector signed int); | |
17813 vector unsigned int vec_xor (vector bool int, vector unsigned int); | |
17814 vector unsigned int vec_xor (vector unsigned int, vector bool int); | |
17815 vector unsigned int vec_xor (vector unsigned int, vector unsigned int); | |
17816 vector bool short vec_xor (vector bool short, vector bool short); | |
17817 vector signed short vec_xor (vector bool short, vector signed short); | |
17818 vector signed short vec_xor (vector signed short, vector bool short); | |
17819 vector signed short vec_xor (vector signed short, vector signed short); | |
17820 vector unsigned short vec_xor (vector bool short, | |
17821 vector unsigned short); | |
17822 vector unsigned short vec_xor (vector unsigned short, | |
17823 vector bool short); | |
17824 vector unsigned short vec_xor (vector unsigned short, | |
17825 vector unsigned short); | |
17826 vector signed char vec_xor (vector bool char, vector signed char); | |
17827 vector bool char vec_xor (vector bool char, vector bool char); | |
17828 vector signed char vec_xor (vector signed char, vector bool char); | |
17829 vector signed char vec_xor (vector signed char, vector signed char); | |
17830 vector unsigned char vec_xor (vector bool char, vector unsigned char); | |
17831 vector unsigned char vec_xor (vector unsigned char, vector bool char); | |
17832 vector unsigned char vec_xor (vector unsigned char, | |
17833 vector unsigned char); | |
17834 | 16297 |
17835 int vec_all_eq (vector signed char, vector bool char); | 16298 int vec_all_eq (vector signed char, vector bool char); |
17836 int vec_all_eq (vector signed char, vector signed char); | 16299 int vec_all_eq (vector signed char, vector signed char); |
17837 int vec_all_eq (vector unsigned char, vector bool char); | 16300 int vec_all_eq (vector unsigned char, vector bool char); |
17838 int vec_all_eq (vector unsigned char, vector unsigned char); | 16301 int vec_all_eq (vector unsigned char, vector unsigned char); |
17972 | 16435 |
17973 int vec_all_nlt (vector float, vector float); | 16436 int vec_all_nlt (vector float, vector float); |
17974 | 16437 |
17975 int vec_all_numeric (vector float); | 16438 int vec_all_numeric (vector float); |
17976 | 16439 |
16440 vector float vec_and (vector float, vector float); | |
16441 vector float vec_and (vector float, vector bool int); | |
16442 vector float vec_and (vector bool int, vector float); | |
16443 vector bool int vec_and (vector bool int, vector bool int); | |
16444 vector signed int vec_and (vector bool int, vector signed int); | |
16445 vector signed int vec_and (vector signed int, vector bool int); | |
16446 vector signed int vec_and (vector signed int, vector signed int); | |
16447 vector unsigned int vec_and (vector bool int, vector unsigned int); | |
16448 vector unsigned int vec_and (vector unsigned int, vector bool int); | |
16449 vector unsigned int vec_and (vector unsigned int, vector unsigned int); | |
16450 vector bool short vec_and (vector bool short, vector bool short); | |
16451 vector signed short vec_and (vector bool short, vector signed short); | |
16452 vector signed short vec_and (vector signed short, vector bool short); | |
16453 vector signed short vec_and (vector signed short, vector signed short); | |
16454 vector unsigned short vec_and (vector bool short, vector unsigned short); | |
16455 vector unsigned short vec_and (vector unsigned short, vector bool short); | |
16456 vector unsigned short vec_and (vector unsigned short, vector unsigned short); | |
16457 vector signed char vec_and (vector bool char, vector signed char); | |
16458 vector bool char vec_and (vector bool char, vector bool char); | |
16459 vector signed char vec_and (vector signed char, vector bool char); | |
16460 vector signed char vec_and (vector signed char, vector signed char); | |
16461 vector unsigned char vec_and (vector bool char, vector unsigned char); | |
16462 vector unsigned char vec_and (vector unsigned char, vector bool char); | |
16463 vector unsigned char vec_and (vector unsigned char, vector unsigned char); | |
16464 | |
16465 vector float vec_andc (vector float, vector float); | |
16466 vector float vec_andc (vector float, vector bool int); | |
16467 vector float vec_andc (vector bool int, vector float); | |
16468 vector bool int vec_andc (vector bool int, vector bool int); | |
16469 vector signed int vec_andc (vector bool int, vector signed int); | |
16470 vector signed int vec_andc (vector signed int, vector bool int); | |
16471 vector signed int vec_andc (vector signed int, vector signed int); | |
16472 vector unsigned int vec_andc (vector bool int, vector unsigned int); | |
16473 vector unsigned int vec_andc (vector unsigned int, vector bool int); | |
16474 vector unsigned int vec_andc (vector unsigned int, vector unsigned int); | |
16475 vector bool short vec_andc (vector bool short, vector bool short); | |
16476 vector signed short vec_andc (vector bool short, vector signed short); | |
16477 vector signed short vec_andc (vector signed short, vector bool short); | |
16478 vector signed short vec_andc (vector signed short, vector signed short); | |
16479 vector unsigned short vec_andc (vector bool short, vector unsigned short); | |
16480 vector unsigned short vec_andc (vector unsigned short, vector bool short); | |
16481 vector unsigned short vec_andc (vector unsigned short, vector unsigned short); | |
16482 vector signed char vec_andc (vector bool char, vector signed char); | |
16483 vector bool char vec_andc (vector bool char, vector bool char); | |
16484 vector signed char vec_andc (vector signed char, vector bool char); | |
16485 vector signed char vec_andc (vector signed char, vector signed char); | |
16486 vector unsigned char vec_andc (vector bool char, vector unsigned char); | |
16487 vector unsigned char vec_andc (vector unsigned char, vector bool char); | |
16488 vector unsigned char vec_andc (vector unsigned char, vector unsigned char); | |
16489 | |
17977 int vec_any_eq (vector signed char, vector bool char); | 16490 int vec_any_eq (vector signed char, vector bool char); |
17978 int vec_any_eq (vector signed char, vector signed char); | 16491 int vec_any_eq (vector signed char, vector signed char); |
17979 int vec_any_eq (vector unsigned char, vector bool char); | 16492 int vec_any_eq (vector unsigned char, vector bool char); |
17980 int vec_any_eq (vector unsigned char, vector unsigned char); | 16493 int vec_any_eq (vector unsigned char, vector unsigned char); |
17981 int vec_any_eq (vector bool char, vector bool char); | 16494 int vec_any_eq (vector bool char, vector bool char); |
18113 int vec_any_nlt (vector float, vector float); | 16626 int vec_any_nlt (vector float, vector float); |
18114 | 16627 |
18115 int vec_any_numeric (vector float); | 16628 int vec_any_numeric (vector float); |
18116 | 16629 |
18117 int vec_any_out (vector float, vector float); | 16630 int vec_any_out (vector float, vector float); |
18118 @end smallexample | 16631 |
18119 | 16632 vector unsigned char vec_avg (vector unsigned char, vector unsigned char); |
18120 If the vector/scalar (VSX) instruction set is available, the following | 16633 vector signed char vec_avg (vector signed char, vector signed char); |
18121 additional functions are available: | 16634 vector unsigned short vec_avg (vector unsigned short, vector unsigned short); |
18122 | 16635 vector signed short vec_avg (vector signed short, vector signed short); |
18123 @smallexample | 16636 vector unsigned int vec_avg (vector unsigned int, vector unsigned int); |
16637 vector signed int vec_avg (vector signed int, vector signed int); | |
16638 | |
16639 vector float vec_ceil (vector float); | |
16640 | |
16641 vector signed int vec_cmpb (vector float, vector float); | |
16642 | |
16643 vector bool char vec_cmpeq (vector bool char, vector bool char); | |
16644 vector bool short vec_cmpeq (vector bool short, vector bool short); | |
16645 vector bool int vec_cmpeq (vector bool int, vector bool int); | |
16646 vector bool char vec_cmpeq (vector signed char, vector signed char); | |
16647 vector bool char vec_cmpeq (vector unsigned char, vector unsigned char); | |
16648 vector bool short vec_cmpeq (vector signed short, vector signed short); | |
16649 vector bool short vec_cmpeq (vector unsigned short, vector unsigned short); | |
16650 vector bool int vec_cmpeq (vector signed int, vector signed int); | |
16651 vector bool int vec_cmpeq (vector unsigned int, vector unsigned int); | |
16652 vector bool int vec_cmpeq (vector float, vector float); | |
16653 | |
16654 vector bool int vec_cmpge (vector float, vector float); | |
16655 | |
16656 vector bool char vec_cmpgt (vector unsigned char, vector unsigned char); | |
16657 vector bool char vec_cmpgt (vector signed char, vector signed char); | |
16658 vector bool short vec_cmpgt (vector unsigned short, vector unsigned short); | |
16659 vector bool short vec_cmpgt (vector signed short, vector signed short); | |
16660 vector bool int vec_cmpgt (vector unsigned int, vector unsigned int); | |
16661 vector bool int vec_cmpgt (vector signed int, vector signed int); | |
16662 vector bool int vec_cmpgt (vector float, vector float); | |
16663 | |
16664 vector bool int vec_cmple (vector float, vector float); | |
16665 | |
16666 vector bool char vec_cmplt (vector unsigned char, vector unsigned char); | |
16667 vector bool char vec_cmplt (vector signed char, vector signed char); | |
16668 vector bool short vec_cmplt (vector unsigned short, vector unsigned short); | |
16669 vector bool short vec_cmplt (vector signed short, vector signed short); | |
16670 vector bool int vec_cmplt (vector unsigned int, vector unsigned int); | |
16671 vector bool int vec_cmplt (vector signed int, vector signed int); | |
16672 vector bool int vec_cmplt (vector float, vector float); | |
16673 | |
16674 vector float vec_cpsgn (vector float, vector float); | |
16675 | |
16676 vector float vec_ctf (vector unsigned int, const int); | |
16677 vector float vec_ctf (vector signed int, const int); | |
16678 | |
16679 vector signed int vec_cts (vector float, const int); | |
16680 | |
16681 vector unsigned int vec_ctu (vector float, const int); | |
16682 | |
16683 void vec_dss (const int); | |
16684 | |
16685 void vec_dssall (void); | |
16686 | |
16687 void vec_dst (const vector unsigned char *, int, const int); | |
16688 void vec_dst (const vector signed char *, int, const int); | |
16689 void vec_dst (const vector bool char *, int, const int); | |
16690 void vec_dst (const vector unsigned short *, int, const int); | |
16691 void vec_dst (const vector signed short *, int, const int); | |
16692 void vec_dst (const vector bool short *, int, const int); | |
16693 void vec_dst (const vector pixel *, int, const int); | |
16694 void vec_dst (const vector unsigned int *, int, const int); | |
16695 void vec_dst (const vector signed int *, int, const int); | |
16696 void vec_dst (const vector bool int *, int, const int); | |
16697 void vec_dst (const vector float *, int, const int); | |
16698 void vec_dst (const unsigned char *, int, const int); | |
16699 void vec_dst (const signed char *, int, const int); | |
16700 void vec_dst (const unsigned short *, int, const int); | |
16701 void vec_dst (const short *, int, const int); | |
16702 void vec_dst (const unsigned int *, int, const int); | |
16703 void vec_dst (const int *, int, const int); | |
16704 void vec_dst (const float *, int, const int); | |
16705 | |
16706 void vec_dstst (const vector unsigned char *, int, const int); | |
16707 void vec_dstst (const vector signed char *, int, const int); | |
16708 void vec_dstst (const vector bool char *, int, const int); | |
16709 void vec_dstst (const vector unsigned short *, int, const int); | |
16710 void vec_dstst (const vector signed short *, int, const int); | |
16711 void vec_dstst (const vector bool short *, int, const int); | |
16712 void vec_dstst (const vector pixel *, int, const int); | |
16713 void vec_dstst (const vector unsigned int *, int, const int); | |
16714 void vec_dstst (const vector signed int *, int, const int); | |
16715 void vec_dstst (const vector bool int *, int, const int); | |
16716 void vec_dstst (const vector float *, int, const int); | |
16717 void vec_dstst (const unsigned char *, int, const int); | |
16718 void vec_dstst (const signed char *, int, const int); | |
16719 void vec_dstst (const unsigned short *, int, const int); | |
16720 void vec_dstst (const short *, int, const int); | |
16721 void vec_dstst (const unsigned int *, int, const int); | |
16722 void vec_dstst (const int *, int, const int); | |
16723 void vec_dstst (const unsigned long *, int, const int); | |
16724 void vec_dstst (const long *, int, const int); | |
16725 void vec_dstst (const float *, int, const int); | |
16726 | |
16727 void vec_dststt (const vector unsigned char *, int, const int); | |
16728 void vec_dststt (const vector signed char *, int, const int); | |
16729 void vec_dststt (const vector bool char *, int, const int); | |
16730 void vec_dststt (const vector unsigned short *, int, const int); | |
16731 void vec_dststt (const vector signed short *, int, const int); | |
16732 void vec_dststt (const vector bool short *, int, const int); | |
16733 void vec_dststt (const vector pixel *, int, const int); | |
16734 void vec_dststt (const vector unsigned int *, int, const int); | |
16735 void vec_dststt (const vector signed int *, int, const int); | |
16736 void vec_dststt (const vector bool int *, int, const int); | |
16737 void vec_dststt (const vector float *, int, const int); | |
16738 void vec_dststt (const unsigned char *, int, const int); | |
16739 void vec_dststt (const signed char *, int, const int); | |
16740 void vec_dststt (const unsigned short *, int, const int); | |
16741 void vec_dststt (const short *, int, const int); | |
16742 void vec_dststt (const unsigned int *, int, const int); | |
16743 void vec_dststt (const int *, int, const int); | |
16744 void vec_dststt (const float *, int, const int); | |
16745 | |
16746 void vec_dstt (const vector unsigned char *, int, const int); | |
16747 void vec_dstt (const vector signed char *, int, const int); | |
16748 void vec_dstt (const vector bool char *, int, const int); | |
16749 void vec_dstt (const vector unsigned short *, int, const int); | |
16750 void vec_dstt (const vector signed short *, int, const int); | |
16751 void vec_dstt (const vector bool short *, int, const int); | |
16752 void vec_dstt (const vector pixel *, int, const int); | |
16753 void vec_dstt (const vector unsigned int *, int, const int); | |
16754 void vec_dstt (const vector signed int *, int, const int); | |
16755 void vec_dstt (const vector bool int *, int, const int); | |
16756 void vec_dstt (const vector float *, int, const int); | |
16757 void vec_dstt (const unsigned char *, int, const int); | |
16758 void vec_dstt (const signed char *, int, const int); | |
16759 void vec_dstt (const unsigned short *, int, const int); | |
16760 void vec_dstt (const short *, int, const int); | |
16761 void vec_dstt (const unsigned int *, int, const int); | |
16762 void vec_dstt (const int *, int, const int); | |
16763 void vec_dstt (const float *, int, const int); | |
16764 | |
16765 vector float vec_expte (vector float); | |
16766 | |
16767 vector float vec_floor (vector float); | |
16768 | |
16769 vector float vec_ld (int, const vector float *); | |
16770 vector float vec_ld (int, const float *); | |
16771 vector bool int vec_ld (int, const vector bool int *); | |
16772 vector signed int vec_ld (int, const vector signed int *); | |
16773 vector signed int vec_ld (int, const int *); | |
16774 vector unsigned int vec_ld (int, const vector unsigned int *); | |
16775 vector unsigned int vec_ld (int, const unsigned int *); | |
16776 vector bool short vec_ld (int, const vector bool short *); | |
16777 vector pixel vec_ld (int, const vector pixel *); | |
16778 vector signed short vec_ld (int, const vector signed short *); | |
16779 vector signed short vec_ld (int, const short *); | |
16780 vector unsigned short vec_ld (int, const vector unsigned short *); | |
16781 vector unsigned short vec_ld (int, const unsigned short *); | |
16782 vector bool char vec_ld (int, const vector bool char *); | |
16783 vector signed char vec_ld (int, const vector signed char *); | |
16784 vector signed char vec_ld (int, const signed char *); | |
16785 vector unsigned char vec_ld (int, const vector unsigned char *); | |
16786 vector unsigned char vec_ld (int, const unsigned char *); | |
16787 | |
16788 vector signed char vec_lde (int, const signed char *); | |
16789 vector unsigned char vec_lde (int, const unsigned char *); | |
16790 vector signed short vec_lde (int, const short *); | |
16791 vector unsigned short vec_lde (int, const unsigned short *); | |
16792 vector float vec_lde (int, const float *); | |
16793 vector signed int vec_lde (int, const int *); | |
16794 vector unsigned int vec_lde (int, const unsigned int *); | |
16795 | |
16796 vector float vec_ldl (int, const vector float *); | |
16797 vector float vec_ldl (int, const float *); | |
16798 vector bool int vec_ldl (int, const vector bool int *); | |
16799 vector signed int vec_ldl (int, const vector signed int *); | |
16800 vector signed int vec_ldl (int, const int *); | |
16801 vector unsigned int vec_ldl (int, const vector unsigned int *); | |
16802 vector unsigned int vec_ldl (int, const unsigned int *); | |
16803 vector bool short vec_ldl (int, const vector bool short *); | |
16804 vector pixel vec_ldl (int, const vector pixel *); | |
16805 vector signed short vec_ldl (int, const vector signed short *); | |
16806 vector signed short vec_ldl (int, const short *); | |
16807 vector unsigned short vec_ldl (int, const vector unsigned short *); | |
16808 vector unsigned short vec_ldl (int, const unsigned short *); | |
16809 vector bool char vec_ldl (int, const vector bool char *); | |
16810 vector signed char vec_ldl (int, const vector signed char *); | |
16811 vector signed char vec_ldl (int, const signed char *); | |
16812 vector unsigned char vec_ldl (int, const vector unsigned char *); | |
16813 vector unsigned char vec_ldl (int, const unsigned char *); | |
16814 | |
16815 vector float vec_loge (vector float); | |
16816 | |
16817 vector signed char vec_lvebx (int, char *); | |
16818 vector unsigned char vec_lvebx (int, unsigned char *); | |
16819 | |
16820 vector signed short vec_lvehx (int, short *); | |
16821 vector unsigned short vec_lvehx (int, unsigned short *); | |
16822 | |
16823 vector float vec_lvewx (int, float *); | |
16824 vector signed int vec_lvewx (int, int *); | |
16825 vector unsigned int vec_lvewx (int, unsigned int *); | |
16826 | |
16827 vector unsigned char vec_lvsl (int, const unsigned char *); | |
16828 vector unsigned char vec_lvsl (int, const signed char *); | |
16829 vector unsigned char vec_lvsl (int, const unsigned short *); | |
16830 vector unsigned char vec_lvsl (int, const short *); | |
16831 vector unsigned char vec_lvsl (int, const unsigned int *); | |
16832 vector unsigned char vec_lvsl (int, const int *); | |
16833 vector unsigned char vec_lvsl (int, const float *); | |
16834 | |
16835 vector unsigned char vec_lvsr (int, const unsigned char *); | |
16836 vector unsigned char vec_lvsr (int, const signed char *); | |
16837 vector unsigned char vec_lvsr (int, const unsigned short *); | |
16838 vector unsigned char vec_lvsr (int, const short *); | |
16839 vector unsigned char vec_lvsr (int, const unsigned int *); | |
16840 vector unsigned char vec_lvsr (int, const int *); | |
16841 vector unsigned char vec_lvsr (int, const float *); | |
16842 | |
16843 vector float vec_madd (vector float, vector float, vector float); | |
16844 | |
16845 vector signed short vec_madds (vector signed short, vector signed short, | |
16846 vector signed short); | |
16847 | |
16848 vector unsigned char vec_max (vector bool char, vector unsigned char); | |
16849 vector unsigned char vec_max (vector unsigned char, vector bool char); | |
16850 vector unsigned char vec_max (vector unsigned char, vector unsigned char); | |
16851 vector signed char vec_max (vector bool char, vector signed char); | |
16852 vector signed char vec_max (vector signed char, vector bool char); | |
16853 vector signed char vec_max (vector signed char, vector signed char); | |
16854 vector unsigned short vec_max (vector bool short, vector unsigned short); | |
16855 vector unsigned short vec_max (vector unsigned short, vector bool short); | |
16856 vector unsigned short vec_max (vector unsigned short, vector unsigned short); | |
16857 vector signed short vec_max (vector bool short, vector signed short); | |
16858 vector signed short vec_max (vector signed short, vector bool short); | |
16859 vector signed short vec_max (vector signed short, vector signed short); | |
16860 vector unsigned int vec_max (vector bool int, vector unsigned int); | |
16861 vector unsigned int vec_max (vector unsigned int, vector bool int); | |
16862 vector unsigned int vec_max (vector unsigned int, vector unsigned int); | |
16863 vector signed int vec_max (vector bool int, vector signed int); | |
16864 vector signed int vec_max (vector signed int, vector bool int); | |
16865 vector signed int vec_max (vector signed int, vector signed int); | |
16866 vector float vec_max (vector float, vector float); | |
16867 | |
16868 vector bool char vec_mergeh (vector bool char, vector bool char); | |
16869 vector signed char vec_mergeh (vector signed char, vector signed char); | |
16870 vector unsigned char vec_mergeh (vector unsigned char, vector unsigned char); | |
16871 vector bool short vec_mergeh (vector bool short, vector bool short); | |
16872 vector pixel vec_mergeh (vector pixel, vector pixel); | |
16873 vector signed short vec_mergeh (vector signed short, vector signed short); | |
16874 vector unsigned short vec_mergeh (vector unsigned short, vector unsigned short); | |
16875 vector float vec_mergeh (vector float, vector float); | |
16876 vector bool int vec_mergeh (vector bool int, vector bool int); | |
16877 vector signed int vec_mergeh (vector signed int, vector signed int); | |
16878 vector unsigned int vec_mergeh (vector unsigned int, vector unsigned int); | |
16879 | |
16880 vector bool char vec_mergel (vector bool char, vector bool char); | |
16881 vector signed char vec_mergel (vector signed char, vector signed char); | |
16882 vector unsigned char vec_mergel (vector unsigned char, vector unsigned char); | |
16883 vector bool short vec_mergel (vector bool short, vector bool short); | |
16884 vector pixel vec_mergel (vector pixel, vector pixel); | |
16885 vector signed short vec_mergel (vector signed short, vector signed short); | |
16886 vector unsigned short vec_mergel (vector unsigned short, vector unsigned short); | |
16887 vector float vec_mergel (vector float, vector float); | |
16888 vector bool int vec_mergel (vector bool int, vector bool int); | |
16889 vector signed int vec_mergel (vector signed int, vector signed int); | |
16890 vector unsigned int vec_mergel (vector unsigned int, vector unsigned int); | |
16891 | |
16892 vector unsigned short vec_mfvscr (void); | |
16893 | |
16894 vector unsigned char vec_min (vector bool char, vector unsigned char); | |
16895 vector unsigned char vec_min (vector unsigned char, vector bool char); | |
16896 vector unsigned char vec_min (vector unsigned char, vector unsigned char); | |
16897 vector signed char vec_min (vector bool char, vector signed char); | |
16898 vector signed char vec_min (vector signed char, vector bool char); | |
16899 vector signed char vec_min (vector signed char, vector signed char); | |
16900 vector unsigned short vec_min (vector bool short, vector unsigned short); | |
16901 vector unsigned short vec_min (vector unsigned short, vector bool short); | |
16902 vector unsigned short vec_min (vector unsigned short, vector unsigned short); | |
16903 vector signed short vec_min (vector bool short, vector signed short); | |
16904 vector signed short vec_min (vector signed short, vector bool short); | |
16905 vector signed short vec_min (vector signed short, vector signed short); | |
16906 vector unsigned int vec_min (vector bool int, vector unsigned int); | |
16907 vector unsigned int vec_min (vector unsigned int, vector bool int); | |
16908 vector unsigned int vec_min (vector unsigned int, vector unsigned int); | |
16909 vector signed int vec_min (vector bool int, vector signed int); | |
16910 vector signed int vec_min (vector signed int, vector bool int); | |
16911 vector signed int vec_min (vector signed int, vector signed int); | |
16912 vector float vec_min (vector float, vector float); | |
16913 | |
16914 vector signed short vec_mladd (vector signed short, vector signed short, | |
16915 vector signed short); | |
16916 vector signed short vec_mladd (vector signed short, vector unsigned short, | |
16917 vector unsigned short); | |
16918 vector signed short vec_mladd (vector unsigned short, vector signed short, | |
16919 vector signed short); | |
16920 vector unsigned short vec_mladd (vector unsigned short, vector unsigned short, | |
16921 vector unsigned short); | |
16922 | |
16923 vector signed short vec_mradds (vector signed short, vector signed short, | |
16924 vector signed short); | |
16925 | |
16926 vector unsigned int vec_msum (vector unsigned char, vector unsigned char, | |
16927 vector unsigned int); | |
16928 vector signed int vec_msum (vector signed char, vector unsigned char, | |
16929 vector signed int); | |
16930 vector unsigned int vec_msum (vector unsigned short, vector unsigned short, | |
16931 vector unsigned int); | |
16932 vector signed int vec_msum (vector signed short, vector signed short, | |
16933 vector signed int); | |
16934 | |
16935 vector unsigned int vec_msums (vector unsigned short, vector unsigned short, | |
16936 vector unsigned int); | |
16937 vector signed int vec_msums (vector signed short, vector signed short, | |
16938 vector signed int); | |
16939 | |
16940 void vec_mtvscr (vector signed int); | |
16941 void vec_mtvscr (vector unsigned int); | |
16942 void vec_mtvscr (vector bool int); | |
16943 void vec_mtvscr (vector signed short); | |
16944 void vec_mtvscr (vector unsigned short); | |
16945 void vec_mtvscr (vector bool short); | |
16946 void vec_mtvscr (vector pixel); | |
16947 void vec_mtvscr (vector signed char); | |
16948 void vec_mtvscr (vector unsigned char); | |
16949 void vec_mtvscr (vector bool char); | |
16950 | |
16951 vector float vec_mul (vector float, vector float); | |
16952 | |
16953 vector unsigned short vec_mule (vector unsigned char, vector unsigned char); | |
16954 vector signed short vec_mule (vector signed char, vector signed char); | |
16955 vector unsigned int vec_mule (vector unsigned short, vector unsigned short); | |
16956 vector signed int vec_mule (vector signed short, vector signed short); | |
16957 | |
16958 vector unsigned short vec_mulo (vector unsigned char, vector unsigned char); | |
16959 vector signed short vec_mulo (vector signed char, vector signed char); | |
16960 vector unsigned int vec_mulo (vector unsigned short, vector unsigned short); | |
16961 vector signed int vec_mulo (vector signed short, vector signed short); | |
16962 | |
16963 vector signed char vec_nabs (vector signed char); | |
16964 vector signed short vec_nabs (vector signed short); | |
16965 vector signed int vec_nabs (vector signed int); | |
16966 vector float vec_nabs (vector float); | |
16967 | |
16968 vector float vec_nmsub (vector float, vector float, vector float); | |
16969 | |
16970 vector float vec_nor (vector float, vector float); | |
16971 vector signed int vec_nor (vector signed int, vector signed int); | |
16972 vector unsigned int vec_nor (vector unsigned int, vector unsigned int); | |
16973 vector bool int vec_nor (vector bool int, vector bool int); | |
16974 vector signed short vec_nor (vector signed short, vector signed short); | |
16975 vector unsigned short vec_nor (vector unsigned short, vector unsigned short); | |
16976 vector bool short vec_nor (vector bool short, vector bool short); | |
16977 vector signed char vec_nor (vector signed char, vector signed char); | |
16978 vector unsigned char vec_nor (vector unsigned char, vector unsigned char); | |
16979 vector bool char vec_nor (vector bool char, vector bool char); | |
16980 | |
16981 vector float vec_or (vector float, vector float); | |
16982 vector float vec_or (vector float, vector bool int); | |
16983 vector float vec_or (vector bool int, vector float); | |
16984 vector bool int vec_or (vector bool int, vector bool int); | |
16985 vector signed int vec_or (vector bool int, vector signed int); | |
16986 vector signed int vec_or (vector signed int, vector bool int); | |
16987 vector signed int vec_or (vector signed int, vector signed int); | |
16988 vector unsigned int vec_or (vector bool int, vector unsigned int); | |
16989 vector unsigned int vec_or (vector unsigned int, vector bool int); | |
16990 vector unsigned int vec_or (vector unsigned int, vector unsigned int); | |
16991 vector bool short vec_or (vector bool short, vector bool short); | |
16992 vector signed short vec_or (vector bool short, vector signed short); | |
16993 vector signed short vec_or (vector signed short, vector bool short); | |
16994 vector signed short vec_or (vector signed short, vector signed short); | |
16995 vector unsigned short vec_or (vector bool short, vector unsigned short); | |
16996 vector unsigned short vec_or (vector unsigned short, vector bool short); | |
16997 vector unsigned short vec_or (vector unsigned short, vector unsigned short); | |
16998 vector signed char vec_or (vector bool char, vector signed char); | |
16999 vector bool char vec_or (vector bool char, vector bool char); | |
17000 vector signed char vec_or (vector signed char, vector bool char); | |
17001 vector signed char vec_or (vector signed char, vector signed char); | |
17002 vector unsigned char vec_or (vector bool char, vector unsigned char); | |
17003 vector unsigned char vec_or (vector unsigned char, vector bool char); | |
17004 vector unsigned char vec_or (vector unsigned char, vector unsigned char); | |
17005 | |
17006 vector signed char vec_pack (vector signed short, vector signed short); | |
17007 vector unsigned char vec_pack (vector unsigned short, vector unsigned short); | |
17008 vector bool char vec_pack (vector bool short, vector bool short); | |
17009 vector signed short vec_pack (vector signed int, vector signed int); | |
17010 vector unsigned short vec_pack (vector unsigned int, vector unsigned int); | |
17011 vector bool short vec_pack (vector bool int, vector bool int); | |
17012 | |
17013 vector pixel vec_packpx (vector unsigned int, vector unsigned int); | |
17014 | |
17015 vector unsigned char vec_packs (vector unsigned short, vector unsigned short); | |
17016 vector signed char vec_packs (vector signed short, vector signed short); | |
17017 vector unsigned short vec_packs (vector unsigned int, vector unsigned int); | |
17018 vector signed short vec_packs (vector signed int, vector signed int); | |
17019 | |
17020 vector unsigned char vec_packsu (vector unsigned short, vector unsigned short); | |
17021 vector unsigned char vec_packsu (vector signed short, vector signed short); | |
17022 vector unsigned short vec_packsu (vector unsigned int, vector unsigned int); | |
17023 vector unsigned short vec_packsu (vector signed int, vector signed int); | |
17024 | |
17025 vector float vec_perm (vector float, vector float, vector unsigned char); | |
17026 vector signed int vec_perm (vector signed int, vector signed int, vector unsigned char); | |
17027 vector unsigned int vec_perm (vector unsigned int, vector unsigned int, | |
17028 vector unsigned char); | |
17029 vector bool int vec_perm (vector bool int, vector bool int, vector unsigned char); | |
17030 vector signed short vec_perm (vector signed short, vector signed short, | |
17031 vector unsigned char); | |
17032 vector unsigned short vec_perm (vector unsigned short, vector unsigned short, | |
17033 vector unsigned char); | |
17034 vector bool short vec_perm (vector bool short, vector bool short, vector unsigned char); | |
17035 vector pixel vec_perm (vector pixel, vector pixel, vector unsigned char); | |
17036 vector signed char vec_perm (vector signed char, vector signed char, | |
17037 vector unsigned char); | |
17038 vector unsigned char vec_perm (vector unsigned char, vector unsigned char, | |
17039 vector unsigned char); | |
17040 vector bool char vec_perm (vector bool char, vector bool char, vector unsigned char); | |
17041 | |
17042 vector float vec_re (vector float); | |
17043 | |
17044 vector bool char vec_reve (vector bool char); | |
17045 vector signed char vec_reve (vector signed char); | |
17046 vector unsigned char vec_reve (vector unsigned char); | |
17047 vector bool int vec_reve (vector bool int); | |
17048 vector signed int vec_reve (vector signed int); | |
17049 vector unsigned int vec_reve (vector unsigned int); | |
17050 vector bool short vec_reve (vector bool short); | |
17051 vector signed short vec_reve (vector signed short); | |
17052 vector unsigned short vec_reve (vector unsigned short); | |
17053 | |
17054 vector signed char vec_rl (vector signed char, vector unsigned char); | |
17055 vector unsigned char vec_rl (vector unsigned char, vector unsigned char); | |
17056 vector signed short vec_rl (vector signed short, vector unsigned short); | |
17057 vector unsigned short vec_rl (vector unsigned short, vector unsigned short); | |
17058 vector signed int vec_rl (vector signed int, vector unsigned int); | |
17059 vector unsigned int vec_rl (vector unsigned int, vector unsigned int); | |
17060 | |
17061 vector float vec_round (vector float); | |
17062 | |
17063 vector float vec_rsqrt (vector float); | |
17064 | |
17065 vector float vec_rsqrte (vector float); | |
17066 | |
17067 vector float vec_sel (vector float, vector float, vector bool int); | |
17068 vector float vec_sel (vector float, vector float, vector unsigned int); | |
17069 vector signed int vec_sel (vector signed int, vector signed int, vector bool int); | |
17070 vector signed int vec_sel (vector signed int, vector signed int, vector unsigned int); | |
17071 vector unsigned int vec_sel (vector unsigned int, vector unsigned int, vector bool int); | |
17072 vector unsigned int vec_sel (vector unsigned int, vector unsigned int, | |
17073 vector unsigned int); | |
17074 vector bool int vec_sel (vector bool int, vector bool int, vector bool int); | |
17075 vector bool int vec_sel (vector bool int, vector bool int, vector unsigned int); | |
17076 vector signed short vec_sel (vector signed short, vector signed short, | |
17077 vector bool short); | |
17078 vector signed short vec_sel (vector signed short, vector signed short, | |
17079 vector unsigned short); | |
17080 vector unsigned short vec_sel (vector unsigned short, vector unsigned short, | |
17081 vector bool short); | |
17082 vector unsigned short vec_sel (vector unsigned short, vector unsigned short, | |
17083 vector unsigned short); | |
17084 vector bool short vec_sel (vector bool short, vector bool short, vector bool short); | |
17085 vector bool short vec_sel (vector bool short, vector bool short, vector unsigned short); | |
17086 vector signed char vec_sel (vector signed char, vector signed char, vector bool char); | |
17087 vector signed char vec_sel (vector signed char, vector signed char, | |
17088 vector unsigned char); | |
17089 vector unsigned char vec_sel (vector unsigned char, vector unsigned char, | |
17090 vector bool char); | |
17091 vector unsigned char vec_sel (vector unsigned char, vector unsigned char, | |
17092 vector unsigned char); | |
17093 vector bool char vec_sel (vector bool char, vector bool char, vector bool char); | |
17094 vector bool char vec_sel (vector bool char, vector bool char, vector unsigned char); | |
17095 | |
17096 vector signed char vec_sl (vector signed char, vector unsigned char); | |
17097 vector unsigned char vec_sl (vector unsigned char, vector unsigned char); | |
17098 vector signed short vec_sl (vector signed short, vector unsigned short); | |
17099 vector unsigned short vec_sl (vector unsigned short, vector unsigned short); | |
17100 vector signed int vec_sl (vector signed int, vector unsigned int); | |
17101 vector unsigned int vec_sl (vector unsigned int, vector unsigned int); | |
17102 | |
17103 vector float vec_sld (vector float, vector float, const int); | |
17104 vector signed int vec_sld (vector signed int, vector signed int, const int); | |
17105 vector unsigned int vec_sld (vector unsigned int, vector unsigned int, const int); | |
17106 vector bool int vec_sld (vector bool int, vector bool int, const int); | |
17107 vector signed short vec_sld (vector signed short, vector signed short, const int); | |
17108 vector unsigned short vec_sld (vector unsigned short, vector unsigned short, const int); | |
17109 vector bool short vec_sld (vector bool short, vector bool short, const int); | |
17110 vector pixel vec_sld (vector pixel, vector pixel, const int); | |
17111 vector signed char vec_sld (vector signed char, vector signed char, const int); | |
17112 vector unsigned char vec_sld (vector unsigned char, vector unsigned char, const int); | |
17113 vector bool char vec_sld (vector bool char, vector bool char, const int); | |
17114 | |
17115 vector signed int vec_sll (vector signed int, vector unsigned int); | |
17116 vector signed int vec_sll (vector signed int, vector unsigned short); | |
17117 vector signed int vec_sll (vector signed int, vector unsigned char); | |
17118 vector unsigned int vec_sll (vector unsigned int, vector unsigned int); | |
17119 vector unsigned int vec_sll (vector unsigned int, vector unsigned short); | |
17120 vector unsigned int vec_sll (vector unsigned int, vector unsigned char); | |
17121 vector bool int vec_sll (vector bool int, vector unsigned int); | |
17122 vector bool int vec_sll (vector bool int, vector unsigned short); | |
17123 vector bool int vec_sll (vector bool int, vector unsigned char); | |
17124 vector signed short vec_sll (vector signed short, vector unsigned int); | |
17125 vector signed short vec_sll (vector signed short, vector unsigned short); | |
17126 vector signed short vec_sll (vector signed short, vector unsigned char); | |
17127 vector unsigned short vec_sll (vector unsigned short, vector unsigned int); | |
17128 vector unsigned short vec_sll (vector unsigned short, vector unsigned short); | |
17129 vector unsigned short vec_sll (vector unsigned short, vector unsigned char); | |
17130 vector bool short vec_sll (vector bool short, vector unsigned int); | |
17131 vector bool short vec_sll (vector bool short, vector unsigned short); | |
17132 vector bool short vec_sll (vector bool short, vector unsigned char); | |
17133 vector pixel vec_sll (vector pixel, vector unsigned int); | |
17134 vector pixel vec_sll (vector pixel, vector unsigned short); | |
17135 vector pixel vec_sll (vector pixel, vector unsigned char); | |
17136 vector signed char vec_sll (vector signed char, vector unsigned int); | |
17137 vector signed char vec_sll (vector signed char, vector unsigned short); | |
17138 vector signed char vec_sll (vector signed char, vector unsigned char); | |
17139 vector unsigned char vec_sll (vector unsigned char, vector unsigned int); | |
17140 vector unsigned char vec_sll (vector unsigned char, vector unsigned short); | |
17141 vector unsigned char vec_sll (vector unsigned char, vector unsigned char); | |
17142 vector bool char vec_sll (vector bool char, vector unsigned int); | |
17143 vector bool char vec_sll (vector bool char, vector unsigned short); | |
17144 vector bool char vec_sll (vector bool char, vector unsigned char); | |
17145 | |
17146 vector float vec_slo (vector float, vector signed char); | |
17147 vector float vec_slo (vector float, vector unsigned char); | |
17148 vector signed int vec_slo (vector signed int, vector signed char); | |
17149 vector signed int vec_slo (vector signed int, vector unsigned char); | |
17150 vector unsigned int vec_slo (vector unsigned int, vector signed char); | |
17151 vector unsigned int vec_slo (vector unsigned int, vector unsigned char); | |
17152 vector signed short vec_slo (vector signed short, vector signed char); | |
17153 vector signed short vec_slo (vector signed short, vector unsigned char); | |
17154 vector unsigned short vec_slo (vector unsigned short, vector signed char); | |
17155 vector unsigned short vec_slo (vector unsigned short, vector unsigned char); | |
17156 vector pixel vec_slo (vector pixel, vector signed char); | |
17157 vector pixel vec_slo (vector pixel, vector unsigned char); | |
17158 vector signed char vec_slo (vector signed char, vector signed char); | |
17159 vector signed char vec_slo (vector signed char, vector unsigned char); | |
17160 vector unsigned char vec_slo (vector unsigned char, vector signed char); | |
17161 vector unsigned char vec_slo (vector unsigned char, vector unsigned char); | |
17162 | |
17163 vector signed char vec_splat (vector signed char, const int); | |
17164 vector unsigned char vec_splat (vector unsigned char, const int); | |
17165 vector bool char vec_splat (vector bool char, const int); | |
17166 vector signed short vec_splat (vector signed short, const int); | |
17167 vector unsigned short vec_splat (vector unsigned short, const int); | |
17168 vector bool short vec_splat (vector bool short, const int); | |
17169 vector pixel vec_splat (vector pixel, const int); | |
17170 vector float vec_splat (vector float, const int); | |
17171 vector signed int vec_splat (vector signed int, const int); | |
17172 vector unsigned int vec_splat (vector unsigned int, const int); | |
17173 vector bool int vec_splat (vector bool int, const int); | |
17174 | |
17175 vector signed short vec_splat_s16 (const int); | |
17176 | |
17177 vector signed int vec_splat_s32 (const int); | |
17178 | |
17179 vector signed char vec_splat_s8 (const int); | |
17180 | |
17181 vector unsigned short vec_splat_u16 (const int); | |
17182 | |
17183 vector unsigned int vec_splat_u32 (const int); | |
17184 | |
17185 vector unsigned char vec_splat_u8 (const int); | |
17186 | |
17187 vector signed char vec_splats (signed char); | |
17188 vector unsigned char vec_splats (unsigned char); | |
17189 vector signed short vec_splats (signed short); | |
17190 vector unsigned short vec_splats (unsigned short); | |
17191 vector signed int vec_splats (signed int); | |
17192 vector unsigned int vec_splats (unsigned int); | |
17193 vector float vec_splats (float); | |
17194 | |
17195 vector signed char vec_sr (vector signed char, vector unsigned char); | |
17196 vector unsigned char vec_sr (vector unsigned char, vector unsigned char); | |
17197 vector signed short vec_sr (vector signed short, vector unsigned short); | |
17198 vector unsigned short vec_sr (vector unsigned short, vector unsigned short); | |
17199 vector signed int vec_sr (vector signed int, vector unsigned int); | |
17200 vector unsigned int vec_sr (vector unsigned int, vector unsigned int); | |
17201 | |
17202 vector signed char vec_sra (vector signed char, vector unsigned char); | |
17203 vector unsigned char vec_sra (vector unsigned char, vector unsigned char); | |
17204 vector signed short vec_sra (vector signed short, vector unsigned short); | |
17205 vector unsigned short vec_sra (vector unsigned short, vector unsigned short); | |
17206 vector signed int vec_sra (vector signed int, vector unsigned int); | |
17207 vector unsigned int vec_sra (vector unsigned int, vector unsigned int); | |
17208 | |
17209 vector signed int vec_srl (vector signed int, vector unsigned int); | |
17210 vector signed int vec_srl (vector signed int, vector unsigned short); | |
17211 vector signed int vec_srl (vector signed int, vector unsigned char); | |
17212 vector unsigned int vec_srl (vector unsigned int, vector unsigned int); | |
17213 vector unsigned int vec_srl (vector unsigned int, vector unsigned short); | |
17214 vector unsigned int vec_srl (vector unsigned int, vector unsigned char); | |
17215 vector bool int vec_srl (vector bool int, vector unsigned int); | |
17216 vector bool int vec_srl (vector bool int, vector unsigned short); | |
17217 vector bool int vec_srl (vector bool int, vector unsigned char); | |
17218 vector signed short vec_srl (vector signed short, vector unsigned int); | |
17219 vector signed short vec_srl (vector signed short, vector unsigned short); | |
17220 vector signed short vec_srl (vector signed short, vector unsigned char); | |
17221 vector unsigned short vec_srl (vector unsigned short, vector unsigned int); | |
17222 vector unsigned short vec_srl (vector unsigned short, vector unsigned short); | |
17223 vector unsigned short vec_srl (vector unsigned short, vector unsigned char); | |
17224 vector bool short vec_srl (vector bool short, vector unsigned int); | |
17225 vector bool short vec_srl (vector bool short, vector unsigned short); | |
17226 vector bool short vec_srl (vector bool short, vector unsigned char); | |
17227 vector pixel vec_srl (vector pixel, vector unsigned int); | |
17228 vector pixel vec_srl (vector pixel, vector unsigned short); | |
17229 vector pixel vec_srl (vector pixel, vector unsigned char); | |
17230 vector signed char vec_srl (vector signed char, vector unsigned int); | |
17231 vector signed char vec_srl (vector signed char, vector unsigned short); | |
17232 vector signed char vec_srl (vector signed char, vector unsigned char); | |
17233 vector unsigned char vec_srl (vector unsigned char, vector unsigned int); | |
17234 vector unsigned char vec_srl (vector unsigned char, vector unsigned short); | |
17235 vector unsigned char vec_srl (vector unsigned char, vector unsigned char); | |
17236 vector bool char vec_srl (vector bool char, vector unsigned int); | |
17237 vector bool char vec_srl (vector bool char, vector unsigned short); | |
17238 vector bool char vec_srl (vector bool char, vector unsigned char); | |
17239 | |
17240 vector float vec_sro (vector float, vector signed char); | |
17241 vector float vec_sro (vector float, vector unsigned char); | |
17242 vector signed int vec_sro (vector signed int, vector signed char); | |
17243 vector signed int vec_sro (vector signed int, vector unsigned char); | |
17244 vector unsigned int vec_sro (vector unsigned int, vector signed char); | |
17245 vector unsigned int vec_sro (vector unsigned int, vector unsigned char); | |
17246 vector signed short vec_sro (vector signed short, vector signed char); | |
17247 vector signed short vec_sro (vector signed short, vector unsigned char); | |
17248 vector unsigned short vec_sro (vector unsigned short, vector signed char); | |
17249 vector unsigned short vec_sro (vector unsigned short, vector unsigned char); | |
17250 vector pixel vec_sro (vector pixel, vector signed char); | |
17251 vector pixel vec_sro (vector pixel, vector unsigned char); | |
17252 vector signed char vec_sro (vector signed char, vector signed char); | |
17253 vector signed char vec_sro (vector signed char, vector unsigned char); | |
17254 vector unsigned char vec_sro (vector unsigned char, vector signed char); | |
17255 vector unsigned char vec_sro (vector unsigned char, vector unsigned char); | |
17256 | |
17257 void vec_st (vector float, int, vector float *); | |
17258 void vec_st (vector float, int, float *); | |
17259 void vec_st (vector signed int, int, vector signed int *); | |
17260 void vec_st (vector signed int, int, int *); | |
17261 void vec_st (vector unsigned int, int, vector unsigned int *); | |
17262 void vec_st (vector unsigned int, int, unsigned int *); | |
17263 void vec_st (vector bool int, int, vector bool int *); | |
17264 void vec_st (vector bool int, int, unsigned int *); | |
17265 void vec_st (vector bool int, int, int *); | |
17266 void vec_st (vector signed short, int, vector signed short *); | |
17267 void vec_st (vector signed short, int, short *); | |
17268 void vec_st (vector unsigned short, int, vector unsigned short *); | |
17269 void vec_st (vector unsigned short, int, unsigned short *); | |
17270 void vec_st (vector bool short, int, vector bool short *); | |
17271 void vec_st (vector bool short, int, unsigned short *); | |
17272 void vec_st (vector pixel, int, vector pixel *); | |
17273 void vec_st (vector bool short, int, short *); | |
17274 void vec_st (vector signed char, int, vector signed char *); | |
17275 void vec_st (vector signed char, int, signed char *); | |
17276 void vec_st (vector unsigned char, int, vector unsigned char *); | |
17277 void vec_st (vector unsigned char, int, unsigned char *); | |
17278 void vec_st (vector bool char, int, vector bool char *); | |
17279 void vec_st (vector bool char, int, unsigned char *); | |
17280 void vec_st (vector bool char, int, signed char *); | |
17281 | |
17282 void vec_ste (vector signed char, int, signed char *); | |
17283 void vec_ste (vector unsigned char, int, unsigned char *); | |
17284 void vec_ste (vector bool char, int, signed char *); | |
17285 void vec_ste (vector bool char, int, unsigned char *); | |
17286 void vec_ste (vector signed short, int, short *); | |
17287 void vec_ste (vector unsigned short, int, unsigned short *); | |
17288 void vec_ste (vector bool short, int, short *); | |
17289 void vec_ste (vector bool short, int, unsigned short *); | |
17290 void vec_ste (vector pixel, int, short *); | |
17291 void vec_ste (vector pixel, int, unsigned short *); | |
17292 void vec_ste (vector float, int, float *); | |
17293 void vec_ste (vector signed int, int, int *); | |
17294 void vec_ste (vector unsigned int, int, unsigned int *); | |
17295 void vec_ste (vector bool int, int, int *); | |
17296 void vec_ste (vector bool int, int, unsigned int *); | |
17297 | |
17298 void vec_stl (vector float, int, vector float *); | |
17299 void vec_stl (vector float, int, float *); | |
17300 void vec_stl (vector signed int, int, vector signed int *); | |
17301 void vec_stl (vector signed int, int, int *); | |
17302 void vec_stl (vector unsigned int, int, vector unsigned int *); | |
17303 void vec_stl (vector unsigned int, int, unsigned int *); | |
17304 void vec_stl (vector bool int, int, vector bool int *); | |
17305 void vec_stl (vector bool int, int, unsigned int *); | |
17306 void vec_stl (vector bool int, int, int *); | |
17307 void vec_stl (vector signed short, int, vector signed short *); | |
17308 void vec_stl (vector signed short, int, short *); | |
17309 void vec_stl (vector unsigned short, int, vector unsigned short *); | |
17310 void vec_stl (vector unsigned short, int, unsigned short *); | |
17311 void vec_stl (vector bool short, int, vector bool short *); | |
17312 void vec_stl (vector bool short, int, unsigned short *); | |
17313 void vec_stl (vector bool short, int, short *); | |
17314 void vec_stl (vector pixel, int, vector pixel *); | |
17315 void vec_stl (vector signed char, int, vector signed char *); | |
17316 void vec_stl (vector signed char, int, signed char *); | |
17317 void vec_stl (vector unsigned char, int, vector unsigned char *); | |
17318 void vec_stl (vector unsigned char, int, unsigned char *); | |
17319 void vec_stl (vector bool char, int, vector bool char *); | |
17320 void vec_stl (vector bool char, int, unsigned char *); | |
17321 void vec_stl (vector bool char, int, signed char *); | |
17322 | |
17323 void vec_stvebx (vector signed char, int, signed char *); | |
17324 void vec_stvebx (vector unsigned char, int, unsigned char *); | |
17325 void vec_stvebx (vector bool char, int, signed char *); | |
17326 void vec_stvebx (vector bool char, int, unsigned char *); | |
17327 | |
17328 void vec_stvehx (vector signed short, int, short *); | |
17329 void vec_stvehx (vector unsigned short, int, unsigned short *); | |
17330 void vec_stvehx (vector bool short, int, short *); | |
17331 void vec_stvehx (vector bool short, int, unsigned short *); | |
17332 | |
17333 void vec_stvewx (vector float, int, float *); | |
17334 void vec_stvewx (vector signed int, int, int *); | |
17335 void vec_stvewx (vector unsigned int, int, unsigned int *); | |
17336 void vec_stvewx (vector bool int, int, int *); | |
17337 void vec_stvewx (vector bool int, int, unsigned int *); | |
17338 | |
17339 vector signed char vec_sub (vector bool char, vector signed char); | |
17340 vector signed char vec_sub (vector signed char, vector bool char); | |
17341 vector signed char vec_sub (vector signed char, vector signed char); | |
17342 vector unsigned char vec_sub (vector bool char, vector unsigned char); | |
17343 vector unsigned char vec_sub (vector unsigned char, vector bool char); | |
17344 vector unsigned char vec_sub (vector unsigned char, vector unsigned char); | |
17345 vector signed short vec_sub (vector bool short, vector signed short); | |
17346 vector signed short vec_sub (vector signed short, vector bool short); | |
17347 vector signed short vec_sub (vector signed short, vector signed short); | |
17348 vector unsigned short vec_sub (vector bool short, vector unsigned short); | |
17349 vector unsigned short vec_sub (vector unsigned short, vector bool short); | |
17350 vector unsigned short vec_sub (vector unsigned short, vector unsigned short); | |
17351 vector signed int vec_sub (vector bool int, vector signed int); | |
17352 vector signed int vec_sub (vector signed int, vector bool int); | |
17353 vector signed int vec_sub (vector signed int, vector signed int); | |
17354 vector unsigned int vec_sub (vector bool int, vector unsigned int); | |
17355 vector unsigned int vec_sub (vector unsigned int, vector bool int); | |
17356 vector unsigned int vec_sub (vector unsigned int, vector unsigned int); | |
17357 vector float vec_sub (vector float, vector float); | |
17358 | |
17359 vector signed int vec_subc (vector signed int, vector signed int); | |
17360 vector unsigned int vec_subc (vector unsigned int, vector unsigned int); | |
17361 | |
17362 vector signed int vec_sube (vector signed int, vector signed int, | |
17363 vector signed int); | |
17364 vector unsigned int vec_sube (vector unsigned int, vector unsigned int, | |
17365 vector unsigned int); | |
17366 | |
17367 vector signed int vec_subec (vector signed int, vector signed int, | |
17368 vector signed int); | |
17369 vector unsigned int vec_subec (vector unsigned int, vector unsigned int, | |
17370 vector unsigned int); | |
17371 | |
17372 vector unsigned char vec_subs (vector bool char, vector unsigned char); | |
17373 vector unsigned char vec_subs (vector unsigned char, vector bool char); | |
17374 vector unsigned char vec_subs (vector unsigned char, vector unsigned char); | |
17375 vector signed char vec_subs (vector bool char, vector signed char); | |
17376 vector signed char vec_subs (vector signed char, vector bool char); | |
17377 vector signed char vec_subs (vector signed char, vector signed char); | |
17378 vector unsigned short vec_subs (vector bool short, vector unsigned short); | |
17379 vector unsigned short vec_subs (vector unsigned short, vector bool short); | |
17380 vector unsigned short vec_subs (vector unsigned short, vector unsigned short); | |
17381 vector signed short vec_subs (vector bool short, vector signed short); | |
17382 vector signed short vec_subs (vector signed short, vector bool short); | |
17383 vector signed short vec_subs (vector signed short, vector signed short); | |
17384 vector unsigned int vec_subs (vector bool int, vector unsigned int); | |
17385 vector unsigned int vec_subs (vector unsigned int, vector bool int); | |
17386 vector unsigned int vec_subs (vector unsigned int, vector unsigned int); | |
17387 vector signed int vec_subs (vector bool int, vector signed int); | |
17388 vector signed int vec_subs (vector signed int, vector bool int); | |
17389 vector signed int vec_subs (vector signed int, vector signed int); | |
17390 | |
17391 vector signed int vec_sum2s (vector signed int, vector signed int); | |
17392 | |
17393 vector unsigned int vec_sum4s (vector unsigned char, vector unsigned int); | |
17394 vector signed int vec_sum4s (vector signed char, vector signed int); | |
17395 vector signed int vec_sum4s (vector signed short, vector signed int); | |
17396 | |
17397 vector signed int vec_sums (vector signed int, vector signed int); | |
17398 | |
17399 vector float vec_trunc (vector float); | |
17400 | |
17401 vector signed short vec_unpackh (vector signed char); | |
17402 vector bool short vec_unpackh (vector bool char); | |
17403 vector signed int vec_unpackh (vector signed short); | |
17404 vector bool int vec_unpackh (vector bool short); | |
17405 vector unsigned int vec_unpackh (vector pixel); | |
17406 | |
17407 vector signed short vec_unpackl (vector signed char); | |
17408 vector bool short vec_unpackl (vector bool char); | |
17409 vector unsigned int vec_unpackl (vector pixel); | |
17410 vector signed int vec_unpackl (vector signed short); | |
17411 vector bool int vec_unpackl (vector bool short); | |
17412 | |
17413 vector float vec_vaddfp (vector float, vector float); | |
17414 | |
17415 vector signed char vec_vaddsbs (vector bool char, vector signed char); | |
17416 vector signed char vec_vaddsbs (vector signed char, vector bool char); | |
17417 vector signed char vec_vaddsbs (vector signed char, vector signed char); | |
17418 | |
17419 vector signed short vec_vaddshs (vector bool short, vector signed short); | |
17420 vector signed short vec_vaddshs (vector signed short, vector bool short); | |
17421 vector signed short vec_vaddshs (vector signed short, vector signed short); | |
17422 | |
17423 vector signed int vec_vaddsws (vector bool int, vector signed int); | |
17424 vector signed int vec_vaddsws (vector signed int, vector bool int); | |
17425 vector signed int vec_vaddsws (vector signed int, vector signed int); | |
17426 | |
17427 vector signed char vec_vaddubm (vector bool char, vector signed char); | |
17428 vector signed char vec_vaddubm (vector signed char, vector bool char); | |
17429 vector signed char vec_vaddubm (vector signed char, vector signed char); | |
17430 vector unsigned char vec_vaddubm (vector bool char, vector unsigned char); | |
17431 vector unsigned char vec_vaddubm (vector unsigned char, vector bool char); | |
17432 vector unsigned char vec_vaddubm (vector unsigned char, vector unsigned char); | |
17433 | |
17434 vector unsigned char vec_vaddubs (vector bool char, vector unsigned char); | |
17435 vector unsigned char vec_vaddubs (vector unsigned char, vector bool char); | |
17436 vector unsigned char vec_vaddubs (vector unsigned char, vector unsigned char); | |
17437 | |
17438 vector signed short vec_vadduhm (vector bool short, vector signed short); | |
17439 vector signed short vec_vadduhm (vector signed short, vector bool short); | |
17440 vector signed short vec_vadduhm (vector signed short, vector signed short); | |
17441 vector unsigned short vec_vadduhm (vector bool short, vector unsigned short); | |
17442 vector unsigned short vec_vadduhm (vector unsigned short, vector bool short); | |
17443 vector unsigned short vec_vadduhm (vector unsigned short, vector unsigned short); | |
17444 | |
17445 vector unsigned short vec_vadduhs (vector bool short, vector unsigned short); | |
17446 vector unsigned short vec_vadduhs (vector unsigned short, vector bool short); | |
17447 vector unsigned short vec_vadduhs (vector unsigned short, vector unsigned short); | |
17448 | |
17449 vector signed int vec_vadduwm (vector bool int, vector signed int); | |
17450 vector signed int vec_vadduwm (vector signed int, vector bool int); | |
17451 vector signed int vec_vadduwm (vector signed int, vector signed int); | |
17452 vector unsigned int vec_vadduwm (vector bool int, vector unsigned int); | |
17453 vector unsigned int vec_vadduwm (vector unsigned int, vector bool int); | |
17454 vector unsigned int vec_vadduwm (vector unsigned int, vector unsigned int); | |
17455 | |
17456 vector unsigned int vec_vadduws (vector bool int, vector unsigned int); | |
17457 vector unsigned int vec_vadduws (vector unsigned int, vector bool int); | |
17458 vector unsigned int vec_vadduws (vector unsigned int, vector unsigned int); | |
17459 | |
17460 vector signed char vec_vavgsb (vector signed char, vector signed char); | |
17461 | |
17462 vector signed short vec_vavgsh (vector signed short, vector signed short); | |
17463 | |
17464 vector signed int vec_vavgsw (vector signed int, vector signed int); | |
17465 | |
17466 vector unsigned char vec_vavgub (vector unsigned char, vector unsigned char); | |
17467 | |
17468 vector unsigned short vec_vavguh (vector unsigned short, vector unsigned short); | |
17469 | |
17470 vector unsigned int vec_vavguw (vector unsigned int, vector unsigned int); | |
17471 | |
17472 vector float vec_vcfsx (vector signed int, const int); | |
17473 | |
17474 vector float vec_vcfux (vector unsigned int, const int); | |
17475 | |
17476 vector bool int vec_vcmpeqfp (vector float, vector float); | |
17477 | |
17478 vector bool char vec_vcmpequb (vector signed char, vector signed char); | |
17479 vector bool char vec_vcmpequb (vector unsigned char, vector unsigned char); | |
17480 | |
17481 vector bool short vec_vcmpequh (vector signed short, vector signed short); | |
17482 vector bool short vec_vcmpequh (vector unsigned short, vector unsigned short); | |
17483 | |
17484 vector bool int vec_vcmpequw (vector signed int, vector signed int); | |
17485 vector bool int vec_vcmpequw (vector unsigned int, vector unsigned int); | |
17486 | |
17487 vector bool int vec_vcmpgtfp (vector float, vector float); | |
17488 | |
17489 vector bool char vec_vcmpgtsb (vector signed char, vector signed char); | |
17490 | |
17491 vector bool short vec_vcmpgtsh (vector signed short, vector signed short); | |
17492 | |
17493 vector bool int vec_vcmpgtsw (vector signed int, vector signed int); | |
17494 | |
17495 vector bool char vec_vcmpgtub (vector unsigned char, vector unsigned char); | |
17496 | |
17497 vector bool short vec_vcmpgtuh (vector unsigned short, vector unsigned short); | |
17498 | |
17499 vector bool int vec_vcmpgtuw (vector unsigned int, vector unsigned int); | |
17500 | |
17501 vector float vec_vmaxfp (vector float, vector float); | |
17502 | |
17503 vector signed char vec_vmaxsb (vector bool char, vector signed char); | |
17504 vector signed char vec_vmaxsb (vector signed char, vector bool char); | |
17505 vector signed char vec_vmaxsb (vector signed char, vector signed char); | |
17506 | |
17507 vector signed short vec_vmaxsh (vector bool short, vector signed short); | |
17508 vector signed short vec_vmaxsh (vector signed short, vector bool short); | |
17509 vector signed short vec_vmaxsh (vector signed short, vector signed short); | |
17510 | |
17511 vector signed int vec_vmaxsw (vector bool int, vector signed int); | |
17512 vector signed int vec_vmaxsw (vector signed int, vector bool int); | |
17513 vector signed int vec_vmaxsw (vector signed int, vector signed int); | |
17514 | |
17515 vector unsigned char vec_vmaxub (vector bool char, vector unsigned char); | |
17516 vector unsigned char vec_vmaxub (vector unsigned char, vector bool char); | |
17517 vector unsigned char vec_vmaxub (vector unsigned char, vector unsigned char); | |
17518 | |
17519 vector unsigned short vec_vmaxuh (vector bool short, vector unsigned short); | |
17520 vector unsigned short vec_vmaxuh (vector unsigned short, vector bool short); | |
17521 vector unsigned short vec_vmaxuh (vector unsigned short, vector unsigned short); | |
17522 | |
17523 vector unsigned int vec_vmaxuw (vector bool int, vector unsigned int); | |
17524 vector unsigned int vec_vmaxuw (vector unsigned int, vector bool int); | |
17525 vector unsigned int vec_vmaxuw (vector unsigned int, vector unsigned int); | |
17526 | |
17527 vector float vec_vminfp (vector float, vector float); | |
17528 | |
17529 vector signed char vec_vminsb (vector bool char, vector signed char); | |
17530 vector signed char vec_vminsb (vector signed char, vector bool char); | |
17531 vector signed char vec_vminsb (vector signed char, vector signed char); | |
17532 | |
17533 vector signed short vec_vminsh (vector bool short, vector signed short); | |
17534 vector signed short vec_vminsh (vector signed short, vector bool short); | |
17535 vector signed short vec_vminsh (vector signed short, vector signed short); | |
17536 | |
17537 vector signed int vec_vminsw (vector bool int, vector signed int); | |
17538 vector signed int vec_vminsw (vector signed int, vector bool int); | |
17539 vector signed int vec_vminsw (vector signed int, vector signed int); | |
17540 | |
17541 vector unsigned char vec_vminub (vector bool char, vector unsigned char); | |
17542 vector unsigned char vec_vminub (vector unsigned char, vector bool char); | |
17543 vector unsigned char vec_vminub (vector unsigned char, vector unsigned char); | |
17544 | |
17545 vector unsigned short vec_vminuh (vector bool short, vector unsigned short); | |
17546 vector unsigned short vec_vminuh (vector unsigned short, vector bool short); | |
17547 vector unsigned short vec_vminuh (vector unsigned short, vector unsigned short); | |
17548 | |
17549 vector unsigned int vec_vminuw (vector bool int, vector unsigned int); | |
17550 vector unsigned int vec_vminuw (vector unsigned int, vector bool int); | |
17551 vector unsigned int vec_vminuw (vector unsigned int, vector unsigned int); | |
17552 | |
17553 vector bool char vec_vmrghb (vector bool char, vector bool char); | |
17554 vector signed char vec_vmrghb (vector signed char, vector signed char); | |
17555 vector unsigned char vec_vmrghb (vector unsigned char, vector unsigned char); | |
17556 | |
17557 vector bool short vec_vmrghh (vector bool short, vector bool short); | |
17558 vector signed short vec_vmrghh (vector signed short, vector signed short); | |
17559 vector unsigned short vec_vmrghh (vector unsigned short, vector unsigned short); | |
17560 vector pixel vec_vmrghh (vector pixel, vector pixel); | |
17561 | |
17562 vector float vec_vmrghw (vector float, vector float); | |
17563 vector bool int vec_vmrghw (vector bool int, vector bool int); | |
17564 vector signed int vec_vmrghw (vector signed int, vector signed int); | |
17565 vector unsigned int vec_vmrghw (vector unsigned int, vector unsigned int); | |
17566 | |
17567 vector bool char vec_vmrglb (vector bool char, vector bool char); | |
17568 vector signed char vec_vmrglb (vector signed char, vector signed char); | |
17569 vector unsigned char vec_vmrglb (vector unsigned char, vector unsigned char); | |
17570 | |
17571 vector bool short vec_vmrglh (vector bool short, vector bool short); | |
17572 vector signed short vec_vmrglh (vector signed short, vector signed short); | |
17573 vector unsigned short vec_vmrglh (vector unsigned short, vector unsigned short); | |
17574 vector pixel vec_vmrglh (vector pixel, vector pixel); | |
17575 | |
17576 vector float vec_vmrglw (vector float, vector float); | |
17577 vector signed int vec_vmrglw (vector signed int, vector signed int); | |
17578 vector unsigned int vec_vmrglw (vector unsigned int, vector unsigned int); | |
17579 vector bool int vec_vmrglw (vector bool int, vector bool int); | |
17580 | |
17581 vector signed int vec_vmsummbm (vector signed char, vector unsigned char, | |
17582 vector signed int); | |
17583 | |
17584 vector signed int vec_vmsumshm (vector signed short, vector signed short, | |
17585 vector signed int); | |
17586 | |
17587 vector signed int vec_vmsumshs (vector signed short, vector signed short, | |
17588 vector signed int); | |
17589 | |
17590 vector unsigned int vec_vmsumubm (vector unsigned char, vector unsigned char, | |
17591 vector unsigned int); | |
17592 | |
17593 vector unsigned int vec_vmsumuhm (vector unsigned short, vector unsigned short, | |
17594 vector unsigned int); | |
17595 | |
17596 vector unsigned int vec_vmsumuhs (vector unsigned short, vector unsigned short, | |
17597 vector unsigned int); | |
17598 | |
17599 vector signed short vec_vmulesb (vector signed char, vector signed char); | |
17600 | |
17601 vector signed int vec_vmulesh (vector signed short, vector signed short); | |
17602 | |
17603 vector unsigned short vec_vmuleub (vector unsigned char, vector unsigned char); | |
17604 | |
17605 vector unsigned int vec_vmuleuh (vector unsigned short, vector unsigned short); | |
17606 | |
17607 vector signed short vec_vmulosb (vector signed char, vector signed char); | |
17608 | |
17609 vector signed int vec_vmulosh (vector signed short, vector signed short); | |
17610 | |
17611 vector unsigned short vec_vmuloub (vector unsigned char, vector unsigned char); | |
17612 | |
17613 vector unsigned int vec_vmulouh (vector unsigned short, vector unsigned short); | |
17614 | |
17615 vector signed char vec_vpkshss (vector signed short, vector signed short); | |
17616 | |
17617 vector unsigned char vec_vpkshus (vector signed short, vector signed short); | |
17618 | |
17619 vector signed short vec_vpkswss (vector signed int, vector signed int); | |
17620 | |
17621 vector unsigned short vec_vpkswus (vector signed int, vector signed int); | |
17622 | |
17623 vector bool char vec_vpkuhum (vector bool short, vector bool short); | |
17624 vector signed char vec_vpkuhum (vector signed short, vector signed short); | |
17625 vector unsigned char vec_vpkuhum (vector unsigned short, vector unsigned short); | |
17626 | |
17627 vector unsigned char vec_vpkuhus (vector unsigned short, vector unsigned short); | |
17628 | |
17629 vector bool short vec_vpkuwum (vector bool int, vector bool int); | |
17630 vector signed short vec_vpkuwum (vector signed int, vector signed int); | |
17631 vector unsigned short vec_vpkuwum (vector unsigned int, vector unsigned int); | |
17632 | |
17633 vector unsigned short vec_vpkuwus (vector unsigned int, vector unsigned int); | |
17634 | |
17635 vector signed char vec_vrlb (vector signed char, vector unsigned char); | |
17636 vector unsigned char vec_vrlb (vector unsigned char, vector unsigned char); | |
17637 | |
17638 vector signed short vec_vrlh (vector signed short, vector unsigned short); | |
17639 vector unsigned short vec_vrlh (vector unsigned short, vector unsigned short); | |
17640 | |
17641 vector signed int vec_vrlw (vector signed int, vector unsigned int); | |
17642 vector unsigned int vec_vrlw (vector unsigned int, vector unsigned int); | |
17643 | |
17644 vector signed char vec_vslb (vector signed char, vector unsigned char); | |
17645 vector unsigned char vec_vslb (vector unsigned char, vector unsigned char); | |
17646 | |
17647 vector signed short vec_vslh (vector signed short, vector unsigned short); | |
17648 vector unsigned short vec_vslh (vector unsigned short, vector unsigned short); | |
17649 | |
17650 vector signed int vec_vslw (vector signed int, vector unsigned int); | |
17651 vector unsigned int vec_vslw (vector unsigned int, vector unsigned int); | |
17652 | |
17653 vector signed char vec_vspltb (vector signed char, const int); | |
17654 vector unsigned char vec_vspltb (vector unsigned char, const int); | |
17655 vector bool char vec_vspltb (vector bool char, const int); | |
17656 | |
17657 vector bool short vec_vsplth (vector bool short, const int); | |
17658 vector signed short vec_vsplth (vector signed short, const int); | |
17659 vector unsigned short vec_vsplth (vector unsigned short, const int); | |
17660 vector pixel vec_vsplth (vector pixel, const int); | |
17661 | |
17662 vector float vec_vspltw (vector float, const int); | |
17663 vector signed int vec_vspltw (vector signed int, const int); | |
17664 vector unsigned int vec_vspltw (vector unsigned int, const int); | |
17665 vector bool int vec_vspltw (vector bool int, const int); | |
17666 | |
17667 vector signed char vec_vsrab (vector signed char, vector unsigned char); | |
17668 vector unsigned char vec_vsrab (vector unsigned char, vector unsigned char); | |
17669 | |
17670 vector signed short vec_vsrah (vector signed short, vector unsigned short); | |
17671 vector unsigned short vec_vsrah (vector unsigned short, vector unsigned short); | |
17672 | |
17673 vector signed int vec_vsraw (vector signed int, vector unsigned int); | |
17674 vector unsigned int vec_vsraw (vector unsigned int, vector unsigned int); | |
17675 | |
17676 vector signed char vec_vsrb (vector signed char, vector unsigned char); | |
17677 vector unsigned char vec_vsrb (vector unsigned char, vector unsigned char); | |
17678 | |
17679 vector signed short vec_vsrh (vector signed short, vector unsigned short); | |
17680 vector unsigned short vec_vsrh (vector unsigned short, vector unsigned short); | |
17681 | |
17682 vector signed int vec_vsrw (vector signed int, vector unsigned int); | |
17683 vector unsigned int vec_vsrw (vector unsigned int, vector unsigned int); | |
17684 | |
17685 vector float vec_vsubfp (vector float, vector float); | |
17686 | |
17687 vector signed char vec_vsubsbs (vector bool char, vector signed char); | |
17688 vector signed char vec_vsubsbs (vector signed char, vector bool char); | |
17689 vector signed char vec_vsubsbs (vector signed char, vector signed char); | |
17690 | |
17691 vector signed short vec_vsubshs (vector bool short, vector signed short); | |
17692 vector signed short vec_vsubshs (vector signed short, vector bool short); | |
17693 vector signed short vec_vsubshs (vector signed short, vector signed short); | |
17694 | |
17695 vector signed int vec_vsubsws (vector bool int, vector signed int); | |
17696 vector signed int vec_vsubsws (vector signed int, vector bool int); | |
17697 vector signed int vec_vsubsws (vector signed int, vector signed int); | |
17698 | |
17699 vector signed char vec_vsububm (vector bool char, vector signed char); | |
17700 vector signed char vec_vsububm (vector signed char, vector bool char); | |
17701 vector signed char vec_vsububm (vector signed char, vector signed char); | |
17702 vector unsigned char vec_vsububm (vector bool char, vector unsigned char); | |
17703 vector unsigned char vec_vsububm (vector unsigned char, vector bool char); | |
17704 vector unsigned char vec_vsububm (vector unsigned char, vector unsigned char); | |
17705 | |
17706 vector unsigned char vec_vsububs (vector bool char, vector unsigned char); | |
17707 vector unsigned char vec_vsububs (vector unsigned char, vector bool char); | |
17708 vector unsigned char vec_vsububs (vector unsigned char, vector unsigned char); | |
17709 | |
17710 vector signed short vec_vsubuhm (vector bool short, vector signed short); | |
17711 vector signed short vec_vsubuhm (vector signed short, vector bool short); | |
17712 vector signed short vec_vsubuhm (vector signed short, vector signed short); | |
17713 vector unsigned short vec_vsubuhm (vector bool short, vector unsigned short); | |
17714 vector unsigned short vec_vsubuhm (vector unsigned short, vector bool short); | |
17715 vector unsigned short vec_vsubuhm (vector unsigned short, vector unsigned short); | |
17716 | |
17717 vector unsigned short vec_vsubuhs (vector bool short, vector unsigned short); | |
17718 vector unsigned short vec_vsubuhs (vector unsigned short, vector bool short); | |
17719 vector unsigned short vec_vsubuhs (vector unsigned short, vector unsigned short); | |
17720 | |
17721 vector signed int vec_vsubuwm (vector bool int, vector signed int); | |
17722 vector signed int vec_vsubuwm (vector signed int, vector bool int); | |
17723 vector signed int vec_vsubuwm (vector signed int, vector signed int); | |
17724 vector unsigned int vec_vsubuwm (vector bool int, vector unsigned int); | |
17725 vector unsigned int vec_vsubuwm (vector unsigned int, vector bool int); | |
17726 vector unsigned int vec_vsubuwm (vector unsigned int, vector unsigned int); | |
17727 | |
17728 vector unsigned int vec_vsubuws (vector bool int, vector unsigned int); | |
17729 vector unsigned int vec_vsubuws (vector unsigned int, vector bool int); | |
17730 vector unsigned int vec_vsubuws (vector unsigned int, vector unsigned int); | |
17731 | |
17732 vector signed int vec_vsum4sbs (vector signed char, vector signed int); | |
17733 | |
17734 vector signed int vec_vsum4shs (vector signed short, vector signed int); | |
17735 | |
17736 vector unsigned int vec_vsum4ubs (vector unsigned char, vector unsigned int); | |
17737 | |
17738 vector unsigned int vec_vupkhpx (vector pixel); | |
17739 | |
17740 vector bool short vec_vupkhsb (vector bool char); | |
17741 vector signed short vec_vupkhsb (vector signed char); | |
17742 | |
17743 vector bool int vec_vupkhsh (vector bool short); | |
17744 vector signed int vec_vupkhsh (vector signed short); | |
17745 | |
17746 vector unsigned int vec_vupklpx (vector pixel); | |
17747 | |
17748 vector bool short vec_vupklsb (vector bool char); | |
17749 vector signed short vec_vupklsb (vector signed char); | |
17750 | |
17751 vector bool int vec_vupklsh (vector bool short); | |
17752 vector signed int vec_vupklsh (vector signed short); | |
17753 | |
17754 vector float vec_xor (vector float, vector float); | |
17755 vector float vec_xor (vector float, vector bool int); | |
17756 vector float vec_xor (vector bool int, vector float); | |
17757 vector bool int vec_xor (vector bool int, vector bool int); | |
17758 vector signed int vec_xor (vector bool int, vector signed int); | |
17759 vector signed int vec_xor (vector signed int, vector bool int); | |
17760 vector signed int vec_xor (vector signed int, vector signed int); | |
17761 vector unsigned int vec_xor (vector bool int, vector unsigned int); | |
17762 vector unsigned int vec_xor (vector unsigned int, vector bool int); | |
17763 vector unsigned int vec_xor (vector unsigned int, vector unsigned int); | |
17764 vector bool short vec_xor (vector bool short, vector bool short); | |
17765 vector signed short vec_xor (vector bool short, vector signed short); | |
17766 vector signed short vec_xor (vector signed short, vector bool short); | |
17767 vector signed short vec_xor (vector signed short, vector signed short); | |
17768 vector unsigned short vec_xor (vector bool short, vector unsigned short); | |
17769 vector unsigned short vec_xor (vector unsigned short, vector bool short); | |
17770 vector unsigned short vec_xor (vector unsigned short, vector unsigned short); | |
17771 vector signed char vec_xor (vector bool char, vector signed char); | |
17772 vector bool char vec_xor (vector bool char, vector bool char); | |
17773 vector signed char vec_xor (vector signed char, vector bool char); | |
17774 vector signed char vec_xor (vector signed char, vector signed char); | |
17775 vector unsigned char vec_xor (vector bool char, vector unsigned char); | |
17776 vector unsigned char vec_xor (vector unsigned char, vector bool char); | |
17777 vector unsigned char vec_xor (vector unsigned char, vector unsigned char); | |
17778 @end smallexample | |
17779 | |
17780 @node PowerPC AltiVec Built-in Functions Available on ISA 2.06 | |
17781 @subsubsection PowerPC AltiVec Built-in Functions Available on ISA 2.06 | |
17782 | |
17783 The AltiVec built-in functions described in this section are | |
17784 available on the PowerPC family of processors starting with ISA 2.06 | |
17785 or later. These are normally enabled by adding @option{-mvsx} to the | |
17786 command line. | |
17787 | |
17788 When @option{-mvsx} is used, the following additional vector types are | |
17789 implemented. | |
17790 | |
17791 @smallexample | |
17792 vector unsigned __int128 | |
17793 vector signed __int128 | |
17794 vector unsigned long long int | |
17795 vector signed long long int | |
17796 vector double | |
17797 @end smallexample | |
17798 | |
17799 The long long types are only implemented for 64-bit code generation. | |
17800 | |
17801 @smallexample | |
17802 | |
17803 vector bool long long vec_and (vector bool long long int, vector bool long long); | |
17804 | |
17805 vector double vec_ctf (vector unsigned long, const int); | |
17806 vector double vec_ctf (vector signed long, const int); | |
17807 | |
17808 vector signed long vec_cts (vector double, const int); | |
17809 | |
17810 vector unsigned long vec_ctu (vector double, const int); | |
17811 | |
17812 void vec_dst (const unsigned long *, int, const int); | |
17813 void vec_dst (const long *, int, const int); | |
17814 | |
17815 void vec_dststt (const unsigned long *, int, const int); | |
17816 void vec_dststt (const long *, int, const int); | |
17817 | |
17818 void vec_dstt (const unsigned long *, int, const int); | |
17819 void vec_dstt (const long *, int, const int); | |
17820 | |
17821 vector unsigned char vec_lvsl (int, const unsigned long *); | |
17822 vector unsigned char vec_lvsl (int, const long *); | |
17823 | |
17824 vector unsigned char vec_lvsr (int, const unsigned long *); | |
17825 vector unsigned char vec_lvsr (int, const long *); | |
17826 | |
17827 vector double vec_mul (vector double, vector double); | |
17828 vector long vec_mul (vector long, vector long); | |
17829 vector unsigned long vec_mul (vector unsigned long, vector unsigned long); | |
17830 | |
17831 vector unsigned long long vec_mule (vector unsigned int, vector unsigned int); | |
17832 vector signed long long vec_mule (vector signed int, vector signed int); | |
17833 | |
17834 vector unsigned long long vec_mulo (vector unsigned int, vector unsigned int); | |
17835 vector signed long long vec_mulo (vector signed int, vector signed int); | |
17836 | |
17837 vector double vec_nabs (vector double); | |
17838 | |
17839 vector bool long long vec_reve (vector bool long long); | |
17840 vector signed long long vec_reve (vector signed long long); | |
17841 vector unsigned long long vec_reve (vector unsigned long long); | |
17842 vector double vec_sld (vector double, vector double, const int); | |
17843 | |
17844 vector bool long long int vec_sld (vector bool long long int, | |
17845 vector bool long long int, const int); | |
17846 vector long long int vec_sld (vector long long int, vector long long int, const int); | |
17847 vector unsigned long long int vec_sld (vector unsigned long long int, | |
17848 vector unsigned long long int, const int); | |
17849 | |
17850 vector long long int vec_sll (vector long long int, vector unsigned char); | |
17851 vector unsigned long long int vec_sll (vector unsigned long long int, | |
17852 vector unsigned char); | |
17853 | |
17854 vector signed long long vec_slo (vector signed long long, vector signed char); | |
17855 vector signed long long vec_slo (vector signed long long, vector unsigned char); | |
17856 vector unsigned long long vec_slo (vector unsigned long long, vector signed char); | |
17857 vector unsigned long long vec_slo (vector unsigned long long, vector unsigned char); | |
17858 | |
17859 vector signed long vec_splat (vector signed long, const int); | |
17860 vector unsigned long vec_splat (vector unsigned long, const int); | |
17861 | |
17862 vector long long int vec_srl (vector long long int, vector unsigned char); | |
17863 vector unsigned long long int vec_srl (vector unsigned long long int, | |
17864 vector unsigned char); | |
17865 | |
17866 vector long long int vec_sro (vector long long int, vector char); | |
17867 vector long long int vec_sro (vector long long int, vector unsigned char); | |
17868 vector unsigned long long int vec_sro (vector unsigned long long int, vector char); | |
17869 vector unsigned long long int vec_sro (vector unsigned long long int, | |
17870 vector unsigned char); | |
17871 | |
17872 vector signed __int128 vec_subc (vector signed __int128, vector signed __int128); | |
17873 vector unsigned __int128 vec_subc (vector unsigned __int128, vector unsigned __int128); | |
17874 | |
17875 vector signed __int128 vec_sube (vector signed __int128, vector signed __int128, | |
17876 vector signed __int128); | |
17877 vector unsigned __int128 vec_sube (vector unsigned __int128, vector unsigned __int128, | |
17878 vector unsigned __int128); | |
17879 | |
17880 vector signed __int128 vec_subec (vector signed __int128, vector signed __int128, | |
17881 vector signed __int128); | |
17882 vector unsigned __int128 vec_subec (vector unsigned __int128, vector unsigned __int128, | |
17883 vector unsigned __int128); | |
17884 | |
17885 vector double vec_unpackh (vector float); | |
17886 | |
17887 vector double vec_unpackl (vector float); | |
17888 | |
17889 vector double vec_doublee (vector float); | |
17890 vector double vec_doublee (vector signed int); | |
17891 vector double vec_doublee (vector unsigned int); | |
17892 | |
17893 vector double vec_doubleo (vector float); | |
17894 vector double vec_doubleo (vector signed int); | |
17895 vector double vec_doubleo (vector unsigned int); | |
17896 | |
17897 vector double vec_doubleh (vector float); | |
17898 vector double vec_doubleh (vector signed int); | |
17899 vector double vec_doubleh (vector unsigned int); | |
17900 | |
17901 vector double vec_doublel (vector float); | |
17902 vector double vec_doublel (vector signed int); | |
17903 vector double vec_doublel (vector unsigned int); | |
17904 | |
17905 vector float vec_float (vector signed int); | |
17906 vector float vec_float (vector unsigned int); | |
17907 | |
17908 vector float vec_float2 (vector signed long long, vector signed long long); | |
17909 vector float vec_float2 (vector unsigned long long, vector signed long long); | |
17910 | |
17911 vector float vec_floate (vector double); | |
17912 vector float vec_floate (vector signed long long); | |
17913 vector float vec_floate (vector unsigned long long); | |
17914 | |
17915 vector float vec_floato (vector double); | |
17916 vector float vec_floato (vector signed long long); | |
17917 vector float vec_floato (vector unsigned long long); | |
17918 | |
17919 vector signed long long vec_signed (vector double); | |
17920 vector signed int vec_signed (vector float); | |
17921 | |
17922 vector signed int vec_signede (vector double); | |
17923 | |
17924 vector signed int vec_signedo (vector double); | |
17925 | |
17926 vector signed char vec_sldw (vector signed char, vector signed char, const int); | |
17927 vector unsigned char vec_sldw (vector unsigned char, vector unsigned char, const int); | |
17928 vector signed short vec_sldw (vector signed short, vector signed short, const int); | |
17929 vector unsigned short vec_sldw (vector unsigned short, | |
17930 vector unsigned short, const int); | |
17931 vector signed int vec_sldw (vector signed int, vector signed int, const int); | |
17932 vector unsigned int vec_sldw (vector unsigned int, vector unsigned int, const int); | |
17933 vector signed long long vec_sldw (vector signed long long, | |
17934 vector signed long long, const int); | |
17935 vector unsigned long long vec_sldw (vector unsigned long long, | |
17936 vector unsigned long long, const int); | |
17937 | |
17938 vector signed long long vec_unsigned (vector double); | |
17939 vector signed int vec_unsigned (vector float); | |
17940 | |
17941 vector signed int vec_unsignede (vector double); | |
17942 | |
17943 vector signed int vec_unsignedo (vector double); | |
17944 | |
18124 vector double vec_abs (vector double); | 17945 vector double vec_abs (vector double); |
18125 vector double vec_add (vector double, vector double); | 17946 vector double vec_add (vector double, vector double); |
18126 vector double vec_and (vector double, vector double); | 17947 vector double vec_and (vector double, vector double); |
18127 vector double vec_and (vector double, vector bool long); | 17948 vector double vec_and (vector double, vector bool long); |
18128 vector double vec_and (vector bool long, vector double); | 17949 vector double vec_and (vector bool long, vector double); |
18151 vector float vec_div (vector float, vector float); | 17972 vector float vec_div (vector float, vector float); |
18152 vector double vec_div (vector double, vector double); | 17973 vector double vec_div (vector double, vector double); |
18153 vector long vec_div (vector long, vector long); | 17974 vector long vec_div (vector long, vector long); |
18154 vector unsigned long vec_div (vector unsigned long, vector unsigned long); | 17975 vector unsigned long vec_div (vector unsigned long, vector unsigned long); |
18155 vector double vec_floor (vector double); | 17976 vector double vec_floor (vector double); |
17977 vector __int128 vec_ld (int, const vector __int128 *); | |
17978 vector unsigned __int128 vec_ld (int, const vector unsigned __int128 *); | |
17979 vector __int128 vec_ld (int, const __int128 *); | |
17980 vector unsigned __int128 vec_ld (int, const unsigned __int128 *); | |
18156 vector double vec_ld (int, const vector double *); | 17981 vector double vec_ld (int, const vector double *); |
18157 vector double vec_ld (int, const double *); | 17982 vector double vec_ld (int, const double *); |
18158 vector double vec_ldl (int, const vector double *); | 17983 vector double vec_ldl (int, const vector double *); |
18159 vector double vec_ldl (int, const double *); | 17984 vector double vec_ldl (int, const double *); |
18160 vector unsigned char vec_lvsl (int, const volatile double *); | 17985 vector unsigned char vec_lvsl (int, const double *); |
18161 vector unsigned char vec_lvsr (int, const volatile double *); | 17986 vector unsigned char vec_lvsr (int, const double *); |
18162 vector double vec_madd (vector double, vector double, vector double); | 17987 vector double vec_madd (vector double, vector double, vector double); |
18163 vector double vec_max (vector double, vector double); | 17988 vector double vec_max (vector double, vector double); |
18164 vector signed long vec_mergeh (vector signed long, vector signed long); | 17989 vector signed long vec_mergeh (vector signed long, vector signed long); |
18165 vector signed long vec_mergeh (vector signed long, vector bool long); | 17990 vector signed long vec_mergeh (vector signed long, vector bool long); |
18166 vector signed long vec_mergeh (vector bool long, vector signed long); | 17991 vector signed long vec_mergeh (vector bool long, vector signed long); |
18174 vector unsigned long vec_mergel (vector unsigned long, vector bool long); | 17999 vector unsigned long vec_mergel (vector unsigned long, vector bool long); |
18175 vector unsigned long vec_mergel (vector bool long, vector unsigned long); | 18000 vector unsigned long vec_mergel (vector bool long, vector unsigned long); |
18176 vector double vec_min (vector double, vector double); | 18001 vector double vec_min (vector double, vector double); |
18177 vector float vec_msub (vector float, vector float, vector float); | 18002 vector float vec_msub (vector float, vector float, vector float); |
18178 vector double vec_msub (vector double, vector double, vector double); | 18003 vector double vec_msub (vector double, vector double, vector double); |
18179 vector float vec_mul (vector float, vector float); | |
18180 vector double vec_mul (vector double, vector double); | |
18181 vector long vec_mul (vector long, vector long); | |
18182 vector unsigned long vec_mul (vector unsigned long, vector unsigned long); | |
18183 vector float vec_nearbyint (vector float); | 18004 vector float vec_nearbyint (vector float); |
18184 vector double vec_nearbyint (vector double); | 18005 vector double vec_nearbyint (vector double); |
18185 vector float vec_nmadd (vector float, vector float, vector float); | 18006 vector float vec_nmadd (vector float, vector float, vector float); |
18186 vector double vec_nmadd (vector double, vector double, vector double); | 18007 vector double vec_nmadd (vector double, vector double, vector double); |
18187 vector double vec_nmsub (vector double, vector double, vector double); | 18008 vector double vec_nmsub (vector double, vector double, vector double); |
18203 vector unsigned long vec_or (vector bool long, vector unsigned long); | 18024 vector unsigned long vec_or (vector bool long, vector unsigned long); |
18204 vector double vec_perm (vector double, vector double, vector unsigned char); | 18025 vector double vec_perm (vector double, vector double, vector unsigned char); |
18205 vector long vec_perm (vector long, vector long, vector unsigned char); | 18026 vector long vec_perm (vector long, vector long, vector unsigned char); |
18206 vector unsigned long vec_perm (vector unsigned long, vector unsigned long, | 18027 vector unsigned long vec_perm (vector unsigned long, vector unsigned long, |
18207 vector unsigned char); | 18028 vector unsigned char); |
18029 vector bool char vec_permxor (vector bool char, vector bool char, | |
18030 vector bool char); | |
18031 vector unsigned char vec_permxor (vector signed char, vector signed char, | |
18032 vector signed char); | |
18033 vector unsigned char vec_permxor (vector unsigned char, vector unsigned char, | |
18034 vector unsigned char); | |
18208 vector double vec_rint (vector double); | 18035 vector double vec_rint (vector double); |
18209 vector double vec_recip (vector double, vector double); | 18036 vector double vec_recip (vector double, vector double); |
18210 vector double vec_rsqrt (vector double); | 18037 vector double vec_rsqrt (vector double); |
18211 vector double vec_rsqrte (vector double); | 18038 vector double vec_rsqrte (vector double); |
18212 vector double vec_sel (vector double, vector double, vector bool long); | 18039 vector double vec_sel (vector double, vector double, vector bool long); |
18374 generate the AltiVec @samp{LVX} and @samp{STVX} instructions even | 18201 generate the AltiVec @samp{LVX} and @samp{STVX} instructions even |
18375 if the VSX instruction set is available. The @samp{vec_vsx_ld} and | 18202 if the VSX instruction set is available. The @samp{vec_vsx_ld} and |
18376 @samp{vec_vsx_st} built-in functions always generate the VSX @samp{LXVD2X}, | 18203 @samp{vec_vsx_st} built-in functions always generate the VSX @samp{LXVD2X}, |
18377 @samp{LXVW4X}, @samp{STXVD2X}, and @samp{STXVW4X} instructions. | 18204 @samp{LXVW4X}, @samp{STXVD2X}, and @samp{STXVW4X} instructions. |
18378 | 18205 |
18206 @node PowerPC AltiVec Built-in Functions Available on ISA 2.07 | |
18207 @subsubsection PowerPC AltiVec Built-in Functions Available on ISA 2.07 | |
18208 | |
18379 If the ISA 2.07 additions to the vector/scalar (power8-vector) | 18209 If the ISA 2.07 additions to the vector/scalar (power8-vector) |
18380 instruction set are available, the following additional functions are | 18210 instruction set are available, the following additional functions are |
18381 available for both 32-bit and 64-bit targets. For 64-bit targets, you | 18211 available for both 32-bit and 64-bit targets. For 64-bit targets, you |
18382 can use @var{vector long} instead of @var{vector long long}, | 18212 can use @var{vector long} instead of @var{vector long long}, |
18383 @var{vector bool long} instead of @var{vector bool long long}, and | 18213 @var{vector bool long} instead of @var{vector bool long long}, and |
18384 @var{vector unsigned long} instead of @var{vector unsigned long long}. | 18214 @var{vector unsigned long} instead of @var{vector unsigned long long}. |
18385 | 18215 |
18386 @smallexample | 18216 @smallexample |
18217 vector signed char vec_neg (vector signed char); | |
18218 vector signed short vec_neg (vector signed short); | |
18219 vector signed int vec_neg (vector signed int); | |
18220 vector signed long long vec_neg (vector signed long long); | |
18221 vector float char vec_neg (vector float); | |
18222 vector double vec_neg (vector double); | |
18223 | |
18224 vector signed int vec_signed2 (vector double, vector double); | |
18225 | |
18226 vector signed int vec_unsigned2 (vector double, vector double); | |
18227 | |
18387 vector long long vec_abs (vector long long); | 18228 vector long long vec_abs (vector long long); |
18388 | 18229 |
18389 vector long long vec_add (vector long long, vector long long); | 18230 vector long long vec_add (vector long long, vector long long); |
18390 vector unsigned long long vec_add (vector unsigned long long, | 18231 vector unsigned long long vec_add (vector unsigned long long, |
18391 vector unsigned long long); | 18232 vector unsigned long long); |
18419 vector bool long long vec_cmpeq (vector bool long long, vector bool long long); | 18260 vector bool long long vec_cmpeq (vector bool long long, vector bool long long); |
18420 | 18261 |
18421 vector long long vec_eqv (vector long long, vector long long); | 18262 vector long long vec_eqv (vector long long, vector long long); |
18422 vector long long vec_eqv (vector bool long long, vector long long); | 18263 vector long long vec_eqv (vector bool long long, vector long long); |
18423 vector long long vec_eqv (vector long long, vector bool long long); | 18264 vector long long vec_eqv (vector long long, vector bool long long); |
18424 vector unsigned long long vec_eqv (vector unsigned long long, | 18265 vector unsigned long long vec_eqv (vector unsigned long long, vector unsigned long long); |
18425 vector unsigned long long); | 18266 vector unsigned long long vec_eqv (vector bool long long, vector unsigned long long); |
18426 vector unsigned long long vec_eqv (vector bool long long, | |
18427 vector unsigned long long); | |
18428 vector unsigned long long vec_eqv (vector unsigned long long, | 18267 vector unsigned long long vec_eqv (vector unsigned long long, |
18429 vector bool long long); | 18268 vector bool long long); |
18430 vector int vec_eqv (vector int, vector int); | 18269 vector int vec_eqv (vector int, vector int); |
18431 vector int vec_eqv (vector bool int, vector int); | 18270 vector int vec_eqv (vector bool int, vector int); |
18432 vector int vec_eqv (vector int, vector bool int); | 18271 vector int vec_eqv (vector int, vector bool int); |
18433 vector unsigned int vec_eqv (vector unsigned int, vector unsigned int); | 18272 vector unsigned int vec_eqv (vector unsigned int, vector unsigned int); |
18434 vector unsigned int vec_eqv (vector bool unsigned int, | 18273 vector unsigned int vec_eqv (vector bool unsigned int, vector unsigned int); |
18435 vector unsigned int); | 18274 vector unsigned int vec_eqv (vector unsigned int, vector bool unsigned int); |
18436 vector unsigned int vec_eqv (vector unsigned int, | |
18437 vector bool unsigned int); | |
18438 vector short vec_eqv (vector short, vector short); | 18275 vector short vec_eqv (vector short, vector short); |
18439 vector short vec_eqv (vector bool short, vector short); | 18276 vector short vec_eqv (vector bool short, vector short); |
18440 vector short vec_eqv (vector short, vector bool short); | 18277 vector short vec_eqv (vector short, vector bool short); |
18441 vector unsigned short vec_eqv (vector unsigned short, vector unsigned short); | 18278 vector unsigned short vec_eqv (vector unsigned short, vector unsigned short); |
18442 vector unsigned short vec_eqv (vector bool unsigned short, | 18279 vector unsigned short vec_eqv (vector bool unsigned short, vector unsigned short); |
18443 vector unsigned short); | 18280 vector unsigned short vec_eqv (vector unsigned short, vector bool unsigned short); |
18444 vector unsigned short vec_eqv (vector unsigned short, | |
18445 vector bool unsigned short); | |
18446 vector signed char vec_eqv (vector signed char, vector signed char); | 18281 vector signed char vec_eqv (vector signed char, vector signed char); |
18447 vector signed char vec_eqv (vector bool signed char, vector signed char); | 18282 vector signed char vec_eqv (vector bool signed char, vector signed char); |
18448 vector signed char vec_eqv (vector signed char, vector bool signed char); | 18283 vector signed char vec_eqv (vector signed char, vector bool signed char); |
18449 vector unsigned char vec_eqv (vector unsigned char, vector unsigned char); | 18284 vector unsigned char vec_eqv (vector unsigned char, vector unsigned char); |
18450 vector unsigned char vec_eqv (vector bool unsigned char, vector unsigned char); | 18285 vector unsigned char vec_eqv (vector bool unsigned char, vector unsigned char); |
18471 vector long long vec_nand (vector long long, vector long long); | 18306 vector long long vec_nand (vector long long, vector long long); |
18472 vector long long vec_nand (vector bool long long, vector long long); | 18307 vector long long vec_nand (vector bool long long, vector long long); |
18473 vector long long vec_nand (vector long long, vector bool long long); | 18308 vector long long vec_nand (vector long long, vector bool long long); |
18474 vector unsigned long long vec_nand (vector unsigned long long, | 18309 vector unsigned long long vec_nand (vector unsigned long long, |
18475 vector unsigned long long); | 18310 vector unsigned long long); |
18476 vector unsigned long long vec_nand (vector bool long long, | 18311 vector unsigned long long vec_nand (vector bool long long, vector unsigned long long); |
18477 vector unsigned long long); | 18312 vector unsigned long long vec_nand (vector unsigned long long, vector bool long long); |
18478 vector unsigned long long vec_nand (vector unsigned long long, | |
18479 vector bool long long); | |
18480 vector int vec_nand (vector int, vector int); | 18313 vector int vec_nand (vector int, vector int); |
18481 vector int vec_nand (vector bool int, vector int); | 18314 vector int vec_nand (vector bool int, vector int); |
18482 vector int vec_nand (vector int, vector bool int); | 18315 vector int vec_nand (vector int, vector bool int); |
18483 vector unsigned int vec_nand (vector unsigned int, vector unsigned int); | 18316 vector unsigned int vec_nand (vector unsigned int, vector unsigned int); |
18484 vector unsigned int vec_nand (vector bool unsigned int, | 18317 vector unsigned int vec_nand (vector bool unsigned int, vector unsigned int); |
18485 vector unsigned int); | 18318 vector unsigned int vec_nand (vector unsigned int, vector bool unsigned int); |
18486 vector unsigned int vec_nand (vector unsigned int, | |
18487 vector bool unsigned int); | |
18488 vector short vec_nand (vector short, vector short); | 18319 vector short vec_nand (vector short, vector short); |
18489 vector short vec_nand (vector bool short, vector short); | 18320 vector short vec_nand (vector bool short, vector short); |
18490 vector short vec_nand (vector short, vector bool short); | 18321 vector short vec_nand (vector short, vector bool short); |
18491 vector unsigned short vec_nand (vector unsigned short, vector unsigned short); | 18322 vector unsigned short vec_nand (vector unsigned short, vector unsigned short); |
18492 vector unsigned short vec_nand (vector bool unsigned short, | 18323 vector unsigned short vec_nand (vector bool unsigned short, vector unsigned short); |
18493 vector unsigned short); | 18324 vector unsigned short vec_nand (vector unsigned short, vector bool unsigned short); |
18494 vector unsigned short vec_nand (vector unsigned short, | |
18495 vector bool unsigned short); | |
18496 vector signed char vec_nand (vector signed char, vector signed char); | 18325 vector signed char vec_nand (vector signed char, vector signed char); |
18497 vector signed char vec_nand (vector bool signed char, vector signed char); | 18326 vector signed char vec_nand (vector bool signed char, vector signed char); |
18498 vector signed char vec_nand (vector signed char, vector bool signed char); | 18327 vector signed char vec_nand (vector signed char, vector bool signed char); |
18499 vector unsigned char vec_nand (vector unsigned char, vector unsigned char); | 18328 vector unsigned char vec_nand (vector unsigned char, vector unsigned char); |
18500 vector unsigned char vec_nand (vector bool unsigned char, vector unsigned char); | 18329 vector unsigned char vec_nand (vector bool unsigned char, vector unsigned char); |
18503 vector long long vec_orc (vector long long, vector long long); | 18332 vector long long vec_orc (vector long long, vector long long); |
18504 vector long long vec_orc (vector bool long long, vector long long); | 18333 vector long long vec_orc (vector bool long long, vector long long); |
18505 vector long long vec_orc (vector long long, vector bool long long); | 18334 vector long long vec_orc (vector long long, vector bool long long); |
18506 vector unsigned long long vec_orc (vector unsigned long long, | 18335 vector unsigned long long vec_orc (vector unsigned long long, |
18507 vector unsigned long long); | 18336 vector unsigned long long); |
18508 vector unsigned long long vec_orc (vector bool long long, | 18337 vector unsigned long long vec_orc (vector bool long long, vector unsigned long long); |
18509 vector unsigned long long); | 18338 vector unsigned long long vec_orc (vector unsigned long long, vector bool long long); |
18510 vector unsigned long long vec_orc (vector unsigned long long, | |
18511 vector bool long long); | |
18512 vector int vec_orc (vector int, vector int); | 18339 vector int vec_orc (vector int, vector int); |
18513 vector int vec_orc (vector bool int, vector int); | 18340 vector int vec_orc (vector bool int, vector int); |
18514 vector int vec_orc (vector int, vector bool int); | 18341 vector int vec_orc (vector int, vector bool int); |
18515 vector unsigned int vec_orc (vector unsigned int, vector unsigned int); | 18342 vector unsigned int vec_orc (vector unsigned int, vector unsigned int); |
18516 vector unsigned int vec_orc (vector bool unsigned int, | 18343 vector unsigned int vec_orc (vector bool unsigned int, vector unsigned int); |
18517 vector unsigned int); | 18344 vector unsigned int vec_orc (vector unsigned int, vector bool unsigned int); |
18518 vector unsigned int vec_orc (vector unsigned int, | |
18519 vector bool unsigned int); | |
18520 vector short vec_orc (vector short, vector short); | 18345 vector short vec_orc (vector short, vector short); |
18521 vector short vec_orc (vector bool short, vector short); | 18346 vector short vec_orc (vector bool short, vector short); |
18522 vector short vec_orc (vector short, vector bool short); | 18347 vector short vec_orc (vector short, vector bool short); |
18523 vector unsigned short vec_orc (vector unsigned short, vector unsigned short); | 18348 vector unsigned short vec_orc (vector unsigned short, vector unsigned short); |
18524 vector unsigned short vec_orc (vector bool unsigned short, | 18349 vector unsigned short vec_orc (vector bool unsigned short, vector unsigned short); |
18525 vector unsigned short); | 18350 vector unsigned short vec_orc (vector unsigned short, vector bool unsigned short); |
18526 vector unsigned short vec_orc (vector unsigned short, | |
18527 vector bool unsigned short); | |
18528 vector signed char vec_orc (vector signed char, vector signed char); | 18351 vector signed char vec_orc (vector signed char, vector signed char); |
18529 vector signed char vec_orc (vector bool signed char, vector signed char); | 18352 vector signed char vec_orc (vector bool signed char, vector signed char); |
18530 vector signed char vec_orc (vector signed char, vector bool signed char); | 18353 vector signed char vec_orc (vector signed char, vector bool signed char); |
18531 vector unsigned char vec_orc (vector unsigned char, vector unsigned char); | 18354 vector unsigned char vec_orc (vector unsigned char, vector unsigned char); |
18532 vector unsigned char vec_orc (vector bool unsigned char, vector unsigned char); | 18355 vector unsigned char vec_orc (vector bool unsigned char, vector unsigned char); |
18533 vector unsigned char vec_orc (vector unsigned char, vector bool unsigned char); | 18356 vector unsigned char vec_orc (vector unsigned char, vector bool unsigned char); |
18534 | 18357 |
18535 vector int vec_pack (vector long long, vector long long); | 18358 vector int vec_pack (vector long long, vector long long); |
18536 vector unsigned int vec_pack (vector unsigned long long, | 18359 vector unsigned int vec_pack (vector unsigned long long, vector unsigned long long); |
18537 vector unsigned long long); | |
18538 vector bool int vec_pack (vector bool long long, vector bool long long); | 18360 vector bool int vec_pack (vector bool long long, vector bool long long); |
18539 vector float vec_pack (vector double, vector double); | 18361 vector float vec_pack (vector double, vector double); |
18540 | 18362 |
18541 vector int vec_packs (vector long long, vector long long); | 18363 vector int vec_packs (vector long long, vector long long); |
18542 vector unsigned int vec_packs (vector unsigned long long, | 18364 vector unsigned int vec_packs (vector unsigned long long, vector unsigned long long); |
18543 vector unsigned long long); | 18365 |
18544 | 18366 vector unsigned char vec_packsu (vector signed short, vector signed short) |
18367 vector unsigned char vec_packsu (vector unsigned short, vector unsigned short) | |
18368 vector unsigned short int vec_packsu (vector signed int, vector signed int); | |
18369 vector unsigned short int vec_packsu (vector unsigned int, vector unsigned int); | |
18545 vector unsigned int vec_packsu (vector long long, vector long long); | 18370 vector unsigned int vec_packsu (vector long long, vector long long); |
18546 vector unsigned int vec_packsu (vector unsigned long long, | 18371 vector unsigned int vec_packsu (vector unsigned long long, vector unsigned long long); |
18547 vector unsigned long long); | 18372 vector unsigned int vec_packsu (vector signed long long, vector signed long long); |
18548 | 18373 |
18549 vector unsigned char vec_popcnt (vector signed char); | 18374 vector unsigned char vec_popcnt (vector signed char); |
18550 vector unsigned char vec_popcnt (vector unsigned char); | 18375 vector unsigned char vec_popcnt (vector unsigned char); |
18551 vector unsigned short vec_popcnt (vector signed short); | 18376 vector unsigned short vec_popcnt (vector signed short); |
18552 vector unsigned short vec_popcnt (vector unsigned short); | 18377 vector unsigned short vec_popcnt (vector unsigned short); |
18553 vector unsigned int vec_popcnt (vector signed int); | 18378 vector unsigned int vec_popcnt (vector signed int); |
18554 vector unsigned int vec_popcnt (vector unsigned int); | 18379 vector unsigned int vec_popcnt (vector unsigned int); |
18555 vector unsigned long long vec_popcnt (vector signed long long); | 18380 vector unsigned long long vec_popcnt (vector signed long long); |
18556 vector unsigned long long vec_popcnt (vector unsigned long long); | 18381 vector unsigned long long vec_popcnt (vector unsigned long long); |
18557 | 18382 |
18558 vector long long vec_rl (vector long long, | 18383 vector long long vec_rl (vector long long, vector unsigned long long); |
18559 vector unsigned long long); | 18384 vector long long vec_rl (vector unsigned long long, vector unsigned long long); |
18560 vector long long vec_rl (vector unsigned long long, | |
18561 vector unsigned long long); | |
18562 | 18385 |
18563 vector long long vec_sl (vector long long, vector unsigned long long); | 18386 vector long long vec_sl (vector long long, vector unsigned long long); |
18564 vector long long vec_sl (vector unsigned long long, | 18387 vector long long vec_sl (vector unsigned long long, vector unsigned long long); |
18565 vector unsigned long long); | |
18566 | 18388 |
18567 vector long long vec_sr (vector long long, vector unsigned long long); | 18389 vector long long vec_sr (vector long long, vector unsigned long long); |
18568 vector unsigned long long char vec_sr (vector unsigned long long, | 18390 vector unsigned long long char vec_sr (vector unsigned long long, |
18569 vector unsigned long long); | 18391 vector unsigned long long); |
18570 | 18392 |
18594 | 18416 |
18595 vector long long vec_vbpermq (vector signed char, vector signed char); | 18417 vector long long vec_vbpermq (vector signed char, vector signed char); |
18596 vector long long vec_vbpermq (vector unsigned char, vector unsigned char); | 18418 vector long long vec_vbpermq (vector unsigned char, vector unsigned char); |
18597 | 18419 |
18598 vector unsigned char vec_bperm (vector unsigned char, vector unsigned char); | 18420 vector unsigned char vec_bperm (vector unsigned char, vector unsigned char); |
18599 vector unsigned char vec_bperm (vector unsigned long long, | 18421 vector unsigned char vec_bperm (vector unsigned long long, vector unsigned char); |
18600 vector unsigned char); | 18422 vector unsigned long long vec_bperm (vector unsigned __int128, vector unsigned char); |
18601 vector unsigned long long vec_bperm (vector unsigned __int128, | |
18602 vector unsigned char); | |
18603 | 18423 |
18604 vector long long vec_cntlz (vector long long); | 18424 vector long long vec_cntlz (vector long long); |
18605 vector unsigned long long vec_cntlz (vector unsigned long long); | 18425 vector unsigned long long vec_cntlz (vector unsigned long long); |
18606 vector int vec_cntlz (vector int); | 18426 vector int vec_cntlz (vector int); |
18607 vector unsigned int vec_cntlz (vector int); | 18427 vector unsigned int vec_cntlz (vector int); |
18639 vector unsigned long long vec_vmaxud (vector unsigned long long, | 18459 vector unsigned long long vec_vmaxud (vector unsigned long long, |
18640 unsigned vector long long); | 18460 unsigned vector long long); |
18641 | 18461 |
18642 vector long long vec_vminsd (vector long long, vector long long); | 18462 vector long long vec_vminsd (vector long long, vector long long); |
18643 | 18463 |
18644 vector unsigned long long vec_vminud (vector long long, | 18464 vector unsigned long long vec_vminud (vector long long, vector long long); |
18645 vector long long); | |
18646 | 18465 |
18647 vector int vec_vpksdss (vector long long, vector long long); | 18466 vector int vec_vpksdss (vector long long, vector long long); |
18648 vector unsigned int vec_vpksdss (vector long long, vector long long); | 18467 vector unsigned int vec_vpksdss (vector long long, vector long long); |
18649 | 18468 |
18650 vector unsigned int vec_vpkudus (vector unsigned long long, | 18469 vector unsigned int vec_vpkudus (vector unsigned long long, |
18710 @end smallexample | 18529 @end smallexample |
18711 | 18530 |
18712 If the ISA 2.07 additions to the vector/scalar (power8-vector) | 18531 If the ISA 2.07 additions to the vector/scalar (power8-vector) |
18713 instruction set are available, the following additional functions are | 18532 instruction set are available, the following additional functions are |
18714 available for 64-bit targets. New vector types | 18533 available for 64-bit targets. New vector types |
18715 (@var{vector __int128_t} and @var{vector __uint128_t}) are available | 18534 (@var{vector __int128} and @var{vector __uint128}) are available |
18716 to hold the @var{__int128_t} and @var{__uint128_t} types to use these | 18535 to hold the @var{__int128} and @var{__uint128} types to use these |
18717 builtins. | 18536 builtins. |
18718 | 18537 |
18719 The normal vector extract, and set operations work on | 18538 The normal vector extract, and set operations work on |
18720 @var{vector __int128_t} and @var{vector __uint128_t} types, | 18539 @var{vector __int128} and @var{vector __uint128} types, |
18721 but the index value must be 0. | 18540 but the index value must be 0. |
18722 | 18541 |
18723 @smallexample | 18542 @smallexample |
18724 vector __int128_t vec_vaddcuq (vector __int128_t, vector __int128_t); | 18543 vector __int128 vec_vaddcuq (vector __int128, vector __int128); |
18725 vector __uint128_t vec_vaddcuq (vector __uint128_t, vector __uint128_t); | 18544 vector __uint128 vec_vaddcuq (vector __uint128, vector __uint128); |
18726 | 18545 |
18727 vector __int128_t vec_vadduqm (vector __int128_t, vector __int128_t); | 18546 vector __int128 vec_vadduqm (vector __int128, vector __int128); |
18728 vector __uint128_t vec_vadduqm (vector __uint128_t, vector __uint128_t); | 18547 vector __uint128 vec_vadduqm (vector __uint128, vector __uint128); |
18729 | 18548 |
18730 vector __int128_t vec_vaddecuq (vector __int128_t, vector __int128_t, | 18549 vector __int128 vec_vaddecuq (vector __int128, vector __int128, |
18731 vector __int128_t); | 18550 vector __int128); |
18732 vector __uint128_t vec_vaddecuq (vector __uint128_t, vector __uint128_t, | 18551 vector __uint128 vec_vaddecuq (vector __uint128, vector __uint128, |
18733 vector __uint128_t); | 18552 vector __uint128); |
18734 | 18553 |
18735 vector __int128_t vec_vaddeuqm (vector __int128_t, vector __int128_t, | 18554 vector __int128 vec_vaddeuqm (vector __int128, vector __int128, |
18736 vector __int128_t); | 18555 vector __int128); |
18737 vector __uint128_t vec_vaddeuqm (vector __uint128_t, vector __uint128_t, | 18556 vector __uint128 vec_vaddeuqm (vector __uint128, vector __uint128, |
18738 vector __uint128_t); | 18557 vector __uint128); |
18739 | 18558 |
18740 vector __int128_t vec_vsubecuq (vector __int128_t, vector __int128_t, | 18559 vector __int128 vec_vsubecuq (vector __int128, vector __int128, |
18741 vector __int128_t); | 18560 vector __int128); |
18742 vector __uint128_t vec_vsubecuq (vector __uint128_t, vector __uint128_t, | 18561 vector __uint128 vec_vsubecuq (vector __uint128, vector __uint128, |
18743 vector __uint128_t); | 18562 vector __uint128); |
18744 | 18563 |
18745 vector __int128_t vec_vsubeuqm (vector __int128_t, vector __int128_t, | 18564 vector __int128 vec_vsubeuqm (vector __int128, vector __int128, |
18746 vector __int128_t); | 18565 vector __int128); |
18747 vector __uint128_t vec_vsubeuqm (vector __uint128_t, vector __uint128_t, | 18566 vector __uint128 vec_vsubeuqm (vector __uint128, vector __uint128, |
18748 vector __uint128_t); | 18567 vector __uint128); |
18749 | 18568 |
18750 vector __int128_t vec_vsubcuq (vector __int128_t, vector __int128_t); | 18569 vector __int128 vec_vsubcuq (vector __int128, vector __int128); |
18751 vector __uint128_t vec_vsubcuq (vector __uint128_t, vector __uint128_t); | 18570 vector __uint128 vec_vsubcuq (vector __uint128, vector __uint128); |
18752 | 18571 |
18753 __int128_t vec_vsubuqm (__int128_t, __int128_t); | 18572 __int128 vec_vsubuqm (__int128, __int128); |
18754 __uint128_t vec_vsubuqm (__uint128_t, __uint128_t); | 18573 __uint128 vec_vsubuqm (__uint128, __uint128); |
18755 | 18574 |
18756 vector __int128_t __builtin_bcdadd (vector __int128_t, vector__int128_t); | 18575 vector __int128 __builtin_bcdadd (vector __int128, vector __int128, const int); |
18757 int __builtin_bcdadd_lt (vector __int128_t, vector__int128_t); | 18576 int __builtin_bcdadd_lt (vector __int128, vector __int128, const int); |
18758 int __builtin_bcdadd_eq (vector __int128_t, vector__int128_t); | 18577 int __builtin_bcdadd_eq (vector __int128, vector __int128, const int); |
18759 int __builtin_bcdadd_gt (vector __int128_t, vector__int128_t); | 18578 int __builtin_bcdadd_gt (vector __int128, vector __int128, const int); |
18760 int __builtin_bcdadd_ov (vector __int128_t, vector__int128_t); | 18579 int __builtin_bcdadd_ov (vector __int128, vector __int128, const int); |
18761 vector __int128_t bcdsub (vector __int128_t, vector__int128_t); | 18580 vector __int128 __builtin_bcdsub (vector __int128, vector __int128, const int); |
18762 int __builtin_bcdsub_lt (vector __int128_t, vector__int128_t); | 18581 int __builtin_bcdsub_lt (vector __int128, vector __int128, const int); |
18763 int __builtin_bcdsub_eq (vector __int128_t, vector__int128_t); | 18582 int __builtin_bcdsub_eq (vector __int128, vector __int128, const int); |
18764 int __builtin_bcdsub_gt (vector __int128_t, vector__int128_t); | 18583 int __builtin_bcdsub_gt (vector __int128, vector __int128, const int); |
18765 int __builtin_bcdsub_ov (vector __int128_t, vector__int128_t); | 18584 int __builtin_bcdsub_ov (vector __int128, vector __int128, const int); |
18766 @end smallexample | 18585 @end smallexample |
18586 | |
18587 @node PowerPC AltiVec Built-in Functions Available on ISA 3.0 | |
18588 @subsubsection PowerPC AltiVec Built-in Functions Available on ISA 3.0 | |
18589 | |
18590 The following additional built-in functions are also available for the | |
18591 PowerPC family of processors, starting with ISA 3.0 | |
18592 (@option{-mcpu=power9}) or later: | |
18593 @smallexample | |
18594 unsigned int scalar_extract_exp (double source); | |
18595 unsigned long long int scalar_extract_exp (__ieee128 source); | |
18596 | |
18597 unsigned long long int scalar_extract_sig (double source); | |
18598 unsigned __int128 scalar_extract_sig (__ieee128 source); | |
18599 | |
18600 double scalar_insert_exp (unsigned long long int significand, | |
18601 unsigned long long int exponent); | |
18602 double scalar_insert_exp (double significand, unsigned long long int exponent); | |
18603 | |
18604 ieee_128 scalar_insert_exp (unsigned __int128 significand, | |
18605 unsigned long long int exponent); | |
18606 ieee_128 scalar_insert_exp (ieee_128 significand, unsigned long long int exponent); | |
18607 | |
18608 int scalar_cmp_exp_gt (double arg1, double arg2); | |
18609 int scalar_cmp_exp_lt (double arg1, double arg2); | |
18610 int scalar_cmp_exp_eq (double arg1, double arg2); | |
18611 int scalar_cmp_exp_unordered (double arg1, double arg2); | |
18612 | |
18613 bool scalar_test_data_class (float source, const int condition); | |
18614 bool scalar_test_data_class (double source, const int condition); | |
18615 bool scalar_test_data_class (__ieee128 source, const int condition); | |
18616 | |
18617 bool scalar_test_neg (float source); | |
18618 bool scalar_test_neg (double source); | |
18619 bool scalar_test_neg (__ieee128 source); | |
18620 @end smallexample | |
18621 | |
18622 The @code{scalar_extract_exp} and @code{scalar_extract_sig} | |
18623 functions require a 64-bit environment supporting ISA 3.0 or later. | |
18624 The @code{scalar_extract_exp} and @code{scalar_extract_sig} built-in | |
18625 functions return the significand and the biased exponent value | |
18626 respectively of their @code{source} arguments. | |
18627 When supplied with a 64-bit @code{source} argument, the | |
18628 result returned by @code{scalar_extract_sig} has | |
18629 the @code{0x0010000000000000} bit set if the | |
18630 function's @code{source} argument is in normalized form. | |
18631 Otherwise, this bit is set to 0. | |
18632 When supplied with a 128-bit @code{source} argument, the | |
18633 @code{0x00010000000000000000000000000000} bit of the result is | |
18634 treated similarly. | |
18635 Note that the sign of the significand is not represented in the result | |
18636 returned from the @code{scalar_extract_sig} function. Use the | |
18637 @code{scalar_test_neg} function to test the sign of its @code{double} | |
18638 argument. | |
18639 | |
18640 The @code{scalar_insert_exp} | |
18641 functions require a 64-bit environment supporting ISA 3.0 or later. | |
18642 When supplied with a 64-bit first argument, the | |
18643 @code{scalar_insert_exp} built-in function returns a double-precision | |
18644 floating point value that is constructed by assembling the values of its | |
18645 @code{significand} and @code{exponent} arguments. The sign of the | |
18646 result is copied from the most significant bit of the | |
18647 @code{significand} argument. The significand and exponent components | |
18648 of the result are composed of the least significant 11 bits of the | |
18649 @code{exponent} argument and the least significant 52 bits of the | |
18650 @code{significand} argument respectively. | |
18651 | |
18652 When supplied with a 128-bit first argument, the | |
18653 @code{scalar_insert_exp} built-in function returns a quad-precision | |
18654 ieee floating point value. The sign bit of the result is copied from | |
18655 the most significant bit of the @code{significand} argument. | |
18656 The significand and exponent components of the result are composed of | |
18657 the least significant 15 bits of the @code{exponent} argument and the | |
18658 least significant 112 bits of the @code{significand} argument respectively. | |
18659 | |
18660 The @code{scalar_cmp_exp_gt}, @code{scalar_cmp_exp_lt}, | |
18661 @code{scalar_cmp_exp_eq}, and @code{scalar_cmp_exp_unordered} built-in | |
18662 functions return a non-zero value if @code{arg1} is greater than, less | |
18663 than, equal to, or not comparable to @code{arg2} respectively. The | |
18664 arguments are not comparable if one or the other equals NaN (not a | |
18665 number). | |
18666 | |
18667 The @code{scalar_test_data_class} built-in function returns 1 | |
18668 if any of the condition tests enabled by the value of the | |
18669 @code{condition} variable are true, and 0 otherwise. The | |
18670 @code{condition} argument must be a compile-time constant integer with | |
18671 value not exceeding 127. The | |
18672 @code{condition} argument is encoded as a bitmask with each bit | |
18673 enabling the testing of a different condition, as characterized by the | |
18674 following: | |
18675 @smallexample | |
18676 0x40 Test for NaN | |
18677 0x20 Test for +Infinity | |
18678 0x10 Test for -Infinity | |
18679 0x08 Test for +Zero | |
18680 0x04 Test for -Zero | |
18681 0x02 Test for +Denormal | |
18682 0x01 Test for -Denormal | |
18683 @end smallexample | |
18684 | |
18685 The @code{scalar_test_neg} built-in function returns 1 if its | |
18686 @code{source} argument holds a negative value, 0 otherwise. | |
18687 | |
18688 The following built-in functions are also available for the PowerPC family | |
18689 of processors, starting with ISA 3.0 or later | |
18690 (@option{-mcpu=power9}). These string functions are described | |
18691 separately in order to group the descriptions closer to the function | |
18692 prototypes: | |
18693 @smallexample | |
18694 int vec_all_nez (vector signed char, vector signed char); | |
18695 int vec_all_nez (vector unsigned char, vector unsigned char); | |
18696 int vec_all_nez (vector signed short, vector signed short); | |
18697 int vec_all_nez (vector unsigned short, vector unsigned short); | |
18698 int vec_all_nez (vector signed int, vector signed int); | |
18699 int vec_all_nez (vector unsigned int, vector unsigned int); | |
18700 | |
18701 int vec_any_eqz (vector signed char, vector signed char); | |
18702 int vec_any_eqz (vector unsigned char, vector unsigned char); | |
18703 int vec_any_eqz (vector signed short, vector signed short); | |
18704 int vec_any_eqz (vector unsigned short, vector unsigned short); | |
18705 int vec_any_eqz (vector signed int, vector signed int); | |
18706 int vec_any_eqz (vector unsigned int, vector unsigned int); | |
18707 | |
18708 vector bool char vec_cmpnez (vector signed char arg1, vector signed char arg2); | |
18709 vector bool char vec_cmpnez (vector unsigned char arg1, vector unsigned char arg2); | |
18710 vector bool short vec_cmpnez (vector signed short arg1, vector signed short arg2); | |
18711 vector bool short vec_cmpnez (vector unsigned short arg1, vector unsigned short arg2); | |
18712 vector bool int vec_cmpnez (vector signed int arg1, vector signed int arg2); | |
18713 vector bool int vec_cmpnez (vector unsigned int, vector unsigned int); | |
18714 | |
18715 vector signed char vec_cnttz (vector signed char); | |
18716 vector unsigned char vec_cnttz (vector unsigned char); | |
18717 vector signed short vec_cnttz (vector signed short); | |
18718 vector unsigned short vec_cnttz (vector unsigned short); | |
18719 vector signed int vec_cnttz (vector signed int); | |
18720 vector unsigned int vec_cnttz (vector unsigned int); | |
18721 vector signed long long vec_cnttz (vector signed long long); | |
18722 vector unsigned long long vec_cnttz (vector unsigned long long); | |
18723 | |
18724 signed int vec_cntlz_lsbb (vector signed char); | |
18725 signed int vec_cntlz_lsbb (vector unsigned char); | |
18726 | |
18727 signed int vec_cnttz_lsbb (vector signed char); | |
18728 signed int vec_cnttz_lsbb (vector unsigned char); | |
18729 | |
18730 unsigned int vec_first_match_index (vector signed char, vector signed char); | |
18731 unsigned int vec_first_match_index (vector unsigned char, vector unsigned char); | |
18732 unsigned int vec_first_match_index (vector signed int, vector signed int); | |
18733 unsigned int vec_first_match_index (vector unsigned int, vector unsigned int); | |
18734 unsigned int vec_first_match_index (vector signed short, vector signed short); | |
18735 unsigned int vec_first_match_index (vector unsigned short, vector unsigned short); | |
18736 unsigned int vec_first_match_or_eos_index (vector signed char, vector signed char); | |
18737 unsigned int vec_first_match_or_eos_index (vector unsigned char, vector unsigned char); | |
18738 unsigned int vec_first_match_or_eos_index (vector signed int, vector signed int); | |
18739 unsigned int vec_first_match_or_eos_index (vector unsigned int, vector unsigned int); | |
18740 unsigned int vec_first_match_or_eos_index (vector signed short, vector signed short); | |
18741 unsigned int vec_first_match_or_eos_index (vector unsigned short, | |
18742 vector unsigned short); | |
18743 unsigned int vec_first_mismatch_index (vector signed char, vector signed char); | |
18744 unsigned int vec_first_mismatch_index (vector unsigned char, vector unsigned char); | |
18745 unsigned int vec_first_mismatch_index (vector signed int, vector signed int); | |
18746 unsigned int vec_first_mismatch_index (vector unsigned int, vector unsigned int); | |
18747 unsigned int vec_first_mismatch_index (vector signed short, vector signed short); | |
18748 unsigned int vec_first_mismatch_index (vector unsigned short, vector unsigned short); | |
18749 unsigned int vec_first_mismatch_or_eos_index (vector signed char, vector signed char); | |
18750 unsigned int vec_first_mismatch_or_eos_index (vector unsigned char, | |
18751 vector unsigned char); | |
18752 unsigned int vec_first_mismatch_or_eos_index (vector signed int, vector signed int); | |
18753 unsigned int vec_first_mismatch_or_eos_index (vector unsigned int, vector unsigned int); | |
18754 unsigned int vec_first_mismatch_or_eos_index (vector signed short, vector signed short); | |
18755 unsigned int vec_first_mismatch_or_eos_index (vector unsigned short, | |
18756 vector unsigned short); | |
18757 | |
18758 vector unsigned short vec_pack_to_short_fp32 (vector float, vector float); | |
18759 | |
18760 vector signed char vec_xl_be (signed long long, signed char *); | |
18761 vector unsigned char vec_xl_be (signed long long, unsigned char *); | |
18762 vector signed int vec_xl_be (signed long long, signed int *); | |
18763 vector unsigned int vec_xl_be (signed long long, unsigned int *); | |
18764 vector signed __int128 vec_xl_be (signed long long, signed __int128 *); | |
18765 vector unsigned __int128 vec_xl_be (signed long long, unsigned __int128 *); | |
18766 vector signed long long vec_xl_be (signed long long, signed long long *); | |
18767 vector unsigned long long vec_xl_be (signed long long, unsigned long long *); | |
18768 vector signed short vec_xl_be (signed long long, signed short *); | |
18769 vector unsigned short vec_xl_be (signed long long, unsigned short *); | |
18770 vector double vec_xl_be (signed long long, double *); | |
18771 vector float vec_xl_be (signed long long, float *); | |
18772 | |
18773 vector signed char vec_xl_len (signed char *addr, size_t len); | |
18774 vector unsigned char vec_xl_len (unsigned char *addr, size_t len); | |
18775 vector signed int vec_xl_len (signed int *addr, size_t len); | |
18776 vector unsigned int vec_xl_len (unsigned int *addr, size_t len); | |
18777 vector signed __int128 vec_xl_len (signed __int128 *addr, size_t len); | |
18778 vector unsigned __int128 vec_xl_len (unsigned __int128 *addr, size_t len); | |
18779 vector signed long long vec_xl_len (signed long long *addr, size_t len); | |
18780 vector unsigned long long vec_xl_len (unsigned long long *addr, size_t len); | |
18781 vector signed short vec_xl_len (signed short *addr, size_t len); | |
18782 vector unsigned short vec_xl_len (unsigned short *addr, size_t len); | |
18783 vector double vec_xl_len (double *addr, size_t len); | |
18784 vector float vec_xl_len (float *addr, size_t len); | |
18785 | |
18786 vector unsigned char vec_xl_len_r (unsigned char *addr, size_t len); | |
18787 | |
18788 void vec_xst_len (vector signed char data, signed char *addr, size_t len); | |
18789 void vec_xst_len (vector unsigned char data, unsigned char *addr, size_t len); | |
18790 void vec_xst_len (vector signed int data, signed int *addr, size_t len); | |
18791 void vec_xst_len (vector unsigned int data, unsigned int *addr, size_t len); | |
18792 void vec_xst_len (vector unsigned __int128 data, unsigned __int128 *addr, size_t len); | |
18793 void vec_xst_len (vector signed long long data, signed long long *addr, size_t len); | |
18794 void vec_xst_len (vector unsigned long long data, unsigned long long *addr, size_t len); | |
18795 void vec_xst_len (vector signed short data, signed short *addr, size_t len); | |
18796 void vec_xst_len (vector unsigned short data, unsigned short *addr, size_t len); | |
18797 void vec_xst_len (vector signed __int128 data, signed __int128 *addr, size_t len); | |
18798 void vec_xst_len (vector double data, double *addr, size_t len); | |
18799 void vec_xst_len (vector float data, float *addr, size_t len); | |
18800 | |
18801 void vec_xst_len_r (vector unsigned char data, unsigned char *addr, size_t len); | |
18802 | |
18803 signed char vec_xlx (unsigned int index, vector signed char data); | |
18804 unsigned char vec_xlx (unsigned int index, vector unsigned char data); | |
18805 signed short vec_xlx (unsigned int index, vector signed short data); | |
18806 unsigned short vec_xlx (unsigned int index, vector unsigned short data); | |
18807 signed int vec_xlx (unsigned int index, vector signed int data); | |
18808 unsigned int vec_xlx (unsigned int index, vector unsigned int data); | |
18809 float vec_xlx (unsigned int index, vector float data); | |
18810 | |
18811 signed char vec_xrx (unsigned int index, vector signed char data); | |
18812 unsigned char vec_xrx (unsigned int index, vector unsigned char data); | |
18813 signed short vec_xrx (unsigned int index, vector signed short data); | |
18814 unsigned short vec_xrx (unsigned int index, vector unsigned short data); | |
18815 signed int vec_xrx (unsigned int index, vector signed int data); | |
18816 unsigned int vec_xrx (unsigned int index, vector unsigned int data); | |
18817 float vec_xrx (unsigned int index, vector float data); | |
18818 @end smallexample | |
18819 | |
18820 The @code{vec_all_nez}, @code{vec_any_eqz}, and @code{vec_cmpnez} | |
18821 perform pairwise comparisons between the elements at the same | |
18822 positions within their two vector arguments. | |
18823 The @code{vec_all_nez} function returns a | |
18824 non-zero value if and only if all pairwise comparisons are not | |
18825 equal and no element of either vector argument contains a zero. | |
18826 The @code{vec_any_eqz} function returns a | |
18827 non-zero value if and only if at least one pairwise comparison is equal | |
18828 or if at least one element of either vector argument contains a zero. | |
18829 The @code{vec_cmpnez} function returns a vector of the same type as | |
18830 its two arguments, within which each element consists of all ones to | |
18831 denote that either the corresponding elements of the incoming arguments are | |
18832 not equal or that at least one of the corresponding elements contains | |
18833 zero. Otherwise, the element of the returned vector contains all zeros. | |
18834 | |
18835 The @code{vec_cntlz_lsbb} function returns the count of the number of | |
18836 consecutive leading byte elements (starting from position 0 within the | |
18837 supplied vector argument) for which the least-significant bit | |
18838 equals zero. The @code{vec_cnttz_lsbb} function returns the count of | |
18839 the number of consecutive trailing byte elements (starting from | |
18840 position 15 and counting backwards within the supplied vector | |
18841 argument) for which the least-significant bit equals zero. | |
18842 | |
18843 The @code{vec_xl_len} and @code{vec_xst_len} functions require a | |
18844 64-bit environment supporting ISA 3.0 or later. The @code{vec_xl_len} | |
18845 function loads a variable length vector from memory. The | |
18846 @code{vec_xst_len} function stores a variable length vector to memory. | |
18847 With both the @code{vec_xl_len} and @code{vec_xst_len} functions, the | |
18848 @code{addr} argument represents the memory address to or from which | |
18849 data will be transferred, and the | |
18850 @code{len} argument represents the number of bytes to be | |
18851 transferred, as computed by the C expression @code{min((len & 0xff), 16)}. | |
18852 If this expression's value is not a multiple of the vector element's | |
18853 size, the behavior of this function is undefined. | |
18854 In the case that the underlying computer is configured to run in | |
18855 big-endian mode, the data transfer moves bytes 0 to @code{(len - 1)} of | |
18856 the corresponding vector. In little-endian mode, the data transfer | |
18857 moves bytes @code{(16 - len)} to @code{15} of the corresponding | |
18858 vector. For the load function, any bytes of the result vector that | |
18859 are not loaded from memory are set to zero. | |
18860 The value of the @code{addr} argument need not be aligned on a | |
18861 multiple of the vector's element size. | |
18862 | |
18863 The @code{vec_xlx} and @code{vec_xrx} functions extract the single | |
18864 element selected by the @code{index} argument from the vector | |
18865 represented by the @code{data} argument. The @code{index} argument | |
18866 always specifies a byte offset, regardless of the size of the vector | |
18867 element. With @code{vec_xlx}, @code{index} is the offset of the first | |
18868 byte of the element to be extracted. With @code{vec_xrx}, @code{index} | |
18869 represents the last byte of the element to be extracted, measured | |
18870 from the right end of the vector. In other words, the last byte of | |
18871 the element to be extracted is found at position @code{(15 - index)}. | |
18872 There is no requirement that @code{index} be a multiple of the vector | |
18873 element size. However, if the size of the vector element added to | |
18874 @code{index} is greater than 15, the content of the returned value is | |
18875 undefined. | |
18767 | 18876 |
18768 If the ISA 3.0 instruction set additions (@option{-mcpu=power9}) | 18877 If the ISA 3.0 instruction set additions (@option{-mcpu=power9}) |
18769 are available: | 18878 are available: |
18770 | 18879 |
18771 @smallexample | 18880 @smallexample |
18772 vector unsigned long long vec_bperm (vector unsigned long long, | 18881 vector unsigned long long vec_bperm (vector unsigned long long, vector unsigned char); |
18773 vector unsigned char); | |
18774 | 18882 |
18775 vector bool char vec_cmpne (vector bool char, vector bool char); | 18883 vector bool char vec_cmpne (vector bool char, vector bool char); |
18884 vector bool char vec_cmpne (vector signed char, vector signed char); | |
18885 vector bool char vec_cmpne (vector unsigned char, vector unsigned char); | |
18886 vector bool int vec_cmpne (vector bool int, vector bool int); | |
18887 vector bool int vec_cmpne (vector signed int, vector signed int); | |
18888 vector bool int vec_cmpne (vector unsigned int, vector unsigned int); | |
18889 vector bool long long vec_cmpne (vector bool long long, vector bool long long); | |
18890 vector bool long long vec_cmpne (vector signed long long, vector signed long long); | |
18891 vector bool long long vec_cmpne (vector unsigned long long, vector unsigned long long); | |
18776 vector bool short vec_cmpne (vector bool short, vector bool short); | 18892 vector bool short vec_cmpne (vector bool short, vector bool short); |
18777 vector bool int vec_cmpne (vector bool int, vector bool int); | 18893 vector bool short vec_cmpne (vector signed short, vector signed short); |
18778 vector bool long long vec_cmpne (vector bool long long, vector bool long long); | 18894 vector bool short vec_cmpne (vector unsigned short, vector unsigned short); |
18895 vector bool long long vec_cmpne (vector double, vector double); | |
18896 vector bool int vec_cmpne (vector float, vector float); | |
18779 | 18897 |
18780 vector float vec_extract_fp32_from_shorth (vector unsigned short); | 18898 vector float vec_extract_fp32_from_shorth (vector unsigned short); |
18781 vector float vec_extract_fp32_from_shortl (vector unsigned short); | 18899 vector float vec_extract_fp32_from_shortl (vector unsigned short); |
18782 | 18900 |
18783 vector long long vec_vctz (vector long long); | 18901 vector long long vec_vctz (vector long long); |
18799 vector unsigned short vec_vctzh (vector unsigned short); | 18917 vector unsigned short vec_vctzh (vector unsigned short); |
18800 | 18918 |
18801 vector int vec_vctzw (vector int); | 18919 vector int vec_vctzw (vector int); |
18802 vector unsigned int vec_vctzw (vector int); | 18920 vector unsigned int vec_vctzw (vector int); |
18803 | 18921 |
18804 long long vec_vextract4b (const vector signed char, const int); | 18922 vector unsigned long long vec_extract4b (vector unsigned char, const int); |
18805 long long vec_vextract4b (const vector unsigned char, const int); | 18923 |
18806 | 18924 vector unsigned char vec_insert4b (vector signed int, vector unsigned char, |
18807 vector signed char vec_insert4b (vector int, vector signed char, const int); | 18925 const int); |
18808 vector unsigned char vec_insert4b (vector unsigned int, vector unsigned char, | 18926 vector unsigned char vec_insert4b (vector unsigned int, vector unsigned char, |
18809 const int); | 18927 const int); |
18810 vector signed char vec_insert4b (long long, vector signed char, const int); | |
18811 vector unsigned char vec_insert4b (long long, vector unsigned char, const int); | |
18812 | 18928 |
18813 vector unsigned int vec_parity_lsbb (vector signed int); | 18929 vector unsigned int vec_parity_lsbb (vector signed int); |
18814 vector unsigned int vec_parity_lsbb (vector unsigned int); | 18930 vector unsigned int vec_parity_lsbb (vector unsigned int); |
18815 vector unsigned __int128 vec_parity_lsbb (vector signed __int128); | 18931 vector unsigned __int128 vec_parity_lsbb (vector signed __int128); |
18816 vector unsigned __int128 vec_parity_lsbb (vector unsigned __int128); | 18932 vector unsigned __int128 vec_parity_lsbb (vector unsigned __int128); |
18833 are available: | 18949 are available: |
18834 | 18950 |
18835 @smallexample | 18951 @smallexample |
18836 vector long vec_vprtyb (vector long); | 18952 vector long vec_vprtyb (vector long); |
18837 vector unsigned long vec_vprtyb (vector unsigned long); | 18953 vector unsigned long vec_vprtyb (vector unsigned long); |
18838 vector __int128_t vec_vprtyb (vector __int128_t); | 18954 vector __int128 vec_vprtyb (vector __int128); |
18839 vector __uint128_t vec_vprtyb (vector __uint128_t); | 18955 vector __uint128 vec_vprtyb (vector __uint128); |
18840 | 18956 |
18841 vector long vec_vprtybd (vector long); | 18957 vector long vec_vprtybd (vector long); |
18842 vector unsigned long vec_vprtybd (vector unsigned long); | 18958 vector unsigned long vec_vprtybd (vector unsigned long); |
18843 | 18959 |
18844 vector __int128_t vec_vprtybq (vector __int128_t); | 18960 vector __int128 vec_vprtybq (vector __int128); |
18845 vector __uint128_t vec_vprtybd (vector __uint128_t); | 18961 vector __uint128 vec_vprtybd (vector __uint128); |
18846 @end smallexample | 18962 @end smallexample |
18847 | 18963 |
18848 The following built-in vector functions are available for the PowerPC family | 18964 The following built-in vector functions are available for the PowerPC family |
18849 of processors, starting with ISA 3.0 or later (@option{-mcpu=power9}): | 18965 of processors, starting with ISA 3.0 or later (@option{-mcpu=power9}): |
18850 @smallexample | 18966 @smallexample |
18903 elements of the vector result. | 19019 elements of the vector result. |
18904 | 19020 |
18905 The following built-in functions are available for the PowerPC family | 19021 The following built-in functions are available for the PowerPC family |
18906 of processors, starting with ISA 3.0 or later (@option{-mcpu=power9}): | 19022 of processors, starting with ISA 3.0 or later (@option{-mcpu=power9}): |
18907 @smallexample | 19023 @smallexample |
18908 __vector unsigned int | 19024 __vector unsigned int vec_extract_exp (__vector float source); |
18909 vec_extract_exp (__vector float source); | 19025 __vector unsigned long long int vec_extract_exp (__vector double source); |
18910 __vector unsigned long long int | 19026 |
18911 vec_extract_exp (__vector double source); | 19027 __vector unsigned int vec_extract_sig (__vector float source); |
18912 | 19028 __vector unsigned long long int vec_extract_sig (__vector double source); |
18913 __vector unsigned int | 19029 |
18914 vec_extract_sig (__vector float source); | 19030 __vector float vec_insert_exp (__vector unsigned int significands, |
18915 __vector unsigned long long int | 19031 __vector unsigned int exponents); |
18916 vec_extract_sig (__vector double source); | 19032 __vector float vec_insert_exp (__vector unsigned float significands, |
18917 | 19033 __vector unsigned int exponents); |
18918 __vector float | 19034 __vector double vec_insert_exp (__vector unsigned long long int significands, |
18919 vec_insert_exp (__vector unsigned int significands, | 19035 __vector unsigned long long int exponents); |
18920 __vector unsigned int exponents); | 19036 __vector double vec_insert_exp (__vector unsigned double significands, |
18921 __vector float | 19037 __vector unsigned long long int exponents); |
18922 vec_insert_exp (__vector unsigned float significands, | 19038 |
18923 __vector unsigned int exponents); | 19039 __vector bool int vec_test_data_class (__vector float source, const int condition); |
18924 __vector double | |
18925 vec_insert_exp (__vector unsigned long long int significands, | |
18926 __vector unsigned long long int exponents); | |
18927 __vector double | |
18928 vec_insert_exp (__vector unsigned double significands, | |
18929 __vector unsigned long long int exponents); | |
18930 | |
18931 __vector bool int vec_test_data_class (__vector float source, | |
18932 const int condition); | |
18933 __vector bool long long int vec_test_data_class (__vector double source, | 19040 __vector bool long long int vec_test_data_class (__vector double source, |
18934 const int condition); | 19041 const int condition); |
18935 @end smallexample | 19042 @end smallexample |
18936 | 19043 |
18937 The @code{vec_extract_sig} and @code{vec_extract_exp} built-in | 19044 The @code{vec_extract_sig} and @code{vec_extract_exp} built-in |
19051 On 64-bit targets, if the ISA 3.0 additions (@option{-mcpu=power9}) | 19158 On 64-bit targets, if the ISA 3.0 additions (@option{-mcpu=power9}) |
19052 are available: | 19159 are available: |
19053 @smallexample | 19160 @smallexample |
19054 vector long vec_revb (vector long); | 19161 vector long vec_revb (vector long); |
19055 vector unsigned long vec_revb (vector unsigned long); | 19162 vector unsigned long vec_revb (vector unsigned long); |
19056 vector __int128_t vec_revb (vector __int128_t); | 19163 vector __int128 vec_revb (vector __int128); |
19057 vector __uint128_t vec_revb (vector __uint128_t); | 19164 vector __uint128 vec_revb (vector __uint128); |
19058 @end smallexample | 19165 @end smallexample |
19059 | 19166 |
19060 The @code{vec_revb} built-in function reverses the bytes on an element | 19167 The @code{vec_revb} built-in function reverses the bytes on an element |
19061 by element basis. A vector of @code{vector unsigned char} or | 19168 by element basis. A vector of @code{vector unsigned char} or |
19062 @code{vector signed char} reverses the bytes in the whole word. | 19169 @code{vector signed char} reverses the bytes in the whole word. |
19075 vector unsigned long long); | 19182 vector unsigned long long); |
19076 | 19183 |
19077 vector unsigned long long __builtin_crypto_vncipher (vector unsigned long long, | 19184 vector unsigned long long __builtin_crypto_vncipher (vector unsigned long long, |
19078 vector unsigned long long); | 19185 vector unsigned long long); |
19079 | 19186 |
19080 vector unsigned long long __builtin_crypto_vncipherlast | 19187 vector unsigned long long __builtin_crypto_vncipherlast (vector unsigned long long, |
19081 (vector unsigned long long, | 19188 vector unsigned long long); |
19082 vector unsigned long long); | |
19083 | 19189 |
19084 vector unsigned char __builtin_crypto_vpermxor (vector unsigned char, | 19190 vector unsigned char __builtin_crypto_vpermxor (vector unsigned char, |
19085 vector unsigned char, | 19191 vector unsigned char, |
19086 vector unsigned char); | 19192 vector unsigned char); |
19087 | 19193 |
19107 vector unsigned int); | 19213 vector unsigned int); |
19108 | 19214 |
19109 vector unsigned long long __builtin_crypto_vpmsumb (vector unsigned long long, | 19215 vector unsigned long long __builtin_crypto_vpmsumb (vector unsigned long long, |
19110 vector unsigned long long); | 19216 vector unsigned long long); |
19111 | 19217 |
19112 vector unsigned long long __builtin_crypto_vshasigmad | 19218 vector unsigned long long __builtin_crypto_vshasigmad (vector unsigned long long, |
19113 (vector unsigned long long, int, int); | 19219 int, int); |
19114 | 19220 |
19115 vector unsigned int __builtin_crypto_vshasigmaw (vector unsigned int, | 19221 vector unsigned int __builtin_crypto_vshasigmaw (vector unsigned int, int, int); |
19116 int, int); | |
19117 @end smallexample | 19222 @end smallexample |
19118 | 19223 |
19119 The second argument to @var{__builtin_crypto_vshasigmad} and | 19224 The second argument to @var{__builtin_crypto_vshasigmad} and |
19120 @var{__builtin_crypto_vshasigmaw} must be a constant | 19225 @var{__builtin_crypto_vshasigmaw} must be a constant |
19121 integer that is 0 or 1. The third argument to these built-in functions | 19226 integer that is 0 or 1. The third argument to these built-in functions |
19122 must be a constant integer in the range of 0 to 15. | 19227 must be a constant integer in the range of 0 to 15. |
19123 | 19228 |
19124 If the ISA 3.0 instruction set additions | 19229 If the ISA 3.0 instruction set additions |
19125 are enabled (@option{-mcpu=power9}), the following additional | 19230 are enabled (@option{-mcpu=power9}), the following additional |
19126 functions are available for both 32-bit and 64-bit targets. | 19231 functions are available for both 32-bit and 64-bit targets. |
19127 | 19232 @smallexample |
19128 vector short vec_xl (int, vector short *); | 19233 vector short vec_xl (int, vector short *); |
19129 vector short vec_xl (int, short *); | 19234 vector short vec_xl (int, short *); |
19130 vector unsigned short vec_xl (int, vector unsigned short *); | 19235 vector unsigned short vec_xl (int, vector unsigned short *); |
19131 vector unsigned short vec_xl (int, unsigned short *); | 19236 vector unsigned short vec_xl (int, unsigned short *); |
19132 vector char vec_xl (int, vector char *); | 19237 vector char vec_xl (int, vector char *); |
19140 void vec_xst (vector unsigned short, int, unsigned short *); | 19245 void vec_xst (vector unsigned short, int, unsigned short *); |
19141 void vec_xst (vector char, int, vector char *); | 19246 void vec_xst (vector char, int, vector char *); |
19142 void vec_xst (vector char, int, char *); | 19247 void vec_xst (vector char, int, char *); |
19143 void vec_xst (vector unsigned char, int, vector unsigned char *); | 19248 void vec_xst (vector unsigned char, int, vector unsigned char *); |
19144 void vec_xst (vector unsigned char, int, unsigned char *); | 19249 void vec_xst (vector unsigned char, int, unsigned char *); |
19145 | 19250 @end smallexample |
19146 @node PowerPC Hardware Transactional Memory Built-in Functions | 19251 @node PowerPC Hardware Transactional Memory Built-in Functions |
19147 @subsection PowerPC Hardware Transactional Memory Built-in Functions | 19252 @subsection PowerPC Hardware Transactional Memory Built-in Functions |
19148 GCC provides two interfaces for accessing the Hardware Transactional | 19253 GCC provides two interfaces for accessing the Hardware Transactional |
19149 Memory (HTM) instructions available on some of the PowerPC family | 19254 Memory (HTM) instructions available on some of the PowerPC family |
19150 of processors (eg, POWER8). The two interfaces come in a low level | 19255 of processors (eg, POWER8). The two interfaces come in a low level |
21517 @smallexample | 21622 @smallexample |
21518 void __builtin_ia32_wrpkru (unsigned int) | 21623 void __builtin_ia32_wrpkru (unsigned int) |
21519 unsigned int __builtin_ia32_rdpkru () | 21624 unsigned int __builtin_ia32_rdpkru () |
21520 @end smallexample | 21625 @end smallexample |
21521 | 21626 |
21522 The following built-in functions are available when @option{-mcet} is used. | 21627 The following built-in functions are available when @option{-mcet} or |
21523 They are used to support Intel Control-flow Enforcment Technology (CET). | 21628 @option{-mshstk} option is used. They support shadow stack |
21524 Each built-in function generates the machine instruction that is part of the | 21629 machine instructions from Intel Control-flow Enforcement Technology (CET). |
21525 function's name. | 21630 Each built-in function generates the machine instruction that is part |
21526 @smallexample | 21631 of the function's name. These are the internal low-level functions. |
21527 unsigned int __builtin_ia32_rdsspd (unsigned int) | 21632 Normally the functions in @ref{x86 control-flow protection intrinsics} |
21528 unsigned long long __builtin_ia32_rdsspq (unsigned long long) | 21633 should be used instead. |
21634 | |
21635 @smallexample | |
21636 unsigned int __builtin_ia32_rdsspd (void) | |
21637 unsigned long long __builtin_ia32_rdsspq (void) | |
21529 void __builtin_ia32_incsspd (unsigned int) | 21638 void __builtin_ia32_incsspd (unsigned int) |
21530 void __builtin_ia32_incsspq (unsigned long long) | 21639 void __builtin_ia32_incsspq (unsigned long long) |
21531 void __builtin_ia32_saveprevssp(void); | 21640 void __builtin_ia32_saveprevssp(void); |
21532 void __builtin_ia32_rstorssp(void *); | 21641 void __builtin_ia32_rstorssp(void *); |
21533 void __builtin_ia32_wrssd(unsigned int, void *); | 21642 void __builtin_ia32_wrssd(unsigned int, void *); |
21558 Start a RTM (Restricted Transactional Memory) transaction. | 21667 Start a RTM (Restricted Transactional Memory) transaction. |
21559 Returns @code{_XBEGIN_STARTED} when the transaction | 21668 Returns @code{_XBEGIN_STARTED} when the transaction |
21560 started successfully (note this is not 0, so the constant has to be | 21669 started successfully (note this is not 0, so the constant has to be |
21561 explicitly tested). | 21670 explicitly tested). |
21562 | 21671 |
21563 If the transaction aborts, all side-effects | 21672 If the transaction aborts, all side effects |
21564 are undone and an abort code encoded as a bit mask is returned. | 21673 are undone and an abort code encoded as a bit mask is returned. |
21565 The following macros are defined: | 21674 The following macros are defined: |
21566 | 21675 |
21567 @table @code | 21676 @table @code |
21568 @item _XABORT_EXPLICIT | 21677 @item _XABORT_EXPLICIT |
21585 fallback path. | 21694 fallback path. |
21586 @end deftypefn | 21695 @end deftypefn |
21587 | 21696 |
21588 @deftypefn {RTM Function} {void} _xend () | 21697 @deftypefn {RTM Function} {void} _xend () |
21589 Commit the current transaction. When no transaction is active this faults. | 21698 Commit the current transaction. When no transaction is active this faults. |
21590 All memory side-effects of the transaction become visible | 21699 All memory side effects of the transaction become visible |
21591 to other threads in an atomic manner. | 21700 to other threads in an atomic manner. |
21592 @end deftypefn | 21701 @end deftypefn |
21593 | 21702 |
21594 @deftypefn {RTM Function} {int} _xtest () | 21703 @deftypefn {RTM Function} {int} _xtest () |
21595 Return a nonzero value if a transaction is currently active, otherwise 0. | 21704 Return a nonzero value if a transaction is currently active, otherwise 0. |
21629 @end smallexample | 21738 @end smallexample |
21630 | 21739 |
21631 @noindent | 21740 @noindent |
21632 Note that, in most cases, the transactional and non-transactional code | 21741 Note that, in most cases, the transactional and non-transactional code |
21633 must synchronize together to ensure consistency. | 21742 must synchronize together to ensure consistency. |
21743 | |
21744 @node x86 control-flow protection intrinsics | |
21745 @subsection x86 Control-Flow Protection Intrinsics | |
21746 | |
21747 @deftypefn {CET Function} {ret_type} _get_ssp (void) | |
21748 Get the current value of shadow stack pointer if shadow stack support | |
21749 from Intel CET is enabled in the hardware or @code{0} otherwise. | |
21750 The @code{ret_type} is @code{unsigned long long} for 64-bit targets | |
21751 and @code{unsigned int} for 32-bit targets. | |
21752 @end deftypefn | |
21753 | |
21754 @deftypefn {CET Function} void _inc_ssp (unsigned int) | |
21755 Increment the current shadow stack pointer by the size specified by the | |
21756 function argument. The argument is masked to a byte value for security | |
21757 reasons, so to increment by more than 255 bytes you must call the function | |
21758 multiple times. | |
21759 @end deftypefn | |
21760 | |
21761 The shadow stack unwind code looks like: | |
21762 | |
21763 @smallexample | |
21764 #include <immintrin.h> | |
21765 | |
21766 /* Unwind the shadow stack for EH. */ | |
21767 #define _Unwind_Frames_Extra(x) \ | |
21768 do \ | |
21769 @{ \ | |
21770 _Unwind_Word ssp = _get_ssp (); \ | |
21771 if (ssp != 0) \ | |
21772 @{ \ | |
21773 _Unwind_Word tmp = (x); \ | |
21774 while (tmp > 255) \ | |
21775 @{ \ | |
21776 _inc_ssp (tmp); \ | |
21777 tmp -= 255; \ | |
21778 @} \ | |
21779 _inc_ssp (tmp); \ | |
21780 @} \ | |
21781 @} \ | |
21782 while (0) | |
21783 @end smallexample | |
21784 | |
21785 @noindent | |
21786 This code runs unconditionally on all 64-bit processors. For 32-bit | |
21787 processors the code runs on those that support multi-byte NOP instructions. | |
21634 | 21788 |
21635 @node Target Format Checks | 21789 @node Target Format Checks |
21636 @section Format Checks Specific to Particular Target Machines | 21790 @section Format Checks Specific to Particular Target Machines |
21637 | 21791 |
21638 For some target machines, GCC supports additional options to the | 21792 For some target machines, GCC supports additional options to the |
22117 @table @code | 22271 @table @code |
22118 @item #pragma message @var{string} | 22272 @item #pragma message @var{string} |
22119 @cindex pragma, diagnostic | 22273 @cindex pragma, diagnostic |
22120 | 22274 |
22121 Prints @var{string} as a compiler message on compilation. The message | 22275 Prints @var{string} as a compiler message on compilation. The message |
22122 is informational only, and is neither a compilation warning nor an error. | 22276 is informational only, and is neither a compilation warning nor an |
22277 error. Newlines can be included in the string by using the @samp{\n} | |
22278 escape sequence. | |
22123 | 22279 |
22124 @smallexample | 22280 @smallexample |
22125 #pragma message "Compiling " __FILE__ "..." | 22281 #pragma message "Compiling " __FILE__ "..." |
22126 @end smallexample | 22282 @end smallexample |
22127 | 22283 |
22136 @end smallexample | 22292 @end smallexample |
22137 | 22293 |
22138 @noindent | 22294 @noindent |
22139 prints @samp{/tmp/file.c:4: note: #pragma message: | 22295 prints @samp{/tmp/file.c:4: note: #pragma message: |
22140 TODO - Remember to fix this}. | 22296 TODO - Remember to fix this}. |
22297 | |
22298 @item #pragma GCC error @var{message} | |
22299 @cindex pragma, diagnostic | |
22300 Generates an error message. This pragma @emph{is} considered to | |
22301 indicate an error in the compilation, and it will be treated as such. | |
22302 | |
22303 Newlines can be included in the string by using the @samp{\n} | |
22304 escape sequence. They will be displayed as newlines even if the | |
22305 @option{-fmessage-length} option is set to zero. | |
22306 | |
22307 The error is only generated if the pragma is present in the code after | |
22308 pre-processing has been completed. It does not matter however if the | |
22309 code containing the pragma is unreachable: | |
22310 | |
22311 @smallexample | |
22312 #if 0 | |
22313 #pragma GCC error "this error is not seen" | |
22314 #endif | |
22315 void foo (void) | |
22316 @{ | |
22317 return; | |
22318 #pragma GCC error "this error is seen" | |
22319 @} | |
22320 @end smallexample | |
22321 | |
22322 @item #pragma GCC warning @var{message} | |
22323 @cindex pragma, diagnostic | |
22324 This is just like @samp{pragma GCC error} except that a warning | |
22325 message is issued instead of an error message. Unless | |
22326 @option{-Werror} is in effect, in which case this pragma will generate | |
22327 an error as well. | |
22141 | 22328 |
22142 @end table | 22329 @end table |
22143 | 22330 |
22144 @node Visibility Pragmas | 22331 @node Visibility Pragmas |
22145 @subsection Visibility Pragmas | 22332 @subsection Visibility Pragmas |
22211 @xref{Function Attributes}, for more information about the | 22398 @xref{Function Attributes}, for more information about the |
22212 @code{target} attribute and the attribute syntax. | 22399 @code{target} attribute and the attribute syntax. |
22213 | 22400 |
22214 The @code{#pragma GCC target} pragma is presently implemented for | 22401 The @code{#pragma GCC target} pragma is presently implemented for |
22215 x86, ARM, AArch64, PowerPC, S/390, and Nios II targets only. | 22402 x86, ARM, AArch64, PowerPC, S/390, and Nios II targets only. |
22216 @end table | 22403 |
22217 | |
22218 @table @code | |
22219 @item #pragma GCC optimize (@var{"string"}...) | 22404 @item #pragma GCC optimize (@var{"string"}...) |
22220 @cindex pragma GCC optimize | 22405 @cindex pragma GCC optimize |
22221 | 22406 |
22222 This pragma allows you to set global optimization options for functions | 22407 This pragma allows you to set global optimization options for functions |
22223 defined later in the source file. One or more strings can be | 22408 defined later in the source file. One or more strings can be |
22224 specified. Each function that is defined after this point is as | 22409 specified. Each function that is defined after this point is as |
22225 if @code{attribute((optimize("STRING")))} was specified for that | 22410 if @code{attribute((optimize("STRING")))} was specified for that |
22226 function. The parenthesis around the options is optional. | 22411 function. The parenthesis around the options is optional. |
22227 @xref{Function Attributes}, for more information about the | 22412 @xref{Function Attributes}, for more information about the |
22228 @code{optimize} attribute and the attribute syntax. | 22413 @code{optimize} attribute and the attribute syntax. |
22229 @end table | 22414 |
22230 | |
22231 @table @code | |
22232 @item #pragma GCC push_options | 22415 @item #pragma GCC push_options |
22233 @itemx #pragma GCC pop_options | 22416 @itemx #pragma GCC pop_options |
22234 @cindex pragma GCC push_options | 22417 @cindex pragma GCC push_options |
22235 @cindex pragma GCC pop_options | 22418 @cindex pragma GCC pop_options |
22236 | 22419 |
22237 These pragmas maintain a stack of the current target and optimization | 22420 These pragmas maintain a stack of the current target and optimization |
22238 options. It is intended for include files where you temporarily want | 22421 options. It is intended for include files where you temporarily want |
22239 to switch to using a different @samp{#pragma GCC target} or | 22422 to switch to using a different @samp{#pragma GCC target} or |
22240 @samp{#pragma GCC optimize} and then to pop back to the previous | 22423 @samp{#pragma GCC optimize} and then to pop back to the previous |
22241 options. | 22424 options. |
22242 @end table | 22425 |
22243 | |
22244 @table @code | |
22245 @item #pragma GCC reset_options | 22426 @item #pragma GCC reset_options |
22246 @cindex pragma GCC reset_options | 22427 @cindex pragma GCC reset_options |
22247 | 22428 |
22248 This pragma clears the current @code{#pragma GCC target} and | 22429 This pragma clears the current @code{#pragma GCC target} and |
22249 @code{#pragma GCC optimize} to use the default switches as specified | 22430 @code{#pragma GCC optimize} to use the default switches as specified |
22250 on the command line. | 22431 on the command line. |
22432 | |
22251 @end table | 22433 @end table |
22252 | 22434 |
22253 @node Loop-Specific Pragmas | 22435 @node Loop-Specific Pragmas |
22254 @subsection Loop-Specific Pragmas | 22436 @subsection Loop-Specific Pragmas |
22255 | 22437 |
22256 @table @code | 22438 @table @code |
22257 @item #pragma GCC ivdep | 22439 @item #pragma GCC ivdep |
22258 @cindex pragma GCC ivdep | 22440 @cindex pragma GCC ivdep |
22259 @end table | |
22260 | 22441 |
22261 With this pragma, the programmer asserts that there are no loop-carried | 22442 With this pragma, the programmer asserts that there are no loop-carried |
22262 dependencies which would prevent consecutive iterations of | 22443 dependencies which would prevent consecutive iterations of |
22263 the following loop from executing concurrently with SIMD | 22444 the following loop from executing concurrently with SIMD |
22264 (single instruction multiple data) instructions. | 22445 (single instruction multiple data) instructions. |
22289 for (int i = 0; i < m; i++) | 22470 for (int i = 0; i < m; i++) |
22290 a[i] = a[i + k] * c; | 22471 a[i] = a[i + k] * c; |
22291 @} | 22472 @} |
22292 @end smallexample | 22473 @end smallexample |
22293 | 22474 |
22475 @item #pragma GCC unroll @var{n} | |
22476 @cindex pragma GCC unroll @var{n} | |
22477 | |
22478 You can use this pragma to control how many times a loop should be unrolled. | |
22479 It must be placed immediately before a @code{for}, @code{while} or @code{do} | |
22480 loop or a @code{#pragma GCC ivdep}, and applies only to the loop that follows. | |
22481 @var{n} is an integer constant expression specifying the unrolling factor. | |
22482 The values of @math{0} and @math{1} block any unrolling of the loop. | |
22483 | |
22484 @end table | |
22294 | 22485 |
22295 @node Unnamed Fields | 22486 @node Unnamed Fields |
22296 @section Unnamed Structure and Union Fields | 22487 @section Unnamed Structure and Union Fields |
22297 @cindex @code{struct} | 22488 @cindex @code{struct} |
22298 @cindex @code{union} | 22489 @cindex @code{union} |
23500 the C++ standard is complete, some of those features are superseded by | 23691 the C++ standard is complete, some of those features are superseded by |
23501 superior alternatives. Using the old features might cause a warning in | 23692 superior alternatives. Using the old features might cause a warning in |
23502 some cases that the feature will be dropped in the future. In other | 23693 some cases that the feature will be dropped in the future. In other |
23503 cases, the feature might be gone already. | 23694 cases, the feature might be gone already. |
23504 | 23695 |
23505 While the list below is not exhaustive, it documents some of the options | |
23506 that are now deprecated: | |
23507 | |
23508 @table @code | |
23509 @item -fexternal-templates | |
23510 @itemx -falt-external-templates | |
23511 These are two of the many ways for G++ to implement template | |
23512 instantiation. @xref{Template Instantiation}. The C++ standard clearly | |
23513 defines how template definitions have to be organized across | |
23514 implementation units. G++ has an implicit instantiation mechanism that | |
23515 should work just fine for standard-conforming code. | |
23516 | |
23517 @item -fstrict-prototype | |
23518 @itemx -fno-strict-prototype | |
23519 Previously it was possible to use an empty prototype parameter list to | |
23520 indicate an unspecified number of parameters (like C), rather than no | |
23521 parameters, as C++ demands. This feature has been removed, except where | |
23522 it is required for backwards compatibility. @xref{Backwards Compatibility}. | |
23523 @end table | |
23524 | |
23525 G++ allows a virtual function returning @samp{void *} to be overridden | 23696 G++ allows a virtual function returning @samp{void *} to be overridden |
23526 by one returning a different pointer type. This extension to the | 23697 by one returning a different pointer type. This extension to the |
23527 covariant return type rules is now deprecated and will be removed from a | 23698 covariant return type rules is now deprecated and will be removed from a |
23528 future version. | 23699 future version. |
23529 | |
23530 The G++ minimum and maximum operators (@samp{<?} and @samp{>?}) and | |
23531 their compound forms (@samp{<?=}) and @samp{>?=}) have been deprecated | |
23532 and are now removed from G++. Code using these operators should be | |
23533 modified to use @code{std::min} and @code{std::max} instead. | |
23534 | |
23535 The named return value extension has been deprecated, and is now | |
23536 removed from G++. | |
23537 | |
23538 The use of initializer lists with new expressions has been deprecated, | |
23539 and is now removed from G++. | |
23540 | |
23541 Floating and complex non-type template parameters have been deprecated, | |
23542 and are now removed from G++. | |
23543 | |
23544 The implicit typename extension has been deprecated and is now | |
23545 removed from G++. | |
23546 | 23700 |
23547 The use of default arguments in function pointers, function typedefs | 23701 The use of default arguments in function pointers, function typedefs |
23548 and other places where they are not permitted by the standard is | 23702 and other places where they are not permitted by the standard is |
23549 deprecated and will be removed from a future version of G++. | 23703 deprecated and will be removed from a future version of G++. |
23550 | 23704 |
23555 G++ allows static data members of const floating-point type to be declared | 23709 G++ allows static data members of const floating-point type to be declared |
23556 with an initializer in a class definition. The standard only allows | 23710 with an initializer in a class definition. The standard only allows |
23557 initializers for static members of const integral types and const | 23711 initializers for static members of const integral types and const |
23558 enumeration types so this extension has been deprecated and will be removed | 23712 enumeration types so this extension has been deprecated and will be removed |
23559 from a future version. | 23713 from a future version. |
23714 | |
23715 G++ allows attributes to follow a parenthesized direct initializer, | |
23716 e.g.@: @samp{ int f (0) __attribute__ ((something)); } This extension | |
23717 has been ignored since G++ 3.3 and is deprecated. | |
23718 | |
23719 G++ allows anonymous structs and unions to have members that are not | |
23720 public non-static data members (i.e.@: fields). These extensions are | |
23721 deprecated. | |
23560 | 23722 |
23561 @node Backwards Compatibility | 23723 @node Backwards Compatibility |
23562 @section Backwards Compatibility | 23724 @section Backwards Compatibility |
23563 @cindex Backwards Compatibility | 23725 @cindex Backwards Compatibility |
23564 @cindex ARM [Annotated C++ Reference Manual] | 23726 @cindex ARM [Annotated C++ Reference Manual] |
23571 compatibilities. @emph{All such backwards compatibility features are | 23733 compatibilities. @emph{All such backwards compatibility features are |
23572 liable to disappear in future versions of G++.} They should be considered | 23734 liable to disappear in future versions of G++.} They should be considered |
23573 deprecated. @xref{Deprecated Features}. | 23735 deprecated. @xref{Deprecated Features}. |
23574 | 23736 |
23575 @table @code | 23737 @table @code |
23576 @item For scope | |
23577 If a variable is declared at for scope, it used to remain in scope until | |
23578 the end of the scope that contained the for statement (rather than just | |
23579 within the for scope). G++ retains this, but issues a warning, if such a | |
23580 variable is accessed outside the for scope. | |
23581 | 23738 |
23582 @item Implicit C language | 23739 @item Implicit C language |
23583 Old C system header files did not contain an @code{extern "C" @{@dots{}@}} | 23740 Old C system header files did not contain an @code{extern "C" @{@dots{}@}} |
23584 scope to set the language. On such systems, all header files are | 23741 scope to set the language. On such systems, all system header files are |
23585 implicitly scoped inside a C language scope. Also, an empty prototype | 23742 implicitly scoped inside a C language scope. Such headers must |
23586 @code{()} is treated as an unspecified number of arguments, rather | 23743 correctly prototype function argument types, there is no leeway for |
23587 than no arguments, as C++ demands. | 23744 @code{()} to indicate an unspecified set of arguments. |
23745 | |
23588 @end table | 23746 @end table |
23589 | 23747 |
23590 @c LocalWords: emph deftypefn builtin ARCv2EM SIMD builtins msimd | 23748 @c LocalWords: emph deftypefn builtin ARCv2EM SIMD builtins msimd |
23591 @c LocalWords: typedef v4si v8hi DMA dma vdiwr vdowr | 23749 @c LocalWords: typedef v4si v8hi DMA dma vdiwr vdowr |