From 74b0637d264c4c94ea56b313544b31fc0462b002 Mon Sep 17 00:00:00 2001 From: Bill Schmidt Date: Tue, 1 Dec 2020 09:52:53 -0600 Subject: [PATCH] Remove revision flags for v1.5 --- specification/app_a.xml | 21127 ------------------------------- specification/app_glossary.xml | 16 - specification/bk_main.xml | 5 +- specification/ch_1.xml | 17 +- specification/ch_2.xml | 303 +- specification/ch_3.xml | 433 +- specification/ch_4.xml | 22 +- specification/ch_5.xml | 4 +- specification/ch_6.xml | 1484 +-- specification/ch_preface.xml | 40 - 10 files changed, 322 insertions(+), 23129 deletions(-) diff --git a/specification/app_a.xml b/specification/app_a.xml index f6b3f78..827d7e7 100644 --- a/specification/app_a.xml +++ b/specification/app_a.xml @@ -10,21130 +10,3 @@ http://www.gnu.org/licenses/fdl-1.3.txt --> - - Predefined Functions for Vector Programming - So that programmers can access the vector facilities provided by the - Power ISA, ABI-compliant environments should provide the vector functions - and predicates described in - and - . - Although functions are specified in this document in C/C++ language - syntax, other environments should follow the proposed vector built-in - naming and function set, based on the vector types provided by the - respective language. - If signed or unsigned is omitted, the signedness of the vector type - is the default signedness of the base type. The default varies depending on - the operating system, so a portable program should always specify the - signedness. - Vector built-in functions that take a pointer as an argument can also - take pointers with const or volatile modifiers as argument. Arguments that - are documented as const int require literal integral values within the - vector built-in invocation. Specifying a literal value outside the - supported range leads to implementation-defined behavior. It is recommended - that compilers generate a warning or error for out-of-range - literals. - Vectors may be constructed from scalar values with a vector - constructor. For example: (vector type){e1, e2, ..., en}. - The values specified for each vector element can - be either a compile-time constant or a runtime expression. - Floating-point vector built-in operators are controlled by the - rounding mode set for floating-point operations unless otherwise - specified. -
- Vector Built-In Functions - - summarizes the built-in vector - functions for the Power SIMD vector programming API. In addition to these - core functions, - and - describe functions that - correspond to deprecated interfaces of previous versions of the Power SIMD - API and the Altivec APIs. - Functions are listed alphabetically; supported prototypes are - provided for each function. Prototypes are grouped by integer and - floating-point types. Within each group, types are sorted alphabetically, - first by type name and then by modifier. Prototypes are first sorted by the - built-in result type, which is the output argument. Then, prototypes are - sorted by the input arguments; ARG1, ARG2, and ARG3; in order. - shows the format of the - prototypes and provides an example. - - Format of Prototypes - - - - - - - - - - - - - - - Output Argument - - - - - Function - - - - - Input Arguments - - - - - - - ARG1 - - - - - ARG2 - - - - - ARG3 - - - - - - - Modifier - - - - - Type - - - - - - - - - - Modifier - - - - - Type - - - - - Modifier - - - - - Type - - - - - Modifier - - - - - Type - - - - - - - Sort 3 - - - - - Sort 2 - - - - - Sort 1 - - - - - Sort 5 - - - - - Sort 4 - - - - - Sort 7 - - - - - Sort 6 - - - - - Sort 9 - - - - - Sort 8 - - - - - - - - vector unsigned - - - char - - - vec_insert - - - unsigned - - - char - - - vector bool - - - char - - - signed - - - int - - - - -
- - - - Vector Built-In Functions - - - - - - - - Group - - - - - Description of Vector Built-In Functions - (with Prototypes) - - - - - - - - VEC_ABS (ARG1) - - - Purpose: - Returns a vector that contains the absolute values of the - contents of the given vector. - Result value: - The value of each element of the result is the absolute - value of the corresponding element of ARG1. For integer vectors, - the arithmetic is modular. - - - - - - - - vector signed char vec_abs (vector signed char); - - - - - - - - vector signed int vec_abs (vector signed int); - - - - - - - - vector signed long long vec_abs (vector signed long - long); - - - - - - - - vector signed short vec_abs (vector signed short); - - - - - - - - vector double vec_abs (vector double); - - - - - - - - vector float vec_abs (vector float); - - - - - VEC_ABSD (ARG1, ARG2) - POWER ISA 3.0 - - - Purpose: - Computes the absolute difference. - Result value: - Each element of the result contains the absolute difference - of the corresponding input elements using modulo - arithmetic. - - - - - POWER ISA 3.0 - - - vector unsigned char vec_absd (vector unsigned char, vector - unsigned char); - - - - - POWER ISA 3.0 - - - vector unsigned int vec_absd (vector unsigned int, vector - unsigned int); - - - - - POWER ISA 3.0 - - - vector unsigned short vec_absd (vector unsigned short, - vector unsigned short); - - - - - VEC_ABSS (ARG1) - - - Purpose: - Returns a vector containing the saturated absolute values - of the contents of the given vector. - Result value: - The value of each element of the result is the saturated - absolute value of the corresponding element of ARG1. - - - - - - - - vector signed char vec_abss (vector signed char); - - - - - - - - vector signed int vec_abss (vector signed int); - - - - - - - - vector signed short vec_abss (vector signed short); - - - - - VEC_ADD (ARG1, ARG2) - - - Purpose: - Returns a vector containing the sums of each set of - corresponding elements of the given vectors. - Result value: - The value of each element of the result is the sum of the - corresponding elements of ARG1 and ARG2. For signed and unsigned - integers, modular arithmetic is used. - - - - - - - - vector signed char vec_add (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_add (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_add (vector signed int, vector signed - int); - - - - - - - - vector unsigned int vec_add (vector unsigned int, vector - unsigned int); - - - - - - - - vector signed __int128 vec_add (vector signed __int128, - vector signed __int128); - - - - - - - - vector unsigned __int128 vec_add (vector unsigned __int128, - vector unsigned __int128); - - - - - - - - vector signed long long vec_add (vector signed long long, - vector signed long long); - - - - - - - - vector unsigned long long vec_add (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector signed short vec_add (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_add (vector unsigned short, - vector unsigned short); - - - - - - - - vector double vec_add (vector double, vector - double); - - - - - - - - vector float vec_add (vector float, vector float); - - - - - VEC_ADDC (ARG1, ARG2) - - - Purpose: - Returns a vector containing the carry produced by adding - each set of corresponding elements of the given vectors. - Result value: - The value of each element of the result is the carry - produced by adding the corresponding elements of ARG1 and ARG2 (1 - if there is a carry, 0 otherwise). - - - - - - - - vector signed int vec_addc (vector signed int, vector - signed int); - - - - - - - - vector unsigned int vec_addc (vector unsigned int, vector - unsigned int); - - - - - - - - vector signed __int128 vec_addc (vector signed __int128, - vector signed __int128); - - - - - - - - vector unsigned __int128 vec_addc (vector unsigned - __int128, vector unsigned __int128); - - - - - VEC_ADDE (ARG1, ARG2, ARG3) - - - - Purpose: - Returns a vector containing the result of adding each set - of the corresponding elements of ARG1 and ARG2 with a carry (that - has a value of either 0 or 1) specified as the ARG3 - vector. - Result value: - The value of each element of the result is produced by - adding the corresponding elements of ARG1 and ARG2 and a carry - specified in ARG3 (1 if there is a carry, 0 otherwise). - - - - - - - - vector signed int vec_adde (vector signed int, vector - signed int, vector signed int); - - - - - - - - vector unsigned int vec_adde (vector unsigned int, vector - unsigned int, vector unsigned int); - - - - - - - - vector signed __int128 vec_adde (vector signed __int128, - vector signed __int128, vector signed __int128); - - - - - - - - vector unsigned __int128 vec_adde (vector unsigned - __int128, vector unsigned __int128, vector unsigned - __int128); - - - - - VEC_ADDEC (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector containing the carry produced by adding - each set of the corresponding elements of ARG1 and ARG2 with a - carry (that has a value of either 0 or 1) specified as the ARG3 - vector. - Result value: - The value of each element of the result is the carry - produced by adding the corresponding elements of ARG1 and ARG2 - and a carry specified in ARG3 (1 if there is a carry, 0 - otherwise). - - - - - - - - vector signed int vec_addec (vector signed int, vector - signed int, vector signed int); - - - - - - - - vector unsigned int vec_addec (vector unsigned int, vector - unsigned int, vector unsigned int); - - - - - - - - vector signed __int128 vec_addec (vector signed __int128, - vector signed __int128, vector signed __int128); - - - - - - - - vector unsigned __int128 vec_addec (vector unsigned - __int128, vector unsigned __int128, vector unsigned - __int128); - - - - - VEC_ADDS (ARG1, ARG2) - - - Purpose: - Returns a vector containing the saturated sums of each set - of corresponding elements of the given vectors. - Result value: - The value of each element of the result is the saturated - sum of the corresponding elements of ARG1 and ARG2. - - - - - - - - vector signed char vec_adds (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_adds (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_adds (vector signed int, vector - signed int); - - - - - - - - vector unsigned int vec_adds (vector unsigned int, vector - unsigned int); - - - - - - - - vector signed short vec_adds (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_adds (vector unsigned short, - vector unsigned short); - - - - - VEC_AND (ARG1, ARG2) - - - Purpose: - Performs a bitwise AND of the given vectors. - Result value: - The result is the bitwise AND of ARG1 and ARG2. - - - - - - - - vector bool char vec_and (vector bool char, vector bool - char); - - - - - - - - vector signed char vec_and (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_and (vector unsigned char, vector - unsigned char); - - - - - - - - vector bool int vec_and (vector bool int, vector bool - int); - - - - - - - - vector signed int vec_and (vector signed int, vector signed - int); - - - - - - - - vector unsigned int vec_and (vector unsigned int, vector - unsigned int); - - - - - Phased in. - This optional function is being phased in, and it might not be - available on all implementations. - Phased-in interfaces are optional - for the current generation of compliant systems. - - - - vector bool long long vec_and (vector bool long long, - vector bool long long); - - - - - Phased in. - - - - vector signed long long vec_and (vector signed long long, - vector signed long long); - - - - - Phased in. - - - - vector unsigned long long vec_and (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector bool short vec_and (vector bool short, vector bool - short); - - - - - - - - vector signed short vec_and (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_and (vector unsigned short, - vector unsigned short); - - - - - - - - vector double vec_and (vector double, vector - double); - - - - - - - - vector float vec_and (vector float, vector float); - - - - - VEC_ANDC (ARG1, ARG2) - - - Purpose: - Performs a bitwise AND of the first argument and the - bitwise complement of the second argument. - Result value: - The result is the bitwise AND of ARG1 with the bitwise - complement of ARG2. - - - - - - - - vector bool char vec_andc (vector bool char, vector bool - char); - - - - - - - - vector signed char vec_andc (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_andc (vector unsigned char, vector - unsigned char); - - - - - - - - vector bool int vec_andc (vector bool int, vector bool - int); - - - - - - - - vector signed int vec_andc (vector signed int, vector - signed int); - - - - - - - - vector unsigned int vec_andc (vector unsigned int, vector - unsigned int); - - - - - Phased in. - - - - vector bool long long vec_andc (vector bool long long, - vector bool long long); - - - - - Phased in. - - - - vector signed long long vec_andc (vector signed long long, - vector signed long long); - - - - - Phased in. - - - - vector unsigned long long vec_andc (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector bool short vec_andc (vector bool short, vector bool - short); - - - - - - - - vector signed short vec_andc (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_andc (vector unsigned short, - vector unsigned short); - - - - - - - - vector double vec_andc (vector double, vector - double); - - - - - - - - vector float vec_andc (vector float, vector float); - - - - - VEC_AVG (ARG1, ARG2) - - - Purpose: - Returns a vector containing the average of each set of - corresponding elements of the given vectors. - Result value: - The value of each element of the result is the average of - the values of the corresponding elements of ARG1 and ARG2. - - - - - - - - vector signed char vec_avg (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_avg (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_avg (vector signed int, vector signed - int); - - - - - - - - vector unsigned int vec_avg (vector unsigned int, vector - unsigned int); - - - - - - - - vector signed short vec_avg (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_avg (vector unsigned short, - vector unsigned short); - - - - - VEC_BPERM (ARG1, ARG2) - - - Purpose: - Gathers up to 16 1-bit values from a quadword or from each - doubleword element in the specified order, zeroing other - bits. - Result value: - When the type of ARG1 is vector - unsigned char or vector unsigned __int128: - - - For each i (0 ≤ i < 16), let bit index j denote the - byte value of the i-th element of ARG2. - - - If bit index j is greater than or equal to 128, bit i - of doubleword 0 is set to 0. - - - If bit index j is smaller than 128, bit i of the result - is set to the value of the j-th bit of input ARG1. - - - All other bits are zeroed. - - - When the type of ARG1 is vector - unsigned long long: - - - For each doubleword element i (0 ≤ i < 2) of ARG1, - regardless of the input operand type specified for - ARG1: - - - For each j (0 ≤ j < 8), let bit index k denote the - byte value of the j-th element of ARG2. - - - If bit index k is greater than or equal to 64, bit j - of element i is set to 0. - - - If bit index k is less than 64, bit j of element i is - set to the value of the k-th bit of element i of input - ARG1. - - - All other bits are zeroed. - - - - - - In the above description, all bit and byte numberings - within each element denote big-endian (i.e., left-to-right) - order. - - - - - - - - - vector unsigned char vec_bperm (vector unsigned char, - vector unsigned char); - - - - - Phased in. - - - - vector unsigned long long vec_bperm (vector unsigned - __int128, vector unsigned char); - - - - - POWER ISA 3.0 - Phased in. - - - - vector unsigned long long vec_bperm (vector unsigned long - long, vector unsigned char); - - - - - VEC_CEIL (ARG1) - - - Purpose: - Returns a vector containing the smallest representable - floating-point integral values greater than or equal to the - values of the corresponding elements of the given vector. - Result value: - Each element of the result contains the smallest - representable floating-point integral value greater than or equal - to the value of the corresponding element of ARG1. - - - - - - - - vector double vec_ceil (vector double); - - - - - - - - vector float vec_ceil (vector float); - - - - - VEC_CMPB (ARG1, ARG2) - - - Purpose: - Performs a bounds comparison of each set of corresponding - elements of the given vectors. - Result value: - Each element of the result has the value 0 if the value of - the corresponding element of ARG1 is less than or equal to the - value of the corresponding element of ARG2 and greater than or - equal to the negative of the value of the corresponding element - of ARG2. Otherwise: - - - If an element of ARG2 is greater than or equal to 0, - then the value of the corresponding element of the result is - 0 if the absolute value of the corresponding element of ARG1 - is equal to the value of the corresponding element of ARG2. - The value is negative if it is greater than the value of the - corresponding element of ARG2. It is positive if it is less - than the value of the corresponding element of ARG2. - - - If an element of ARG2 is less than 0, then the value of - the element of the result is positive if the value of the - corresponding element of ARG1 is less than or equal to the - value of the element of ARG2. Otherwise. it is - negative. - - - - - - - - - - vector signed int vec_cmpb (vector float, vector - float); - - - - - VEC_CMPEQ (ARG1, ARG2) - - - Purpose: - Returns a vector containing the results of comparing each - set of corresponding elements of the given vectors for - equality. - Result value: - For each element of the result, the value of each bit is 1 - if the corresponding elements of ARG1 and ARG2 are equal. - Otherwise, the value of each bit is 0. - - - - - - - - vector bool char vec_cmpeq (vector bool char, vector bool - char); - - - - - - - - vector bool char vec_cmpeq (vector signed char, vector - signed char); - - - - - - - - vector bool char vec_cmpeq (vector unsigned char, vector - unsigned char); - - - - - - - - vector bool int vec_cmpeq (vector bool int, vector bool - int); - - - - - - - - vector bool int vec_cmpeq (vector signed int, vector signed - int); - - - - - - - - vector bool int vec_cmpeq (vector unsigned int, vector - unsigned int); - - - - - - - - vector bool long long vec_cmpeq (vector bool long long, - vector bool long long); - - - - - - - - vector bool long long vec_cmpeq (vector signed long long, - vector signed long long); - - - - - - - - vector bool long long vec_cmpeq (vector unsigned long long, - vector unsigned long long); - - - - - - - - vector bool short vec_cmpeq (vector bool short, vector bool - short); - - - - - - - - vector bool short vec_cmpeq (vector signed short, vector - signed short); - - - - - - - - vector bool short vec_cmpeq (vector unsigned short, vector - unsigned short); - - - - - - - - vector bool int vec_cmpeq (vector float, vector - float); - - - - - - - - vector bool long long vec_cmpeq (vector double, vector - double); - - - - - VEC_CMPGE (ARG1, ARG2) - - - Purpose: - Returns a vector containing the results of a - greater-than-or-equal-to comparison between each set of - corresponding elements of the given vectors. - Result value: - For each element of the result, the value of each bit is 1 - if the value of the corresponding element of ARG1 is greater than - or equal to the value of the corresponding element of ARG2. - Otherwise, the value of each bit is 0. - - - - - - - - vector bool char vec_cmpge (vector signed char, vector - signed char); - - - - - - - - vector bool char vec_cmpge (vector unsigned char, vector - unsigned char); - - - - - - - - vector bool int vec_cmpge (vector signed int, vector signed - int); - - - - - - - - vector bool int vec_cmpge (vector unsigned int, vector - unsigned int); - - - - - - - - vector bool long long vec_cmpge (vector signed long long, - vector signed long long); - - - - - - - - vector bool long long vec_cmpge (vector unsigned long long, - vector unsigned long long); - - - - - - - - vector bool short vec_cmpge (vector signed short, vector - signed short); - - - - - - - - vector bool short vec_cmpge (vector unsigned short, vector - unsigned short); - - - - - - - - vector bool int vec_cmpge (vector float, vector - float); - - - - - - - - vector bool long long vec_cmpge (vector double, vector - double); - - - - - VEC_CMPGT (ARG1, ARG2) - - - Purpose: - Returns a vector containing the results of a greater-than - comparison between each set of corresponding elements of the - given vectors. - Result value: - For each element of the result, the value of each bit is 1 - if the value of the corresponding element of ARG1 is greater than - the value of the corresponding element of ARG2. Otherwise, the - value of each bit is 0. - - - - - - - - vector bool char vec_cmpgt (vector signed char, vector - signed char); - - - - - - - - vector bool char vec_cmpgt (vector unsigned char, vector - unsigned char); - - - - - - - - vector bool int vec_cmpgt (vector signed int, vector signed - int); - - - - - - - - vector bool int vec_cmpgt (vector unsigned int, vector - unsigned int); - - - - - - - - vector bool long long vec_cmpgt (vector signed long long, - vector signed long long); - - - - - - - - vector bool long long vec_cmpgt (vector unsigned long long, - vector unsigned long long); - - - - - - - - vector bool short vec_cmpgt (vector signed short, vector - signed short); - - - - - - - - vector bool short vec_cmpgt (vector unsigned short, vector - unsigned short); - - - - - - - - vector bool int vec_cmpgt (vector float, vector - float); - - - - - - - - vector bool long long vec_cmpgt (vector double, vector - double); - - - - - VEC_CMPLE (ARG1, ARG2) - - - Purpose: - Returns a vector containing the results of a - less-than-or-equal-to comparison between each set of - corresponding elements of the given vectors. - Result value: - For each element of the result, the value of each bit is 1 - if the value of the corresponding element of ARG1 is less than or - equal to the value of the corresponding element of ARG2. - Otherwise, the value of each bit is 0. - - - - - - - - vector bool char vec_cmple (vector signed char, vector - signed char); - - - - - - - - vector bool char vec_cmple (vector unsigned char, vector - unsigned char); - - - - - - - - vector bool int vec_cmple (vector signed int, vector signed - int); - - - - - - - - vector bool int vec_cmple (vector unsigned int, vector - unsigned int); - - - - - - - - vector bool long long vec_cmple (vector signed long long, - vector signed long long); - - - - - - - - vector bool long long vec_cmple (vector unsigned long long, - vector unsigned long long); - - - - - - - - vector bool short vec_cmple (vector signed short, vector - signed short); - - - - - - - - vector bool short vec_cmple (vector unsigned short, vector - unsigned short); - - - - - - - - vector bool int vec_cmple (vector float, vector - float); - - - - - - - - vector bool long long vec_cmple (vector double, vector - double); - - - - - VEC_CMPLT (ARG1, ARG2) - - - Purpose: - Returns a vector containing the results of a less-than - comparison between each set of corresponding elements of the - given vectors. - Result value: - For each element of the result, the value of each bit is 1 - if the value of the corresponding element of ARG1 is less than - the value of the corresponding element of ARG2. Otherwise, the - value of each bit is 0. - - - - - - - - vector bool char vec_cmplt (vector signed char, vector - signed char); - - - - - - - - vector bool char vec_cmplt (vector unsigned char, vector - unsigned char); - - - - - - - - vector bool int vec_cmplt (vector signed int, vector signed - int); - - - - - - - - vector bool int vec_cmplt (vector unsigned int, vector - unsigned int); - - - - - - - - vector bool long long vec_cmplt (vector signed long long, - vector signed long long); - - - - - - - - vector bool long long vec_cmplt (vector unsigned long long, - vector unsigned long long); - - - - - - - - vector bool short vec_cmplt (vector signed short, vector - signed short); - - - - - - - - vector bool short vec_cmplt (vector unsigned short, vector - unsigned short); - - - - - - - - vector bool int vec_cmplt (vector float, vector - float); - - - - - - - - vector bool long long vec_cmplt (vector double, vector - double); - - - - - VEC_CMPNE (ARG1, ARG2) - - - Purpose: - Returns a vector containing the results of comparing each - set of corresponding elements of the given vectors for - inequality. - Result value: - For each element of the result, the value of each bit is 1 - if the corresponding elements of ARG1 and ARG2 are not equal. - Otherwise, the value of each bit is 0. - - - - - - - - vector bool char vec_cmpne (vector bool char, vector bool - char); - - - - - - - - vector bool char vec_cmpne (vector signed char, vector - signed char); - - - - - - - - vector bool char vec_cmpne (vector unsigned char, vector - unsigned char); - - - - - - - - vector bool int vec_cmpne (vector bool int, vector bool - int); - - - - - - - - vector bool int vec_cmpne (vector signed int, vector signed - int); - - - - - - - - vector bool int vec_cmpne (vector unsigned int, vector - unsigned int); - - - - - - - - vector bool long long vec_cmpne (vector bool long long, - vector bool long long); - - - - - - - - vector bool long long vec_cmpne (vector signed long long, - vector signed long long); - - - - - - - - vector bool long long vec_cmpne (vector unsigned long long, - vector unsigned long long); - - - - - - - - vector bool short vec_cmpne (vector bool short, vector bool - short); - - - - - - - - vector bool short vec_cmpne (vector signed short, vector - signed short); - - - - - - - - vector bool short vec_cmpne (vector unsigned short, vector - unsigned short); - - - - - - - - vector bool long long vec_cmpne (vector double, vector - double); - - - - - - - - vector bool int vec_cmpne (vector float, vector - float); - - - - - VEC_CMPNEZ (ARG1, ARG2) - POWER ISA 3.0 - - - Purpose: - Returns a vector containing the results of comparing each - set of corresponding elements of the given vectors for inequality - or for an element with a 0 value. - Result value: - For each element of the result, the value of each bit is 1 - if the corresponding elements of ARG1 and - ARG2 are not equal, or if the ARG1 element or the ARG2 - element is 0. Otherwise, the value of each bit is 0. - - - - - POWER ISA 3.0 - - - vector bool char vec_cmpnez (vector signed char, vector - signed char); - - - - - POWER ISA 3.0 - - - vector bool char vec_cmpnez (vector unsigned char, vector - unsigned char); - - - - - POWER ISA 3.0 - - - vector bool int vec_cmpnez (vector signed int, vector - signed int); - - - - - POWER ISA 3.0 - - - vector bool int vec_cmpnez (vector unsigned int, vector - unsigned int); - - - - - POWER ISA 3.0 - - - vector bool short vec_cmpnez (vector signed short, vector - signed short); - - - - - POWER ISA 3.0 - - - vector bool short vec_cmpnez (vector unsigned short, vector - unsigned short); - - - - - VEC_CNTLZ (ARG1) - - - Purpose: - Returns a vector containing the number of most-significant - bits equal to 0 of each corresponding element of the given - vector. - Result value: - The value of each element of the result is set to the - number of leading zeros of the corresponding element of - ARG1. - - - - - Phased in. - - - - vector signed char vec_cntlz (vector signed char); - - - - - Phased in. - - - - vector unsigned char vec_cntlz (vector unsigned - char); - - - - - Phased in. - - - - vector signed int vec_cntlz (vector signed int); - - - - - Phased in. - - - - vector unsigned int vec_cntlz (vector unsigned int); - - - - - Phased in. - - - - vector signed long long vec_cntlz (vector signed long - long); - - - - - Phased in. - - - - vector unsigned long long vec_cntlz (vector unsigned long - long); - - - - - Phased in. - - - - vector signed short vec_cntlz (vector signed short); - - - - - Phased in. - - - - vector unsigned short vec_cntlz (vector unsigned - short); - - - - - VEC_CNTLZ_LSBB (ARG1) - POWER ISA 3.0 - - - Purpose: - Returns the number of leading byte elements (starting at - the lowest-numbered element) of a vector that have a - least-significant bit of 0. - Result value: - The number of leading byte elements (starting at the - lowest-numbered element) of a vector that have a - least-significant bit of 0. - - - - - POWER ISA 3.0 - - - signed int vec_cntlz_lsbb (vector signed char); - - - - - POWER ISA 3.0 - - - signed int vec_cntlz_lsbb (vector unsigned char); - - - - - VEC_CNTTZ (ARG1) - POWER ISA 3.0 - - - Purpose: - Returns a vector containing the number of least-significant - bits equal to 0 of each corresponding element of the given - vector. - Result value: - The value of each element of the result is set to the - number of trailing zeros of the corresponding element of - ARG1. - - - - - POWER ISA 3.0 - - - vector signed char vec_cnttz (vector signed char); - - - - - POWER ISA 3.0 - - - vector unsigned char vec_cnttz (vector unsigned - char); - - - - - POWER ISA 3.0 - - - vector signed int vec_cnttz (vector signed int); - - - - - POWER ISA 3.0 - - - vector unsigned int vec_cnttz (vector unsigned int); - - - - - POWER ISA 3.0 - - - vector signed long long vec_cnttz (vector signed long - long); - - - - - POWER ISA 3.0 - - - vector unsigned long long vec_cnttz (vector unsigned long - long); - - - - - POWER ISA 3.0 - - - vector signed short vec_cnttz (vector signed short); - - - - - POWER ISA 3.0 - - - vector unsigned short vec_cnttz (vector unsigned - short); - - - - - VEC_CNTTZ_LSBB (ARG1) - POWER ISA 3.0 - - - Purpose: - Returns the number of trailing byte elements (starting at - the highest-numbered element) of a vector that have a - least-significant bit of 0. - Result value: - The number of trailing byte elements (starting at the - highest-numbered element) of a vector that have a - least-significant bit of 0. - - - - - POWER ISA 3.0 - - - signed int vec_cnttz_lsbb (vector signed char); - - - - - POWER ISA 3.0 - - - signed int vec_cnttz_lsbb (vector unsigned char); - - - - - VEC_CPSGN(ARG1, ARG2) - - - Purpose: - Returns a vector by copying the sign of the elements in - vector ARG1 to the sign of the corresponding elements in vector - ARG2. - Result value: - For each element of the result, copies the sign of the - corresponding element in vector ARG1 to the sign of the - corresponding element in vector ARG2. - - - - - Phased in. - - - - vector float vec_cpsgn (vector float, vector float); - - - - - Phased in. - - - - vector double vec_cpsgn (vector double, vector - double); - - - - - VEC_CTF (ARG1, ARG2) - - - Purpose: - Converts an integer vector into a floating-point - vector. - Result value: - The value of each element of the result is the closest - floating-point - approximation - of the value of the corresponding - element of ARG1 divided by 2 to the power of ARG2, which should - be in the range 0–31. - - - - - - - - vector float vec_ctf (vector signed int, const int); - - - - - - - - vector float vec_ctf (vector unsigned int, const - int); - - - - - VEC_CTS (ARG1, ARG2) - - - Purpose: - Converts a real vector into a vector signed int. - Result value: - The value of each element of the result is the saturated - signed-integer value, - truncated towards zero, obtained by - multiplying the corresponding element of ARG1 by 2 to the power - of ARG2, which should be in the range 0–31. - - - - - - - - vector signed int vec_cts (vector float, const int); - - - - - VEC_CTU (ARG1, ARG2) - - - Purpose: - Converts a real vector into a vector unsigned int. - Result value: - The value of each element of the result is the saturated - unsigned-integer value, - truncated towards zero, obtained by - multiplying the corresponding element of ARG1 by 2 to the power - of ARG2, which should be in the range 0–31. - - - - - - - - vector unsigned int vec_ctu (vector float, const - int); - - - - - VEC_DIV (ARG1, ARG2) - - - Purpose: - Divides the elements in ARG1 by the corresponding elements - in ARG2 and then assigns the result to corresponding elements in - the result vector. This function emulates the operation on - integer vectors. - Result value: - The value of each element of the result is obtained by - dividing the corresponding element of ARG1 by the corresponding - element of ARG2. - - - - - - - - vector signed long long vec_div (vector signed long long, - vector signed long long); - - - - - - - - vector unsigned long long vec_div (vector unsigned long long, - vector unsigned long long); - - - - - - - - vector double vec_div (vector double, vector - double); - - - - - - - - vector float vec_div (vector float, vector float); - - - - - VEC_DOUBLE (ARG1) - - - Purpose: - Converts a vector of long integers into a vector of - double-precision numbers. - Result value: - Target elements are computed by converting the respective - input elements. - - - - - - - - vector double vec_double (vector signed long long); - - - - - - - - vector double vec_double (vector unsigned long - long); - - - - - VEC_DOUBLEE (ARG1) - - - Purpose: - Converts an input vector to a vector of double-precision - numbers. - Result value: - Target elements 0 and 1 are set to the converted values of - source elements 0 and 2. - - - - - - - - vector double vec_doublee (vector signed int); - - - - - - - - vector double vec_doublee (vector unsigned int); - - - - - - - - vector double vec_doublee (vector float); - - - - - VEC_DOUBLEH (ARG1) - - - Purpose: - Converts - an input vector - to a vector of double-precision - floating-point numbers. - Result value: - Target elements 0 and 1 are set to the converted values of - source elements 0 and 1. - - - - - - - - vector double vec_doubleh (vector signed int); - - - - - - - - vector double vec_doubleh (vector unsigned int); - - - - - - - - vector double vec_doubleh (vector float); - - - - - VEC_DOUBLEL (ARG1) - - - Purpose: - Converts - an input vector - to a vector of double-precision - floating-point numbers. - Result value: - Target elements 0 and 1 are set to the converted values of - source elements 2 and 3. - - - - - - - - vector double vec_doublel (vector signed int); - - - - - - - - vector double vec_doublel (vector unsigned int); - - - - - - - - vector double vec_doublel (vector float); - - - - - VEC_DOUBLEO (ARG1) - - - Purpose: - Converts an input vector to a vector of double-precision - numbers. - Result value: - Target elements 0 and 1 are set to the converted values of - source elements 1 and 3. - - - - - - - - vector double vec_doubleo (vector signed int); - - - - - - - - vector double vec_doubleo (vector unsigned int); - - - - - - - - vector double vec_doubleo (vector float); - - - - - VEC_EQV (ARG1, ARG2) - - - Purpose: - Performs a bitwise XNOR of the given vectors. - Result value: - The result is the bitwise XNOR of ARG1 and ARG2. - - - - - - - - vector bool char vec_eqv (vector bool char, vector bool - char); - - - - - - - - vector signed char vec_eqv (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_eqv (vector unsigned char, vector - unsigned char); - - - - - - - - vector bool int vec_eqv (vector bool int, vector bool - int); - - - - - - - - vector signed int vec_eqv (vector signed int, vector - signed - int); - - - - - - - - vector unsigned int vec_eqv (vector unsigned int, vector - unsigned int); - - - - - - - - vector bool long long vec_eqv (vector bool long long, - vector bool long long); - - - - - - - - vector signed long long vec_eqv (vector signed long long, - vector signed long long); - - - - - - - - vector unsigned long long vec_eqv (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector bool short vec_eqv (vector bool short, vector bool - short); - - - - - - - - vector signed short vec_eqv (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_eqv (vector unsigned short, - vector unsigned short); - - - - - - - - vector double vec_eqv (vector double, vector - double); - - - - - - - - vector float vec_eqv (vector float, vector float); - - - - - VEC_EXPTE (ARG1) - - - Purpose: - Returns a vector containing estimates of 2 raised to the - power of the corresponding elements of the given vector. - Result value: - Each element of the result contains the estimated value of - 2 raised to the power of the corresponding element of - ARG1. - - - - - - - - vector float vec_expte (vector float); - - - - - VEC_EXTRACT (ARG1, ARG2) - - - Purpose: - Returns the value of the ARG1 element indicated by the ARG2 - parameter. - Result value: - This function uses modular arithmetic on ARG2 to determine - the element number. For example, if ARG2 is out of range, the - compiler uses ARG2 modulo the number of elements in the vector to - determine the element position. - - - - - - - - signed char vec_extract (vector signed char, signed - int); - - - - - - - - unsigned char vec_extract (vector bool char, signed - int); - - - - - - - - unsigned char vec_extract (vector unsigned char, signed - int); - - - - - - - - signed int vec_extract (vector signed int, signed - int); - - - - - - - - unsigned int vec_extract (vector bool int, signed - int); - - - - - - - - unsigned int vec_extract (vector unsigned int, signed - int); - - - - - - - - signed long long vec_extract (vector signed long long, - signed int); - - - - - - - - unsigned long long vec_extract (vector bool long long, - signed int); - - - - - - - - unsigned long long vec_extract (vector unsigned long long, - signed int); - - - - - - - - signed short vec_extract (vector signed short, signed - int); - - - - - - - - unsigned short vec_extract (vector bool short, signed - int); - - - - - - - - unsigned short vec_extract (vector unsigned short, signed - int); - - - - - - - - double vec_extract (vector double, signed int); - - - - - - - - float vec_extract (vector float, signed int); - - - - - POWER ISA 3.0 - Phased in. - - - - _Float16 vec_extract (vector _Float16, signed int); - - - - - VEC_EXTRACT_EXP (ARG1) - POWER ISA 3.0 - - - Purpose: - Extracts an exponent from a floating-point number. - Result value: - Each element of the returned integer vector is extracted - from the exponent field of the corresponding floating-point - vector element. - The extracted exponents of ARG1 are returned as - right-justified unsigned integers containing biased exponents, in - accordance with the exponent representation specified by IEEE - 754, without further processing. - - - - - POWER ISA 3.0 - - - vector unsigned long long vec_extract_exp (vector - double); - - - - - POWER ISA 3.0 - - - vector unsigned int vec_extract_exp (vector float); - - - - - VEC_EXTRACT_FP32_ FROM_SHORTH (ARG1) - POWER ISA 3.0 - - - Purpose: - Extracts four single-precision floating-point numbers from - the high elements of a vector of eight 16-bit elements, - interpreting each element as a 16-bit floating-point number in - IEEE format. - Result value: - The first four elements are interpreted as 16-bit - floating-point numbers in IEEE format, and extended to - single-precision format, returning a vector with four - single-precision IEEE numbers. - - - - - POWER ISA 3.0 - - - vector float vec_extract_fp32_from_shorth (vector unsigned - short); - - - - - VEC_EXTRACT_FP32_ FROM_SHORTL (ARG1) - POWER ISA 3.0 - - - Purpose - Extracts four single-precision floating-point numbers from - the low elements of a vector of eight 16-bit elements, - interpreting each element as a 16-bit floating-point number in - IEEE format. - Result value: - The last four elements are interpreted as 16-bit - floating-point numbers in IEEE format, and extended to - single-precision format, returning a vector with four - single-precision IEEE numbers. - - - - - POWER ISA 3.0 - - - vector float vec_extract_fp32_from_shortl (vector unsigned - short); - - - - - VEC_EXTRACT_SIG (ARG1) - POWER ISA 3.0 - - - Purpose: - Extracts a significand (mantissa) from a floating-point - number. - Result value: - Each element of the returned integer vector is extracted - from the significand (mantissa) field of the corresponding - floating-point vector element. - The significand is from the corresponding floating-point - number in accordance with the IEEE format. The returned result - includes the implicit leading digit. The value of that digit is - not encoded in the IEEE format, but is implied by the - exponent. - - - - - POWER ISA 3.0 - - - vector unsigned long long vec_extract_sig (vector - double); - - - - - POWER ISA 3.0 - - - vector unsigned int vec_extract_sig (vector float); - - - - - VEC_EXTRACT4B (ARG1, ARG2) - POWER ISA 3.0 - - - Purpose: - Extracts a word from a vector at a byte position. - Result value: - The first doubleword element of the result contains the - zero-extended extracted word from ARG1. The second doubleword is - set to 0. ARG2 specifies the least-significant byte number - (0–12) of the word to be extracted. - - - - - POWER ISA 3.0 - - - vector unsigned long long vec_extract4b (vector unsigned - char, const int); - - - - - VEC_FIRST_MATCH_INDEX (ARG1, ARG2) - POWER ISA 3.0 - - - Purpose: - Performs a comparison of equality on each of the - corresponding elements of ARG1 and ARG2, and returns the first - position of equality. - Result value: - Returns the element index of the position of the first - character match. If no match, returns the number of characters as - an element count in the vector argument. - - - - - POWER ISA 3.0 - - - unsigned int vec_first_match_index (vector signed char, - vector signed char); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_match_index (vector unsigned char, - vector unsigned char); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_match_index (vector signed int, - vector signed int); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_match_index (vector unsigned int, - vector unsigned int); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_match_index (vector signed short, - vector signed short); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_match_index (vector unsigned short, - vector unsigned short); - - - - - VEC_FIRST_MATCH_OR_EOS_ INDEX (ARG1, ARG2) - POWER ISA 3.0 - - - Purpose: - Performs a comparison of equality on each of the - corresponding elements of ARG1 and ARG2. Returns the first - position of equality, or the zero string terminator. - Result value: - Returns the element index of the position of either the - first character match or an end-of-string (EOS) terminator. If no - match or terminator, returns the number of characters as an - element count in the vector argument. - - - - - POWER ISA 3.0 - - - unsigned int vec_first_match_or_eos_index (vector signed - char, vector signed char); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_match_or_eos_index (vector unsigned - char, vector unsigned char); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_match_or_eos_index (vector signed - int, vector signed int); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_match_or_eos_index (vector unsigned - int, vector unsigned int); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_match_or_eos_index (vector signed - short, vector signed short); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_match_or_eos_index (vector unsigned - short, vector unsigned short); - - - - - VEC_FIRST_MISMATCH_INDEX (ARG1, ARG2) - POWER ISA 3.0 - - - Purpose: - Performs a comparison of inequality on each of the - corresponding elements of ARG1 and ARG2, and returns the first - position of inequality. - Result value: - Returns the element index of the position of the first - character mismatch. If no mismatch, returns the number of - characters as an element count in the vector argument. - - - - - POWER ISA 3.0 - - - unsigned int vec_first_mismatch_index (vector signed char, - vector signed char); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_mismatch_index (vector unsigned - char, vector unsigned char); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_mismatch_index (vector signed int, - vector signed int); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_mismatch_index (vector unsigned int, - vector unsigned int); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_mismatch_index (vector signed short, - vector signed short); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_mismatch_index (vector unsigned - short, vector unsigned short); - - - - - VEC_FIRST_MISMATCH_OR_ EOS_INDEX (ARG1, ARG2) - POWER ISA 3.0 - - - Purpose: - Performs a comparison of inequality on each of the - corresponding elements of ARG1 and ARG2. Returns the first - position of inequality, or the zero string terminator. - Result value: - Returns the element index of the position of either the - first character mismatch or an end-of-string (EOS) terminator. If - no mismatch or terminator, returns the number of characters as an - element count in the vector argument. - - - - - POWER ISA 3.0 - - - unsigned int vec_first_mismatch_or_eos_index (vector signed - char, vector signed char); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_mismatch_or_eos_index (vector - unsigned char, vector unsigned char); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_mismatch_or_eos_index (vector signed - int, vector signed int); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_mismatch_or_eos_index (vector - unsigned int, vector unsigned int); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_mismatch_or_eos_index (vector signed - short, vector signed short); - - - - - POWER ISA 3.0 - - - unsigned int vec_first_mismatch_or_eos_index (vector - unsigned short, vector unsigned short); - - - - - VEC_FLOAT (ARG1) - - - Purpose: - Converts a vector of integers to a vector of - single-precision floating-point numbers. - Result value: - Target elements are obtained by converting the respective - source elements to single-precision floating-point - numbers. - - - - - - - - vector float - vec_float (vector signed int); - - - - - - - - vector float - vec_float (vector unsigned int); - - - - - VEC_FLOAT2 (ARG1, ARG2) - - - Purpose: - Converts - an input vector - to a vector of single-precision numbers. - Result value: - Target elements are obtained by converting the source - elements to single-precision numbers as follows: - - - Target elements 0 and 1 from source 0 - - - Target elements 2 and 3 from source 1 - - - - - - - - - - vector float vec_float2 (vector signed long long, vector - signed long long); - - - - - - - - vector float vec_float2 (vector unsigned long long, vector - unsigned long long); - - - - - - - - vector float vec_float2 (vector double, vector - double); - - - - - VEC_FLOATE (ARG2) - - - Purpose: - Converts an input vector to a vector of single-precision - numbers. - Result value: - The even-numbered target elements are obtained by - converting the source elements to single-precision - numbers, using the current floating-point rounding mode. - - - - - - - - vector float vec_floate (vector signed long long); - - - - - - - - vector float vec_floate (vector unsigned long long); - - - - - - - - vector float vec_floate (vector double); - - - - - VEC_FLOATH (ARG2) - POWER ISA 3.0 - Phased in. - - - - Purpose: - Converts a vector to a vector of single-precision - floating-point numbers. - Result value: - Target elements 0 through 3 are set to the converted values - of source elements 0 through 3, respectively. - - - - - POWER ISA 3.0 - - - vector float vec_floath (vector _Float16); - - - - - VEC_FLOATL (ARG2) - POWER ISA 3.0 - Phased in. - - - - Purpose: - Converts a vector to a vector of single-precision - floating-point numbers. - Result value: - Target elements 0 through 3 are set to the converted values - of source elements 4 through 7, respectively. - - - - - POWER ISA 3.0 - - - vector float vec_floatl (vector _Float16); - - - - - VEC_FLOATO (ARG2) - - - Purpose: - Converts an input vector to a vector of single-precision - numbers. - Result value: - The odd-numbered target elements are obtained by converting - the source elements to single-precision numbers, using the - current floating-point rounding mode. - - - - - - - - vector float vec_floato (vector signed long long); - - - - - - - - vector float vec_floato (vector unsigned long long); - - - - - - - - vector float vec_floato (vector double); - - - - - VEC_FLOOR (ARG1) - - - Purpose: - Returns a vector containing the largest representable - floating-point integral values less than or equal to the values - of the corresponding elements of the given vector. - Result value: - Each element of the result contains the largest - representable floating-point integral value less than or equal to - the value of the corresponding element of ARG1. - - - - - - - - vector double vec_floor (vector double); - - - - - - - - vector float vec_floor (vector float); - - - - - VEC_GB (ARG1) - - - Purpose: - Performs a gather-bits operation on the input. - Result value: - Within each doubleword, let x(i) (0 ≤ i < 8) denote the - byte elements of the corresponding input doubleword element, with - x(7) the most-significant byte. For each pair of i and j (0 ≤ i - < 8, 0 ≤ j < 8), the j-th bit of the i-th byte element of - the result is set to the value of the i-th bit of the j-th byte - element of the input. - - - - - - - - vector unsigned char vec_gb (vector unsigned char); - - - - - VEC_INSERT (ARG1, ARG2, ARG3) - - - Purpose: - Returns a copy of vector ARG2 with element ARG3 replaced by - the value of ARG1. - Result value: - A copy of vector ARG2 with element ARG3 replaced by the - value of ARG1. This function uses modular arithmetic on ARG3 to - determine the element number. For example, if ARG3 is out of - range, the compiler uses ARG3 modulo the number of elements in - the vector to determine the element position. - - - - - - - - vector signed char vec_insert (signed char, vector signed - char, signed int); - - - - - - - - vector unsigned char vec_insert (unsigned char, vector - unsigned char, signed int); - - - - - - - - vector signed int vec_insert (signed int, vector signed - int, signed int); - - - - - - - - vector unsigned int vec_insert (unsigned int, vector - unsigned int, signed int); - - - - - - - - vector signed long long vec_insert (signed long long, - vector signed long long, signed int); - - - - - - - - vector unsigned long long vec_insert (unsigned long long, - vector unsigned long long, signed int); - - - - - - - - vector signed short vec_insert (signed short, vector signed - short, - signed int); - - - - - - - - vector unsigned short vec_insert (unsigned short, vector - unsigned short, signed int); - - - - - - - - vector double vec_insert (double, vector double, signed - int); - - - - - - - - vector float vec_insert (float, vector float, signed - int); - - - - - POWER ISA 3.0 - Phased in. - - - - vector _Float16 vec_insert (_Float16, vector _Float16, - signed int); - - - - - VEC_INSERT_EXP (ARG1, ARG2) - POWER ISA 3.0 - - - Purpose: - Inserts an exponent into a floating-point number. - Result value: - Each element of the returned floating-point vector is - generated by combining the exponent specified by the - corresponding element of ARG2 with the sign and significand of - the corresponding element of ARG1. - The inserted exponent of ARG2 is treated as a - right-justified unsigned integer containing a biased exponent, in - accordance with the exponent representation specified by IEEE - 754. It is combined with the sign and significand of ARG1 without - further processing. - - - - - POWER ISA 3.0 - - - vector double vec_insert_exp (vector double, vector - unsigned long long); - - - - - POWER ISA 3.0 - - - vector double vec_insert_exp (vector unsigned long long, - vector unsigned long long); - - - - - POWER ISA 3.0 - - - vector float vec_insert_exp (vector float, vector unsigned - int); - - - - - POWER ISA 3.0 - - - vector float vec_insert_exp (vector unsigned int, vector - unsigned int); - - - - - VEC_INSERT4B (ARG1, ARG2, ARG3) - POWER ISA 3.0 - - - Purpose: - Inserts a word into a vector at a byte position. - Result value: - Let W be the first doubleword element of ARG1, truncated - to 32 bits. The result vector is formed by inserting W into - ARG2 at the byte position (0–12) specified by ARG3. - - - - - POWER ISA 3.0 - - - vector unsigned char vec_insert4b (vector signed int, - vector unsigned char, const int); - - - - - POWER ISA 3.0 - - - vector unsigned char vec_insert4b (vector unsigned int, - vector unsigned char, const int); - - - - - VEC_LOGE (ARG1) - - - Purpose: - Returns a vector containing estimates of the base-2 - logarithms of the corresponding elements of the given - vector. - Result value: - Each element of the result contains the estimated value of - the base-2 logarithm of the corresponding element of ARG1. - - - - - - - - vector float vec_loge (vector float); - - - - - VEC_MADD (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector containing the results of performing a - fused multiply-add operation for each corresponding set of - elements of the given vectors. - Result value: - The value of each element of the result is the product of - the values of the corresponding elements of ARG1 and ARG2, added - to the value of the corresponding element of ARG3. - - - - - - - - vector signed short vec_madd (vector signed short, vector - signed short, vector signed short); - - - - - - - - vector signed short vec_madd (vector signed short, vector - unsigned short, vector unsigned short); - - - - - - - - vector signed short vec_madd (vector unsigned short, vector - signed short, vector signed short); - - - - - - - - vector unsigned short vec_madd (vector unsigned short, - vector unsigned short, vector unsigned short); - - - - - - - - vector double vec_madd (vector double, vector double, - vector double); - - - - - - - - vector float vec_madd (vector float, vector float, vector - float); - - - - - VEC_MADDS (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector containing the results of performing a - saturated multiply-high-and-add operation for each corresponding - set of elements of the given vectors. - Result value: - For each element of the result, the value is produced in - the following way: The values of the corresponding elements of - ARG1 and ARG2 are multiplied. The value of the 17 - most-significant bits of this product is then added, using - 16-bit-saturated addition, to the value of the corresponding - element of ARG3. - - - - - - - - vector signed short vec_madds (vector signed short, vector - signed short, vector signed short); - - - - - VEC_MAX (ARG1, ARG2) - - - Purpose - Returns a vector containing the maximum value from each set - of corresponding elements of the given vectors. - Result value - The value of each element of the result is the maximum of - the values of the corresponding elements of ARG1 and ARG2. - - - - - - - - vector signed char vec_max (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_max (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_max (vector signed int, vector signed - int); - - - - - - - - vector unsigned int vec_max (vector unsigned int, vector - unsigned int); - - - - - - - - vector signed long long vec_max (vector signed long long, - vector signed long long); - - - - - - - - vector unsigned long long vec_max (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector signed short vec_max (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_max (vector unsigned short, - vector unsigned short); - - - - - - - - vector double vec_max (vector double, vector - double); - - - - - - - - vector float vec_max (vector float, vector float); - - - - - VEC_MERGEE (ARG1, ARG2) - - - Purpose: - Merges the even-numbered values from the two - vectors. - Result value: - The even-numbered elements of ARG1 are stored into the - even-numbered elements of the result. The even-numbered elements - of ARG2 are stored in the odd-numbered elements of the - result. - - - - - Phased in. - - - - vector bool int vec_mergee (vector bool int, vector bool - int); - - - - - Phased in. - - - - vector signed int vec_mergee (vector signed int, vector - signed int); - - - - - Phased in. - - - - vector unsigned int vec_mergee (vector unsigned int, vector - unsigned int); - - - - - Phased in. - - - - vector bool long long vec_mergee (vector bool long long, - vector bool long long); - - - - - Phased in. - - - - vector signed long long vec_mergee (vector signed long - long, vector signed long long); - - - - - Phased in. - - - - vector unsigned long long vec_mergee (vector unsigned long - long, vector unsigned long long); - - - - - Phased in. - - - - vector float vec_mergee (vector float, vector - float); - - - - - Phased in. - - - - vector double vec_mergee (vector double, vector - double); - - - - - VEC_MERGEH (ARG1, ARG2) - - - Purpose: - Merges the most-significant halves of two vectors. - Result value: - Assume that the elements of each vector are numbered - beginning with 0. The even-numbered elements of the result are - taken, in order, from the elements in the most-significant 8 - bytes of ARG1. The odd-numbered elements of the result are taken, - in order, from the elements in the most-significant 8 bytes of - ARG2. - - - - - - - - vector bool char vec_mergeh (vector bool char, vector bool - char); - - - - - - - - vector signed char vec_mergeh (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_mergeh (vector unsigned char, - vector unsigned char); - - - - - - - - vector bool int vec_mergeh (vector bool int, vector bool - int); - - - - - - - - vector signed int vec_mergeh (vector signed int, vector - signed int); - - - - - - - - vector unsigned int vec_mergeh (vector unsigned int, vector - unsigned int); - - - - - - - - vector bool long long vec_mergeh (vector bool long long, - vector bool long long); - - - - - - - - vector signed long long vec_mergeh (vector signed long - long, vector signed long long); - - - - - Phased in. - - - - vector unsigned long long vec_mergeh (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector pixel vec_mergeh (vector pixel, vector - pixel); - - - - - - - - vector bool short vec_mergeh (vector bool short, vector - bool short); - - - - - - - - vector signed short vec_mergeh (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_mergeh (vector unsigned short, - vector unsigned short); - - - - - - - - vector double vec_mergeh (vector double, vector - double); - - - - - - - - vector float vec_mergeh (vector float, vector - float); - - - - - POWER ISA 3.0 - Phased in. - - - - vector _Float16 vec_mergeh (vector _Float16, vector - _Float16); - - - - - VEC_MERGEL (ARG1, ARG2) - - - Purpose: - Merges the least-significant halves of two vectors. - Result value: - Assume that the elements of each vector are numbered - beginning with 0. The even-numbered elements of the result are - taken, in order, from the elements in the least-significant 8 - bytes of ARG1. The odd-numbered elements of the result are taken, - in order, from the elements in the least-significant 8 bytes of - ARG2. - - - - - - - - vector bool char vec_mergel (vector bool char, vector bool - char); - - - - - - - - vector signed char vec_mergel (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_mergel (vector unsigned char, - vector unsigned char); - - - - - - - - vector bool int vec_mergel (vector bool int, vector bool - int); - - - - - - - - vector signed int vec_mergel (vector signed int, vector - signed int); - - - - - - - - vector unsigned int vec_mergel (vector unsigned int, vector - unsigned int); - - - - - Phased in. - - - - vector bool long long vec_mergel (vector bool long long, - vector bool long long); - - - - - - - - vector signed long long vec_mergel (vector signed long - long, vector signed long long); - - - - - Phased in. - - - - vector unsigned long long vec_mergel (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector pixel vec_mergel (vector pixel, vector - pixel); - - - - - - - - vector bool short vec_mergel (vector bool short, vector - bool short); - - - - - - - - vector signed short vec_mergel (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_mergel (vector unsigned short, - vector unsigned short); - - - - - - - - vector double vec_mergel (vector double, vector - double); - - - - - - - - vector float vec_mergel (vector float, vector - float); - - - - - POWER ISA 3.0 - Phased in. - - - - vector _Float16 vec_mergel (vector _Float16, vector - _Float16); - - - - - VEC_MERGEO (ARG1, ARG2) - - - Purpose: - Merges the odd-numbered halves of two vectors. - Result value: - The odd-numbered elements of ARG1 are stored in the - even-numbered elements of the result. - The odd-numbered elements of ARG2 are stored in the - odd-numbered elements of the result. - - - - - Phased in. - - - - vector bool int vec_mergeo (vector bool int, vector bool - int); - - - - - Phased in. - - - - vector signed int vec_mergeo (vector signed int, vector - signed int); - - - - - Phased in. - - - - vector unsigned int vec_mergeo (vector unsigned int, vector - unsigned int); - - - - - Phased in. - - - - vector bool long long vec_mergeo (vector bool long long, - vector bool long long); - - - - - Phased in. - - - - vector signed long long vec_mergeo (vector signed long - long, vector signed long long); - - - - - Phased in. - - - - vector unsigned long long vec_mergeo (vector unsigned long - long, vector unsigned long long); - - - - - Phased in. - - - - vector double vec_mergeo (vector double, vector - double); - - - - - Phased in. - - - - vector float vec_mergeo (vector float, vector - float); - - - - - VEC_MIN (ARG1, ARG2) - - - Purpose: - Returns a vector containing the minimum value from each set - of corresponding elements of the given vectors. - Result value: - The value of each element of the result is the minimum of - the values of the corresponding elements of ARG1 and ARG2. - - - - - - - - vector signed char vec_min (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_min (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_min (vector signed int, vector signed - int); - - - - - - - - vector unsigned int vec_min (vector unsigned int, vector - unsigned int); - - - - - - - - vector signed long long vec_min (vector signed long long, - vector signed long long); - - - - - - - - vector unsigned long long vec_min (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector signed short vec_min (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_min (vector unsigned short, - vector unsigned short); - - - - - - - - vector double vec_min (vector double, vector - double); - - - - - - - - vector float vec_min (vector float, vector float); - - - - - VEC_MRADDS (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector containing the results of performing a - saturated multiply-high-round-and-add operation for each - corresponding set of elements of the given vectors. - Result value: - For each element of the result, the value is produced in - the following way: The values of the corresponding elements of - ARG1 and ARG2 are multiplied and rounded such that the 15 - least-significant bits are 0. The value of the 17 - most-significant bits of this rounded product is then added, - using 16-bit-saturated addition, to the value of the - corresponding element of ARG3. - - - - - - - - vector signed short vec_mradds (vector signed short, vector - signed short, vector signed short); - - - - - VEC_MSUB (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector containing the results of performing a - multiply-subtract operation using the given vectors. - Result value: - This function multiplies each element in ARG1 by the - corresponding element in ARG2 and then subtracts the - corresponding element in ARG3 from the result. - - - - - - - - vector double vec_msub (vector double, vector double, - vector double); - - - - - - - - vector float vec_msub (vector float, vector float, vector - float); - - - - - VEC_MSUM (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector containing the results of performing a - multiply-sum operation using the given vectors. - Result value: - Assume that the elements of each vector are numbered - beginning with 0. If ARG1 is a vector signed char or a vector - unsigned char vector, then let m be 4. Otherwise, let m be 2. For - each element n of the result vector, the value is obtained in the - following way: For p = mn to mn + m – 1, multiply element p of ARG1 - by element p of ARG2. Add the sum of these products to element n - of ARG3. All additions are performed using 32-bit modular - arithmetic. - - - - - - - - vector signed int vec_msum (vector signed char, vector - unsigned char, vector signed int); - - - - - - - - vector signed int vec_msum (vector signed short, vector - signed short, vector signed int); - - - - - - - - vector unsigned int vec_msum (vector unsigned char, vector - unsigned char, vector unsigned int); - - - - - - - - vector unsigned int vec_msum (vector unsigned short, vector - unsigned short, vector unsigned int); - - - - - VEC_MSUMS (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector containing the results of performing a - saturated multiply-sum operation using the given vectors. - Result value: - Assume that the elements of each vector are numbered - beginning with 0. For each element n of the result vector, the - value is obtained in the following way: For p = 2n to 2n+1, - multiply element p of ARG1 by element p of ARG2. Add the sum of - these products to element n of ARG3. All additions are performed - using 32-bit saturated arithmetic. - - - - - - - - vector signed int vec_msums (vector signed short, vector - signed short, vector signed int); - - - - - - - - vector unsigned int vec_msums (vector unsigned short, - vector unsigned short, vector unsigned int); - - - - - VEC_MUL (ARG1, ARG2) - - - Purpose: - Returns a vector containing the results of performing a - multiply operation using the given vectors. - This function emulates the operation on integer - vectors. - Result value: - This function multiplies corresponding elements in the - given vectors and then assigns the result to corresponding - elements in the result vector. - - - - - - - - vector signed char vec_mul (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_mul (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_mul (vector signed int, vector signed - int); - - - - - - - - vector unsigned int vec_mul (vector unsigned int, vector - unsigned int); - - - - - Phased in. - - - - vector signed long long vec_mul (vector signed long long, - vector signed long long); - - - - - Phased in. - - - - vector unsigned long long vec_mul (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector signed short vec_mul (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_mul (vector unsigned short, - vector unsigned short); - - - - - - - - vector double vec_mul (vector double, vector - double); - - - - - - - - vector float vec_mul (vector float, vector float); - - - - - VEC_MULE (ARG1, ARG2) - - - Purpose: - Returns a vector containing the results of multiplying - every second set of the corresponding elements of the given - vectors, beginning with the first element. - Result value: - Assume that the elements of each vector are numbered - beginning with 0. For each element n of the result vector, the - value is the product of the value of element 2n of ARG1 and the - value of element 2n of ARG2. - - - - - - - - vector signed int vec_mule (vector signed short, vector - signed short); - - - - - - - - vector unsigned int vec_mule (vector unsigned short, vector - unsigned short); - - - - - - - - vector signed long long vec_mule (vector signed int, vector - signed int); - - - - - - - - vector unsigned long long vec_mule (vector unsigned int, - vector unsigned int); - - - - - - - - vector signed short vec_mule (vector signed char, vector - signed char); - - - - - - - - vector unsigned short vec_mule (vector unsigned char, - vector unsigned char); - - - - - VEC_MULO (ARG1, ARG2) - - - Purpose: - Returns a vector containing the results of multiplying - every second set of corresponding elements of the given vectors, - beginning with the second element. - Result value: - Assume that the elements of each vector are numbered - beginning with 0. For each element n of the result vector, the - value is the product of the value of element 2n+1 of ARG1 and the - value of element 2n+1 of ARG2. - - - - - - - - vector signed int vec_mulo (vector signed short, vector - signed short); - - - - - - - - vector unsigned int vec_mulo (vector unsigned short, vector - unsigned short); - - - - - - - - vector signed long long vec_mulo (vector signed int, vector - signed int); - - - - - - - - vector unsigned long long vec_mulo (vector unsigned int, - vector unsigned int); - - - - - - - - vector signed short vec_mulo (vector signed char, vector - signed char); - - - - - - - - vector unsigned short vec_mulo (vector unsigned char, - vector unsigned char); - - - - - VEC_NABS (ARG1) - - - Purpose: - Returns a vector containing the negated absolute values of - the contents of the given vector. - Result value: - The value of each element of the result is the negated - absolute value of the corresponding element of ARG1. For integer - vectors, the arithmetic is modular. - - - - - - - - vector signed char vec_nabs (vector signed char); - - - - - - - - vector signed int vec_nabs (vector signed int); - - - - - - - - vector signed long long vec_nabs (vector signed long - long); - - - - - - - - vector signed short vec_nabs (vector signed short); - - - - - - - - vector double vec_nabs (vector double); - - - - - - - - vector float vec_nabs (vector float); - - - - - VEC_NAND (ARG1, ARG2) - - - Purpose: - Performs a bitwise NAND of the given vectors. - Result value: - The result is the bitwise NAND of ARG1 and ARG2. - - - - - - - - vector bool char vec_nand (vector bool char, vector bool - char); - - - - - - - - vector signed char vec_nand (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_nand (vector unsigned char, vector - unsigned char); - - - - - - - - vector bool int vec_nand (vector bool int, vector bool - int); - - - - - - - - vector signed int vec_nand (vector signed int, vector - signed int); - - - - - - - - vector unsigned int vec_nand (vector unsigned int, vector - unsigned int); - - - - - - - - vector bool long long vec_nand (vector bool long long, - vector bool long long); - - - - - - - - vector signed long long vec_nand (vector signed long long, - vector signed long long); - - - - - - - - vector unsigned long long vec_nand (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector bool short vec_nand (vector bool short, vector bool - short); - - - - - - - - vector signed short vec_nand (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_nand (vector unsigned short, - vector unsigned short); - - - - - - - - vector double vec_nand (vector double, vector - double); - - - - - - - - vector float vec_nand (vector float, vector float); - - - - - VEC_NEARBYINT (ARG1) - - - Purpose: - Returns a vector containing the floating-point integral - values nearest to the values of the corresponding elements of the - given vector. - Result value: - Each element of the result contains the nearest - representable floating-point integral value to the value of the - corresponding element of ARG1. When an input element value is - exactly between two integer values, the result value with the - largest absolute value is selected. - - - - - - - - vector double vec_nearbyint (vector double); - - - - - - - - vector float vec_nearbyint (vector float); - - - - - VEC_NEG (ARG1) - - - Purpose: - Returns a vector containing the negated values of the - contents of the given vector. - Result value: - The value of each element of the result is the negated - value of the corresponding element of ARG1. For integer vectors, - the arithmetic is modular. - - - - - - - - vector signed char vec_neg (vector signed char); - - - - - - - - vector signed int vec_neg (vector signed int); - - - - - - - - vector signed long long vec_neg (vector signed long - long); - - - - - - - - vector signed short vec_neg (vector signed short); - - - - - - - - vector double vec_neg (vector double); - - - - - - - - vector float vec_neg (vector float); - - - - - VEC_NMADD (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector containing the results of performing a - negative multiply-add operation on the given vectors. - Result value: - The value of each element of the result is the product of - the corresponding elements of ARG1 and ARG2, added to the - corresponding elements of ARG3, then multiplied by - –1.0. - - - - - - - - vector double vec_nmadd (vector double, vector double, - vector double); - - - - - - - - vector float vec_nmadd (vector float, vector float, vector - float); - - - - - VEC_NMSUB (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector containing the results of performing a - negative multiply-subtract operation on the given vectors. - Result value: - The value of each element of the result is the product of - the corresponding elements of ARG1 and ARG2, subtracted from the - corresponding element of ARG3, and then multiplied by - –1.0. - - - - - - - - vector double vec_nmsub (vector double, vector double, - vector double); - - - - - - - - vector float vec_nmsub (vector float, vector float, vector - float); - - - - - VEC_NOR (ARG1, ARG2) - - - Purpose: - Performs a bitwise NOR of the given vectors. - Result value: - The result is the bitwise NOR of ARG1 and ARG2. - - - - - - - - vector bool char vec_nor (vector bool char, vector bool - char); - - - - - - - - vector signed char vec_nor (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_nor (vector unsigned char, vector - unsigned char); - - - - - - - - vector bool int vec_nor (vector bool int, vector bool - int); - - - - - - - - vector signed int vec_nor (vector signed int, vector signed - int); - - - - - - - - vector unsigned int vec_nor (vector unsigned int, vector - unsigned int); - - - - - - - - vector bool long long vec_nor (vector bool long long, - vector bool long long); - - - - - Phased in. - - - - vector signed long long vec_nor (vector signed long long, - vector signed long long); - - - - - Phased in. - - - - vector unsigned long long vec_nor (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector bool short vec_nor (vector bool short, vector bool - short); - - - - - - - - vector signed short vec_nor (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_nor (vector unsigned short, - vector unsigned short); - - - - - - - - vector double vec_nor (vector double, vector - double); - - - - - - - - vector float vec_nor (vector float, vector float); - - - - - VEC_OR (ARG1, ARG2) - - - Purpose: - Performs a bitwise OR of the given vectors. - Result value: - The result is the bitwise OR of ARG1 and ARG2. - - - - - - - - vector bool char vec_or (vector bool char, vector bool - char); - - - - - - - - vector signed char vec_or (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_or (vector unsigned char, vector - unsigned char); - - - - - - - - vector bool int vec_or (vector bool int, vector bool - int); - - - - - - - - vector signed int vec_or (vector signed int, vector signed - int); - - - - - - - - vector unsigned int vec_or (vector unsigned int, vector - unsigned int); - - - - - - - - vector bool long long vec_or (vector bool long long, vector - bool long long); - - - - - Phased in. - - - - vector signed long long vec_or (vector signed long long, - vector signed long long); - - - - - Phased in. - - - - vector unsigned long long vec_or (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector bool short vec_or (vector bool short, vector bool - short); - - - - - - - - vector signed short vec_or (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_or (vector unsigned short, vector - unsigned short); - - - - - - - - vector double vec_or (vector double, vector double); - - - - - - - - vector float vec_or (vector float, vector float); - - - - - VEC_ORC (ARG1, ARG2) - - - Purpose: - Performs a bitwise OR of the first vector with the negated - second vector. - Result value: - The result is the bitwise OR of ARG1 and the bitwise - negation of ARG2. - - - - - - - - vector bool char vec_orc (vector bool char, vector bool - char); - - - - - - - - vector signed char vec_orc (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_orc (vector unsigned char, vector - unsigned char); - - - - - - - - vector bool int vec_orc (vector bool int, vector bool - int); - - - - - - - - vector signed int vec_orc (vector signed int, vector signed - int); - - - - - - - - vector unsigned int vec_orc (vector unsigned int, vector - unsigned int); - - - - - - - - vector bool long long vec_orc (vector bool long long, - vector bool long long); - - - - - - - - vector signed long long vec_orc (vector signed long long, - vector signed long long); - - - - - - - - vector unsigned long long vec_orc (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector bool short vec_orc (vector bool short, vector bool - short); - - - - - - - - vector signed short vec_orc (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_orc (vector unsigned short, - vector unsigned short); - - - - - - - - vector double vec_orc (vector double, vector - double); - - - - - - - - vector float vec_orc (vector float, vector float); - - - - - VEC_PACK (ARG1, ARG2) - - - Purpose: - Packs information from each element of two vectors into the - result vector. - Result value: - For integer types, the - value of each element of the result - vector is taken from the low-order half of the corresponding - element of the result of concatenating ARG1 and ARG2. - For floating-point types, the value of each element of the - result vector is the corresponding element of the result of - concatenating ARG1 and ARG2, rounded to the result type. - - - - - - - - vector bool char vec_pack (vector bool short, vector bool - short); - - - - - - - - vector signed char vec_pack (vector signed short, vector - signed short); - - - - - - - - vector unsigned char vec_pack (vector unsigned short, - vector unsigned short); - - - - - - - - vector bool int vec_pack (vector bool long long, vector - bool long long); - - - - - - - - vector signed int vec_pack (vector signed long long, vector - signed long long); - - - - - - - - vector unsigned int vec_pack (vector unsigned long long, - vector unsigned long long); - - - - - - - - vector bool short vec_pack (vector bool int, vector bool - int); - - - - - - - - vector signed short vec_pack (vector signed int, vector - signed int); - - - - - - - - vector unsigned short vec_pack (vector unsigned int, vector - unsigned int); - - - - - - - - vector float vec_pack (vector double, vector - double); - - - - - POWER ISA 3.0 - Phased in. - - - - vector _Float16 vec_pack (vector float, vector - float); - - - - - VEC_PACK_TO_SHORT_FP32 (ARG1, ARG2) - POWER ISA 3.0 - - - Purpose: - Packs eight single-precision 32-bit floating-point numbers - into a vector of eight 16-bit floating-point numbers. - Result value: - The value is a vector consisting of eight 16-bit elements, - each representing a 16-bit floating-point number that was created - by converting the corresponding single-precision value to - half-precision. - - - - - POWER ISA 3.0 - - - vector unsigned short vec_pack_to_short_fp32 (vector float, - vector float); - - - - - - VEC_PACKPX (ARG1, ARG2) - - - Purpose: - Packs information from each element of two vectors into the - result vector. - Result value: - The value of each element of the result vector is taken - from the corresponding element of the result of concatenating - ARG1 and ARG2 as follows: - - - The least-significant bit of the high-order byte is - stored into the first bit of the result element. - - - The least-significant 5 bits of each of the remaining - bytes are stored into the remaining portion of the result - element. - - - - - - - - - - vector pixel vec_packpx (vector unsigned int, vector - unsigned int); - - - - - VEC_PACKS (ARG1, ARG2) - - - Purpose: - Packs information from each element of two vectors into the - result vector, using saturated values. - Result value: - The value of each element of the result vector is the - saturated value of the corresponding element of the result of - concatenating ARG1 and ARG2. - - - - - - - - vector signed char vec_packs (vector signed short, vector - signed short); - - - - - - - - vector unsigned char vec_packs (vector unsigned short, - vector unsigned short); - - - - - - - - vector signed int vec_packs (vector signed long long, - vector signed long long); - - - - - - - - vector unsigned int vec_packs (vector unsigned long long, - vector unsigned long long); - - - - - - - - vector signed short vec_packs (vector signed int, vector - signed int); - - - - - - - - vector unsigned short vec_packs (vector unsigned int, - vector unsigned int); - - - - - VEC_PACKSU (ARG1, ARG2) - - - Purpose: - Packs information from each element of two vectors into the - result vector, using unsigned saturated values. - Result value: - The value of each element of the result vector is the - saturated value of the corresponding element of the result of - concatenating ARG1 and ARG2. - - - - - - - - vector unsigned char vec_packsu (vector signed short, - vector signed short); - - - - - - - - vector unsigned char vec_packsu (vector unsigned short, - vector unsigned short); - - - - - - - - vector unsigned int vec_packsu (vector signed long long, - vector signed long long); - - - - - Phased in. - - - - vector unsigned int vec_packsu (vector unsigned long long, - vector unsigned long long); - - - - - - - - vector unsigned short vec_packsu (vector signed int, vector - signed int); - - - - - - - - vector unsigned short vec_packsu (vector unsigned int, - vector unsigned int); - - - - - VEC_PARITY_LSBB (ARG1) - POWER ISA 3.0 - - - Purpose: - Compute parity on the least-significant bit of each - byte. - Result value: - Returns a vector with each element containing the parity of - the low-order bit of each of the bytes in that element. - - - - - POWER ISA 3.0 - - - vector unsigned int vec_parity_lsbb (vector signed - int); - - - - - POWER ISA 3.0 - - - vector unsigned int vec_parity_lsbb (vector unsigned - int); - - - - - POWER ISA 3.0 - - - vector unsigned __int128 vec_parity_lsbb (vector - signed __int128); - - - - - POWER ISA 3.0 - - - vector unsigned __int128 vec_parity_lsbb (vector - unsigned __int128); - - - - - POWER ISA 3.0 - - - vector unsigned long long vec_parity_lsbb (vector signed - long long); - - - - - POWER ISA 3.0 - - - vector unsigned long long vec_parity_lsbb (vector unsigned - long long); - - - - - VEC_PERM (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector that contains some elements of two - vectors, in the order specified by a third vector. - Result value: - Each byte of the result is selected by using the - least-significant 5 bits of the corresponding byte of ARG3 as an - index into the concatenated bytes of ARG1 and ARG2. - - - - - - - - vector bool char vec_perm (vector bool char, vector bool - char, vector unsigned char); - - - - - - - - vector signed char vec_perm (vector signed char, vector - signed char, vector unsigned char); - - - - - - - - vector unsigned char vec_perm (vector unsigned char, vector - unsigned char, vector unsigned char); - - - - - - - - vector bool int vec_perm (vector bool int, vector bool int, - vector unsigned char); - - - - - - - - vector signed int vec_perm (vector signed int, vector - signed int, vector unsigned char); - - - - - - - - vector unsigned int vec_perm (vector unsigned int, vector - unsigned int, vector unsigned char); - - - - - Phased in. - - - - vector bool long long vec_perm (vector bool long long, - vector bool long long, vector unsigned char); - - - - - - - - vector signed long long vec_perm (vector signed long long, - vector signed long long, vector unsigned char); - - - - - Phased in. - - - - vector unsigned long long vec_perm (vector unsigned long - long, vector unsigned long long, vector unsigned char); - - - - - - - - vector pixel vec_perm (vector pixel, vector pixel, vector - unsigned char); - - - - - - - - vector bool short vec_perm (vector bool short, vector bool - short, vector unsigned char); - - - - - - - - vector signed short vec_perm (vector signed short, vector - signed short, vector unsigned char); - - - - - - - - vector unsigned short vec_perm (vector unsigned short, - vector unsigned short, vector unsigned char); - - - - - - - - vector double vec_perm (vector double, vector double, - vector unsigned char); - - - - - - - - vector float vec_perm (vector float, vector float, vector - unsigned char); - - - - - POWER ISA 3.0 - Phased in. - - - - vector _Float16 vec_perm (vector _Float16, vector _Float16, - vector unsigned char); - - - - - VEC_PERMXOR (ARG1, ARG2, ARG3) - - - Purpose: - Applies a permute and exclusive-OR operation on two vectors - of byte elements. - Result value: - For each i (0 ≤ i < 16), let index1 be bits 0–3 and - index2 be bits 4–7 of byte element i of mask ARG3. - Byte element i of the result is set to the exclusive-OR of - byte elements index1 of ARG1 and index2 of ARG2. - - - - - Phased in. - - - - vector bool char vec_permxor (vector bool char, vector bool - char, vector bool char); - - - - - Phased in. - - - - vector unsigned char vec_permxor (vector signed char, - vector signed char, vector signed char); - - - - - Phased in. - - - - vector unsigned char vec_permxor (vector unsigned char, - vector unsigned char, vector unsigned char); - - - - - VEC_POPCNT (ARG1) - - - Purpose: - Returns a vector containing the number of bits set in each - element of the input vector. - Result value: - The value of each element of the result is the number of - bits set in the corresponding input element. - - - - - - - - vector unsigned char vec_popcnt (vector signed - char); - - - - - - - - vector unsigned char vec_popcnt (vector unsigned - char); - - - - - - - - vector unsigned int vec_popcnt (vector signed int); - - - - - - - - vector unsigned int vec_popcnt (vector unsigned - int); - - - - - - - - vector unsigned long long vec_popcnt (vector signed long - long); - - - - - - - - vector unsigned long long vec_popcnt (vector unsigned long - long); - - - - - - - - vector unsigned short vec_popcnt (vector signed - short); - - - - - - - - vector unsigned short vec_popcnt (vector unsigned - short); - - - - - VEC_RE (ARG1) - - - Purpose: - Returns a vector containing estimates of the reciprocals of - the corresponding elements of the given vector. - Result value: - Each element of the result contains the estimated value of - the reciprocal of the corresponding element of ARG1. - - - - - - - - vector float vec_re (vector float); - - - - - - - - vector double vec_re (vector double); - - - - - VEC_RECIPDIV (ARG1, ARG2) - - - Purpose: - Returns a vector containing approximations of the division - of the corresponding elements of ARG1 by the corresponding - elements of ARG2. This implementation provides an - implementation-dependent precision, which is commonly within 2 - ulps for most of the numeric range expressible by the input - operands. This built-in function does not correspond to a single - IEEE operation and does not provide the overflow, underflow, and - NaN propagation characteristics specified for IEEE division. - (Precision may be a function of both the specified target - processor model during compilation and the actual processor on - which a program is executed.) - Result value: - Each element of the result vector contains a refined - approximation of the division of the corresponding element of - ARG1 by the corresponding element of ARG2. - - - - - - - - vector double vec_recipdiv (vector double, vector - double); - - - - - - - - vector float vec_recipdiv (vector float, vector - float); - - - - - VEC_REVB (ARG1) - - - Purpose: - Reverse the bytes of each vector element of a - vector. - Result value: - Returns a vector where each vector element contains the - corresponding byte-reversed vector element of the input - vector. - - - - - - - - vector bool char vec_revb (vector bool char); - - - - - - - - vector signed char vec_revb (vector signed char); - - - - - - - - vector unsigned char vec_revb (vector unsigned - char); - - - - - - - - vector bool int vec_revb (vector bool int); - - - - - - - - vector signed int vec_revb (vector signed int); - - - - - - - - vector unsigned int vec_revb (vector unsigned int); - - - - - - - - vector signed __int128 vec_revb (vector signed - __int128); - - - - - - - - vector unsigned __int128 vec_revb (vector unsigned - __int128); - - - - - - - - vector bool long long vec_revb (vector bool long - long); - - - - - - - - vector signed long long vec_revb (vector signed long - long); - - - - - - - - vector unsigned long long vec_revb (vector unsigned long - long); - - - - - - - - vector bool short vec_revb (vector bool short); - - - - - - - - vector signed short vec_revb (vector signed short); - - - - - - - - vector unsigned short vec_revb (vector unsigned - short); - - - - - - - - vector double vec_revb (vector double); - - - - - - - - vector float vec_revb (vector float); - - - - - POWER ISA 3.0 - Phased in. - - - - vector _Float16 vec_revb (vector _Float16); - - - - - VEC_REVE (ARG1) - - - Purpose: - Reverse the elements of a vector. - Result value: - Returns a vector with the elements of the input vector in - reversed order. - - - - - - - - vector bool char vec_reve (vector bool char); - - - - - - - - vector signed char vec_reve (vector signed char); - - - - - - - - vector unsigned char vec_reve (vector unsigned - char); - - - - - - - - vector bool int vec_reve (vector bool int); - - - - - - - - vector signed int vec_reve (vector signed int); - - - - - - - - vector unsigned int vec_reve (vector unsigned int); - - - - - - - - vector bool long long vec_reve (vector bool long - long); - - - - - - - - vector signed long long vec_reve (vector signed long - long); - - - - - - - - vector unsigned long long vec_reve (vector unsigned long - long); - - - - - - - - vector bool short vec_reve (vector bool short); - - - - - - - - vector signed short vec_reve (vector signed short); - - - - - - - - vector unsigned short vec_reve (vector unsigned - short); - - - - - - - - vector double vec_reve (vector double); - - - - - - - - vector float vec_reve (vector float); - - - - - POWER ISA 3.0 - Phased in. - - - - vector _Float16 vec_reve (vector _Float16); - - - - - VEC_RINT (ARG1) - - - Purpose: - Returns a vector containing the floating-point integral - values nearest to the values of the corresponding elements of the - given vector. - Result value: - Each element of the result contains the nearest - representable floating-point integral value to the value of the - corresponding element of ARG1. When an input element value is - exactly between two integer values, the result value is selected - based on the rounding mode specified by the Floating-Point - Rounding Control field (RN) of the FPSCR register. - - - - - - - - vector double vec_rint (vector double); - - - - - - - - vector float vec_rint (vector float); - - - - - VEC_RL(ARG1, ARG2) - - - Purpose: - Rotates each element of a vector left by a given number of - bits. - Result value: - Each element of the result is obtained by rotating the - corresponding element of ARG1 left by the number of bits - specified by the corresponding element of ARG2. - - - - - - - - vector signed char vec_rl (vector signed char, vector - unsigned char); - - - - - - - - vector unsigned char vec_rl (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_rl (vector signed int, vector - unsigned int); - - - - - - - - vector unsigned int vec_rl (vector unsigned int, vector - unsigned int); - - - - - - - - vector signed long long vec_rl (vector signed long long, - vector unsigned long long); - - - - - - - - vector unsigned long long vec_rl (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector signed short vec_rl (vector signed short, vector - unsigned short); - - - - - - - - vector unsigned short vec_rl (vector unsigned short, vector - unsigned short); - - - - - VEC_RLMI (ARG1, ARG2, ARG3) - POWER ISA 3.0 - - - Purpose: - Rotates each element of a vector left and inserts each - element under a mask. - Result value: - The result is obtained by rotating each element of vector - ARG1 left and inserting it under mask into ARG2. ARG3 bits 11:15 - contain the mask beginning, bits 19:23 contain the mask end, and - bits 27:31 contain the shift count. - - - - - POWER ISA 3.0 - - - vector unsigned int vec_rlmi (vector unsigned int, vector - unsigned int, vector unsigned int); - - - - - POWER ISA 3.0 - - - vector unsigned long long vec_rlmi (vector unsigned long - long, vector unsigned long long, vector unsigned long - long); - - - - - VEC_RLNM (ARG1, ARG2, ARG3) - POWER ISA 3.0 - - - Purpose: - Rotates each element of a vector left; then intersects - (AND) it with a mask. - Result value: - Each element of vector ARG1 is rotated left; then - intersected (AND) with a mask specified by ARG2 and ARG3. - ARG2 contains the shift count for each element in the - low-order byte, with other bytes zero. ARG3 contains the mask - begin and mask end for each element, with the mask end in the - low-order byte, the mask begin in the next higher byte, and - other bytes zero. - - - - - POWER ISA 3.0 - - - vector unsigned int vec_rlnm (vector unsigned int, vector - unsigned int, vector unsigned int); - - - - - POWER ISA 3.0 - - - vector unsigned long long vec_rlnm (vector unsigned long - long, vector unsigned long long, vector unsigned long - long); - - - - - VEC_ROUND (ARG1) - - - Purpose: - Returns a vector containing the rounded values of the - corresponding elements of the given vector. - Result value: - Each element of the result contains the value of the - corresponding element of ARG1, rounded to the nearest - representable floating-point integer, using IEEE round-to-nearest - rounding. - - This function might not follow the strict - operation definition of the resolution of a tie during a - round if the -qstrict=nooperationprecision compiler option is - specified to the XLC compiler. - - - - - - Phased in. - - - - vector double vec_round (vector double); - - - - - - - - vector float vec_round (vector float); - - - - - VEC_RSQRT (ARG1) - - - Purpose: - Returns a vector containing a refined approximation of the - reciprocal square roots of the corresponding elements of the - given vector. This function provides an implementation-dependent - greater precision than VEC_RSQRTE. - Result value: - Each element of the result contains a refined approximation - of the reciprocal square root of the corresponding element of - ARG1. - - - - - - - - vector double vec_rsqrt (vector double); - - - - - - - - vector float vec_rsqrt (vector float); - - - - - VEC_RSQRTE (ARG1) - - - Purpose: - Returns a vector containing estimates of the reciprocal - square roots of the corresponding elements of the given - vector. - Result value: - Each element of the result contains the estimated value of - the reciprocal square root of the corresponding element of - ARG1. - - - - - - - - vector double vec_rsqrte (vector double); - - - - - - - - vector float vec_rsqrte (vector float); - - - - - VEC_SEL (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector containing the value of either ARG1 or - ARG2 depending on the value of ARG3. - Result value: - Each bit of the result vector has the value of the - corresponding bit of ARG1 if the corresponding bit of ARG3 is 0. - Otherwise, each bit of the result vector has the value of the - corresponding bit of ARG2. - - - - - - - - vector bool char vec_sel (vector bool char, vector bool - char, vector bool char); - - - - - - - - vector bool char vec_sel (vector bool char, vector bool - char, vector unsigned char); - - - - - - - - vector signed char vec_sel (vector signed char, vector - signed char, vector bool char); - - - - - - - - vector signed char vec_sel (vector signed char, vector - signed char, vector unsigned char); - - - - - - - - vector unsigned char vec_sel (vector unsigned char, vector - unsigned char, vector bool char); - - - - - - - - vector unsigned char vec_sel (vector unsigned char, vector - unsigned char, vector unsigned char); - - - - - - - - vector bool int vec_sel (vector bool int, vector bool int, - vector bool int); - - - - - - - - vector bool int vec_sel (vector bool int, vector bool int, - vector unsigned int); - - - - - - - - vector signed int vec_sel (vector signed int, vector signed - int, vector bool int); - - - - - - - - vector signed int vec_sel (vector signed int, vector signed - int, vector unsigned int); - - - - - - - - vector unsigned int vec_sel (vector unsigned int, vector - unsigned int, vector bool int); - - - - - - - - vector unsigned int vec_sel (vector unsigned int, vector - unsigned int, vector unsigned int); - - - - - - - - vector bool long long vec_sel (vector bool long long, - vector bool long long, vector bool long long); - - - - - - - - vector bool long long vec_sel (vector bool long long, - vector bool long long, vector unsigned long long); - - - - - - - - vector signed long long vec_sel (vector signed long long, - vector signed long long, vector bool long long); - - - - - Phased in. - - - - vector signed long long vec_sel (vector signed long long, - vector signed long long, vector unsigned long long); - - - - - Phased in. - - - - vector unsigned long long vec_sel (vector unsigned long - long, vector unsigned long long, vector bool long long); - - - - - Phased in. - - - - vector unsigned long long vec_sel (vector unsigned long - long, vector unsigned long long, vector unsigned long - long); - - - - - - - - vector bool short vec_sel (vector bool short, vector bool - short, vector bool short); - - - - - - - - vector bool short vec_sel (vector bool short, vector bool - short, vector unsigned short); - - - - - - - - vector signed short vec_sel (vector signed short, vector - signed short, vector bool short); - - - - - - - - vector signed short vec_sel (vector signed short, vector - signed short, vector unsigned short); - - - - - - - - vector unsigned short vec_sel (vector unsigned short, - vector unsigned short, vector bool short); - - - - - - - - vector unsigned short vec_sel (vector unsigned short, - vector unsigned short, vector unsigned short); - - - - - - - - vector double vec_sel (vector double, vector double, vector - bool long long); - - - - - - - - vector double vec_sel (vector double, vector double, vector - unsigned long long); - - - - - - - - vector float vec_sel (vector float, vector float, vector - bool int); - - - - - - - - vector float vec_sel (vector float, vector float, vector - unsigned int); - - - - - POWER ISA 3.0 - Phased in. - - - - vector _Float16 vec_sel (vector _Float16, vector _Float16, - vector bool short); - - - - - POWER ISA 3.0 - Phased in. - - - - vector _Float16 vec_sel (vector _Float16, vector _Float16, - vector unsigned short); - - - - - VEC_SIGNED (ARG1) - - - Purpose: - Converts a vector of floating-point numbers to a vector of - signed integers. - Result value: - Target elements are obtained by - truncating - the respective - source elements to signed integers. - - - - - - - - vector signed int vec_signed (vector float); - - - - - - - - vector signed long long vec_signed (vector double); - - - - - VEC_SIGNED2 (ARG1, ARG2) - - - Purpose: - Converts a vector of floating-point numbers to vector of - signed integers. - Result value: - Target elements are obtained by - truncating - the source - elements to the signed integers as follows: - - - Target elements 0 and 1 from source 0 - - - Target elements 2 and 3 from source 1 - - - - - - - - - - vector signed int vec_signed2 (vector double, vector - double); - - - - - VEC_SIGNEDE (ARG1) - - - Purpose: - Converts an input vector to a vector of signed - integers. - Result value: - The even target elements are obtained by - truncating - the - source elements to signed integers as follows: - Target elements 0 and 2 contain the converted values of the - input vector. - - - - - - - - vector signed int vec_signede (vector double); - - - - - VEC_SIGNEDO (ARG1) - - - Purpose: - Converts an input vector to a vector of signed - integers. - Result value: - The odd target elements are obtained by - truncating - the - source elements to signed integers as follows: - Target elements 1 and 3 contain the converted values of the - input vector. - - - - - - - - vector signed int vec_signedo (vector double); - - - - - VEC_SL (ARG1, ARG2) - - - Purpose: - Performs a left shift for each element of a vector. - Result value: - Each element of the result vector is the result of left - shifting the corresponding element of ARG1 by the number of bits - specified by the value of the corresponding element of ARG2, - modulo the number of bits in the element. The bits that are - shifted out are replaced by zeros. - - - - - - - - vector signed char vec_sl (vector signed char, vector - unsigned char); - - - - - - - - vector unsigned char vec_sl (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_sl (vector signed int, vector - unsigned int); - - - - - - - - vector unsigned int vec_sl (vector unsigned int, vector - unsigned int); - - - - - - - - vector signed long long vec_sl (vector signed long long, - vector unsigned long long); - - - - - - - - vector unsigned long long vec_sl (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector signed short vec_sl (vector signed short, vector - unsigned short); - - - - - - - - vector unsigned short vec_sl (vector unsigned short, vector - unsigned short); - - - - - VEC_SLD (ARG1, ARG2, ARG3) - - - Purpose: - Left shifts a double vector (that is, two concatenated - vectors) by a given number of bytes. For vec_sld being performed - on the vector bool and floating-point types, the result is - undefined, when the specified shift count is not a multiple of - the element size. - Result value: - The result is the most-significant 16 bytes obtained by - concatenating ARG1 and ARG2 and shifting left by the number of - bytes specified by ARG3, which should be in the range 0–15. - - - - - - - - vector bool char vec_sld (vector bool char, vector bool - char, const int); - - - - - - - - vector signed char vec_sld (vector signed char, vector - signed char, const int); - - - - - - - - vector unsigned char vec_sld (vector unsigned char, vector - unsigned char, const int); - - - - - - - - vector bool int vec_sld (vector bool int, vector bool int, - const int); - - - - - - - - vector signed int vec_sld (vector signed int, vector signed - int, const int); - - - - - - - - vector unsigned int vec_sld (vector unsigned int, vector - unsigned int, const int); - - - - - Phased in. - - - - vector bool long long vec_sld (vector bool long long, - vector bool long long, const int); - - - - - Phased in. - - - - vector signed long long vec_sld (vector signed long long, - vector signed long long, const int); - - - - - Phased in. - - - - vector unsigned long long vec_sld (vector unsigned long - long, vector unsigned long long, const int); - - - - - - - - vector pixel vec_sld (vector pixel, vector pixel, const - int); - - - - - - - - vector bool short vec_sld (vector bool short, vector bool - short, const int); - - - - - - - - vector signed short vec_sld (vector signed short, vector - signed short, const int); - - - - - - - - vector unsigned short vec_sld (vector unsigned short, - vector unsigned short, const int); - - - - - Phased in. - - - - vector double vec_sld (vector double, vector double, const - int); - - - - - - - - vector float vec_sld (vector float, vector float, const - int); - - - - - VEC_SLDW (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector obtained by shifting left the concatenated - input vectors by the number of specified words. - Result value: - The value of each element is set to the value of an input - element of the concatenated vectors ARG1 and ARG2, with the word - offset to its right1 - specified by ARG3, which should be in the - range 0–3. - 1A shift left picks values - from the right. - - - - - - - - vector signed char vec_sldw (vector signed char, vector - signed char, const int); - - - - - - - - vector unsigned char vec_sldw (vector unsigned char, vector - unsigned char, const int); - - - - - - - - vector signed int vec_sldw (vector signed int, vector - signed int, const int); - - - - - - - - vector unsigned int vec_sldw (vector unsigned int, vector - unsigned int, const int); - - - - - - - - vector signed long long vec_sldw (vector signed long long, - vector signed long long, const int); - - - - - - - - vector unsigned long long vec_sldw (vector unsigned long - long, vector unsigned long long, const int); - - - - - - - - vector signed short vec_sldw (vector signed short, vector - signed short, const int); - - - - - - - - vector unsigned short vec_sldw (vector unsigned short, - vector unsigned short, const int); - - - - - VEC_SLL (ARG1, ARG2) - - - Purpose: - Left shifts a vector by a given number of bits. - Result value: - The result is the contents of ARG1, shifted left by the - number of bits specified by the three least-significant bits of - ARG2. The bits that are shifted out are replaced by zeros. The - shift count must have been replicated into all bytes of the shift - count specification. - - - - - - - - vector signed char vec_sll (vector signed char, vector - unsigned char); - - - - - - - - vector unsigned char vec_sll (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_sll (vector signed int, vector - unsigned char); - - - - - - - - vector unsigned int vec_sll (vector unsigned int, vector - unsigned char); - - - - - Phased in. - - - - vector signed long long vec_sll (vector signed long long, - vector unsigned char); - - - - - Phased in. - - - - vector unsigned long long vec_sll (vector unsigned long - long, vector unsigned char); - - - - - - - - vector pixel vec_sll (vector pixel, vector unsigned - char); - - - - - - - - vector signed short vec_sll (vector signed short, vector - unsigned char); - - - - - - - - vector unsigned short vec_sll (vector unsigned short, - vector unsigned char); - - - - - VEC_SLO (ARG1, ARG2) - - - Purpose: - Left shifts a vector by a given number of bytes - (octets). - Result value: - The result is the contents of ARG1, shifted left by the - number of bytes specified by the most-significant nibble of the - least-significant - byte1 - of ARG2. The bits that are shifted out are replaced by zeros. - 1That is, by little-endian bits - 7–4 or big-endian bits 121–124. - - - - - - - - vector signed char vec_slo (vector signed char, vector - signed char); - - - - - - - - vector signed char vec_slo (vector signed char, vector - unsigned char); - - - - - - - - vector unsigned char vec_slo (vector unsigned char, vector - signed char); - - - - - - - - vector unsigned char vec_slo (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_slo (vector signed int, vector signed - char); - - - - - - - - vector signed int vec_slo (vector signed int, vector - unsigned char); - - - - - - - - vector unsigned int vec_slo (vector unsigned int, vector - signed char); - - - - - - - - vector unsigned int vec_slo (vector unsigned int, vector - unsigned char); - - - - - - - - vector signed long long vec_slo (vector signed long long, - vector signed char); - - - - - - - - vector signed long long vec_slo (vector signed long long, - vector unsigned char); - - - - - - - - vector unsigned long long vec_slo (vector unsigned long - long, vector signed char); - - - - - - - - vector unsigned long long vec_slo (vector unsigned long - long, vector unsigned char); - - - - - - - - vector pixel vec_slo (vector pixel, vector signed - char); - - - - - - - - vector pixel vec_slo (vector pixel, vector unsigned - char); - - - - - - - - vector signed short vec_slo (vector signed short, vector - signed char); - - - - - - - - vector signed short vec_slo (vector signed short, vector - unsigned char); - - - - - - - - vector unsigned short vec_slo (vector unsigned short, - vector signed char); - - - - - - - - vector unsigned short vec_slo (vector unsigned short, - vector unsigned char); - - - - - - - - vector float vec_slo (vector float, vector signed - char); - - - - - - - - vector float vec_slo (vector float, vector unsigned - char); - - - - - VEC_SLV (ARG1, ARG2) - POWER ISA 3.0 - - - Purpose: - Left-shifts a vector by a varying number of bits by - element. - Result value: - For each integer 0i14, let - Xi be the halfword formed by concatenating - elements i and i+1 of ARG1. Let - X15 be the halfword formed by concatenating - element 15 of ARG1 with a zero byte. - Let Si be the value in the three least-significant - bits of element i of ARG2. Then, element i of the result vector - contains the value formed from bits - Si through - Si + 7 of - Xi. - - - - - POWER ISA 3.0 - - - vector unsigned char vec_slv (vector unsigned char, vector - unsigned char); - - - - - VEC_SPLAT (ARG1, ARG2) - - - Purpose: - Returns a vector that has all of its elements set to a - given value. - Result value: - The value of each element of the result is the value of the - element of ARG1 specified by ARG2, which should be an element - number less than the number of elements supported for the - respective ARG1 type. - - - - - - - - vector bool char vec_splat (vector bool char, const - int); - - - - - - - - vector signed char vec_splat (vector signed char, const - int); - - - - - - - - vector unsigned char vec_splat (vector unsigned char, const - int); - - - - - - - - vector bool int vec_splat (vector bool int, const - int); - - - - - - - - vector signed int vec_splat (vector signed int, const - int); - - - - - - - - vector unsigned int vec_splat (vector unsigned int, const - int); - - - - - Phased in. - - - - vector bool long long vec_splat (vector bool long long, - const int); - - - - - - - - vector signed long long vec_splat (vector signed long long, - const int); - - - - - - - - vector unsigned long long vec_splat (vector unsigned long - long, const int); - - - - - - - - vector pixel vec_splat (vector pixel, const int); - - - - - - - - vector bool short vec_splat (vector bool short, const - int); - - - - - - - - vector signed short vec_splat (vector signed short, const - int); - - - - - - - - vector unsigned short vec_splat (vector unsigned short, - const int); - - - - - Phased in. - - - - vector double vec_splat (vector double, const int); - - - - - - - - vector float vec_splat (vector float, const int); - - - - - POWER ISA 3.0 - Phased in. - - - - vector _Float16 vec_splat (vector _Float16, const - int); - - - - - VEC_SPLAT_S8 (ARG1) - - - Purpose: - Returns a vector with all elements equal to the given - value. - Result value: - The bit pattern of ARG1 is interpreted as a signed value. - Each element of the result is given this value. - - - - - - - - vector signed char vec_splat_s8 (const int); - - - - - VEC_SPLAT_S16 (ARG1) - - - Purpose: - Returns a vector with all elements equal to the given - value. - Result value: - Each element of the result has the value of ARG1. - - - - - - - - vector signed short vec_splat_s16 (const int); - - - - - VEC_SPLAT_S32 (ARG1) - - - Purpose: - Returns a vector with all elements equal to the given - value. - Result value: - Each element of the result has the value of ARG1. - - - - - - - - vector signed int vec_splat_s32 (const int); - - - - - VEC_SPLAT_U8 (ARG1) - - - Purpose: - Returns a vector with all elements equal to the given - value. - Result value: - The bit pattern of ARG1 is interpreted as an unsigned - value. Each element of the result is given this value. - - - - - - - - vector unsigned char vec_splat_u8 (const int); - - - - - VEC_SPLAT_U16 (ARG1) - - - Purpose: - Returns a vector with all elements equal to the given - value. - Result value: - The bit pattern of ARG1 is interpreted as an unsigned - value. Each element of the result is given this value. - - - - - - - - vector unsigned short vec_splat_u16 (const int); - - - - - VEC_SPLAT_U32 (ARG1) - - - Purpose: - Returns a vector with all elements equal to the given - value. - Result value: - The bit pattern of ARG1 is interpreted as an unsigned - value. Each element of the result is given this value. - - - - - - - - vector unsigned int vec_splat_u32 (const int); - - - - - VEC_SPLATS (ARG1) - - - Purpose: - Returns a vector with the value of each element set to - ARG1. - Result value: - Each element of the result is set to the value of the - scalar input parameter. - - - - - - - - vector signed char vec_splats (signed char); - - - - - - - - vector unsigned char vec_splats (unsigned char); - - - - - - - - vector signed int vec_splats (signed int); - - - - - - - - vector unsigned int vec_splats (unsigned int); - - - - - - - - vector signed __int128 vec_splats (signed __int128); - - - - - - - - vector unsigned __int128 vec_splats (unsigned - __int128); - - - - - - - - vector signed long long vec_splats (signed long - long); - - - - - - - - vector unsigned long long vec_splats (unsigned long - long); - - - - - - - - vector signed short vec_splats (signed short); - - - - - - - - vector unsigned short vec_splats (unsigned short); - - - - - - - - vector double vec_splats (double); - - - - - - - - vector float vec_splats (float); - - - - - POWER ISA 3.0 - Phased in. - - - - vector _Float16 vec_splats (_Float16); - - - - - VEC_SQRT (ARG1) - - - Purpose: - Returns a vector containing the square root of each element - in the given vector. - Result value: - Each element of the result vector is the square root of the - corresponding element of ARG1. - - - - - - - - vector double vec_sqrt (vector double); - - - - - - - - vector float vec_sqrt (vector float); - - - - - VEC_SR (ARG1, ARG2) - - - Purpose: - Performs a logical right shift for each element of a - vector. - Result value: - Each element of the result vector is the result of - logically right shifting the corresponding element of ARG1 by the - number of bits specified by the value of the corresponding - element of ARG2, modulo the number of bits in the element. The - bits that are shifted out are replaced by zeros. - - - - - - - - vector signed char vec_sr (vector signed char, vector - unsigned char); - - - - - - - - vector unsigned char vec_sr (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_sr (vector signed int, vector - unsigned int); - - - - - - - - vector unsigned int vec_sr (vector unsigned int, vector - unsigned int); - - - - - - - - vector signed long long vec_sr (vector signed long long, - vector unsigned long long); - - - - - - - - vector unsigned long long vec_sr (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector signed short vec_sr (vector signed short, vector - unsigned short); - - - - - - - - vector unsigned short vec_sr (vector unsigned short, vector - unsigned short); - - - - - VEC_SRA (ARG1, ARG2) - - - Purpose: - Performs an algebraic right shift for each element of a - vector. - Result value: - Each element of the result vector is the result of - algebraically right shifting the corresponding element of ARG1 by - the number of bits specified by the value of the corresponding - element of ARG2, modulo the number of bits in the element. The - bits that are shifted out are replaced by copies of the - most-significant bit of the element of ARG1. - - - - - - - - vector signed char vec_sra (vector signed char, vector - unsigned char); - - - - - - - - vector unsigned char vec_sra (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_sra (vector signed int, vector - unsigned int); - - - - - - - - vector unsigned int vec_sra (vector unsigned int, vector - unsigned int); - - - - - - - - vector signed long long vec_sra (vector signed long long, - vector unsigned long long); - - - - - - - - vector unsigned long long vec_sra (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector signed short vec_sra (vector signed short, vector - unsigned short); - - - - - - - - vector unsigned short vec_sra (vector unsigned short, - vector unsigned short); - - - - - VEC_SRL (ARG1, ARG2) - - - Purpose: - Right shifts a vector by a given number of bits. - Result value: - The result is the contents of ARG1, shifted right by the - number of bits specified by the 3 least-significant bits of ARG2. - The bits that are shifted out are replaced by zeros. - The shift - count must have been replicated into all bytes of the shift count - specification. - - - - - - - - vector signed char vec_srl (vector signed char, vector - unsigned char); - - - - - - - - vector unsigned char vec_srl (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_srl (vector signed int, vector - unsigned char); - - - - - - - - vector unsigned int vec_srl (vector unsigned int, vector - unsigned char); - - - - - Phased in. - - - - vector signed long long vec_srl (vector signed long long, - vector unsigned char); - - - - - Phased in. - - - - vector unsigned long long vec_srl (vector unsigned long - long, vector unsigned char); - - - - - - - - vector pixel vec_srl (vector pixel, vector unsigned - char); - - - - - - - - vector signed short vec_srl (vector signed short, vector - unsigned char); - - - - - - - - vector unsigned short vec_srl (vector unsigned short, - vector unsigned char); - - - - - VEC_SRO (ARG1, ARG2) - - - Purpose: - Right shifts a vector by a given number of bytes - (octets). - Result value: - The result is the contents of ARG1, shifted right by the - number of bytes specified by bits 121–124 of ARG2. The bits - that are shifted out are replaced by zeros. - - - - - - - - vector signed char vec_sro (vector signed char, vector - signed char); - - - - - - - - vector signed char vec_sro (vector signed char, vector - unsigned char); - - - - - - - - vector unsigned char vec_sro (vector unsigned char, vector - signed char); - - - - - - - - vector unsigned char vec_sro (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_sro (vector signed int, vector signed - char); - - - - - - - - vector signed int vec_sro (vector signed int, vector - unsigned char); - - - - - - - - vector unsigned int vec_sro (vector unsigned int, vector - signed char); - - - - - - - - vector unsigned int vec_sro (vector unsigned int, vector - unsigned char); - - - - - Phased in. - - - - vector signed long long vec_sro (vector signed long long, - vector signed char); - - - - - Phased in. - - - - vector signed long long vec_sro (vector signed long long, - vector unsigned char); - - - - - Phased in. - - - - vector unsigned long long vec_sro (vector unsigned long - long, vector signed char); - - - - - Phased in. - - - - vector unsigned long long vec_sro (vector unsigned long - long, vector unsigned char); - - - - - - - - vector pixel vec_sro (vector pixel, vector signed - char); - - - - - - - - vector pixel vec_sro (vector pixel, vector unsigned - char); - - - - - - - - vector signed short vec_sro (vector signed short, vector - signed char); - - - - - - - - vector signed short vec_sro (vector signed short, vector - unsigned char); - - - - - - - - vector unsigned short vec_sro (vector unsigned short, - vector signed char); - - - - - - - - vector unsigned short vec_sro (vector unsigned short, - vector unsigned char); - - - - - - - - vector float vec_sro (vector float, vector signed - char); - - - - - - - - vector float vec_sro (vector float, vector unsigned - char); - - - - - VEC_SRV (ARG1, ARG2) - POWER ISA 3.0 - - - Purpose: - Right-shifts a vector by a varying number of bits by - element. - Result value: - For each integer 1 - i - 15, let - Xi - be the halfword formed by concatenating - elements i and i + 1 of ARG1. Let - X0 - be the halfword formed by concatenating a - zero byte with element 0 of ARG1. Let - Si - be the value in the three least-significant - bits of element i of ARG2. Then element i of the result vector - contains the value formed from bits 8 – - Si through 15 – - Si. - - - - - POWER ISA 3.0 - - - vector unsigned char vec_srv (vector unsigned char, vector - unsigned char); - - - - - VEC_SUB (ARG1, ARG2) - - - Purpose: - Returns a vector containing the result of subtracting each - element of ARG2 from the corresponding element of ARG1. This - function emulates the operation on long long vectors. - Result value: - The value of each element of the result is the result of - subtracting the value of the corresponding element of ARG2 from - the value of the corresponding element of ARG1. The arithmetic is - modular for integer vectors. - - - - - - - - vector signed char vec_sub (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_sub (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_sub (vector signed int, vector signed - int); - - - - - - - - vector unsigned int vec_sub (vector unsigned int, vector - unsigned int); - - - - - - - - vector signed __int128 vec_sub (vector signed __int128, - vector signed __int128); - - - - - - - - vector unsigned __int128 vec_sub (vector unsigned __int128, - vector unsigned __int128); - - - - - - - - vector signed long long vec_sub (vector signed long long, - vector signed long long); - - - - - - - - vector unsigned long long vec_sub (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector signed short vec_sub (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_sub (vector unsigned short, - vector unsigned short); - - - - - - - - vector double vec_sub (vector double, vector - double); - - - - - - - - vector float vec_sub (vector float, vector float); - - - - - VEC_SUBC (ARG1, ARG2) - - - Purpose: - Returns a vector containing the carry produced by - subtracting each set of corresponding elements of the given - vectors. - Result value: - The value of each element of the result is the value of the - carry produced by subtracting the value of the corresponding - element of ARG2 from the value of the corresponding element of - ARG1. The value is 0 if a borrow occurred, or 1 if no borrow - occurred. - - - - - - - - vector signed int vec_subc (vector signed int, vector - signed int); - - - - - - - - vector unsigned int vec_subc (vector unsigned int, vector - unsigned int); - - - - - - - - vector signed __int128 vec_subc (vector signed __int128, - vector signed __int128); - - - - - - - - vector unsigned __int128 vec_subc (vector unsigned - __int128, vector unsigned __int128); - - - - - VEC_SUBE (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector containing the result of first - elementwise subtracting vector ARG2 from vector ARG1, and then - elementwise adding vector ARG3 to the difference. ARG3 is a - carry vector, with each element having a value of 0 or 1. - Result value: - The value of each element of the result is produced by - subtracting the corresponding element of ARG2 from the - corresponding element of ARG1, and then adding the carry - specified in the corresponding element of ARG3 (1 if there is a - carry, 0 otherwise). - - - - - - - - vector signed int vec_sube (vector signed int, vector - signed int, vector signed int); - - - - - - - - vector unsigned int vec_sube (vector unsigned int, vector - unsigned int, vector unsigned int); - - - - - - - - vector signed __int128 vec_sube (vector signed __int128, - vector signed __int128, vector signed __int128); - - - - - - - - vector unsigned __int128 vec_sube (vector unsigned - __int128, vector unsigned __int128, vector unsigned - __int128); - - - - - VEC_SUBEC (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector containing the carries produced by first - elementwise subtracting vector ARG2 from vector ARG1, and then - elementwise adding vector ARG3 to the difference. ARG3 is a - carry vector, with each element having a value of 0 or 1. - Result value: - The value of each element of the result is the carry - produced by subtracting the corresponding element of ARG2 from - the corresponding element of ARG1, and then adding the carry - specified in the corresponding element of ARG3 (1 if there is a - carry, 0 otherwise). - - - - - - - - vector signed int vec_subec (vector signed int, vector - signed int, vector signed int); - - - - - - - - vector unsigned int vec_subec (vector unsigned int, vector - unsigned int, vector unsigned int); - - - - - - - - vector signed __int128 vec_subec (vector signed __int128, - vector signed __int128, vector signed __int128); - - - - - - - - vector unsigned __int128 vec_subec (vector unsigned - __int128, vector unsigned __int128, vector unsigned - __int128); - - - - - VEC_SUBS (ARG1, ARG2) - - - Purpose: - Returns a vector containing the saturated differences of - each set of corresponding elements of the given vectors. - Result value: - The value of each element of the result is the saturated - result of subtracting the value of the corresponding element of - ARG2 from the value of the corresponding element of ARG1. - - - - - - - - vector signed char vec_subs (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_subs (vector unsigned char, vector - unsigned char); - - - - - - - - vector signed int vec_subs (vector signed int, vector - signed int); - - - - - - - - vector unsigned int vec_subs (vector unsigned int, vector - unsigned int); - - - - - - - - vector signed short vec_subs (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_subs (vector unsigned short, - vector unsigned short); - - - - - VEC_SUM2S (ARG1, ARG2) - - - Purpose: - Returns a vector containing the results of performing a - sum-across-doublewords vector operation on the given - vectors. - Result value: - The first and third element of the result are 0. The second - element of the result contains the saturated sum of the first and - second elements of ARG1 and the second element of ARG2. The - fourth element of the result contains the saturated sum of the - third and fourth elements of ARG1 and the fourth element of - ARG2. - - - - - - - - vector signed int vec_sum2s (vector signed int, vector - signed int); - - - - - VEC_SUM4S (ARG1, ARG2) - - - Purpose: - Returns a vector containing the results of performing a - sum-across-words vector operation on the given vectors. - Result value: - Assume that the elements of each vector are numbered - beginning with 0. If ARG1 is a vector signed char vector or a - vector unsigned char vector, then let m be 4. Otherwise, let m be - 2. For each element n of the result vector, the value is obtained - by adding elements mn through mn + m – 1 of ARG1 and element n of - ARG2 using saturated addition. - - - - - - - - vector signed int vec_sum4s (vector signed char, vector - signed int); - - - - - - - - vector signed int vec_sum4s (vector signed short, vector - signed int); - - - - - - - - vector unsigned int vec_sum4s (vector unsigned char, vector - unsigned int); - - - - - VEC_SUMS (ARG1, ARG2) - - - Purpose: - Returns a vector containing the results of performing a sum - across vector operation on the given vectors. - Result value: - The first three elements of the result are 0. The fourth - element is the saturated sum of all the elements of ARG1 and the - fourth element of ARG2. - - - - - - - - vector signed int vec_sums (vector signed int, vector - signed int); - - - - - VEC_TEST_DATA_CLASS (ARG1, ARG2) - POWER ISA 3.0 - - - Purpose: - Determines the data class for each floating-point - element. - Result value: - Each element is set to all ones if the corresponding - element of ARG1 matches one of the possible data types selected - by ARG2. If not, each element is set to all zeros. ARG2 can - select one of the data types defined in - . - - - - - POWER ISA 3.0 - - - vector bool int vec_test_data_class (vector float, const - int); - - - - - POWER ISA 3.0 - - - vector bool long long vec_test_data_class (vector double, - const int); - - - - - VEC_TRUNC (ARG1) - - - Purpose: - Returns a vector containing the truncated values of the - corresponding elements of the given vector. - Result value: - Each element of the result contains the value of the - corresponding element of ARG1, truncated to an integral - value. - - - - - - - - vector double vec_trunc (vector double); - - - - - - - - vector float vec_trunc (vector float); - - - - - VEC_UNPACKH (ARG1) - - - Purpose: - Unpacks the most-significant (“high”) half of a vector into - a vector with larger elements. - Result value: - If ARG1 is an integer vector, the value of each element of - the result is the value of the corresponding element of the - most-significant half of ARG1. - If ARG1 is a floating-point vector, the value of each - element of the result is the value of the corresponding element - of the most-significant half of ARG1, widened to the result - precision. - If ARG1 is a pixel vector, the value of each element of the - result is taken from the corresponding element of the - most-significant half of ARG1 as follows: - - - All bits in the first byte of the element of the result - are set to the value of the first bit of the element of - ARG1. - - - The least-significant 5 bits of the second byte of the - element of the result are set to the value of the next 5 bits - in the element of ARG1. - - - The least-significant 5 bits of the third byte of the - element of the result are set to the value of the next 5 bits - in the element of ARG1. - - - The least-significant 5 bits of the fourth byte of the - element of the result are set to the value of the next 5 bits - in the element of ARG1. - - - - - - - - - - vector bool int vec_unpackh (vector bool short); - - - - - - - - vector signed int vec_unpackh (vector signed short); - - - - - - - - vector unsigned int vec_unpackh (vector pixel); - - - - - - - - vector bool long long vec_unpackh (vector bool int); - - - - - - - - vector signed long long vec_unpackh (vector signed - int); - - - - - - - - vector bool short vec_unpackh (vector bool char); - - - - - - - - vector signed short vec_unpackh (vector signed - char); - - - - - Phased in. - - - - vector double vec_unpackh (vector float); - - - - - POWER ISA 3.0 - Phased in. - - - - vector float vec_unpackh (vector _Float16); - - - - - VEC_UNPACKL (ARG1) - - - Purpose: - Unpacks the least-significant (“low”) half of a vector into - a vector with larger elements. - Result value: - If ARG1 is an integer vector, the value of each element of - the result is the value of the corresponding element of the - least-significant half of ARG1. - If ARG1 is a floating-point vector, the value of each - element of the result is the value of the corresponding element - of the least-significant half of ARG, widened to the result - precision. - If ARG1 is a pixel vector, the value of each element of the - result is taken from the corresponding element of the - least-significant half of ARG1 as follows: - - - All bits in the first byte of the element of the result - are set to the value of the first bit of the element of - ARG1. - - - The least-significant 5 bits of the second byte of the - element of the result are set to the value of the next 5 bits - in the element of ARG1. - - - The least-significant 5 bits of the third byte of the - element of the result are set to the value of the next 5 bits - in the element of ARG1. - - - The least-significant 5 bits of the fourth byte of the - element of the result are set to the value of the next 5 bits - in the element of ARG1. - - - - - - - - - - vector bool int vec_unpackl (vector bool short); - - - - - - - - vector signed int vec_unpackl (vector signed short); - - - - - - - - vector unsigned int vec_unpackl (vector pixel); - - - - - - - - vector bool long long vec_unpackl (vector bool int); - - - - - - - - vector signed long long vec_unpackl (vector signed - int); - - - - - - - - vector bool short vec_unpackl (vector bool char); - - - - - - - - vector signed short vec_unpackl (vector signed - char); - - - - - Phased in. - - - - vector double vec_unpackl (vector float); - - - - - POWER ISA 3.0 - Phased in. - - - - vector float vec_unpackl (vector _Float16); - - - - - VEC_UNSIGNED (ARG1) - - - Purpose: - Converts a vector of double-precision numbers to a vector - of unsigned integers. - Result value: - Target elements are obtained by - truncating - the respective - source elements to unsigned integers. - - - - - - - - vector unsigned int vec_unsigned (vector float); - - - - - - - - vector unsigned long long vec_unsigned (vector - double); - - - - - VEC_UNSIGNED2 (ARG1, ARG2) - - - Purpose: - Converts a vector of double-precision numbers to a vector - of unsigned integers. - Result value: - Target elements are obtained by - truncating - the source - elements to the unsigned integers as follows: - - - Target elements 0 and 1 from source 0 - - - Target elements 2 and 3 from source 1 - - - - - - - - - - vector unsigned int vec_unsigned2 (vector double, vector - double); - - - - - VEC_UNSIGNEDE (ARG1) - - - Purpose: - Converts an input vector to a vector of unsigned - integers. - Result value: - The even target elements are obtained by - truncating - the - source elements to unsigned integers as follows: - Target elements 0 and 2 contain the converted values of the - input vector. - - - - - - - - vector unsigned int vec_unsignede (vector double); - - - - - VEC_UNSIGNEDO (ARG1) - - - Purpose: - Converts an input vector to a vector of unsigned - integers. - Result value: - The odd target elements are obtained by - truncating - the - source elements to unsigned integers as follows: - Target elements 1 and 3 contain the converted values of the - input vector. - - - - - - - - vector unsigned int vec_unsignedo (vector double); - - - - - VEC_XL (ARG1, ARG2) - - - Purpose: - Loads a 16-byte vector from the memory address specified by - the displacement and the pointer. - Result value: - This function adds the displacement and the pointer R-value - to obtain the address for the load operation. - - For languages that support built-in - methods for pointer dereferencing, such as the C/C++ pointer - dereference * and array access [ ] operators, use of the - native operators is encouraged and use of the vec_xl - intrinsic is discouraged. - - - - - - - - - vector signed char vec_xl (signed long long, signed char - *); - - - - - - - - vector unsigned char vec_xl (signed long long, unsigned char - *); - - - - - - - - vector signed int vec_xl (signed long long, signed int *); - - - - - - - - vector unsigned int vec_xl (signed long long, unsigned int - *); - - - - - - - - vector signed __int128 vec_xl (signed long long, signed __int128 - *); - - - - - - - - vector unsigned __int128 vec_xl (signed long long, unsigned - __int128 *); - - - - - - - - vector signed signed long long vec_xl (signed long long, signed long long - *); - - - - - - - - vector unsigned long long vec_xl (signed long long, unsigned long - long *); - - - - - - - - vector signed short vec_xl (signed long long, signed short - *); - - - - - - - - vector unsigned short vec_xl (signed long long, unsigned short - *); - - - - - - - - vector double vec_xl (signed long long, double *); - - - - - - - - vector float vec_xl (signed long long, float *); - - - - - POWER ISA 3.0 - Phased in. - - - - vector _Float16 vec_xl (signed long long, _Float16 *); - - - - - VEC_XL_BE (ARG1. ARG2) - - - Purpose: - In little-endian environments, loads the elements of the - 16-byte vector ARG1 starting with the highest-numbered element at - the memory address specified by the displacement ARG1 and the - pointer ARG2. In big-endian environments, this operator performs - the same operation as VEC_XL. - Result value: - In little-endian mode, loads the elements of the vector in - sequential order, with the highest-numbered element loaded from - the lowest data address and the lowest-numbered element of the - vector at the highest address. All elements are loaded in - little-endian data format. - This function adds the displacement and the pointer R-value - to obtain the address for the load operation. It does not - truncate the affected address to a multiple of 16 bytes. - - - - - - - - vector signed char vec_xl_be (signed long long, signed char - *); - - - - - - - - vector unsigned char vec_xl_be (signed long long, unsigned char - *); - - - - - - - - vector signed int vec_xl_be (signed long long, signed int - *); - - - - - - - - vector unsigned int vec_xl_be (signed long long, unsigned int - *); - - - - - - - - vector signed __int128 vec_xl_be (signed long long, signed - __int128 *); - - - - - - - - vector unsigned __int128 vec_xl_be (signed long long, unsigned - __int128 *); - - - - - - - - vector signed long long vec_xl_be (signed long long, signed long - long *); - - - - - - - - vector unsigned long long vec_xl_be (signed long long, unsigned - long long *); - - - - - - - - vector signed short vec_xl_be (signed long long, signed short - *); - - - - - - - - vector unsigned short vec_xl_be (signed long long, unsigned short - *); - - - - - - - - vector double vec_xl_be (signed long long, double *); - - - - - - - - vector float vec_xl_be (signed long long, float *); - - - - - POWER ISA 3.0 - Phased in. - - - - vector _Float16 vec_xl_be (signed long long, _Float16 *); - - - - - VEC_XL_LEN (ARG1, ARG2) - POWER ISA 3.0 - - - Purpose: - Loads a vector of a specified byte length. - Result value: - Loads the number of bytes specified by ARG2 from the - address specified in ARG1. Initializes elements in order from the - byte stream (as defined by the endianness of the operating - environment). Any bytes of elements that cannot be initialized - from the number of loaded bytes have a zero value. - At least 0 and at most 16 bytes will be loaded. The length - is specified by the least-significant byte of ARG2, as min (mod - (ARG2, 256), 16). The behavior is undefined if the length - argument is outside of the range 0–255, or if it is not a - multiple of the vector element size. - - - - - POWER ISA 3.0 - - - vector signed char vec_xl_len (signed char *, - size_t); - - - - - POWER ISA 3.0 - - - vector unsigned char vec_xl_len (unsigned char *, - size_t); - - - - - POWER ISA 3.0 - - - vector signed int vec_xl_len (signed int *, size_t); - - - - - POWER ISA 3.0 - - - vector unsigned int vec_xl_len (unsigned int *, - size_t); - - - - - POWER ISA 3.0 - - - vector signed __int128 vec_xl_len (signed __int128 *, - size_t); - - - - - POWER ISA 3.0 - - - vector unsigned __int128 vec_xl_len (unsigned __int128 *, - size_t); - - - - - POWER ISA 3.0 - - - vector signed long long vec_xl_len (signed long long *, - size_t); - - - - - POWER ISA 3.0 - - - vector unsigned long long vec_xl_len (unsigned long long *, - size_t); - - - - - POWER ISA 3.0 - - - vector signed short vec_xl_len (signed short *, - size_t); - - - - - POWER ISA 3.0 - - - vector unsigned short vec_xl_len (unsigned short *, - size_t); - - - - - POWER ISA 3.0 - - - vector double vec_xl_len (double *, size_t); - - - - - POWER ISA 3.0 - - - vector float vec_xl_len (float *, size_t); - - - - - POWER ISA 3.0 - - - vector _Float16 vec_xl_len (_Float16 *, size_t); - - - - - VEC_XL_LEN_R (ARG1, ARG2) - POWER ISA 3.0 - - - Purpose - Loads a vector of a specified byte length, - right-justified. - Result value: - Loads the number of bytes specified by ARG2 from the - address specified in ARG1, right justified with the first byte to - the left and the last to the right. Initializes elements in order - from the byte stream (as defined by the endianness of the - operating environment). Any bytes of elements that cannot be - initialized from the number of loaded bytes have a zero - value. - At least 0 and at most 16 bytes will be loaded. The length - is specified by the least-significant byte of ARG2, as min (mod - (ARG2, 256), 16). The behavior is undefined if the length - argument is outside of the range 0–255, or if it is not a - multiple of the vector element size. - - - - - POWER ISA 3.0 - - - vector unsigned char vec_xl_len_r (unsigned char *, - size_t); - - - - - VEC_XOR (ARG1, ARG2) - - - Purpose: - Performs a bitwise XOR of the given vectors. - Result value: - The result is the bitwise XOR of ARG1 and ARG2. - - - - - - - - vector bool char vec_xor (vector bool char, vector bool - char); - - - - - - - - vector signed char vec_xor (vector signed char, vector - signed char); - - - - - - - - vector unsigned char vec_xor (vector unsigned char, vector - unsigned char); - - - - - - - - vector bool int vec_xor (vector bool int, vector bool - int); - - - - - - - - vector signed int vec_xor (vector signed int, vector signed - int); - - - - - - - - vector unsigned int vec_xor (vector unsigned int, vector - unsigned int); - - - - - - - - vector bool long long vec_xor (vector bool long long, - vector bool long long); - - - - - Phased in. - - - - vector signed long long vec_xor (vector signed long long, - vector signed long long); - - - - - Phased in. - - - - vector unsigned long long vec_xor (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector bool short vec_xor (vector bool short, vector bool - short); - - - - - - - - vector signed short vec_xor (vector signed short, vector - signed short); - - - - - - - - vector unsigned short vec_xor (vector unsigned short, - vector unsigned short); - - - - - - - - vector double vec_xor (vector double, vector - double); - - - - - - - - vector float vec_xor (vector float, vector float); - - - - - VEC_XST (ARG1, ARG2, ARG3) - - - Purpose - Stores the elements of the 16-byte vector to the effective - address obtained by adding the displacement provided in the - address provided. - Result value: - Stores the provided vector in memory. - - For languages that support built-in - methods for pointer dereferencing, such as the C/C++ pointer - dereference * and array access [ ] operators, use of the - native operators is encouraged and use of the vec_xl - intrinsic is discouraged. - - - - - - - - - void vec_xst (vector signed char, signed long long, signed char - *); - - - - - - - - void vec_xst (vector unsigned char, signed long long, unsigned - char *); - - - - - - - - void vec_xst (vector signed int, signed long long, signed int - *); - - - - - - - - void vec_xst (vector unsigned int, signed long long, unsigned int - *); - - - - - - - - void vec_xst (vector signed __int128, signed long long, signed - __int128 *); - - - - - - - - void vec_xst (vector unsigned __int128, signed long long, unsigned - __int128 *); - - - - - - - - void vec_xst (vector signed long long, signed long long, signed - long long *); - - - - - - - - void vec_xst (vector unsigned long long, signed long long, - unsigned long long *); - - - - - - - - void vec_xst (vector signed short, signed long long, signed short - *); - - - - - - - - void vec_xst (vector unsigned short, signed long long, unsigned - short *); - - - - - - - - void vec_xst (vector double, signed long long, double *); - - - - - - - - void vec_xst (vector float, signed long long, float *); - - - - - POWER ISA 3.0 - Phased in. - - - - void vec_xst (vector _Float16, signed long long, _Float16 - *); - - - - - VEC_XST_BE (ARG1, ARG2, ARG3) - - - Purpose: - In little-endian environments, stores the elements of the - 16-byte vector ARG1 starting with the highest-numbered element at - the memory address specified by the displacement ARG1 and the - pointer ARG2. In big-endian environments, this operator performs - the same operation as VEC_XST. - Result value: - In little-endian mode, stores the elements of the vector in - sequential order, with the highest-numbered element stored at the - lowest data address and the lowest-numbered element of the vector - at the highest address. All elements are stored in little-endian - data format. - This function adds the displacement and the pointer R-value - to obtain the address for the store operation. It does not - truncate the affected address to a multiple of 16 bytes. - - - - - - - - void vec_xst_be (vector signed char, signed long long, signed char - *); - - - - - - - - void vec_xst_be (vector unsigned char, signed long long, unsigned - char *); - - - - - - - - void vec_xst_be (vector signed int, signed long long, signed int - *); - - - - - - - - void vec_xst_be (vector unsigned int, signed long long, unsigned - int *); - - - - - - - - void vec_xst_be (vector signed __int128, signed long long, signed - __int128 *); - - - - - - - - void vec_xst_be (vector unsigned __int128, signed long long, - unsigned __int128 *); - - - - - - - - void vec_xst_be (vector signed long long, signed long long, signed - long long *); - - - - - - - - void vec_xst_be (vector unsigned long long, signed long long, - unsigned long long *); - - - - - - - - void vec_xst_be (vector signed short, signed long long, signed - short *); - - - - - - - - void vec_xst_be (vector unsigned short, signed long long, unsigned - short *); - - - - - - - - void vec_xst_be (vector double, signed long long, double - *); - - - - - - - - void vec_xst_be (vector float, signed long long, float *); - - - - - POWER ISA 3.0 - Phased in. - - - - void vec_xst_be (vector _Float16, signed long long, _Float16 - *); - - - - - VEC_XST_LEN (ARG1, ARG2, ARG3) - POWER ISA 3.0 - - - Purpose: - Stores a vector of a specified byte length. - Result value: - Stores the number of bytes specified by ARG3 of the vector - ARG1 to the address specified in ARG2. The bytes are obtained - starting from the lowest-numbered byte of the lowest-numbered - element (as defined by the endianness of the operating - environment). All bytes of an element are accessed before - proceeding to the next higher element. - At least 0 and at most 16 bytes will be stored. The length - is specified by the least-significant byte of ARG3, as min (mod - (ARG3, 256), 16). The behavior is undefined if the length - argument is outside of the range 0–255, or if it is not a - multiple of the vector element size. - - - - - POWER ISA 3.0 - - - void vec_xst_len (vector signed char, signed char *, - size_t); - - - - - POWER ISA 3.0 - - - void vec_xst_len (vector unsigned char, unsigned char *, - size_t); - - - - - POWER ISA 3.0 - - - void vec_xst_len (vector signed int, signed int *, - size_t); - - - - - POWER ISA 3.0 - - - void vec_xst_len (vector unsigned int, unsigned int *, - size_t); - - - - - POWER ISA 3.0 - - - void vec_xst_len (vector signed __int128, signed __int128 - *, size_t); - - - - - POWER ISA 3.0 - - - void vec_xst_len (vector unsigned __int128, unsigned - __int128 *, size_t); - - - - - POWER ISA 3.0 - - - void vec_xst_len (vector signed long long, signed long long - *, size_t); - - - - - POWER ISA 3.0 - - - void vec_xst_len (vector unsigned long long, unsigned long - long *, size_t); - - - - - POWER ISA 3.0 - - - void vec_xst_len (vector signed short, signed short *, - size_t); - - - - - POWER ISA 3.0 - - - void vec_xst_len (vector unsigned short, unsigned short *, - size_t); - - - - - POWER ISA 3.0 - - - void vec_xst_len (vector double, double *, size_t); - - - - - POWER ISA 3.0 - - - void vec_xst_len (vector float, float *, size_t); - - - - - POWER ISA 3.0 - - - void vec_xst_len (vector _Float16, _Float16 *, - size_t); - - - - - VEC_XST_LEN_R (ARG1, ARG2, ARG3) - POWER ISA 3.0 - - - Purpose: - Stores a right-justified vector of a specified byte - length. - Result value: - Stores the number of bytes specified by ARG3 of the - right-justified vector ARG1 to the address specified by - ARG2. - At least 0 and at most 16 bytes will be stored. The length - is specified by the least-significant byte of ARG3, as min (mod - (ARG2, 256), 16). The behavior is undefined if the length - argument is outside of the range 0–255, or if it is not a - multiple of the vector element size. - - - - - POWER ISA 3.0 - - - void vec_xst_len_r (vector unsigned char, unsigned char *, - size_t); - - - - -
-
-
- Built-In Vector Predicate Functions - - defines vector predicates that - compare all elements of two vectors and return 1 for TRUE or 0 for FALSE if - any or all of the elements meet the specified condition. - As in - , functions are listed - alphabetically; supported prototypes are provided for each function. - Prototypes are grouped by integer and floating-point types. Within each - group, types are sorted alphabetically, first by type name and then by - modifier. Prototypes are first sorted by the built-in result type, which is - the output argument. Then, prototypes are sorted by the input arguments; - ARG1, ARG2, and ARG3; in order. See - for the format of the - prototypes. - - - Built-in Vector Predicate Functions - - - - - - - - Group - - - - - Description of Built-In Vector Predicate - Functions (with Prototypes) - - - - - - - - VEC_ALL_EQ (ARG1, ARG2) - - - Purpose: - Tests whether all sets of corresponding elements of the - given vectors are equal. - Result value: - The result is 1 if each element of ARG1 is equal to the - corresponding element of ARG2. Otherwise, the result is 0. - - - - - - - - int vec_all_eq (vector bool char, vector bool char); - - - - - - - - int vec_all_eq (vector signed char, vector signed - char); - - - - - - - - int vec_all_eq (vector unsigned char, vector unsigned - char); - - - - - - - - int vec_all_eq (vector bool int, vector bool int); - - - - - - - - int vec_all_eq (vector signed int, vector signed - int); - - - - - - - - int vec_all_eq (vector unsigned int, vector unsigned - int); - - - - - - - - int vec_all_eq (vector bool long long, vector bool long - long); - - - - - - - - int vec_all_eq (vector signed long long, vector signed long - long); - - - - - - - - int vec_all_eq (vector unsigned long long, vector unsigned - long long); - - - - - - - - int vec_all_eq (vector pixel, vector pixel); - - - - - - - - int vec_all_eq (vector bool short, vector bool - short); - - - - - - - - int vec_all_eq (vector signed short, vector signed - short); - - - - - - - - int vec_all_eq (vector unsigned short, vector unsigned - short); - - - - - - - - int vec_all_eq (vector double, vector double); - - - - - - - - int vec_all_eq (vector float, vector float); - - - - - VEC_ALL_GE (ARG1, ARG2) - - - Purpose: - Tests whether all elements of the first argument are - greater than or equal to the corresponding elements of the second - argument. - Result value: - The result is 1 if all elements of ARG1 are greater than or - equal to the corresponding elements of ARG2. Otherwise, the - result is 0. - - - - - - - - int vec_all_ge (vector signed char, vector signed - char); - - - - - - - - int vec_all_ge (vector unsigned char, vector unsigned - char); - - - - - - - - int vec_all_ge (vector signed int, vector signed - int); - - - - - - - - int vec_all_ge (vector unsigned int, vector unsigned - int); - - - - - - - - int vec_all_ge (vector signed long long, vector signed long - long); - - - - - - - - int vec_all_ge (vector unsigned long long, vector unsigned - long long); - - - - - - - - int vec_all_ge (vector signed short, vector signed - short); - - - - - - - - int vec_all_ge (vector unsigned short, vector unsigned - short); - - - - - - - - int vec_all_ge (vector double, vector double); - - - - - - - - int vec_all_ge (vector float, vector float); - - - - - VEC_ALL_GT (ARG1, ARG2) - - - Purpose: - Tests whether all elements of the first argument are - greater than the corresponding elements of the second - argument. - Result value: - The result is 1 if all elements of ARG1 are greater than - the corresponding elements of ARG2. Otherwise, the result is - 0. - - - - - - - - int vec_all_gt (vector signed char, vector signed - char); - - - - - - - - int vec_all_gt (vector unsigned char, vector unsigned - char); - - - - - - - - int vec_all_gt (vector signed int, vector signed - int); - - - - - - - - int vec_all_gt (vector unsigned int, vector unsigned - int); - - - - - - - - int vec_all_gt (vector signed long long, vector signed long - long); - - - - - - - - int vec_all_gt (vector unsigned long long, vector unsigned - long long); - - - - - - - - int vec_all_gt (vector signed short, vector signed - short); - - - - - - - - int vec_all_gt (vector unsigned short, vector unsigned - short); - - - - - - - - int vec_all_gt (vector double, vector double); - - - - - - - - int vec_all_gt (vector float, vector float); - - - - - VEC_ALL_IN (ARG1, ARG2) - - - Purpose: - Tests whether each element of a given vector is within a - given range. - Result value: - The result is 1 if all elements of ARG1 have values less - than or equal to the value of the corresponding element of ARG2, - and greater than or equal to the negative of the value of the - corresponding element of ARG2. Otherwise, the result is 0. - - - - - - - - int vec_all_in (vector float, vector float); - - - - - VEC_ALL_LE (ARG1, ARG2) - - - Purpose: - Tests whether all elements of the first argument are less - than or equal to the corresponding elements of the second - argument. - Result value: - The result is 1 if all elements of ARG1 are less than or - equal to the corresponding elements of ARG2. Otherwise, the - result is 0. - - - - - - - - int vec_all_le (vector signed char, vector signed - char); - - - - - - - - int vec_all_le (vector unsigned char, vector unsigned - char); - - - - - - - - int vec_all_le (vector signed int, vector signed - int); - - - - - - - - int vec_all_le (vector unsigned int, vector unsigned - int); - - - - - - - - int vec_all_le (vector signed long long, vector signed long - long); - - - - - - - - int vec_all_le (vector unsigned long long, vector unsigned - long long); - - - - - - - - int vec_all_le (vector signed short, vector signed - short); - - - - - - - - int vec_all_le (vector unsigned short, vector unsigned - short); - - - - - - - - int vec_all_le (vector double, vector double); - - - - - - - - int vec_all_le (vector float, vector float); - - - - - VEC_ALL_LT (ARG1, ARG2) - - - Purpose: - Tests whether all elements of the first argument are less - than the corresponding elements of the second argument. - Result value: - The result is 1 if all elements of ARG1 are less than the - corresponding elements of ARG2. Otherwise, the result is - 0. - - - - - - - - int vec_all_lt (vector signed char, vector signed - char); - - - - - - - - int vec_all_lt (vector unsigned char, vector unsigned - char); - - - - - - - - int vec_all_lt (vector signed int, vector signed - int); - - - - - - - - int vec_all_lt (vector unsigned int, vector unsigned - int); - - - - - - - - int vec_all_lt (vector signed long long, vector signed long - long); - - - - - Phased in.This optional function is being - phased in, and it might not be available on all implementations. - Phased-in interfaces are optional for the current generation of - compliant systems. - - - int vec_all_lt (vector unsigned long long, vector unsigned - long long); - - - - - - - - int vec_all_lt (vector signed short, vector signed - short); - - - - - - - - int vec_all_lt (vector unsigned short, vector unsigned - short); - - - - - - - - int vec_all_lt (vector double, vector double); - - - - - - - - int vec_all_lt (vector float, vector float); - - - - - VEC_ALL_NAN (ARG1) - - - Purpose: - Tests whether each element of the given vector is a - not-a-number (NaN). - Result value: - The result is 1 if each element of ARG1 is a NaN. - Otherwise, the result is 0. - - - - - - - - int vec_all_nan (vector double); - - - - - - - - int vec_all_nan (vector float); - - - - - VEC_ALL_NE (ARG1, ARG2) - - - Purpose: - Tests whether all sets of corresponding elements of the - given vectors are not equal. - Result value: - The result is 1 if each element of ARG1 is not equal to the - corresponding element of ARG2. Otherwise, the result is 0. - - - - - - - - int vec_all_ne (vector bool char, vector bool char); - - - - - - - - int vec_all_ne (vector signed char, vector signed - char); - - - - - - - - int vec_all_ne (vector unsigned char, vector unsigned - char); - - - - - - - - int vec_all_ne (vector bool int, vector bool int); - - - - - - - - int vec_all_ne (vector signed int, vector signed - int); - - - - - - - - int vec_all_ne (vector unsigned int, vector unsigned - int); - - - - - - - - int vec_all_ne (vector bool long long, vector bool long - long); - - - - - - - - int vec_all_ne (vector signed long long, vector signed long - long); - - - - - - - - int vec_all_ne (vector unsigned long long, vector unsigned - long long); - - - - - - - - int vec_all_ne (vector pixel, vector pixel); - - - - - - - - int vec_all_ne (vector bool short, vector bool - short); - - - - - - - - int vec_all_ne (vector signed short, vector signed - short); - - - - - - - - int vec_all_ne (vector unsigned short, vector unsigned - short); - - - - - - - - int vec_all_ne (vector double, vector double); - - - - - - - - int vec_all_ne (vector float, vector float); - - - - - VEC_ALL_NGE (ARG1, ARG2) - - - Purpose: - Tests whether each element of the first argument is not - greater than or equal to the corresponding element of the second - argument. - Result value: - The result is 1 if each element of ARG1 is not greater than - or equal to the corresponding element of ARG2. Otherwise, the - result is 0. - - - - - - - - int vec_all_nge (vector double, vector double); - - - - - - - - int vec_all_nge (vector float, vector float); - - - - - VEC_ALL_NGT (ARG1, ARG2) - - - Purpose: - Tests whether each element of the first argument is not - greater than the corresponding element of the second - argument. - Result value: - The result is 1 if each element of ARG1 is not greater than - the corresponding element of ARG2. Otherwise, the result is - 0. - - - - - - - - int vec_all_ngt (vector double, vector double); - - - - - - - - int vec_all_ngt (vector float, vector float); - - - - - VEC_ALL_NLE (ARG1, ARG2) - - - Purpose: - Tests whether each element of the first argument is not - less than or equal to the corresponding element of the second - argument. - Result value: - The result is 1 if each element of ARG1 is not less than or - equal to the corresponding element of ARG2. Otherwise, the result - is 0. - - - - - - - - int vec_all_nle (vector double, vector double); - - - - - - - - int vec_all_nle (vector float, vector float); - - - - - VEC_ALL_NLT (ARG1, ARG2) - - - Purpose: - Tests whether each element of the first argument is not - less than the corresponding element of the second - argument. - Result value: - The result is 1 if each element of ARG1 is not less than - the corresponding element of ARG2. Otherwise, the result is - 0. - - - - - - - - int vec_all_nlt (vector double, vector double); - - - - - - - - int vec_all_nlt (vector float, vector float); - - - - - VEC_ALL_NUMERIC (ARG1) - - - Purpose: - Tests whether each element of the given vector is numeric - (not a NaN). - Result value: - The result is 1 if each element of ARG1 is numeric (not a - NaN). Otherwise, the result is 0. - - - - - - - - int vec_all_numeric (vector double); - - - - - - - - int vec_all_numeric (vector float); - - - - - VEC_ANY_EQ (ARG1, ARG2) - - - Purpose: - Tests whether any set of corresponding elements of the - given vectors is equal. - Result value: - The result is 1 if any element of ARG1 is equal to the - corresponding element of ARG2. Otherwise, the result is 0. - - - - - - - - int vec_any_eq (vector bool char, vector bool char); - - - - - - - - int vec_any_eq (vector signed char, vector signed - char); - - - - - - - - int vec_any_eq (vector unsigned char, vector unsigned - char); - - - - - - - - int vec_any_eq (vector bool int, vector bool int); - - - - - - - - int vec_any_eq (vector signed int, vector signed - int); - - - - - - - - int vec_any_eq (vector unsigned int, vector unsigned - int); - - - - - - - - int vec_any_eq (vector bool long long, vector bool long - long); - - - - - - - - int vec_any_eq (vector signed long long, vector signed long - long); - - - - - - - - int vec_any_eq (vector unsigned long long, vector unsigned - long long); - - - - - - - - int vec_any_eq (vector pixel, vector pixel); - - - - - - - - int vec_any_eq (vector bool short, vector bool - short); - - - - - - - - int vec_any_eq (vector signed short, vector signed - short); - - - - - - - - int vec_any_eq (vector unsigned short, vector unsigned - short); - - - - - - - - int vec_any_eq (vector double, vector double); - - - - - - - - int vec_any_eq (vector float, vector float); - - - - - VEC_ANY_GE (ARG1, ARG2) - - - Purpose: - Tests whether any element of the first argument is greater - than or equal to the corresponding element of the second - argument. - Result value: - The result is 1 if any element of ARG1 is greater than or - equal to the corresponding element of ARG2. Otherwise, the result - is 0. - - - - - - - - int vec_any_ge (vector signed char, vector signed - char); - - - - - - - - int vec_any_ge (vector unsigned char, vector unsigned - char); - - - - - - - - int vec_any_ge (vector signed int, vector signed - int); - - - - - - - - int vec_any_ge (vector unsigned int, vector unsigned - int); - - - - - - - - int vec_any_ge (vector signed long long, vector signed long - long); - - - - - - - - int vec_any_ge (vector unsigned long long, vector unsigned - long long); - - - - - - - - int vec_any_ge (vector signed short, vector signed - short); - - - - - - - - int vec_any_ge (vector unsigned short, vector unsigned - short); - - - - - - - - int vec_any_ge (vector double, vector double); - - - - - - - - int vec_any_ge (vector float, vector float); - - - - - VEC_ANY_GT (ARG1, ARG2) - - - Purpose: - Tests whether any element of the first argument is greater - than the corresponding element of the second argument. - Result value: - The result is 1 if any element of ARG1 is greater than the - corresponding element of ARG2. Otherwise, the result is 0. - - - - - - - - int vec_any_gt (vector signed char, vector signed - char); - - - - - - - - int vec_any_gt (vector unsigned char, vector unsigned - char); - - - - - - - - int vec_any_gt (vector signed int, vector signed - int); - - - - - - - - int vec_any_gt (vector unsigned int, vector unsigned - int); - - - - - - - - int vec_any_gt (vector signed long long, vector signed long - long); - - - - - - - - int vec_any_gt (vector unsigned long long, vector unsigned - long long); - - - - - - - - int vec_any_gt (vector signed short, vector signed - short); - - - - - - - - int vec_any_gt (vector unsigned short, vector unsigned - short); - - - - - - - - int vec_any_gt (vector double, vector double); - - - - - - - - int vec_any_gt (vector float, vector float); - - - - - VEC_ANY_LE (ARG1, ARG2) - - - Purpose: - Tests whether any element of the first argument is less - than or equal to the corresponding element of the second - argument. - Result value: - The result is 1 if any element of ARG1 is less than or - equal to the corresponding element of ARG2. Otherwise, the result - is 0. - - - - - - - - int vec_any_le (vector signed char, vector signed - char); - - - - - - - - int vec_any_le (vector unsigned char, vector unsigned - char); - - - - - - - - int vec_any_le (vector signed int, vector signed - int); - - - - - - - - int vec_any_le (vector unsigned int, vector unsigned - int); - - - - - - - - int vec_any_le (vector signed long long, vector signed long - long); - - - - - - - - int vec_any_le (vector unsigned long long, vector unsigned - long long); - - - - - - - - int vec_any_le (vector signed short, vector signed - short); - - - - - - - - int vec_any_le (vector unsigned short, vector unsigned - short); - - - - - - - - int vec_any_le (vector double, vector double); - - - - - - - - int vec_any_le (vector float, vector float); - - - - - VEC_ANY_LT (ARG1, ARG2) - - - Purpose: - Tests whether any element of the first argument is less - than the corresponding element of the second argument. - Result value: - The result is 1 if any element of ARG1 is less than the - corresponding element of ARG2. Otherwise, the result is 0. - - - - - - - - int vec_any_lt (vector signed char, vector signed - char); - - - - - - - - int vec_any_lt (vector unsigned char, vector unsigned - char); - - - - - - - - int vec_any_lt (vector signed int, vector signed - int); - - - - - - - - int vec_any_lt (vector unsigned int, vector unsigned - int); - - - - - - - - int vec_any_lt (vector signed long long, vector signed long - long); - - - - - - - - int vec_any_lt (vector unsigned long long, vector unsigned - long long); - - - - - - - - int vec_any_lt (vector signed short, vector signed - short); - - - - - - - - int vec_any_lt (vector unsigned short, vector unsigned - short); - - - - - - - - int vec_any_lt (vector double, vector double); - - - - - - - - int vec_any_lt (vector float, vector float); - - - - - VEC_ANY_NAN (ARG1) - - - Purpose: - Tests whether any element of the given vector is a - NaN. - Result value: - The result is 1 if any element of ARG1 is a NaN. Otherwise, - the result is 0. - - - - - - - - int vec_any_nan (vector double); - - - - - - - - int vec_any_nan (vector float); - - - - - VEC_ANY_NE (ARG1, ARG2) - - - Purpose: - Tests whether any set of corresponding elements of the - given vectors is not equal. - Result value: - The result is 1 if any element of ARG1 is not equal to the - corresponding element of ARG2. Otherwise, the result is 0. - - - - - - - - int vec_any_ne (vector bool char, vector bool char); - - - - - - - - int vec_any_ne (vector signed char, vector signed - char); - - - - - - - - int vec_any_ne (vector unsigned char, vector unsigned - char); - - - - - - - - int vec_any_ne (vector bool int, vector bool int); - - - - - - - - int vec_any_ne (vector signed int, vector signed - int); - - - - - - - - int vec_any_ne (vector unsigned int, vector unsigned - int); - - - - - - - - int vec_any_ne (vector bool long long, vector bool long - long); - - - - - - - - int vec_any_ne (vector signed long long, vector signed long - long); - - - - - - - - int vec_any_ne (vector unsigned long long, vector unsigned - long long); - - - - - - - - int vec_any_ne (vector pixel, vector pixel); - - - - - - - - int vec_any_ne (vector bool short, vector bool - short); - - - - - - - - int vec_any_ne (vector signed short, vector signed - short); - - - - - - - - int vec_any_ne (vector unsigned short, vector unsigned - short); - - - - - - - - int vec_any_ne (vector double, vector double); - - - - - - - - int vec_any_ne (vector float, vector float); - - - - - VEC_ANY_NGE (ARG1, ARG2) - - - Purpose: - Tests whether any element of the first argument is not - greater than or equal to the corresponding element of the second - argument. - Result value: - The result is 1 if any element of ARG1 is not greater than - or equal to the corresponding element of ARG2. Otherwise, the - result is 0. - - - - - - - - int vec_any_nge (vector double, vector double); - - - - - - - - int vec_any_nge (vector float, vector float); - - - - - VEC_ANY_NGT (ARG1, ARG2) - - - Purpose: - Tests whether any element of the first argument is not - greater than the corresponding element of the second - argument. - Result value: - The result is 1 if any element of ARG1 is not greater than - the corresponding element of ARG2. Otherwise, the result is - 0. - - - - - - - - int vec_any_ngt (vector double, vector double); - - - - - - - - int vec_any_ngt (vector float, vector float); - - - - - VEC_ANY_NLE (ARG1, ARG2) - - - Purpose: - Tests whether any element of the first argument is not less - than or equal to the corresponding element of the second - argument. - Result value: - The result is 1 if any element of ARG1 is not less than or - equal to the corresponding element of ARG2. Otherwise, the result - is 0. - - - - - - - - int vec_any_nle (vector double, vector double); - - - - - - - - int vec_any_nle (vector float, vector float); - - - - - VEC_ANY_NLT (ARG1, ARG2) - - - Purpose: - Tests whether any element of the first argument is not less - than the corresponding element of the second argument. - Result value: - The result is 1 if any element of ARG1 is not less than the - corresponding element of ARG2. Otherwise, the result is 0. - - - - - - - - int vec_any_nlt (vector double, vector double); - - - - - - - - int vec_any_nlt (vector float, vector float); - - - - - VEC_ANY_NUMERIC (ARG1) - - - Purpose: - Tests whether any element of the given vector is numeric - (not a NaN). - Result value: - The result is 1 if any element of ARG1 is numeric (not a - NaN). Otherwise, the result is 0. - - - - - - - - int vec_any_numeric (vector double); - - - - - - - - int vec_any_numeric (vector float); - - - - - VEC_ANY_OUT (ARG1, ARG2) - - - Purpose: - Tests whether the value of any element of a given vector is - outside of a given range. - Result value: - The result is 1 if the value of any element of ARG1 is - greater than the value of the corresponding element of ARG2 or - less than the negative of the value of the corresponding element - of ARG2. Otherwise, the result is 0. - - - - - - - - int vec_any_out (vector float, vector float); - - - - -
-
-
- Coding Support - The following built-in vector operators provide coding support. As - suggested by the naming convention with the _be suffix, these operators - always operate on the big-endian representation irrespective of the data - layout of the execution environment. Thus, both input and output arguments - have big-endian data representation, both with respect to the byte ordering - of the base data types and the element ordering and numbering of each - vector input and output. - In accordance with these semantics, when an input or output vector - for these operators is accessed, the vec_xl_be and vec_xst_be operators may - be used to access vectors with big-endian element ordering regardless of - the data layout of the execution environment. Alternatively, in a - little-endian environment, big-endian element ordering may be established - by using the vec_reve( ) vector operator. In a little-endian environment, - big-endian byte order within each element may be established by using the - vec_revb( ) vector operator. -
- Finite Field Arithmetic and Secure Hashing - The vector operators listed in - provide coding support for - Secure Hashing and Finite Field Arithmetic, such as is used in the - generation of common cyclic redundancy codes. - Because these operators perform a similar operation on all vector - elements, it is not necessary to establish a big-endian element order - before invoking these operators. However, the byte order for bytes within - each element must be established as big-endian. - Thus, for example, a SHA computation in a little-endian environment - may be performed by using the following sequence: - le_result = vec_revb(vec_shasigma_be(vec_revb(le_input), 0, 0)); - - Built-In Vector Operators for Secure Hashing and Finite Field - Arithmetic - - - - - - - - Group - - - - - Description of Vector Built-In - Operators (with Prototypes) - - - - - - - - VEC_PMSUM_BE (ARG1, ARG2) - - - Purpose: - Performs the exclusive-OR operation (implementing - polynomial addition) on each even-odd pair of the - polynomial-multiplication result of the corresponding - elements. - Result value: - Each element i of the result vector is computed by an - exclusive-OR operation of the polynomial multiplication of - input elements 2 × i of ARG1 and ARG2 and input elements 2 × i - + 1 of ARG1 and ARG2. - - - - - Phased in. - This optional function is being phased in and it - might not be available on all implementations. - - - - vector unsigned int vec_pmsum_be (vector unsigned short, - vector unsigned short); - - - - - Phased in. - - - - vector unsigned __int128 vec_pmsum_be (vector unsigned - long long, vector unsigned long long); - - - - - Phased in. - - - - vector unsigned long long vec_pmsum_be (vector unsigned - int, vector unsigned int); - - - - - Phased in. - - - - vector unsigned short vec_pmsum_be (vector unsigned char, - vector unsigned char); - - - - - VEC_SHASIGMA_BE (ARG1, ARG2, ARG3) - - - Purpose: - Performs a Secure Hash computation in accordance with - Federal Information Processing Standards FIPS-180-3. - Result value: - Each element of the result vector contains the SHA256 or - SHA512 hash as follows. - The result of the SHA-256 function is: - - - σ0(x[i]), if ARG2 is 0 and bit i of the 4-bit ARG3 is - 0. - - - σ1(x[i]), if ARG2 is 0 and bit i of the 4-bit ARG3 is - 1. - - - ∑0(x[i]), if ARG2 is nonzero and bit i of the 4-bit - ARG3 is 0. - - - ∑1(x[i]), if ARG2 is nonzero and bit i of the 4-bit - ARG3 is 1. - - - The result of the SHA-512 function is: - - - σ0(x[i]), if ARG2 is 0 and bit 2 × i of the 4-bit - ARG3 is 0. - - - σ1(x[i]), if ARG2 is 0 and bit 2 × i of the 4-bit - ARG3 is 1. - - - ∑0(x[i]), if ARG2 is nonzero and bit 2 × i of the - 4-bit ARG3 is 0. - - - ∑1(x[i]), if ARG2 is nonzero and bit 2 × i of the - 4-bit ARG3 is 1. - - - - - - - Phased in. - - - - vector unsigned int vec_shasigma_be (vector unsigned int, - const int, const int); - - - - - Phased in. - - - - vector unsigned long long vec_shasigma_be (vector - unsigned long long, const int, const int); - - - - -
-
-
- Advanced Encryption Standard (FIPS-197) - The vector operators listed in - provide support for the - Advanced Encryption Standard (FIPS-197). - Because these operators operate on a byte sequence (represented as - vector char), it is not necessary to establish a big-endian byte order - within each element before invoking these operators. However, the element - order for each vector must be established as big endian. - Thus, for example, an SBOX computation in a little-endian - environment may be performed by using the following sequence: - le_result = vec_reve(vec_sbox(vec_reve(le_input), 0, 0)); - Alternatively, the vec_xl_be and vec_xst_be operators may be used - to access operands as follows: - input = vec_xl_be(0, &le_input); -result = vec_sbox(input); -vec_xst_be(result,0, &le_result); - - Built-In Vector Operators for the Advanced Encryption - Standard - - - - - - - - Group - - - - - Description of Vector Built-In - Operators (with Prototypes) - - - - - - - - VEC_SBOX_BE (ARG1) - - - Purpose: - Performs the SubBytes operation, as defined in Federal - Information Processing Standards FIPS-197, on a - state_array. - Result value: - Returns the result of the SubBytes operation, as defined - in Federal Information Processing Standards FIPS-197, on the - state array represented by ARG1. - - - - - Phased in.This optional function is being - phased in and it might not be available on all implementations - - - - vector unsigned char vec_sbox_be (vector unsigned - char); - - - - - VEC_CIPHER_BE (ARG1, ARG2) - - - Purpose: - Performs one round of the AES cipher operation on an - intermediate state state_array by using a given - round_key. - Result value: - Returns the resulting intermediate state, after one round - of the AES cipher operation on an intermediate state - state_array specified by ARG1, using the round_key specified by - ARG2. - - - - - Phased in. - - - - vector unsigned char vec_cipher_be (vector unsigned char, - vector unsigned char); - - - - - VEC_CIPHERLAST_BE (ARG1, ARG2) - - - Purpose: - Performs the final round of the AES cipher operation on - an intermediate state state_array using the specified - round_key. - Result value: - Returns the resulting final state, after the final round - of the AES cipher operation on an intermediate state - state_array specified by ARG1, using the round_key specified by - ARG2. - - - - - Phased in. - - - - vector unsigned char vec_cipherlast_be (vector unsigned - char, vector unsigned char); - - - - - VEC_NCIPHER_BE (ARG1, ARG2) - - - Purpose: - Performs one round of the AES inverse cipher operation on - an intermediate state state_array using a given - round_key. - Result value: - Returns the resulting intermediate state, after one round - of the AES inverse cipher operation on an intermediate state - state_array specified by ARG1, using the round_key specified by - ARG2. - - - - - Phased in. - - - - vector unsigned char vec_ncipher_be (vector unsigned - char, vector unsigned char); - - - - - VEC_NCIPHERLAST_BE (ARG1, ARG2) - - - Purpose: - Performs the final round of the AES inverse cipher - operation on an intermediate state state_array using the - specified round_key. - Result value: - Returns the resulting final state, after the final round - of the AES inverse cipher operation on an intermediate state - state_array specified by ARG1, using the round_key specified by - ARG2. - - - - - Phased in. - - - - vector unsigned char vec_ncipherlast_be (vector unsigned - char, vector unsigned char); - - - - -
-
-
-
- VSCR Management Built-in Functions - - defines built-in functions for - reading and writing the Vector Status and Control Register (VSCR). - - - VSCR Management Functions - - - - - - - - Group - - - - - Description of VSCR Management Functions - (with Prototypes) - - - - - - - - VEC_MTVSCR (ARG1) - - - Purpose: - Copies the given value into the Vector Status and Control - Register. The low-order 32 bits of ARG1 are copied into the - VSCR. - - - - - - - - void vec_mtvscr (vector bool char); - - - - - - - - void vec_mtvscr (vector signed char); - - - - - - - - void vec_mtvscr (vector unsigned char); - - - - - - - - void vec_mtvscr (vector bool int); - - - - - - - - void vec_mtvscr (vector signed int); - - - - - - - - void vec_mtvscr (vector unsigned int); - - - - - - - - void vec_mtvscr (vector pixel); - - - - - - - - void vec_mtvscr (vector bool short); - - - - - - - - void vec_mtvscr (vector signed short); - - - - - - - - void vec_mtvscr (vector unsigned short); - - - - - VEC_MFVSCR - - - Purpose: - Copies the contents of the Vector Status and Control - Register into the result vector. - Result value: - The high-order 16 bits of the VSCR are copied into the - seventh element of the result. The low-order 16 bits of the VSCR - are copied into the eighth element of the result. All other - elements are set to zero. - - - - - - - - vector unsigned short vec_mfvscr (void); - - - - -
-
-
- PowerSIMD API Named Constants - This section defines constants for use by the PowerSIMD vector - programming operators. They may be defined either as macros or as named - constants. -
- Data Classes - This section defines constants for use in conjunction with the - vec_test_data_class operator. - - - Constants Used with vec_test_data_class - - - - - - - Constants - - - - - - - - #define __VEC_CLASS_FP_INFINITY_P (1<<5) - - - - - #define __VEC_CLASS_FP_INFINITY_N (1<<4) - - - - - #define __VEC_CLASS_FP_INFINITY - (__VEC_CLASS_FP_INFINITY_P | __VEC_CLASS_FP_INFINITY _N) - - - - - #define __VEC_CLASS_FP_ZERO_P (1<<3) - - - - - #define __VEC_CLASS_FP_ZERO_N (1<<2) - - - - - #define __VEC_CLASS_FP_ZERO (__VEC_CLASS_FP_ZERO_P | - __VEC_CLASS_FP_ZERO_N) - - - - - #define __VEC_CLASS_FP_SUBNORMAL_P (1 << 1) - - - - - #define __VEC_CLASS_FP_SUBNORMAL_N (1 << 0) - - - - - #define __VEC_CLASS_FP_SUBNORMAL - (__VEC_CLASS_FP_SUBNORMAL_P | - __VEC_CLASS_FP_SUBNORMAL_N) - - - - - #define __VEC_CLASS_FP_NAN (1<<6) - - - - - #define __VEC_CLASS_FP_NOT_NORMAL (__VEC_CLASS_FP_NAN | - __VEC_CLASS_FP_SUBNORMAL | __VEC_CLASS_FP_ZERO | - __VEC_CLASS_FP_INFINITY) - - - - -
-
-
-
- Deprecated Compatibility Functions - The following functions should be provided for compatibility with - previous versions of the Power SIMD vector environment. Where possible - (subject to being supported by all targeted implementations of the Power - SIMD environment), the use of type-generic built-in names is - recommended. - - The type-specific vector built-in types are provided for - legacy code compatibility only. The functions are deprecated, and - support may be discontinued in the future. It is recommended that - programmers use the respective overloaded vector built-in functions in - conjunction with the appropriate vector type. - - - - Functions Provided for Compatibility - - - - - - - - ISA Level - - - - - Vector Built-In Function - Prototypes - - - - - - - - vmx - - - vector float vec_vaddfp (vector float, vector - float); - - - - - vmx - - - vector signed char vec_vmaxsb (vector bool char, vector - signed char); - - - - - vmx - - - vector signed char vec_vmaxsb (vector signed char, vector - bool char); - - - - - vmx - - - vector signed char vec_vmaxsb (vector signed char, vector - signed char); - - - - - vsx2 - - - vector signed long long vec_vmaxsd (vector signed long - long, vector signed long long); - - - - - vmx - - - vector signed short vec_vmaxsh (vector bool short, vector - signed short); - - - - - vmx - - - vector signed short vec_vmaxsh (vector signed short, vector - bool short); - - - - - vmx - - - vector signed short vec_vmaxsh (vector signed short, vector - signed short); - - - - - vmx - - - vector signed int vec_vmaxsw (vector bool int, vector - signed int); - - - - - vmx - - - vector signed int vec_vmaxsw (vector signed int, vector - bool int); - - - - - vmx - - - vector signed int vec_vmaxsw (vector signed int, vector - signed int); - - - - - vmx - - - vector signed char vec_vaddsbs (vector bool char, vector - signed char); - - - - - vmx - - - vector signed char vec_vaddsbs (vector signed char, vector - bool char); - - - - - vmx - - - vector signed char vec_vaddsbs (vector signed char, vector - signed char); - - - - - vmx - - - vector signed short vec_vaddshs (vector signed short, - vector bool short); - - - - - vmx - - - vector signed short vec_vaddshs (vector bool short, vector - signed short); - - - - - vmx - - - vector signed short vec_vaddshs (vector signed short, - vector signed short); - - - - - vmx - - - vector signed int vec_vaddsws (vector bool int, vector - signed int); - - - - - vmx - - - vector signed int vec_vaddsws (vector signed int, vector - bool int); - - - - - vmx - - - vector signed int vec_vaddsws (vector signed int, vector - signed int); - - - - - vmx - - - vector signed char vec_vaddubm (vector bool char, vector - signed char); - - - - - vmx - - - vector signed char vec_vaddubm (vector signed char, vector - bool char); - - - - - vmx - - - vector signed char vec_vaddubm (vector signed char, vector - signed char); - - - - - vmx - - - vector unsigned char vec_vaddubm (vector bool char, vector - unsigned char); - - - - - vmx - - - vector unsigned char vec_vaddubm (vector unsigned char, - vector bool char); - - - - - vmx - - - vector unsigned char vec_vaddubm (vector unsigned char, - vector unsigned char); - - - - - vmx - - - vector unsigned char vec_vaddubs (vector bool char, vector - unsigned char); - - - - - vmx - - - vector unsigned char vec_vaddubs (vector unsigned char, - vector bool char); - - - - - vmx - - - vector unsigned char vec_vaddubs (vector unsigned char, - vector unsigned char); - - - - - vsx2 - - - vector signed long long vec_vaddudm (vector bool long long, - vector signed long long); - - - - - vsx2 - - - vector signed long long vec_vaddudm (vector signed long - long, vector bool long long); - - - - - vsx2 - - - vector signed long long vec_vaddudm (vector signed long - long, vector signed long long); - - - - - vsx2 - - - vector unsigned long long vec_vaddudm (vector bool long - long, vector unsigned long long); - - - - - vsx2 - - - vector unsigned long long vec_vaddudm (vector unsigned long - long, vector bool long long); - - - - - vsx2 - - - vector unsigned long long vec_vaddudm (vector unsigned long - long, vector unsigned long long); - - - - - vmx - - - vector signed short vec_vadduhm (vector bool short, vector - signed short); - - - - - vmx - - - vector signed short vec_vadduhm (vector signed short, - vector bool short); - - - - - vmx - - - vector signed short vec_vadduhm (vector signed short, - vector signed short); - - - - - vmx - - - vector unsigned short vec_vadduhm (vector bool short, - vector unsigned short); - - - - - vmx - - - vector unsigned short vec_vadduhm (vector unsigned short, - vector bool short); - - - - - vmx - - - vector unsigned short vec_vadduhm (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector unsigned short vec_vadduhs (vector bool short, - vector unsigned short); - - - - - vmx - - - vector unsigned short vec_vadduhs (vector unsigned short, - vector bool short); - - - - - vmx - - - vector unsigned short vec_vadduhs (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector unsigned int vec_vadduwm (vector unsigned int, - vector bool int); - - - - - vmx - - - vector signed int vec_vadduwm (vector bool int, vector - signed int); - - - - - vmx - - - vector signed int vec_vadduwm (vector signed int, vector - bool int); - - - - - vmx - - - vector signed int vec_vadduwm (vector signed int, vector - signed int); - - - - - vmx - - - vector unsigned int vec_vadduwm (vector bool int, vector - unsigned int); - - - - - vmx - - - vector unsigned int vec_vadduwm (vector unsigned int, - vector unsigned int); - - - - - vmx - - - vector unsigned int vec_vadduws (vector bool int, vector - unsigned int); - - - - - vmx - - - vector unsigned int vec_vadduws (vector unsigned int, - vector bool int); - - - - - vmx - - - vector unsigned int vec_vadduws (vector unsigned int, - vector unsigned int); - - - - - vmx - - - vector signed char vec_vavgsb (vector signed char, vector - signed char); - - - - - vmx - - - vector signed short vec_vavgsh (vector signed short, vector - signed short); - - - - - vmx - - - vector signed int vec_vavgsw (vector signed int, vector - signed int); - - - - - vmx - - - vector unsigned char vec_vavgub (vector unsigned char, - vector unsigned char); - - - - - vmx - - - vector unsigned short vec_vavguh (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector unsigned int vec_vavguw (vector unsigned int, vector - unsigned int); - - - - - vsx2 - - - vector signed char vec_vclzb (vector signed char); - - - - - vsx2 - - - vector unsigned char vec_vclzb (vector unsigned - char); - - - - - vsx2 - - - vector signed long long vec_vclzd (vector signed long - long); - - - - - vsx2 - - - vector unsigned long long vec_vclzd (vector unsigned long - long); - - - - - vsx2 - - - vector unsigned short vec_vclzh (vector unsigned - short); - - - - - vsx2 - - - vector short vec_vclzh (vector short); - - - - - vsx2 - - - vector unsigned int vec_vclzw (vector int); - - - - - vsx2 - - - vector int vec_vclzw (vector int); - - - - - vmx - - - vector float vec_vcfsx (vector signed int, const - int); - - - - - vmx - - - vector float vec_vcfux (vector unsigned int, const - int); - - - - - vmx - - - vector bool int vec_vcmpeqfp (vector float, vector - float); - - - - - vmx - - - vector bool char vec_vcmpequb (vector signed char, vector - signed char); - - - - - vmx - - - vector bool char vec_vcmpequb (vector unsigned char, vector - unsigned char); - - - - - vmx - - - vector bool short vec_vcmpequh (vector signed short, vector - signed short); - - - - - vmx - - - vector bool short vec_vcmpequh (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector bool int vec_vcmpequw (vector signed int, vector - signed int); - - - - - vmx - - - vector bool int vec_vcmpequw (vector unsigned int, vector - unsigned int); - - - - - vmx - - - vector bool int vec_vcmpgtfp (vector float, vector - float); - - - - - vmx - - - vector bool char vec_vcmpgtsb (vector signed char, vector - signed char); - - - - - vmx - - - vector bool short vec_vcmpgtsh (vector signed short, vector - signed short); - - - - - vmx - - - vector bool short vec_vcmpgtsh (vector signed short, vector - signed short); - - - - - vmx - - - vector bool int vec_vcmpgtsw (vector signed int, vector - signed int); - - - - - vmx - - - vector bool char vec_vcmpgtub (vector unsigned char, vector - unsigned char); - - - - - vmx - - - vector bool short vec_vcmpgtuh (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector bool int vec_vcmpgtuw (vector unsigned int, vector - unsigned int); - - - - - vmx - - - vector float vec_vmaxfp (vector float, vector - float); - - - - - vmx - - - vector unsigned char vec_vmaxub (vector bool char, vector - unsigned char); - - - - - vmx - - - vector unsigned char vec_vmaxub (vector bool char, vector - unsigned char); - - - - - vmx - - - vector unsigned char vec_vmaxub (vector unsigned char, - vector bool char); - - - - - vmx - - - vector unsigned char vec_vmaxub (vector unsigned char, - vector unsigned char); - - - - - vsx2 - - - vector unsigned long long vec_vmaxud (vector unsigned long - long, unsigned vector long long); - - - - - vmx - - - vector unsigned short vec_vmaxuh (vector bool short, vector - unsigned short); - - - - - vmx - - - vector unsigned short vec_vmaxuh (vector unsigned short, - vector bool short); - - - - - vmx - - - vector unsigned short vec_vmaxuh (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector unsigned int vec_vmaxuw (vector bool int, vector - unsigned int); - - - - - vmx - - - vector unsigned int vec_vmaxuw (vector unsigned int, vector - bool int); - - - - - vmx - - - vector unsigned int vec_vmaxuw (vector unsigned int, vector - unsigned int); - - - - - vmx - - - vector float vec_vminfp (vector float, vector - float); - - - - - vmx - - - vector signed char vec_vminsb (vector bool char, vector - signed char); - - - - - vmx - - - vector signed char vec_vminsb (vector signed char, vector - bool char); - - - - - vmx - - - vector signed char vec_vminsb (vector signed char, vector - signed char); - - - - - vsx2 - - - vector signed long long vec_vminsd (vector signed long - long, vector signed long long); - - - - - vmx - - - vector signed short vec_vminsh (vector bool short, vector - signed short); - - - - - vmx - - - vector signed short vec_vminsh (vector signed short, vector - bool short); - - - - - vmx - - - vector signed short vec_vminsh (vector signed short, vector - signed short); - - - - - vmx - - - vector signed int vec_vminsw (vector bool int, vector - signed int); - - - - - vmx - - - vector signed int vec_vminsw (vector signed int, vector - bool int); - - - - - vmx - - - vector signed int vec_vminsw (vector signed int, vector - signed int); - - - - - vmx - - - vector unsigned char vec_vminub (vector bool char, vector - unsigned char); - - - - - vmx - - - vector unsigned char vec_vminub (vector unsigned char, - vector bool char); - - - - - vmx - - - vector unsigned char vec_vminub (vector unsigned char, - vector unsigned char); - - - - - vsx2 - - - vector unsigned long long vec_vminud (vector unsigned long - long, vector unsigned long long); - - - - - vmx - - - vector unsigned short vec_vminuh (vector bool short, vector - unsigned short); - - - - - vmx - - - vector unsigned short vec_vminuh (vector unsigned short, - vector bool short); - - - - - vmx - - - vector unsigned short vec_vminuh (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector unsigned int vec_vminuw (vector bool int, vector - unsigned int); - - - - - vmx - - - vector unsigned int vec_vminuw (vector unsigned int, vector - bool int); - - - - - vmx - - - vector unsigned int vec_vminuw (vector unsigned int, vector - unsigned int); - - - - - vmx - - - vector float vec_vsubfp (vector float, vector - float); - - - - - vsx - - - vector bool int vec_vcmpeqdp (vector double, vector - double); - - - - - vsx - - - vector bool int vec_vcmpgtdp (vector double, vector - double); - - - - - vmx - - - vector bool char vec_vmrghb (vector bool char, vector bool - char); - - - - - vmx - - - vector signed char vec_vmrghb (vector signed char, vector - signed char); - - - - - vmx - - - vector unsigned char vec_vmrghb (vector unsigned char, - vector unsigned char); - - - - - vmx - - - vector bool short vec_vmrghh (vector bool short, vector - bool short); - - - - - vmx - - - vector signed short vec_vmrghh (vector signed short, vector - signed short); - - - - - vmx - - - vector unsigned short vec_vmrghh (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector pixel vec_vmrghh (vector pixel, vector - pixel); - - - - - vmx - - - vector bool int vec_vmrghw (vector bool int, vector bool - int); - - - - - vmx - - - vector signed int vec_vmrghw (vector signed int, vector - signed int); - - - - - vmx - - - vector unsigned int vec_vmrghw (vector unsigned int, vector - unsigned int); - - - - - vmx - - - vector float vec_vmrghw (vector float, vector - float); - - - - - vmx - - - vector bool char vec_vmrglb (vector bool char, vector bool - char); - - - - - vmx - - - vector signed char vec_vmrglb (vector signed char, vector - signed char); - - - - - vmx - - - vector unsigned char vec_vmrglb (vector unsigned char, - vector unsigned char); - - - - - vmx - - - vector bool short vec_vmrglh (vector bool short, vector - bool short); - - - - - vmx - - - vector signed short vec_vmrglh (vector signed short, vector - signed short); - - - - - vmx - - - vector unsigned short vec_vmrglh (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector pixel vec_vmrglh (vector pixel, vector - pixel); - - - - - vmx - - - vector bool int vec_vmrglw (vector bool int, vector bool - int); - - - - - vmx - - - vector signed int vec_vmrglw (vector signed int, vector - signed int); - - - - - vmx - - - vector unsigned int vec_vmrglw (vector unsigned int, vector - unsigned int); - - - - - vmx - - - vector float vec_vmrglw (vector float, vector - float); - - - - - vmx - - - vector signed int vec_vmsummbm (vector signed char, vector - unsigned char, vector signed int); - - - - - vmx - - - vector signed int vec_vmsumshm (vector signed short, vector - signed short, vector signed int); - - - - - vmx - - - vector signed int vec_vmsumshs (vector signed short, vector - signed short, vector signed int); - - - - - vmx - - - vector unsigned int vec_vmsumubm (vector unsigned char, - vector unsigned char, vector unsigned int); - - - - - vmx - - - vector unsigned int vec_vmsumuhm (vector unsigned short, - vector unsigned short, vector unsigned int); - - - - - vmx - - - vector unsigned int vec_vmsumuhs (vector unsigned short, - vector unsigned short, vector unsigned int); - - - - - vmx - - - vector signed short vec_vmulesb (vector signed char, vector - signed char); - - - - - vmx - - - vector signed int vec_vmulesh (vector signed short, vector - signed short); - - - - - vmx - - - vector unsigned short vec_vmuleub (vector unsigned char, - vector unsigned char); - - - - - vmx - - - vector unsigned int vec_vmuleuh (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector signed short vec_vmulosb (vector signed char, vector - signed char); - - - - - vmx - - - vector signed int vec_vmulosh (vector signed short, vector - signed short); - - - - - vmx - - - vector unsigned short vec_vmuloub (vector unsigned char, - vector unsigned char); - - - - - vmx - - - vector unsigned int vec_vmulouh (vector unsigned short, - vector unsigned short); - - - - - vsx2 - - - vector unsigned int vec_vpksdss (vector unsigned long long, - vector unsigned long long); - - - - - vsx2 - - - vector int vec_vpksdss (vector signed long long, vector - signed long long); - - - - - vmx - - - vector signed char vec_vpkshss (vector signed short, vector - signed short); - - - - - vmx - - - vector unsigned char vec_vpkshus (vector signed short, - vector signed short); - - - - - vmx - - - vector signed short vec_vpkswss (vector signed int, vector - signed int); - - - - - vmx - - - vector unsigned short vec_vpkswus (vector signed int, - vector signed int); - - - - - vsx2 - - - vector bool int vec_vpkudum (vector bool long long, vector - bool long long); - - - - - vsx2 - - - vector unsigned int vec_vpkudum (vector unsigned long long, - vector unsigned long long); - - - - - vsx2 - - - vector int vec_vpkudum (vector signed long long, vector - signed long long); - - - - - vsx2 - - - vector unsigned int vec_vpkudus (vector unsigned long long, - vector unsigned long long); - - - - - vmx - - - vector bool char vec_vpkuhum (vector bool short, vector - bool short); - - - - - vmx - - - vector signed char vec_vpkuhum (vector signed short, vector - signed short); - - - - - vmx - - - vector unsigned char vec_vpkuhum (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector unsigned char vec_vpkuhus (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector bool short vec_vpkuwum (vector bool int, vector bool - int); - - - - - vmx - - - vector signed short vec_vpkuwum (vector signed int, vector - signed int); - - - - - vmx - - - vector unsigned short vec_vpkuwum (vector unsigned int, - vector unsigned int); - - - - - vmx - - - vector unsigned short vec_vpkuwus (vector unsigned int, - vector unsigned int); - - - - - vsx2 - - - vector signed char vec_vpopcnt (vector signed char); - - - - - vsx2 - - - vector unsigned char vec_vpopcnt (vector unsigned - char); - - - - - vsx2 - - - vector unsigned int vec_vpopcnt (vector int); - - - - - vsx2 - - - vector signed long long vec_vpopcnt (vector signed long - long); - - - - - vsx2 - - - vector unsigned long long vec_vpopcnt (vector unsigned long - long); - - - - - vsx2 - - - vector unsigned short vec_vpopcnt (vector unsigned - short); - - - - - vsx2 - - - vector int vec_vpopcnt (vector int); - - - - - vsx2 - - - vector short vec_vpopcnt (vector short); - - - - - vsx2 - - - vector signed char vec_vpopcntb (vector signed - char); - - - - - vsx2 - - - vector unsigned char vec_vpopcntb (vector unsigned - char); - - - - - vsx2 - - - vector signed long long vec_vpopcntd (vector signed long - long); - - - - - vsx2 - - - vector unsigned long long vec_vpopcntd (vector unsigned - long long); - - - - - vsx2 - - - vector unsigned short vec_vpopcnth (vector unsigned - short); - - - - - vsx2 - - - vector short vec_vpopcnth (vector short); - - - - - vsx2 - - - vector unsigned int vec_vpopcntw (vector - unsigned - int); - - - - - vsx2 - - - vector int vec_vpopcntw (vector int); - - - - - vmx - - - vector signed char vec_vrlb (vector signed char, vector - unsigned char); - - - - - vmx - - - vector unsigned char vec_vrlb (vector unsigned char, vector - unsigned char); - - - - - vsx2 - - - vector signed long long vec_vrld (vector signed long long, - vector unsigned long long); - - - - - vsx2 - - - vector unsigned long long vec_vrld (vector unsigned long - long, vector unsigned long long); - - - - - vmx - - - vector signed short vec_vrlh (vector signed short, vector - unsigned short); - - - - - vmx - - - vector unsigned short vec_vrlh (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector signed int vec_vrlw (vector signed int, vector - unsigned int); - - - - - vmx - - - vector unsigned int vec_vrlw (vector unsigned int, vector - unsigned int); - - - - - vmx - - - vector signed char vec_vslb (vector signed char, vector - unsigned char); - - - - - vmx - - - vector unsigned char vec_vslb (vector unsigned char, vector - unsigned char); - - - - - vsx2 - - - vector signed long long vec_vsld (vector signed long long, - vector unsigned long long); - - - - - vsx2 - - - vector signed long long vec_vsld (vector unsigned long - long, vector unsigned long long); - - - - - vmx - - - vector signed short vec_vslh (vector signed short, vector - unsigned short); - - - - - vmx - - - vector unsigned short vec_vslh (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector signed int vec_vslw (vector signed int, vector - unsigned int); - - - - - vmx - - - vector unsigned int vec_vslw (vector unsigned int, vector - unsigned int); - - - - - vmx - - - vector bool char vec_vspltb (vector bool char, const - int); - - - - - vmx - - - vector signed char vec_vspltb (vector signed char, const - int); - - - - - vmx - - - vector unsigned char vec_vspltb (vector unsigned char, - const int); - - - - - vmx - - - vector bool short vec_vsplth (vector bool short, const - int); - - - - - vmx - - - vector signed short vec_vsplth (vector signed short, const - int); - - - - - vmx - - - vector unsigned short vec_vsplth (vector unsigned short, - const int); - - - - - vmx - - - vector pixel vec_vsplth (vector pixel, const int); - - - - - vmx - - - vector bool int vec_vspltw (vector bool int, const - int); - - - - - vmx - - - vector signed int vec_vspltw (vector signed int, const - int); - - - - - vmx - - - vector unsigned int vec_vspltw (vector unsigned int, const - int); - - - - - vmx - - - vector float vec_vspltw (vector float, const int); - - - - - vmx - - - vector signed char vec_vsrab (vector signed char, vector - unsigned char); - - - - - vmx - - - vector unsigned char vec_vsrab (vector unsigned char, - vector unsigned char); - - - - - vsx2 - - - vector signed long long vec_vsrad (vector signed long long, - vector unsigned long long); - - - - - vsx2 - - - vector unsigned long long vec_vsrad (vector unsigned long - long, vector unsigned long long); - - - - - vmx - - - vector signed short vec_vsrah (vector signed short, vector - unsigned short); - - - - - vmx - - - vector unsigned short vec_vsrah (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector signed int vec_vsraw (vector signed int, vector - unsigned int); - - - - - vmx - - - vector unsigned int vec_vsraw (vector unsigned int, vector - unsigned int); - - - - - vmx - - - vector signed char vec_vsrb (vector signed char, vector - unsigned char); - - - - - vmx - - - vector unsigned char vec_vsrb (vector unsigned char, vector - unsigned char); - - - - - vsx2 - - - vector signed long long vec_vsrd (vector signed long long, - vector unsigned long long); - - - - - vsx2 - - - vector unsigned long long vec_vsrd (vector unsigned long - long, vector unsigned long long); - - - - - vmx - - - vector signed short vec_vsrh (vector signed short, vector - unsigned short); - - - - - vmx - - - vector unsigned short vec_vsrh (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector signed int vec_vsrw (vector signed int, vector - unsigned int); - - - - - vmx - - - vector unsigned int vec_vsrw (vector unsigned int, vector - unsigned int); - - - - - vmx - - - vector signed char vec_vsubsbs (vector bool char, vector - signed char); - - - - - vmx - - - vector signed char vec_vsubsbs (vector signed char, vector - bool char); - - - - - vmx - - - vector signed char vec_vsubsbs (vector signed char, vector - signed char); - - - - - vmx - - - vector signed short vec_vsubshs (vector bool short, vector - signed short); - - - - - vmx - - - vector signed short vec_vsubshs (vector signed short, - vector bool short); - - - - - vmx - - - vector signed short vec_vsubshs (vector signed short, - vector signed short); - - - - - vmx - - - vector signed int vec_vsubsws (vector bool int, vector - signed int); - - - - - vmx - - - vector signed int vec_vsubsws (vector signed int, vector - bool int); - - - - - vmx - - - vector signed int vec_vsubsws (vector signed int, vector - signed int); - - - - - vmx - - - vector signed char vec_vsububm (vector bool char, vector - signed char); - - - - - vmx - - - vector signed char vec_vsububm (vector signed char, vector - bool char); - - - - - vmx - - - vector signed char vec_vsububm (vector signed char, vector - signed char); - - - - - vmx - - - vector unsigned char vec_vsububm (vector bool char, vector - unsigned char); - - - - - vmx - - - vector unsigned char vec_vsububm (vector unsigned char, - vector bool char); - - - - - vmx - - - vector unsigned char vec_vsububm (vector unsigned char, - vector unsigned char); - - - - - vmx - - - vector unsigned char vec_vsububs (vector bool char, vector - unsigned char); - - - - - vmx - - - vector unsigned char vec_vsububs (vector unsigned char, - vector bool char); - - - - - vmx - - - vector unsigned char vec_vsububs (vector unsigned char, - vector unsigned char); - - - - - vsx2 - - - vector signed long long vec_vsubudm (vector bool long long, - vector signed long long); - - - - - vsx2 - - - vector signed long long vec_vsubudm (vector signed long - long, vector bool long long); - - - - - vsx2 - - - vector signed long long vec_vsubudm (vector signed long - long, vector signed long long); - - - - - vsx2 - - - vector unsigned long long vec_vsubudm (vector bool long - long, vector unsigned long long); - - - - - vsx2 - - - vector unsigned long long vec_vsubudm (vector unsigned long - long, vector bool long long); - - - - - vsx2 - - - vector unsigned long long vec_vsubudm (vector unsigned long - long, vector unsigned long long); - - - - - vmx - - - vector signed short vec_vsubuhm (vector bool short, vector - signed short); - - - - - vmx - - - vector signed short vec_vsubuhm (vector signed short, - vector bool short); - - - - - vmx - - - vector signed short vec_vsubuhm (vector signed short, - vector signed short); - - - - - vmx - - - vector unsigned short vec_vsubuhm (vector bool short, - vector unsigned short); - - - - - vmx - - - vector unsigned short vec_vsubuhm (vector unsigned short, - vector bool short); - - - - - vmx - - - vector unsigned short vec_vsubuhm (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector unsigned short vec_vsubuhs (vector bool short, - vector unsigned short); - - - - - vmx - - - vector unsigned short vec_vsubuhs (vector unsigned short, - vector bool short); - - - - - vmx - - - vector unsigned short vec_vsubuhs (vector unsigned short, - vector unsigned short); - - - - - vmx - - - vector signed int vec_vsubuwm (vector bool int, vector - signed int); - - - - - vmx - - - vector signed int vec_vsubuwm (vector signed int, vector - bool int); - - - - - vmx - - - vector signed int vec_vsubuwm (vector signed int, vector - signed int); - - - - - vmx - - - vector unsigned int vec_vsubuwm (vector bool int, vector - unsigned int); - - - - - vmx - - - vector unsigned int vec_vsubuwm (vector unsigned int, - vector bool int); - - - - - vmx - - - vector unsigned int vec_vsubuwm (vector unsigned int, - vector unsigned int); - - - - - vmx - - - vector unsigned int vec_vsubuws (vector bool int, vector - unsigned int); - - - - - vmx - - - vector unsigned int vec_vsubuws (vector unsigned int, - vector bool int); - - - - - vmx - - - vector unsigned int vec_vsubuws (vector unsigned int, - vector unsigned int); - - - - - vmx - - - vector signed int vec_vsum4sbs (vector signed char, vector - signed int); - - - - - vmx - - - vector signed int vec_vsum4shs (vector signed short, vector - signed int); - - - - - vmx - - - vector unsigned int vec_vsum4ubs (vector unsigned char, - vector unsigned int); - - - - - vmx - - - vector unsigned int vec_vupkhpx (vector pixel); - - - - - vmx - - - vector bool short vec_vupkhsb (vector bool char); - - - - - vmx - - - vector signed short vec_vupkhsb (vector signed - char); - - - - - vmx - - - vector bool int vec_vupkhsh (vector bool short); - - - - - vmx - - - vector signed int vec_vupkhsh (vector signed short); - - - - - vsx2 - - - vector signed long long vec_vupkhsw (vector int); - - - - - vsx2 - - - vector unsigned long long vec_vupkhsw (vector unsigned - int); - - - - - vmx - - - vector unsigned int vec_vupklpx (vector pixel); - - - - - vmx - - - vector bool short vec_vupklsb (vector bool char); - - - - - vmx - - - vector signed short vec_vupklsb (vector signed - char); - - - - - vmx - - - vector bool int vec_vupklsh (vector bool short); - - - - - vmx - - - vector signed int vec_vupklsh (vector signed short); - - - - - vsx2 - - - vector signed long long vec_vupklsw (vector - signed - int); - - - - - vsx2 - - - vector unsigned long long vec_vupklsw (vector - unsigned - int); - - - - -
-
-
- Deprecated Functions - - lists the deprecated Power SIMD - interfaces. - lists the deprecated - predicates. - As in - , functions are listed - alphabetically; supported prototypes are provided for each function. - Prototypes are grouped by integer and floating-point types. Within each - group, types are sorted alphabetically, first by type name and then by - modifier. Prototypes are first sorted by the built-in result type, which is - the output argument. Then, prototypes are sorted by the input arguments; - ARG1, ARG2, and ARG3; in order. See - for the format of the - prototypes. - - Developers should consult their compiler's documentation to - determine which of these functions are provided because each compiler - may implement a different subset (or none) of the functions specified - in - and - . - - - - Deprecated Power SIMD Interfaces - - - - - - - - Group - - - - - Description of Deprecated POWER SIMD - Prototypes - - - - - - - - VEC_ADD (ARG1, ARG2) - - - Purpose: - Returns a vector containing the sums of each set of - corresponding elements of the given vectors. - Result value: - The value of each element of the result is the sum of the - corresponding elements of ARG1 and ARG2. For signed and unsigned - integers, modular arithmetic is used. - - - - - - - - vector signed char vec_add (vector bool char, vector signed - char); - - - - - - - - vector signed char vec_add (vector signed char, vector bool - char); - - - - - - - - vector unsigned char vec_add (vector bool char, vector - unsigned char); - - - - - - - - vector unsigned char vec_add (vector unsigned char, vector - bool char); - - - - - - - - vector signed int vec_add (vector bool int, vector signed - int); - - - - - - - - vector signed int vec_add (vector signed int, vector bool - int); - - - - - - - - vector unsigned int vec_add (vector bool int, vector - unsigned int); - - - - - - - - vector unsigned int vec_add (vector unsigned int, vector - bool int); - - - - - - - - vector signed short vec_add (vector bool short, vector - signed short); - - - - - - - - vector signed short vec_add (vector signed short, vector - bool short); - - - - - - - - vector unsigned short vec_add (vector bool short, vector - unsigned short); - - - - - - - - vector unsigned short vec_add (vector unsigned short, - vector bool short); - - - - - VEC_ADDS (ARG1, ARG2) - - - Purpose: - Returns a vector containing the saturated sums of each set - of corresponding elements of the given vectors. - Result value: - The value of each element of the result is the saturated - sum of the corresponding elements of ARG1 and ARG2. - - - - - - - - vector signed char vec_adds (vector bool char, vector - signed char); - - - - - - - - vector signed char vec_adds (vector signed char, vector - bool char); - - - - - - - - vector unsigned char vec_adds (vector bool char, vector - unsigned char); - - - - - - - - vector unsigned char vec_adds (vector unsigned char, vector - bool char); - - - - - - - - vector signed int vec_adds (vector bool int, vector signed - int); - - - - - - - - vector signed int vec_adds (vector signed int, vector bool - int); - - - - - - - - vector unsigned int vec_adds (vector bool int, vector - unsigned int); - - - - - - - - vector unsigned int vec_adds (vector unsigned int, vector - bool int); - - - - - - - - vector signed short vec_adds (vector bool short, vector - signed short); - - - - - - - - vector signed short vec_adds (vector signed short, vector - bool short); - - - - - - - - vector unsigned short vec_adds (vector bool short, vector - unsigned short); - - - - - - - - vector unsigned short vec_adds (vector unsigned short, - vector bool short); - - - - - VEC_AND (ARG1, ARG2) - - - Purpose: - Performs a bitwise AND of the given vectors. - Result value: - The result is the bitwise AND of ARG1 and ARG2. - - - - - - - - vector signed char vec_and (vector bool char, vector signed - char); - - - - - - - - vector signed char vec_and (vector signed char, vector bool - char); - - - - - - - - vector unsigned char vec_and (vector bool char, vector - unsigned char); - - - - - - - - vector unsigned char vec_and (vector unsigned char, vector - bool char); - - - - - - - - vector signed int vec_and (vector bool int, vector signed - int); - - - - - - - - vector signed int vec_and (vector signed int, vector bool - int); - - - - - - - - vector unsigned int vec_and (vector bool int, vector - unsigned int); - - - - - - - - vector unsigned int vec_and (vector unsigned int, vector - bool int); - - - - - Optional - - - vector signed long long vec_and (vector bool long long, - vector signed long long); - - - - - Optional - - - vector signed long long vec_and (vector signed long long, - vector bool long long); - - - - - Optional - - - vector unsigned long long vec_and (vector bool long long, - vector unsigned long long); - - - - - Optional - - - vector unsigned long long vec_and (vector unsigned long - long, vector bool long long); - - - - - - - - vector signed short vec_and (vector bool short, vector - signed short); - - - - - - - - vector signed short vec_and (vector signed short, vector - bool short); - - - - - - - - vector unsigned short vec_and (vector bool short, vector - unsigned short); - - - - - - - - vector unsigned short vec_and (vector unsigned short, - vector bool short); - - - - - - - - vector double vec_and (vector bool long long, vector - double); - - - - - - - - vector double vec_and (vector double, vector bool long - long); - - - - - - - - vector float vec_and (vector bool int, vector - float); - - - - - - - - vector float vec_and (vector float, vector bool - int); - - - - - VEC_ANDC (ARG1, ARG2) - - - Purpose: - Performs a bitwise AND of the first argument and the - bitwise complement of the second argument. - Result value: - The result is the bitwise AND of ARG1 with the bitwise - complement of ARG2. - - - - - - - - vector signed char vec_andc (vector bool char, vector - signed char); - - - - - - - - vector signed char vec_andc (vector signed char, vector - bool char); - - - - - - - - vector unsigned char vec_andc (vector bool char, vector - unsigned char); - - - - - - - - vector unsigned char vec_andc (vector unsigned char, vector - bool char); - - - - - - - - vector signed int vec_andc (vector bool int, vector signed - int); - - - - - - - - vector signed int vec_andc (vector signed int, vector bool - int); - - - - - - - - vector unsigned int vec_andc (vector bool int, vector - unsigned int); - - - - - - - - vector unsigned int vec_andc (vector unsigned int, vector - bool int); - - - - - Optional - - - vector signed long long vec_andc (vector bool long long, - vector signed long long); - - - - - Optional - - - vector signed long long vec_andc (vector signed long long, - vector bool long long); - - - - - Optional - - - vector unsigned long long vec_andc (vector bool long long, - vector unsigned long long); - - - - - Optional - - - vector unsigned long long vec_andc (vector unsigned long - long, vector bool long long); - - - - - - - - vector signed short vec_andc (vector bool short, vector - signed short); - - - - - - - - vector signed short vec_andc (vector signed short, vector - bool short); - - - - - - - - vector unsigned short vec_andc (vector bool short, vector - unsigned short); - - - - - - - - vector unsigned short vec_andc (vector unsigned short, - vector bool short); - - - - - - - - vector double vec_andc (vector bool long long, vector - double); - - - - - - - - vector double vec_andc (vector double, vector bool long - long); - - - - - - - - vector float vec_andc (vector bool int, vector - float); - - - - - - - - vector float vec_andc (vector float, vector bool - int); - - - - - VEC_EQV (ARG1, ARG2) - - - Purpose: - Performs a bitwise XNOR of the given vectors. - Result value: - The result is the bitwise XNOR of ARG1 and ARG2. - - - - - - - - vector signed char vec_eqv (vector bool char, vector signed - char); - - - - - - - - vector signed char vec_eqv (vector signed char, vector bool - char); - - - - - - - - vector unsigned char vec_eqv (vector bool char, vector - unsigned char); - - - - - - - - vector unsigned char vec_eqv (vector unsigned char, vector - bool char); - - - - - - - - vector signed int vec_eqv (vector bool int, vector signed - int); - - - - - - - - vector signed int vec_eqv (vector signed int, vector bool - int); - - - - - - - - vector unsigned int vec_eqv (vector bool int, vector - unsigned int); - - - - - - - - vector unsigned int vec_eqv (vector unsigned int, vector - bool int); - - - - - - - - vector signed long long vec_eqv (vector bool long long, - vector signed long long); - - - - - - - - vector signed long long vec_eqv (vector signed long long, - vector bool long long); - - - - - - - - vector unsigned long long vec_eqv (vector bool long long, - vector unsigned long long); - - - - - - - - vector unsigned long long vec_eqv (vector unsigned long - long, vector bool long long); - - - - - - - - vector signed short vec_eqv (vector bool short, vector - signed short); - - - - - - - - vector signed short vec_eqv (vector signed short, vector - bool short); - - - - - - - - vector unsigned short vec_eqv (vector bool short, vector - unsigned short); - - - - - - - - vector unsigned short vec_eqv (vector unsigned short, - vector bool short); - - - - - VEC_INSERT (ARG1, ARG2, ARG3) - - - Purpose: - Returns a copy of vector ARG2 with element ARG3 replaced by - the value of ARG1. - Result value: - A copy of vector ARG2 with element ARG3 replaced by the - value of ARG1. This function uses modular arithmetic on ARG3 to - determine the element number. For example, if ARG3 is out of - range, the compiler uses ARG3 modulo the number of elements in - the vector to determine the element position. - - - - - - - - vector bool char vec_insert (unsigned char, vector bool - char, signed int); - - - - - - - - vector bool int vec_insert (unsigned int, vector bool int, - signed int); - - - - - - - - vector bool long long vec_insert (unsigned long long, - vector bool long long, signed int); - - - - - - - - vector bool short vec_insert (unsigned short, vector bool - short, signed int); - - - - - VEC_MAX (ARG1, ARG2) - - - Purpose - Returns a vector containing the maximum value from each set - of corresponding elements of the given vectors. - Result value - The value of each element of the result is the maximum of - the values of the corresponding elements of ARG1 and ARG2. - - - - - - - - vector signed char vec_max (vector bool char, vector signed - char); - - - - - - - - vector signed char vec_max (vector signed char, vector bool - char); - - - - - - - - vector unsigned char vec_max (vector bool char, vector - unsigned char); - - - - - - - - vector unsigned char vec_max (vector unsigned char, vector - bool char); - - - - - - - - vector signed int vec_max (vector bool int, vector signed - int); - - - - - - - - vector signed int vec_max (vector signed int, vector bool - int); - - - - - - - - vector unsigned int vec_max (vector bool int, vector - unsigned int); - - - - - - - - vector unsigned int vec_max (vector unsigned int, vector - bool int); - - - - - - - - vector signed long long vec_max (vector bool long long, - vector signed long long); - - - - - - - - vector signed long long vec_max (vector signed long long, - vector bool long long); - - - - - - - - vector unsigned long long vec_max (vector bool long long, - vector unsigned long long); - - - - - - - - vector unsigned long long vec_max (vector unsigned long - long, vector bool long long); - - - - - - - - vector signed short vec_max (vector bool short, vector - signed short); - - - - - - - - vector signed short vec_max (vector signed short, vector - bool short); - - - - - - - - vector unsigned short vec_max (vector bool short, vector - unsigned short); - - - - - - - - vector unsigned short vec_max (vector unsigned short, - vector bool short); - - - - - VEC_MERGEH (ARG1, ARG2) - - - Purpose: - Merges the most-significant halves of two vectors. - Result value: - Assume that the elements of each vector are numbered - beginning with 0. The even-numbered elements of the result are - taken, in order, from the elements in the most-significant 8 - bytes of ARG1. The odd-numbered elements of the result are taken, - in order, from the elements in the most-significant 8 bytes of - ARG2. - - - - - Optional - - - vector signed long long vec_mergeh (vector bool long long, - vector signed long long); - - - - - Optional - - - vector signed long long vec_mergeh (vector signed long - long, vector bool long long); - - - - - Optional - - - vector unsigned long long vec_mergeh (vector bool long - long, vector unsigned long long); - - - - - Optional - - - vector unsigned long long vec_mergeh (vector unsigned long - long, vector bool long long); - - - - - VEC_MERGEL (ARG1, ARG2) - - - Purpose: - Merges the least-significant halves of two vectors. - Result value: - Assume that the elements of each vector are numbered - beginning with 0. The even-numbered elements of the result are - taken, in order, from the elements in the least-significant 8 - bytes of ARG1. The odd-numbered elements of the result are taken, - in order, from the elements in the least-significant 8 bytes of - ARG2. - - - - - Optional - - - vector signed long long vec_mergel (vector bool long long, - vector signed long long); - - - - - Optional - - - vector signed long long vec_mergel (vector signed long - long, vector bool long long); - - - - - Optional - - - vector unsigned long long vec_mergel (vector bool long - long, vector unsigned long long); - - - - - Optional - - - vector unsigned long long vec_mergel (vector unsigned long - long, vector bool long long); - - - - - VEC_MIN (ARG1, ARG2) - - - Purpose: - Returns a vector containing the minimum value from each set - of corresponding elements of the given vectors. - Result value: - The value of each element of the result is the minimum of - the values of the corresponding elements of ARG1 and ARG2. - - - - - - - - vector signed char vec_min (vector bool char, vector signed - char); - - - - - - - - vector signed char vec_min (vector signed char, vector bool - char); - - - - - - - - vector unsigned char vec_min (vector bool char, vector - unsigned char); - - - - - - - - vector unsigned char vec_min (vector unsigned char, vector - bool char); - - - - - - - - vector signed int vec_min (vector bool int, vector signed - int); - - - - - - - - vector signed int vec_min (vector signed int, vector bool - int); - - - - - - - - vector unsigned int vec_min (vector bool int, vector - unsigned int); - - - - - - - - vector unsigned int vec_min (vector unsigned int, vector - bool int); - - - - - - - - vector signed long long vec_min (vector signed long long, - vector bool long long); - - - - - - - - vector signed long long vec_min (vector bool long long, - vector signed long long); - - - - - - - - vector unsigned long long vec_min (vector unsigned long - long, vector bool long long); - - - - - - - - vector unsigned long long vec_min (vector bool long long, - vector unsigned long long); - - - - - - - - vector signed short vec_min (vector bool short, vector - signed short); - - - - - - - - vector signed short vec_min (vector signed short, vector - bool short); - - - - - - - - vector unsigned short vec_min (vector bool short, vector - unsigned short); - - - - - - - - vector unsigned short vec_min (vector unsigned short, - vector bool short); - - - - - VEC_MLADD (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector containing the results of performing a - multiply-low-and-add operation for each corresponding set of - elements of the given vectors. - Result value: - The value of each element of the result is the value of the - least-significant 16 bits of the product of the values of the - corresponding elements of ARG1 and ARG2, added to the value of - the corresponding element of ARG3. The addition is performed - using modular arithmetic. - - - - - - - - vector signed short vec_mladd (vector signed short, vector - signed short, vector signed short); - - - - - - - - vector signed short vec_mladd (vector signed short, vector - unsigned short, vector unsigned short); - - - - - - - - vector signed short vec_mladd (vector unsigned short, - vector signed short, vector signed short); - - - - - - - - vector unsigned short vec_mladd (vector unsigned short, - vector unsigned short, vector unsigned short); - - - - - VEC_NAND (ARG1, ARG2) - - - Purpose: - Performs a bitwise NAND of the given vectors. - Result value: - The result is the bitwise NAND of ARG1 and ARG2. - - - - - - - - vector signed char vec_nand (vector bool char, vector - signed char); - - - - - - - - vector signed char vec_nand (vector signed char, vector - bool char); - - - - - - - - vector unsigned char vec_nand (vector bool char, vector - unsigned char); - - - - - - - - vector unsigned char vec_nand (vector unsigned char, vector - bool char); - - - - - - - - vector signed int vec_nand (vector bool int, vector - int); - - - - - - - - vector signed int vec_nand (vector signed int, vector bool - int); - - - - - - - - vector unsigned int vec_nand (vector bool int, vector - unsigned int); - - - - - - - - vector unsigned int vec_nand (vector unsigned int, vector - bool int); - - - - - - - - vector signed long long vec_nand (vector bool long long, - vector signed long long); - - - - - - - - vector signed long long vec_nand (vector signed long long, - vector bool long long); - - - - - - - - vector unsigned long long vec_nand (vector bool long long, - vector unsigned long long); - - - - - - - - vector unsigned long long vec_nand (vector unsigned long - long, vector bool long long); - - - - - - - - vector signed short vec_nand (vector bool short, vector - signed short); - - - - - - - - vector signed short vec_nand (vector signed short, vector - bool short); - - - - - - - - vector unsigned short vec_nand (vector bool short, vector - unsigned short); - - - - - - - - vector unsigned short vec_nand (vector unsigned short, - vector bool short); - - - - - VEC_NOR (ARG1, ARG2) - - - Purpose: - Performs a bitwise NOR of the given vectors. - Result value: - The result is the bitwise NOR of ARG1 and ARG2. - - - - - Optional - - - vector signed long long vec_nor (vector bool long long, - vector signed long long); - - - - - Optional - - - vector signed long long vec_nor (vector signed long long, - vector bool long long); - - - - - Optional - - - vector unsigned long long vec_nor (vector bool long long, - vector unsigned long long); - - - - - Optional - - - vector unsigned long long vec_nor (vector unsigned long - long, vector bool long long); - - - - - VEC_OR (ARG1, ARG2) - - - Purpose: - Performs a bitwise OR of the given vectors. - Result value: - The result is the bitwise OR of ARG1 and ARG2. - - - - - - - - vector signed char vec_or (vector bool char, vector signed - char); - - - - - - - - vector signed char vec_or (vector signed char, vector bool - char); - - - - - - - - vector unsigned char vec_or (vector bool char, vector - unsigned char); - - - - - - - - vector unsigned char vec_or (vector unsigned char, vector - bool char); - - - - - - - - vector signed int vec_or (vector bool int, vector signed - int); - - - - - - - - vector signed int vec_or (vector signed int, vector bool - int); - - - - - - - - vector unsigned int vec_or (vector bool int, vector - unsigned int); - - - - - - - - vector unsigned int vec_or (vector unsigned int, vector - bool int); - - - - - Optional - - - vector signed long long vec_or (vector bool long long, - vector signed long long); - - - - - Optional - - - vector signed long long vec_or (vector signed long long, - vector bool long long); - - - - - Optional - - - vector unsigned long long vec_or (vector bool long long, - vector unsigned long long); - - - - - Optional - - - vector unsigned long long vec_or (vector unsigned long - long, vector bool long long); - - - - - - - - vector signed short vec_or (vector bool short, vector - signed short); - - - - - - - - vector signed short vec_or (vector signed short, vector - bool short); - - - - - - - - vector unsigned short vec_or (vector bool short, vector - unsigned short); - - - - - - - - vector unsigned short vec_or (vector unsigned short, vector - bool short); - - - - - - - - vector double vec_or (vector bool long long, vector - double); - - - - - - - - vector double vec_or (vector double, vector bool long - long); - - - - - - - - vector float vec_or (vector bool int, vector float); - - - - - - - - vector float vec_or (vector float, vector bool int); - - - - - VEC_ORC (ARG1, ARG2) - - - Purpose: - Performs a bitwise OR of the first vector with the negated - second vector. - Result value: - The result is the bitwise OR of ARG1 and the bitwise - negation of ARG2. - - - - - - - - vector signed char vec_orc (vector bool char, vector signed - char); - - - - - - - - vector signed char vec_orc (vector signed char, vector bool - char); - - - - - - - - vector unsigned char vec_orc (vector bool char, vector - unsigned char); - - - - - - - - vector unsigned char vec_orc (vector unsigned char, vector - bool char); - - - - - - - - vector signed int vec_orc (vector bool int, vector signed - int); - - - - - - - - vector signed int vec_orc (vector int signed int, vector - bool int); - - - - - - - - vector unsigned int vec_orc (vector bool int, vector - unsigned int); - - - - - - - - vector unsigned int vec_orc (vector unsigned int, vector - bool int); - - - - - - - - vector signed long long vec_orc (vector bool long long, - vector signed long long); - - - - - - - - vector signed long long vec_orc (vector signed long long, - vector bool long long); - - - - - - - - vector unsigned long long vec_orc (vector bool long long, - vector unsigned long long); - - - - - - - - vector unsigned long long vec_orc (vector unsigned long - long, vector bool long long); - - - - - - - - vector signed short vec_orc (vector bool short, vector - signed short); - - - - - - - - vector signed short vec_orc (vector signed short, vector - bool short); - - - - - - - - vector unsigned short vec_orc (vector bool short, vector - unsigned short); - - - - - - - - vector unsigned short vec_orc (vector unsigned short, - vector bool short); - - - - - - - - vector double vec_orc (vector bool long long, vector - double); - - - - - - - - vector double vec_orc (vector double, vector bool long - long); - - - - - - - - vector float vec_orc (vector bool int, vector - float); - - - - - - - - vector float vec_orc (vector float, vector bool - int); - - - - - VEC_SEL (ARG1, ARG2, ARG3) - - - Purpose: - Returns a vector containing the value of either ARG1 or - ARG2 depending on the value of ARG3. - Result value: - Each bit of the result vector has the value of the - corresponding bit of ARG1 if the corresponding bit of ARG3 is 0. - Otherwise, each bit of the result vector has the value of the - corresponding bit of ARG2. - - - - - - - - vector double vec_sel (vector double, vector double, vector - unsigned long long); - - - - - VEC_SLL (ARG1, ARG2) - - - Purpose: - Left shifts a vector by a given number of bits. - Result value: - The result is the contents of ARG1, shifted left by the - number of bits specified by the three least-significant bits of - ARG2. The bits that are shifted out are replaced by zeros. The - shift count must have been replicated into all bytes of the shift - count specification. - - - - - - - - vector bool char vec_sll (vector bool char, vector unsigned - char); - - - - - - - - vector bool char vec_sll (vector bool char, vector unsigned - int); - - - - - - - - vector bool char vec_sll (vector bool char, vector unsigned - short); - - - - - - - - vector signed char vec_sll (vector signed char, vector - unsigned int); - - - - - - - - vector signed char vec_sll (vector signed char, vector - unsigned short); - - - - - - - - vector unsigned char vec_sll (vector unsigned char, vector - unsigned int); - - - - - - - - vector unsigned char vec_sll (vector unsigned char, vector - unsigned short); - - - - - - - - vector bool int vec_sll (vector bool int, vector unsigned - char); - - - - - - - - vector bool int vec_sll (vector bool int, vector unsigned - int); - - - - - - - - vector bool int vec_sll (vector bool int, vector unsigned - short); - - - - - - - - vector signed int vec_sll (vector signed int, vector - unsigned int); - - - - - - - - vector signed int vec_sll (vector signed int, vector - unsigned short); - - - - - - - - vector unsigned int vec_sll (vector unsigned int, vector - unsigned int); - - - - - - - - vector unsigned int vec_sll (vector unsigned int, vector - unsigned short); - - - - - - - - vector bool long long vec_sll (vector bool long long, - vector unsigned char); - - - - - - - - vector bool long long vec_sll (vector bool long long, - vector unsigned long long); - - - - - - - - vector bool long long vec_sll (vector bool long long, - vector unsigned short); - - - - - - - - vector signed long long vec_sll (vector signed long long, - vector unsigned long long); - - - - - - - - vector signed long long vec_sll (vector signed long long, - vector unsigned short); - - - - - - - - vector unsigned long long vec_sll (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector unsigned long long vec_sll (vector unsigned long - long, vector unsigned short); - - - - - - - - vector pixel vec_sll (vector pixel, vector unsigned - int); - - - - - - - - vector pixel vec_sll (vector pixel, vector unsigned - short); - - - - - - - - vector bool short vec_sll (vector bool short, vector - unsigned char); - - - - - - - - vector bool short vec_sll (vector bool short, vector - unsigned int); - - - - - - - - vector bool short vec_sll (vector bool short, vector - unsigned short); - - - - - - - - vector signed short vec_sll (vector signed short, vector - unsigned int); - - - - - - - - vector signed short vec_sll (vector signed short, vector - unsigned short); - - - - - - - - vector unsigned short vec_sll (vector unsigned short, - vector unsigned int); - - - - - - - - vector unsigned short vec_sll (vector unsigned short, - vector unsigned short); - - - - - VEC_SRL (ARG1, ARG2) - - - Purpose: - Right shifts a vector by a given number of bits. - Result value: - The result is the contents of ARG1, shifted right by the - number of bits specified by the 3 least-significant bits of ARG2. - The bits that are shifted out are replaced by zeros. - The shift - count must have been replicated into all bytes of the shift count - specification. - - - - - - - - vector bool char vec_srl (vector bool char, vector unsigned - char); - - - - - - - - vector bool char vec_srl (vector bool char, vector unsigned - int); - - - - - - - - vector bool char vec_srl (vector bool char, vector unsigned - short); - - - - - - - - vector signed char vec_srl (vector signed char, vector - unsigned int); - - - - - - - - vector signed char vec_srl (vector signed char, vector - unsigned short); - - - - - - - - vector unsigned char vec_srl (vector unsigned char, vector - unsigned int); - - - - - - - - vector unsigned char vec_srl (vector unsigned char, vector - unsigned short); - - - - - - - - vector bool int vec_srl (vector bool int, vector unsigned - char); - - - - - - - - vector bool int vec_srl (vector bool int, vector unsigned - int); - - - - - - - - vector bool int vec_srl (vector bool int, vector unsigned - short); - - - - - - - - vector signed int vec_srl (vector signed int, vector - unsigned int); - - - - - - - - vector signed int vec_srl (vector signed int, vector - unsigned short); - - - - - - - - vector unsigned int vec_srl (vector unsigned int, vector - unsigned int); - - - - - - - - vector unsigned int vec_srl (vector unsigned int, vector - unsigned short); - - - - - - - - vector signed long long vec_srl (vector signed long long, - vector unsigned long long); - - - - - - - - vector signed long long vec_srl (vector signed long long, - vector unsigned short); - - - - - - - - vector unsigned long long vec_srl (vector unsigned long - long, vector unsigned long long); - - - - - - - - vector unsigned long long vec_srl (vector unsigned long - long, vector unsigned short); - - - - - - - - vector pixel vec_srl (vector pixel, vector unsigned - int); - - - - - - - - vector pixel vec_srl (vector pixel, vector unsigned - short); - - - - - - - - vector bool short vec_srl (vector bool short, vector - unsigned char); - - - - - - - - vector bool short vec_srl (vector bool short, vector - unsigned int); - - - - - - - - vector bool short vec_srl (vector bool short, vector - unsigned short); - - - - - - - - vector signed short vec_srl (vector signed short, vector - unsigned int); - - - - - - - - vector signed short vec_srl (vector signed short, vector - unsigned short); - - - - - - - - vector unsigned short vec_srl (vector unsigned short, - vector unsigned int); - - - - - - - - vector unsigned short vec_srl (vector unsigned short, - vector unsigned short); - - - - - VEC_SUB (ARG1, ARG2) - - - Purpose: - Returns a vector containing the result of subtracting each - element of ARG2 from the corresponding element of ARG1. This - function emulates the operation on long long vectors. - Result value: - The value of each element of the result is the result of - subtracting the value of the corresponding element of ARG2 from - the value of the corresponding element of ARG1. The arithmetic is - modular for integer vectors. - - - - - - - - vector signed char vec_sub (vector bool char, vector signed - char); - - - - - - - - vector signed char vec_sub (vector signed char, vector bool - char); - - - - - - - - vector unsigned char vec_sub (vector bool char, vector - unsigned char); - - - - - - - - vector unsigned char vec_sub (vector unsigned char, vector - bool char); - - - - - - - - vector signed int vec_sub (vector bool int, vector signed - int); - - - - - - - - vector signed int vec_sub (vector signed int, vector bool - int); - - - - - - - - vector unsigned int vec_sub (vector bool int, vector - unsigned int); - - - - - - - - vector unsigned int vec_sub (vector unsigned int, vector - bool int); - - - - - - - - vector signed long long vec_sub (vector bool long long, - vector signed long long); - - - - - - - - vector signed long long vec_sub (vector signed long long, - vector bool long long); - - - - - - - - vector unsigned long long vec_sub (vector bool long long, - vector unsigned long long); - - - - - - - - vector unsigned long long vec_sub (vector unsigned long - long, vector bool long long); - - - - - - - - vector signed short vec_sub (vector bool short, vector - signed short); - - - - - - - - vector signed short vec_sub (vector signed short, vector - bool short); - - - - - - - - vector unsigned short vec_sub (vector bool short, vector - unsigned short); - - - - - - - - vector unsigned short vec_sub (vector unsigned short, - vector bool short); - - - - - VEC_SUBS (ARG1, ARG2) - - - Purpose: - Returns a vector containing the saturated differences of - each set of corresponding elements of the given vectors. - Result value: - The value of each element of the result is the saturated - result of subtracting the value of the corresponding element of - ARG2 from the value of the corresponding element of ARG1. - - - - - - - - vector signed char vec_subs (vector bool char, vector - signed char); - - - - - - - - vector signed char vec_subs (vector signed char, vector - bool char); - - - - - - - - vector unsigned char vec_subs (vector bool char, vector - unsigned char); - - - - - - - - vector unsigned char vec_subs (vector unsigned char, vector - bool char); - - - - - - - - vector signed int vec_subs (vector bool int, vector signed - int); - - - - - - - - vector signed int vec_subs (vector signed int, vector bool - int); - - - - - - - - vector unsigned int vec_subs (vector bool int, vector - unsigned int); - - - - - - - - vector unsigned int vec_subs (vector unsigned int, vector - bool int); - - - - - - - - vector signed short vec_subs (vector bool short, vector - signed short); - - - - - - - - vector signed short vec_subs (vector signed short, vector - bool short); - - - - - - - - vector unsigned short vec_subs (vector bool short, vector - unsigned short); - - - - - - - - vector unsigned short vec_subs (vector unsigned short, - vector bool short); - - - - - VEC_VCLZ (ARG1) - - - Purpose: - Returns a vector containing the number of most-significant - bits equal to 0 of each corresponding element of the given - vector. - Result value: - The value of each element of the result is the sum of the - corresponding single-precision floating-point elements of ARG1 - and ARG2. - - Deprecated: The preferred form of this vector - built-in function is vec_ctlz. - - - - - - - - vector signed char vec_vclz (vector signed char); - - - - - - - - vector unsigned char vec_vclz (vector unsigned - char); - - - - - - - - vector signed int vec_vclz (vector signed int); - - - - - - - - vector unsigned int vec_vclz (vector unsigned int); - - - - - - - - vector signed long long vec_vclz (vector signed long - long); - - - - - - - - vector unsigned long long vec_vclz (vector unsigned long - long); - - - - - - - - vector signed short vec_vclz (vector signed short); - - - - - - - - vector unsigned short vec_vclz (vector unsigned - short); - - - - - VEC_XOR (ARG1, ARG2) - - - Purpose: - Performs a bitwise XOR of the given vectors. - Result value: - The result is the bitwise XOR of ARG1 and ARG2. - - - - - - - - vector signed char vec_xor (vector bool char, vector signed - char); - - - - - - - - vector signed char vec_xor (vector signed char, vector bool - char); - - - - - - - - vector unsigned char vec_xor (vector bool char, vector - unsigned char); - - - - - - - - vector unsigned char vec_xor (vector unsigned char, vector - bool char); - - - - - - - - vector signed int vec_xor (vector bool int, vector signed - int); - - - - - - - - vector signed int vec_xor (vector signed int, vector bool - int); - - - - - - - - vector unsigned int vec_xor (vector bool int, vector - unsigned int); - - - - - - - - vector unsigned int vec_xor (vector unsigned int, vector - bool int); - - - - - Optional - - - vector signed long long vec_xor (vector bool long long, - vector signed long long); - - - - - Optional - - - vector signed long long vec_xor (vector signed long long, - vector bool long long); - - - - - Optional - - - vector unsigned long long vec_xor (vector bool long long, - vector unsigned long long); - - - - - Optional - - - vector unsigned long long vec_xor (vector unsigned long - long, vector bool long long); - - - - - - - - vector signed short vec_xor (vector bool short, vector - signed short); - - - - - - - - vector signed short vec_xor (vector signed short, vector - bool short); - - - - - - - - vector unsigned short vec_xor (vector bool short, vector - unsigned short); - - - - - - - - vector unsigned short vec_xor (vector unsigned short, - vector bool short); - - - - - - - - vector double vec_xor (vector bool long long, vector - double); - - - - - - - - vector double vec_xor (vector double, vector bool long - long); - - - - - - - - vector float vec_xor (vector bool int, vector - float); - - - - - - - - vector float vec_xor (vector float, vector bool - int); - - - - -
- - - Deprecated Predicates - - - - - - - - Group - - - - - Description of Deprecated Predicate - Prototypes - - - - - - - - VEC_ALL_EQ (ARG1, ARG2) - - - Purpose: - Tests whether all sets of corresponding elements of the - given vectors are equal. - Result value: - The result is 1 if each element of ARG1 is equal to the - corresponding element of ARG2. Otherwise, the result is 0. - - - - - - - - int vec_all_eq (vector bool char, vector signed - char); - - - - - - - - int vec_all_eq (vector bool char, vector unsigned - char); - - - - - - - - int vec_all_eq (vector signed char, vector bool - char); - - - - - - - - int vec_all_eq (vector unsigned char, vector bool - char); - - - - - - - - int vec_all_eq (vector bool int, vector signed int); - - - - - - - - int vec_all_eq (vector bool int, vector unsigned - int); - - - - - - - - int vec_all_eq (vector signed int, vector bool int); - - - - - - - - int vec_all_eq (vector unsigned int, vector bool - int); - - - - - - - - int vec_all_eq (vector bool long long, vector signed long - long); - - - - - - - - int vec_all_eq (vector bool long long, vector unsigned long - long); - - - - - - - - int vec_all_eq (vector signed long long, vector bool long - long); - - - - - - - - int vec_all_eq (vector unsigned long long, vector bool long - long); - - - - - - - - int vec_all_eq (vector bool short, vector signed - short); - - - - - - - - int vec_all_eq (vector bool short, vector unsigned - short); - - - - - - - - int vec_all_eq (vector signed short, vector bool - short); - - - - - - - - int vec_all_eq (vector unsigned short, vector bool - short); - - - - - VEC_ALL_GE (ARG1, ARG2) - - - Purpose: - Tests whether all elements of the first argument are - greater than or equal to the corresponding elements of the second - argument. - Result value: - The result is 1 if all elements of ARG1 are greater than or - equal to the corresponding elements of ARG2. Otherwise, the - result is 0. - - - - - - - - int vec_all_ge (vector bool char, vector signed - char); - - - - - - - - int vec_all_ge (vector bool char, vector unsigned - char); - - - - - - - - int vec_all_ge (vector signed char, vector bool - char); - - - - - - - - int vec_all_ge (vector unsigned char, vector bool - char); - - - - - - - - int vec_all_ge (vector bool int, vector signed int); - - - - - - - - int vec_all_ge (vector bool int, vector unsigned - int); - - - - - - - - int vec_all_ge (vector signed int, vector bool int); - - - - - - - - int vec_all_ge (vector unsigned int, vector bool - int); - - - - - - - - int vec_all_ge (vector bool long long, vector signed long - long); - - - - - - - - int vec_all_ge (vector bool long long, vector unsigned long - long); - - - - - - - - int vec_all_ge (vector signed long long, vector bool long - long); - - - - - - - - int vec_all_ge (vector unsigned long long, vector bool long - long); - - - - - - - - int vec_all_ge (vector bool short, vector signed - short); - - - - - - - - int vec_all_ge (vector bool short, vector unsigned - short); - - - - - - - - int vec_all_ge (vector signed short, vector bool - short); - - - - - - - - int vec_all_ge (vector unsigned short, vector bool - short); - - - - - VEC_ALL_GT (ARG1, ARG2) - - - Purpose: - Tests whether all elements of the first argument are - greater than the corresponding elements of the second - argument. - Result value: - The result is 1 if all elements of ARG1 are greater than - the corresponding elements of ARG2. Otherwise, the result is - 0. - - - - - - - - int vec_all_gt (vector bool char, vector signed - char); - - - - - - - - int vec_all_gt (vector bool char, vector unsigned - char); - - - - - - - - int vec_all_gt (vector signed char, vector bool - char); - - - - - - - - int vec_all_gt (vector unsigned char, vector bool - char); - - - - - - - - int vec_all_gt (vector bool int, vector signed int); - - - - - - - - int vec_all_gt (vector bool int, vector unsigned - int); - - - - - - - - int vec_all_gt (vector signed int, vector bool int); - - - - - - - - int vec_all_gt (vector unsigned int, vector bool - int); - - - - - - - - int vec_all_gt (vector bool long long, vector signed long - long); - - - - - - - - int vec_all_gt (vector bool long long, vector unsigned long - long); - - - - - - - - int vec_all_gt (vector signed long long, vector bool long - long); - - - - - - - - int vec_all_gt (vector unsigned long long, vector bool long - long); - - - - - - - - int vec_all_gt (vector bool short, vector signed - short); - - - - - - - - int vec_all_gt (vector bool short, vector unsigned - short); - - - - - - - - int vec_all_gt (vector signed short, vector bool - short); - - - - - - - - int vec_all_gt (vector unsigned short, vector bool - short); - - - - - VEC_ALL_LE (ARG1, ARG2) - - - Purpose: - Tests whether all elements of the first argument are less - than or equal to the corresponding elements of the second - argument. - Result value: - The result is 1 if all elements of ARG1 are less than or - equal to the corresponding elements of ARG2. Otherwise, the - result is 0. - - - - - - - - int vec_all_le (vector bool char, vector signed - char); - - - - - - - - int vec_all_le (vector bool char, vector unsigned - char); - - - - - - - - int vec_all_le (vector signed char, vector bool - char); - - - - - - - - int vec_all_le (vector unsigned char, vector bool - char); - - - - - - - - int vec_all_le (vector bool int, vector signed int); - - - - - - - - int vec_all_le (vector bool int, vector unsigned - int); - - - - - - - - int vec_all_le (vector signed int, vector bool int); - - - - - - - - int vec_all_le (vector unsigned int, vector bool - int); - - - - - - - - int vec_all_le (vector bool long long, vector signed long - long); - - - - - - - - int vec_all_le (vector bool long long, vector unsigned long - long); - - - - - - - - int vec_all_le (vector signed long long, vector bool long - long); - - - - - - - - int vec_all_le (vector unsigned long long, vector bool long - long); - - - - - - - - int vec_all_le (vector bool short, vector signed - short); - - - - - - - - int vec_all_le (vector bool short, vector unsigned - short); - - - - - - - - int vec_all_le (vector signed short, vector bool - short); - - - - - - - - int vec_all_le (vector unsigned short, vector bool - short); - - - - - VEC_ALL_LT (ARG1, ARG2) - - - Purpose: - Tests whether all elements of the first argument are less - than the corresponding elements of the second argument. - Result value: - The result is 1 if all elements of ARG1 are less than the - corresponding elements of ARG2. Otherwise, the result is - 0. - - - - - - - - int vec_all_lt (vector bool char, vector signed - char); - - - - - - - - int vec_all_lt (vector bool char, vector unsigned - char); - - - - - - - - int vec_all_lt (vector signed char, vector bool - char); - - - - - - - - int vec_all_lt (vector unsigned char, vector bool - char); - - - - - - - - int vec_all_lt (vector bool int, vector signed int); - - - - - - - - int vec_all_lt (vector bool int, vector unsigned - int); - - - - - - - - int vec_all_lt (vector signed int, vector bool int); - - - - - - - - int vec_all_lt (vector unsigned int, vector bool - int); - - - - - - - - int vec_all_lt (vector bool long long, vector signed long - long); - - - - - - - - int vec_all_lt (vector bool long long, vector unsigned long - long); - - - - - - - - int vec_all_lt (vector signed long long, vector bool long - long); - - - - - - - - int vec_all_lt (vector unsigned long long, vector bool long - long); - - - - - - - - int vec_all_lt (vector bool short, vector signed - short); - - - - - - - - int vec_all_lt (vector bool short, vector unsigned - short); - - - - - - - - int vec_all_lt (vector signed short, vector bool - short); - - - - - - - - int vec_all_lt (vector unsigned short, vector bool - short); - - - - - VEC_ALL_NE (ARG1, ARG2) - - - Purpose: - Tests whether all sets of corresponding elements of the - given vectors are not equal. - Result value: - The result is 1 if each element of ARG1 is not equal to the - corresponding element of ARG2. Otherwise, the result is 0. - - - - - - - - int vec_all_ne (vector bool char, vector signed - char); - - - - - - - - int vec_all_ne (vector bool char, vector unsigned - char); - - - - - - - - int vec_all_ne (vector signed char, vector bool - char); - - - - - - - - int vec_all_ne (vector unsigned char, vector bool - char); - - - - - - - - int vec_all_ne (vector bool int, vector signed int); - - - - - - - - int vec_all_ne (vector bool int, vector unsigned - int); - - - - - - - - int vec_all_ne (vector signed int, vector bool int); - - - - - - - - int vec_all_ne (vector unsigned int, vector bool - int); - - - - - - - - int vec_all_ne (vector bool long long, vector signed long - long); - - - - - - - - int vec_all_ne (vector bool long long, vector unsigned long - long); - - - - - - - - int vec_all_ne (vector signed long long, vector bool long - long); - - - - - - - - int vec_all_ne (vector unsigned long long, vector bool long - long); - - - - - - - - int vec_all_ne (vector bool short, vector signed - short); - - - - - - - - int vec_all_ne (vector bool short, vector unsigned - short); - - - - - - - - int vec_all_ne (vector signed short, vector bool - short); - - - - - - - - int vec_all_ne (vector unsigned short, vector bool - short); - - - - - VEC_ANY_EQ (ARG1, ARG2) - - - Purpose: - Tests whether any set of corresponding elements of the - given vectors are equal. - Result value: - The result is 1 if any element of ARG1 is equal to the - corresponding element of ARG2. Otherwise, the result is 0. - - - - - - - - int vec_any_eq (vector bool char, vector signed - char); - - - - - - - - int vec_any_eq (vector bool char, vector unsigned - char); - - - - - - - - int vec_any_eq (vector signed char, vector bool - char); - - - - - - - - int vec_any_eq (vector unsigned char, vector bool - char); - - - - - - - - int vec_any_eq (vector bool int, vector signed int); - - - - - - - - int vec_any_eq (vector bool int, vector unsigned - int); - - - - - - - - int vec_any_eq (vector signed int, vector bool int); - - - - - - - - int vec_any_eq (vector unsigned int, vector bool - int); - - - - - - - - int vec_any_eq (vector bool long long, vector signed long - long); - - - - - - - - int vec_any_eq (vector bool long long, vector unsigned long - long); - - - - - - - - int vec_any_eq (vector signed long long, vector bool long - long); - - - - - - - - int vec_any_eq (vector unsigned long long, vector bool long - long); - - - - - - - - int vec_any_eq (vector bool short, vector signed - short); - - - - - - - - int vec_any_eq (vector bool short, vector unsigned - short); - - - - - - - - int vec_any_eq (vector signed short, vector bool - short); - - - - - - - - int vec_any_eq (vector unsigned short, vector bool - short); - - - - - VEC_ANY_GE (ARG1, ARG2) - - - Purpose: - Tests whether any element of the first argument is greater - than or equal to the corresponding element of the second - argument. - Result value: - The result is 1 if any element of ARG1 is greater than or - equal to the corresponding element of ARG2. Otherwise, the result - is 0. - - - - - - - - int vec_any_ge (vector bool char, vector signed - char); - - - - - - - - int vec_any_ge (vector bool char, vector unsigned - char); - - - - - - - - int vec_any_ge (vector signed char, vector bool - char); - - - - - - - - int vec_any_ge (vector unsigned char, vector bool - char); - - - - - - - - int vec_any_ge (vector bool int, vector signed int); - - - - - - - - int vec_any_ge (vector bool int, vector unsigned - int); - - - - - - - - int vec_any_ge (vector signed int, vector bool int); - - - - - - - - int vec_any_ge (vector unsigned int, vector bool - int); - - - - - - - - int vec_any_ge (vector bool long long, vector signed long - long); - - - - - - - - int vec_any_ge (vector bool long long, vector unsigned long - long); - - - - - - - - int vec_any_ge (vector signed long long, vector bool long - long); - - - - - - - - int vec_any_ge (vector unsigned long long, vector bool long - long); - - - - - - - - int vec_any_ge (vector bool short, vector signed - short); - - - - - - - - int vec_any_ge (vector bool short, vector unsigned - short); - - - - - - - - int vec_any_ge (vector signed short, vector bool - short); - - - - - - - - int vec_any_ge (vector unsigned short, vector bool - short); - - - - - VEC_ANY_GT (ARG1, ARG2) - - - Purpose: - Tests whether any element of the first argument is greater - than the corresponding element of the second argument. - Result value: - The result is 1 if any element of ARG1 is greater than the - corresponding element of ARG2. Otherwise, the result is 0. - - - - - - - - int vec_any_gt (vector bool char, vector signed - char); - - - - - - - - int vec_any_gt (vector bool char, vector unsigned - char); - - - - - - - - int vec_any_gt (vector signed char, vector bool - char); - - - - - - - - int vec_any_gt (vector unsigned char, vector bool - char); - - - - - - - - int vec_any_gt (vector bool int, vector signed int); - - - - - - - - int vec_any_gt (vector bool int, vector unsigned - int); - - - - - - - - int vec_any_gt (vector signed int, vector bool int); - - - - - - - - int vec_any_gt (vector unsigned int, vector bool - int); - - - - - - - - int vec_any_gt (vector bool long long, vector signed long - long); - - - - - - - - int vec_any_gt (vector bool long long, vector unsigned long - long); - - - - - - - - int vec_any_gt (vector signed long long, vector bool long - long); - - - - - - - - int vec_any_gt (vector unsigned long long, vector bool long - long); - - - - - - - - int vec_any_gt (vector bool short, vector signed - short); - - - - - - - - int vec_any_gt (vector bool short, vector unsigned - short); - - - - - - - - int vec_any_gt (vector signed short, vector bool - short); - - - - - - - - int vec_any_gt (vector unsigned short, vector bool - short); - - - - - VEC_ANY_LE (ARG1, ARG2) - - - Purpose: - Tests whether any element of the first argument is less - than or equal to the corresponding element of the second - argument. - Result value: - The result is 1 if any element of ARG1 is less than or - equal to the corresponding element of ARG2. Otherwise, the result - is 0. - - - - - - - - int vec_any_le (vector bool char, vector signed - char); - - - - - - - - int vec_any_le (vector bool char, vector unsigned - char); - - - - - - - - int vec_any_le (vector signed char, vector bool - char); - - - - - - - - int vec_any_le (vector unsigned char, vector bool - char); - - - - - - - - int vec_any_le (vector bool int, vector signed int); - - - - - - - - int vec_any_le (vector bool int, vector unsigned - int); - - - - - - - - int vec_any_le (vector signed int, vector bool int); - - - - - - - - int vec_any_le (vector unsigned int, vector bool - int); - - - - - - - - int vec_any_le (vector bool long long, vector signed long - long); - - - - - - - - int vec_any_le (vector bool long long, vector unsigned long - long); - - - - - - - - int vec_any_le (vector signed long long, vector bool long - long); - - - - - - - - int vec_any_le (vector unsigned long long, vector bool long - long); - - - - - - - - int vec_any_le (vector bool short, vector signed - short); - - - - - - - - int vec_any_le (vector bool short, vector unsigned - short); - - - - - - - - int vec_any_le (vector signed short, vector bool - short); - - - - - - - - int vec_any_le (vector unsigned short, vector bool - short); - - - - - VEC_ANY_LT (ARG1, ARG2) - - - Purpose: - Tests whether any element of the first argument is less - than the corresponding element of the second argument. - Result value: - The result is 1 if any element of ARG1 is less than the - corresponding element of ARG2. Otherwise, the result is 0. - - - - - - - - int vec_any_lt (vector bool char, vector signed - char); - - - - - - - - int vec_any_lt (vector bool char, vector unsigned - char); - - - - - - - - int vec_any_lt (vector signed char, vector bool - char); - - - - - - - - int vec_any_lt (vector unsigned char, vector bool - char); - - - - - - - - int vec_any_lt (vector bool int, vector signed int); - - - - - - - - int vec_any_lt (vector bool int, vector unsigned - int); - - - - - - - - int vec_any_lt (vector signed int, vector bool int); - - - - - - - - int vec_any_lt (vector unsigned int, vector bool - int); - - - - - - - - int vec_any_lt (vector bool long long, vector signed long - long); - - - - - - - - int vec_any_lt (vector bool long long, vector unsigned long - long); - - - - - - - - int vec_any_lt (vector signed long long, vector bool long - long); - - - - - - - - int vec_any_lt (vector unsigned long long, vector bool long - long); - - - - - - - - int vec_any_lt (vector bool short, vector signed - short); - - - - - - - - int vec_any_lt (vector bool short, vector unsigned - short); - - - - - - - - int vec_any_lt (vector signed short, vector bool - short); - - - - - - - - int vec_any_lt (vector unsigned short, vector bool - short); - - - - - VEC_ANY_NE (ARG1, ARG2) - - - Purpose: - Tests whether any set of corresponding elements of the - given vectors are not equal. - Result value: - The result is 1 if any element of ARG1 is not equal to the - corresponding element of ARG2. Otherwise, the result is 0. - - - - - - - - int vec_any_ne (vector bool char, vector signed - char); - - - - - - - - int vec_any_ne (vector bool char, vector unsigned - char); - - - - - - - - int vec_any_ne (vector signed char, vector bool - char); - - - - - - - - int vec_any_ne (vector unsigned char, vector bool - char); - - - - - - - - int vec_any_ne (vector bool int, vector signed int); - - - - - - - - int vec_any_ne (vector bool int, vector unsigned - int); - - - - - - - - int vec_any_ne (vector signed int, vector bool int); - - - - - - - - int vec_any_ne (vector unsigned int, vector bool - int); - - - - - - - - int vec_any_ne (vector bool long long, vector signed long - long); - - - - - - - - int vec_any_ne (vector bool long long, vector unsigned long - long); - - - - - - - - int vec_any_ne (vector signed long long, vector bool long - long); - - - - - - - - int vec_any_ne (vector unsigned long long, vector bool long - long); - - - - - - - - int vec_any_ne (vector bool short, vector signed - short); - - - - - - - - int vec_any_ne (vector bool short, vector unsigned - short); - - - - - - - - int vec_any_ne (vector signed short, vector bool - short); - - - - - - - - int vec_any_ne (vector unsigned short, vector bool - short); - - - - -
- -
-
diff --git a/specification/app_glossary.xml b/specification/app_glossary.xml index 32dc97a..88be4bd 100644 --- a/specification/app_glossary.xml +++ b/specification/app_glossary.xml @@ -197,14 +197,6 @@ xml:id="dbdoclet.50655246_33489"> GNU Compiler Collection - - - GEP - - - Global entry point - - GOT @@ -293,14 +285,6 @@ xml:id="dbdoclet.50655246_33489"> Little-endian - - - LEP - - - Local entry point - - LR diff --git a/specification/bk_main.xml b/specification/bk_main.xml index 140f750..892cb57 100644 --- a/specification/bk_main.xml +++ b/specification/bk_main.xml @@ -37,7 +37,7 @@ - 2014-2020 + 2014-2020 OpenPOWER Foundation @@ -94,7 +94,7 @@ - 2020-11-30 + 2020-12-01 @@ -173,7 +173,6 @@ - diff --git a/specification/ch_1.xml b/specification/ch_1.xml index f1a7191..7b4b58b 100644 --- a/specification/ch_1.xml +++ b/specification/ch_1.xml @@ -66,18 +66,15 @@ - IBM Power - Instruction Set Architecture, Versions 2.7 and 3.0, 2.07, 3.0, and 3.1, IBM, 2013-20162013-2020. + IBM Power + Instruction Set Architecture, Versions + 2.07, 3.0, and 3.1, IBM, 2013-2020. https://openpowerfoundation.org/technical/resource-catalog/ - + POWER Vector Intrinsics Programming Reference, Version 1.0.0, OpenPOWER Foundation, @@ -132,7 +129,7 @@ - + ELFv2 ABI Compliance TH/TS Specification 1.00, OpenPOWER Foundation, June 27, 2017. @@ -206,7 +203,7 @@ -
+
Changes from Revision 1.4 @@ -244,7 +241,7 @@
-
+
Conformance to this Specification Compilers, assemblers, linkers, system libraries, and other diff --git a/specification/ch_2.xml b/specification/ch_2.xml index 98865de..4ffeb07 100644 --- a/specification/ch_2.xml +++ b/specification/ch_2.xml @@ -21,8 +21,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
Processor Architecture This ABI is predicated on, at a minimum, Power ISA version - 2.7 2.07 and + 2.07 and contains additional implementation characteristics. All OpenPOWER instructions that are defined by the Power Architecture can be assumed to be implemented and to work as specified. @@ -2601,7 +2600,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> 216 – 1. - + @@ -2764,23 +2763,6 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> Vector of 1 signed quadword. - - - - - - vector _Float16 - - - 16 - - - Quadword - - - Vector of 8 half-precision floats. - - @@ -3097,15 +3079,10 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> - >IBM EXTENDED PRECISION - && IEEE BINARY 128 QUADRUPLE PRECISION Availability of the long double data type is subject to conformance to a long double standard where the IBM EXTENDED PRECISION format and the IEEE BINARY 128 QUADRUPLE PRECISION format are mutually exclusive. - IEEE BINARY 128 QUADRUPLE - PRECISION || IBM EXTENDED PRECISION This ABI provides the following choices for implementation of long double in compilers and systems. The preferred implementation for long double is the IEEE 128-bit quad-precision binary floating-point @@ -3132,7 +3109,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> long double ISO C type. However, this is not part of the C standard. - + This implementation differs from the IEEE 754 Standard in the following ways: @@ -3201,29 +3178,6 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> - This implementation differs from - the IEEE 754 Standard in the - following ways: - - - The software support is restricted to round-to-nearest mode. - Programs that use extended precision must ensure that this rounding - mode is in effect when extended-precision calculations are - performed. - - - This implementation does not fully support the IEEE special - numbers NaN and INF. These values are encoded in the high-order - double value only. The low-order value is not significant, but the - low-order value of an infinity must be positive or negative - zero. - - - This implementation does not support the IEEE status flags - for overflow, underflow, and other conditions. These flags have no - meaning in this format. - -
Aggregates and Unions @@ -3519,9 +3473,8 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> xml:id="dbdoclet.50655240_54268"> - Little-Endian Bit Numbering for <phrase - revisionflag="added">0x0001000200030004</phrase> <phrase - revisionflag="deleted">0x01020304</phrase> + Little-Endian Bit Numbering for + 0x0001000200030004 @@ -3776,8 +3729,8 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> xml:id="dbdoclet.50655240_47219"> - Big-Endian Bit Numbering for <phrase - revisionflag="added">0x0001000200030004</phrase> <phrase revisionflag="deleted">0x01020304</phrase> + Big-Endian Bit Numbering for + 0x0001000200030004 @@ -4079,7 +4032,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> - In In , the alignment of the structure is not affected by the unnamed short and int fields. The named members are aligned relative to the start of the structure. @@ -4091,8 +4044,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194">
-
+
Code Alignment Functions must be aligned on at least a 4-byte boundary. @@ -4116,7 +4068,6 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> and restore functions. The conventions given in this section are adhered to by C programs. For more information about the implementation of C, See - https://apps.na.collabserv.com/meetings/join?id=2897-3986 . While it is recommended that all functions use the standard @@ -4127,7 +4078,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> requirements. Some tools may not work with alternate calling sequences and conventions. -
+
Function Call Linkage Protocols The compiler (or assembly programmer) and linker cooperate to make @@ -4694,23 +4645,20 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> Nonvolatile Register r2 is nonvolatile with respect to calls between functions in the same compilation - unit. It is saved and - restored by code inserted by the linker resolving a - call to an external function., except under the conditions - in footnote (b). For more information, see - and + and . - or + />. + or Volatile Register r2 is volatile and available for use in a function that does not use a TOC pointer and that does not guarantee that it preserves r2. See and . - + TOC pointer. @@ -4900,17 +4848,17 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> dynamic linker. For references through function pointers, it is the compiler's or assembler programmer's responsibility to insert appropriate TOC save and restore code. If the function is called from - the same module as the callee, the callee must normally preserve the value of r2. - If the callee function is called from + the same module as the callee, the callee must + normally preserve the value of r2. + If the callee function is called from a function in the same compilation unit as the callee, and the callee does not preserve r2, the caller is responsible for saving and restoring the TOC pointer if it - needs it. (See - for more information.) - When a function calls another function that requires a TOC pointer, the TOC + for more information.) + When a function calls another function + that requires a TOC pointer, the TOC pointer must have a legal value pointing to the TOC base, which may be initialized as described in . @@ -4943,8 +4891,8 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> context. - When a function that requires a - TOC pointer is entered through its global entry point, + When a function that requires a + TOC pointer is entered through its global entry point, register r12 contains the entry-point address. For more information, see the description of dual entry points in @@ -5000,15 +4948,15 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> mask the value received from mfocr to avoid corruption of the resulting (partial) condition register word. - This erratum does not apply to POWER9 and subsequent - processors. + This erratum does not apply to + POWER9 and subsequent + processors. For more information, see - Power ISA, version 3.0B and "Fixed-Point Invalid + Power ISA, version + 3.0B and "Fixed-Point Invalid Forms and Undefined Conditions" in POWER9 Processor User's Manual. Floating-Point Registers @@ -5050,11 +4998,11 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> special-purpose register to provide floating-point status and control. Throughout this document, the symbol fN is used, where N is a register number, to refer to floating-point register N. - For the purpose of function calls, the least-significant halves of those VSX - registers corresponding to the classic floating-point - registers (that is, vsr0–vsr31), are volatile. + For the purpose of function calls, the + least-significant halves of those VSX + registers corresponding to the classic floating-point + registers (that is, vsr0–vsr31), + are volatile. Floating-Point Register Roles for Binary Floating-Point @@ -5681,8 +5629,8 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> general-purpose register save and restore functions are to be used, the general-purpose registers shall be saved in a contiguous range. General-purpose register rN is saved in the doubleword located 8 x - (32 – N) bytes before the <phrase - revisionflag="changed">Floating-Point Register Save Area,</phrase> + (32 – N) bytes before the + Floating-Point Register Save Area, as shown in <xref linkend="dbdoclet.50655240_97610" />.</para> <para>The General-Purpose Register Save Area is always doubleword @@ -5699,7 +5647,7 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> saved in arbitrary locations in the stack frame. If the system vector register save and restore functions are to be used, the vector registers shall be saved in a contiguous range. Vector register vN is - saved in the <phrase revisionflag="changed">quadword</phrase> located + saved in the quadword located 16 x (32 – N) bytes before the General-Purpose Register Save Areas plus alignment padding, as shown in @@ -5762,8 +5710,8 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> <para>Functions without a suitable declaration available to the caller to determine the called function's characteristics (for example, functions in C without a prototype in scope, in accordance - with Brian Kernighan and Dennis <phrase - revisionflag="changed">Ritchie</phrase>, + with Brian Kernighan and Dennis + Ritchie, <citetitle>The C Programming Language</citetitle>, 1st edition).</para> </listitem> @@ -5992,9 +5940,8 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> floating-point type. (A complex floating-point data type is treated as if two separate scalar values of the base type were passed.)</para> <para>Homogeneous floating-point aggregates can have up to four IBM - EXTENDED PRECISION members, <phrase - revisionflag="deleted">four IEEE BINARY 128 QUADRUPLE - PRECISION members,</phrase> four _Decimal128 members, or + EXTENDED PRECISION members, + four _Decimal128 members, or eight members of other floating-point types. (Unions are treated as their largest member. For homogeneous unions, different union alternatives may have different @@ -6020,14 +5967,12 @@ xml:id="dbdoclet.50655240_pgfId-1156194"> <xref linkend="dbdoclet.50655240_15141" />) or processed in vector registers</para> <para>For the purpose of determining a qualified - floating-point argument, <phrase - revisionflag="deleted">_Float128</phrase><phrase - revisionflag="added">IEEE BINARY 128 QUADRUPLE - PRECISION</phrase> shall be considered a vector data type. In - addition, <phrase - revisionflag="deleted">_Float128</phrase><phrase - revisionflag="added">IEEE BINARY 128 QUADRUPLE - PRECISION</phrase> + floating-point argument, + IEEE BINARY 128 QUADRUPLE + PRECISION shall be considered a vector data type. In + addition, + IEEE BINARY 128 QUADRUPLE + PRECISION is like a vector data type for determining if multiple aggregate members are like.</para> <para>A homogeneous aggregate can consist of a variety of nested @@ -6603,14 +6548,7 @@ s6 - 72 (stored)</programlisting> architectures that pass some of the arguments in registers. The Power Architecture is one of the architectures that passes some of the arguments in registers.</para> - <para revisionflag="deleted"><anchor - xml:id="dbdoclet.50655240_page61" xreflabel="" />The parameter - list may be zero length and is only allocated when parameters are - spilled, when a function has unnamed parameters, or when no prototype is - provided. When the Parameter Save Area is allocated, the Parameter Save - Area must be large enough to accommodate all parameters, including - parameters passed in registers.</para> - <para revisionflag="added"> + <para> The caller of any function with a variable argument list must allocate a Parameter Save Area, as described in <xref linkend="dbdoclet.50655240_78421" />. @@ -6691,7 +6629,7 @@ s6 - 72 (stored)</programlisting> <para>When instructions hold relative addresses, a program library can be loaded at various positions in virtual memory and is referred to as a position-independent code model.</para> - <para revisionflag="added">When generating code for PowerISA version 3.1 + <para>When generating code for PowerISA version 3.1 or above, this specification provides two ways to address non-local data and text. The historical method relies on a dedicated table-of-contents (TOC) pointer to obtain such addresses. PowerISA version 3.1 introduces @@ -6729,7 +6667,7 @@ s6 - 72 (stored)</programlisting> instructions:</para> </listitem> </itemizedlist> - <programlisting revisionflag="changed">lis r16, symbol@ha + <programlisting>lis r16, symbol@ha ld r10, symbol@l(r16) lis r16, symbol2@ha @@ -6742,7 +6680,7 @@ lvx v1, r0, r16</programlisting> <xref linkend="dbdoclet.50655241_66700" />.)</para> </listitem> </itemizedlist> - <programlisting revisionflag="changed"><load TOC base to r2> + <programlisting><load TOC base to r2> ld r10, symbol@toc(r2) li r16, symbol2@toc @@ -6753,7 +6691,7 @@ lvx v1, r2, r16</programlisting> addressing:</para> </listitem> </itemizedlist> - <programlisting revisionflag="changed"><load TOC base to r2> + <programlisting><load TOC base to r2> ld r10, symbol@got(r2) ld r10, 0(r10) @@ -6762,12 +6700,12 @@ ld r10, symbol2@got(r2) lvx v1, 0, r10</programlisting> <itemizedlist> <listitem> - <para revisionflag="added"> + <para> By using PC-relative addressing. </para> </listitem> </itemizedlist> - <programlisting revisionflag="added">pld r10, symbol@pcrel + <programlisting>pld r10, symbol@pcrel plxv v1, symbol@pcrel</programlisting> <para>In the OpenPOWER ELF V2 ABI, position-dependent code built with @@ -6809,7 +6747,7 @@ plxv v1, symbol@pcrel</programlisting> loaded in the first 2 GB of the address space because direct address references and TOC-pointer initializations can be performed using a two-instruction sequence.</para> - <para revisionflag="added"> + <para> PC-relative offsets are usually 34 bits for all code models, with a maximum addressing reach of 16GB. The effective addressing reach for global data is 8GB, since data sections are always located at @@ -6853,7 +6791,7 @@ plxv v1, symbol@pcrel</programlisting> relative addressing (for private data).</para> </listitem> </itemizedlist> - <programlisting revisionflag="changed"><load TOC base to r2> + <programlisting><load TOC base to r2> ld r10, symbol@toc(r2) @@ -6866,7 +6804,7 @@ lvx v1, r2, r16</programlisting> sections):</para> </listitem> </itemizedlist> - <programlisting revisionflag="changed"><load TOC base to r2> + <programlisting><load TOC base to r2> ld r10, symbol@got(r2) @@ -6876,26 +6814,26 @@ ld r10, symbol2@got(r2) lvx v1, 0, r10</programlisting> <itemizedlist> <listitem> - <para revisionflag="added">By using PC-relative addressing (for + <para>By using PC-relative addressing (for private data).</para> </listitem> </itemizedlist> - <programlisting revisionflag="added">pld r10, symbol@pcrel + <programlisting>pld r10, symbol@pcrel plxv v1, symbol@pcrel</programlisting> <itemizedlist> <listitem> - <para revisionflag="added">By using PC-relative GOT-indirect + <para>By using PC-relative GOT-indirect addressing (for shared data): </para> </listitem> </itemizedlist> - <programlisting revisionflag="added">pld r10, symbol@got@pcrel + <programlisting>pld r10, symbol@got@pcrel ld r10, 0(r10) pld r10, symbol@got@pcrel lvx v1, 0, r10</programlisting> - <para revisionflag="added"> + <para> A compiler may generate a PC-relative addressing sequence to access static or restricted-visibility data, but must generate a PC-relative GOT-indirect sequence for extern data. Extern data may be satisfied @@ -6946,8 +6884,8 @@ lvx v1, 0, r10</programlisting> addition, accesses to module-local code and data objects use TOC pointer relative addressing with 32-bit offsets. Using TOC pointer relative addressing removes a level of indirection, resulting in - faster access and a smaller GOT. <phrase - revisionflag="changed">However,</phrase> it limits the size of the + faster access and a smaller GOT. + However, it limits the size of the entire binary to between 2 GB and 4 GB, depending on the placement of the TOC base.</para> <note> @@ -6967,7 +6905,7 @@ lvx v1, 0, r10</programlisting> TOCs, or by some other method. The suggested allocation order of sections is provided in <xref linkend="dbdoclet.50655241_66700" />.</para> - <para revisionflag="added"> + <para> PC-relative addressing may be used with the medium code model. Accesses to module-local code and data objects use PC-relative addressing with @@ -6985,17 +6923,16 @@ lvx v1, 0, r10</programlisting> <para>A function's prologue establishes addressability by initializing a TOC pointer in register r2, if necessary, and a stack frame, if necessary, and may save any nonvolatile registers it - uses. <phrase revisionflag="added">Not all functions must initialize + uses. Not all functions must initialize a TOC pointer, and not all functions must preserve the existing value of r2. See <xref linkend="dbdoclet.50655241_FnLinkage" /> for more - information.</phrase></para> - <para>All functions have a global entry point <phrase revisionflag="deleted">(GEP)</phrase> available to any + information.</para> + <para>All functions have a global entry point available to any caller and pointing to the beginning of the prologue. Some functions may have a secondary entry point to optimize the cost of TOC pointer management. In particular, functions within a common module sharing the same TOC base value in r2 may be entered using a secondary entry point - (the local entry point<phrase revisionflag="deleted"> or - LEP</phrase>) that may bypass the code that loads a + (the local entry point) that may bypass the code that loads a suitable TOC pointer value into the r2 register. When a dynamic or global linker transfers control from a function to another function in the same module, it @@ -7003,22 +6940,21 @@ lvx v1, 0, r10</programlisting> entry point when the r2 register is known to hold a valid TOC base value. Function pointers shared between modules shall always use the global entry point to specify the address of a function.</para> - <para><phrase revisionflag="deleted">When a linker causes - control to transfer</phrase><phrase revisionflag="added">When - control is transferred</phrase> to a global entry point - <phrase revisionflag="added">of a function that also has a local entry - point</phrase>, <phrase revisionflag="deleted">it</phrase> - <phrase revisionflag="added">the linker</phrase> must insert a + <para>When + control is transferred to a global entry point + of a function that also has a local entry + point, + the linker must insert a glue code sequence that loads r12 with the global - entry-point address. Code at the global entry point <phrase - revisionflag="added">of a function that also has a local entry - point</phrase> can assume that - register r12 points to the <phrase - revisionflag="deleted">GEP</phrase><phrase revisionflag="added">global - entry point</phrase>. <phrase revisionflag="added"> + entry-point address. Code at the global entry point + of a function that also has a local entry + point can assume that + register r12 points to the + global + entry point. However, code at the global entry point of a function that does not have a separate local entry point cannot make any assumptions about - the values of either r2 or 12.</phrase></para> + the values of either r2 or 12.</para> <para>Addresses between the global and local entry points must not be branch targets, either for function entry or referenced by program logic of the function, because a linker may rewrite the code sequence @@ -7066,7 +7002,6 @@ or r0, r0, r1</programlisting> either 0 or the correct in-order value of the corresponding CR field at the point where the <emphasis role="bold">mfocrf</emphasis> instruction is performed.</para> - <para revisionflag="deleted"> </para> <bridgehead>Assembly Language Syntax for Defining Entry Points</bridgehead> <para>When a function has two entry points, the global entry point is @@ -7493,15 +7428,12 @@ _restvr_31: addi r12,r0,-16 The values of symbols or their absolute virtual addresses are placed directly into instructions for symbolic references in absolute code.</para> - <para revisionflag="deleted"> - <xref linkend="dbdoclet.50655242_page119" /> shows an example of this - method.</para> <para>Examples of absolute and position-independent compilations are - shown in <phrase revisionflag="changed"><xref + shown in <xref linkend="dbdoclet.50655240_12719" />, <xref linkend="dbdoclet.50655240_page77" />, <xref linkend="dbdoclet.50655240_19926" />, and - <xref linkend="dbdoclet.50655240_StaticPCRel" /></phrase>. These + <xref linkend="dbdoclet.50655240_StaticPCRel" />. These examples show the C language statements together with the generated assembly language. The assumption for these figures is that only executables can use absolute @@ -7767,8 +7699,7 @@ stw r0,0,(r7)</programlisting> </tgroup> </table> - <table frame="all" pgwide="1" xml:id="dbdoclet.50655240_StaticPCRel" - revisionflag="added"> + <table frame="all" pgwide="1" xml:id="dbdoclet.50655240_StaticPCRel"> <title>PC-Relative Load and Store @@ -7837,7 +7768,7 @@ stw r9, 0(r11) a signed 32-bit offset from a base register. - For TOC-based PIC + For TOC-based PIC code (see and ), the offset in the Global Offset Table where the value of the symbol is stored is @@ -7983,15 +7914,13 @@ nop For indirect function calls, the address of the function to be called is placed in r12 and the CTR register. A bctrl instruction is used to perform the indirect branch as shown in - , - , and . The ELF V2 ABI requires the address of the called function to be in r12 when a cross-module function call is made. -
Indirect Function Call (Absolute Medium Model) @@ -8051,7 +7980,7 @@ bctrl function call using small-model position-independent code. -
Small-Model Position-Independent Indirect Function Call @@ -8113,7 +8042,7 @@ ld r2,24(r1) function call using large-model position-independent code. -
Large-Model Position-Independent Indirect Function Call @@ -8178,12 +8107,12 @@ ld r2,24(r1)
- + shows how to make an indirect function call using PC-relative addressing in a function that does not preserve r2. - PC-Relative Position-Independent Indirect Function Call @@ -8234,20 +8163,7 @@ bctrl
- Function calls - need to be performed in conjunction with - establishing, maintaining, and restoring addressability through the TOC - pointer register, r2. When a function is called, the TOC pointer register - may be modified. The caller must provide a nop - after the bl instruction performing a call, if r2 is not known to have - the same value in the callee. This is generally true for external calls. - The linker will replace the nop with an r2 restoring instruction if the - caller and callee use different r2 values, The linker leaves it - unchanged if they - use the same r2 value. This scheme avoids having a compiler generate an - overconservative r2 save and restore around every external - call. - + When a function requires addressability through the TOC pointer register, r2, and that function calls another function that may not preserve the value of r2, the caller must provide @@ -8258,7 +8174,7 @@ bctrl for a full description of when a nop must be inserted. - + There are two cases where the caller need not provide a nop after the bl instruction performing a call: @@ -8272,12 +8188,12 @@ bctrl For calls to functions resolved at runtime, the linker must generate stub code to load the function address from the PLT. The stub code also must save r2 to 24(r1) unless - either the call is marked with an - R_PPC64_REL24_NOTOC relocation, or the call is marked + either the call is marked with an + R_PPC64_REL24_NOTOC relocation, or the call is marked with an R_PPC64_TOCSAVE relocation that points to a nop provided in the - caller's prologue. In either + caller's prologue. In either case, the stub code can omit the r2 save. - In the latter case, + In the latter case, the linker replaces the prologue nop with an r2 save. tocsaveloc: nop @@ -8307,7 +8223,7 @@ bl target shows the model for branch instructions. - Branch Instruction Model @@ -8366,7 +8282,7 @@ b .L01 application) loaded into the low or high address range, absolute addressing of a branch table yields the best performance. -
Absolute Switch Code (Within) for static modules located in low or high 2 GB of address space @@ -8432,7 +8348,7 @@ bctr lwz instruction in place of the lwa instruction. -
Absolute Switch Code (Beyond) for static modules beyond the top or bottom 2 GB of the address space @@ -8499,7 +8415,7 @@ bctr relative offsets from the start address of the branch table ensures position-independence when code is loaded at different addresses. -
Position-Independent Switch Code for Small/Medium Models (preferred, with TOC-relative addressing) @@ -8567,7 +8483,7 @@ bctr table ensures position independence when code is loaded at different addresses. -
Position-Independent Switch Code for All Models (alternate, with GOT-indirect addressing) @@ -8649,12 +8565,11 @@ f1: .long .TOC. - Ldefault .long .TOC. - Lcase13 - + shows a switch implementation for PC-relative compilation units. -
+
Position-Independent Switch Code (PC-Relative Addressing) @@ -8780,10 +8695,8 @@ addi r3,r1,p ; R3 = new data area following parameter save area.Because it is allowed (and common) to return without first deallocating this dynamically allocated memory, all the linkage information in the new location must be valid. Therefore, it is also - necessary to copy the CR save - word and the TOC pointer doubleword from their old locationsits old location to the new. It is + necessary to copy the TOC pointer doubleword from its old location + to the new. It is not necessary to copy the LR save doubleword because, until this function makes a call, it does not contain a value that needs to be preserved. In the future, if it is defined and @@ -9162,7 +9075,7 @@ addi r3,r1,p ; R3 = new data area following parameter save area.. - + When unwinding, care must be taken to restore the TOC pointer r2 if and only if it has been saved. It is recommended that the unwinder reads the instruction at the return address in the link register and restores r2 diff --git a/specification/ch_3.xml b/specification/ch_3.xml index e59eec4..823ed3e 100644 --- a/specification/ch_3.xml +++ b/specification/ch_3.xml @@ -280,9 +280,8 @@ e_ident[EI_DATA] ELFDATA2LSB For all little-endian implementations. -  
- Modules Containing Multiple TOCs + Modules Containing Multiple TOCs The link editor may create multiple TOCs. In such a case, the constituent .got, .toc, .sdata, and .sbss sections are conceptually repeated as necessary, with each TOC typically using a TOC pointer value @@ -305,9 +304,8 @@ e_ident[EI_DATA] ELFDATA2LSB For all little-endian implementations. The OpenPOWER ABI uses the three most-significant bits in the - symbol st_other field to specify the number of instructionsbytes between a + symbol st_other field to specify the number of + bytes between a function's global entry point and local entry point. The global entry point is used when it is necessary to set up the TOC pointer (r2) for the function. The local entry point is used when r2 is known to already be @@ -359,9 +357,8 @@ e_ident[EI_DATA] ELFDATA2LSB For all little-endian implementations.2 - The local entry point is at one instructionfour bytes past the + The local entry point is at + four bytes past the global entry point. When called at the global entry point, r12 must be set to the function entry address. r2 will be set to the TOC base that @@ -377,9 +374,8 @@ e_ident[EI_DATA] ELFDATA2LSB For all little-endian implementations.3 - The local entry point is at two instructionseight bytes past the + The local entry point is at + eight bytes past the global entry point. When called at the global entry point, r12 must be set to the function entry address. r2 will be set to the TOC base that @@ -395,9 +391,8 @@ e_ident[EI_DATA] ELFDATA2LSB For all little-endian implementations.4 - The local entry point is at four instructionssixteen bytes past the + The local entry point is at + sixteen bytes past the global entry point. When called at the global entry point, r12 must be set to the function entry address. r2 will be set to the TOC base that @@ -413,9 +408,8 @@ e_ident[EI_DATA] ELFDATA2LSB For all little-endian implementations.5 - The local entry point is at eight instructionsthirty-two bytes past the + The local entry point is at + thirty-two bytes past the global entry point. When called at the global entry point, r12 must be set to the function entry address. r2 will be set to the TOC base that @@ -431,9 +425,8 @@ e_ident[EI_DATA] ELFDATA2LSB For all little-endian implementations.6 - The local entry point is at 16 instructionssixty-four bytes past the + The local entry point is at + sixty-four bytes past the global entry point. When called at the global entry point, r12 must be set to the function entry address. r2 will be set to the TOC base that @@ -473,7 +466,7 @@ my_func: points, even if the global entry point will not be used. (In such a case, the instructions of the global entry setup sequence may optionally be initialized with TRAP instructions.) - The value of st_other is determined + The value of st_other is determined from the .localentry directive as follows: If the .localentry value is 0, the value of st_other is 0. If the .localentry value is 1, the value of st_other is 1. Otherwise, the value of @@ -1010,8 +1003,8 @@ my_func: In the following figure, low24 specifies a 24-bit field taking up - bits 6–29 of a word. The 32-bit - word is 4-byte aligned. The other bits + bits 6–29 of a word. The 32-bit + word is 4-byte aligned. The other bits remain unchanged. A call or unconditional branch instruction is an example of this field. @@ -2136,12 +2129,12 @@ my_func: - + In the following figure, prefix34 specifies a 34-bit field split between bits 14-31 and 48-63 of two consecutive words. This is used by many PC-relative load and store instructions. - + @@ -2280,12 +2273,12 @@ my_func: - + In the following figure, prefix28 specifies a 28-bit field taking up bits 20-31 and 48-63 of two consecutive words. This is reserved for future use. - + @@ -2448,10 +2441,10 @@ my_func: G - Represents the address in - the TOC at which the address of + Represents the address in + the TOC at which the address of the relocation entry’s symbol - plus addend + plus addend resides during execution. This implies the creation of a .got section. For more information, see @@ -2467,8 +2460,8 @@ my_func: L - Represents the section - offset or address of the procedure + Represents the + address of the procedure linkage table entry for the symbol. This implies the creation of a .plt section if one does not already exist. It also implies the creation of a procedure linkage table (PLT) entry @@ -2572,7 +2565,7 @@ my_func: #ha(x) = (x + 0x8000) >> 16 - + #high(value) @@ -2582,7 +2575,7 @@ my_func: #high(x) = (x >> 16) & 0xffff - + #higha(value) @@ -2595,7 +2588,7 @@ my_func: 0xffff - + #higher(value) @@ -2605,7 +2598,7 @@ my_func: #higher(x) = (x >> 32) & 0xffff - + #highera(value) @@ -2618,7 +2611,7 @@ my_func: 0xffff - + #highest(value) @@ -2628,7 +2621,7 @@ my_func: #highest(x) = x >> 48 - + #highesta(value) @@ -2640,7 +2633,7 @@ my_func: #highesta(x) = (x + 0x8000) >> 48 - + #lo34(value) @@ -2654,7 +2647,7 @@ my_func: - + #lo28(value) @@ -2668,7 +2661,7 @@ my_func: - + #hi30(value) @@ -2681,7 +2674,7 @@ my_func: - + #ha30(value) @@ -2696,7 +2689,7 @@ my_func: - + #higher34(value) @@ -2706,7 +2699,7 @@ my_func: #higher34(x) = (x >> 34) & 0xffff - + #highera34(value) @@ -2719,7 +2712,7 @@ my_func: 0xffff - + #highest34(value) @@ -2729,7 +2722,7 @@ my_func: #highest34(x) = x >> 50 - + #highesta34(value) @@ -2809,7 +2802,7 @@ my_func: dtv[dtpmod] + dtprel = (S + A) - + rel16dx @@ -2837,18 +2830,9 @@ my_func: Allocates two contiguous entries in the GOT to hold a tls_index structure, with values dtpmod and dtprel, and - computes the offset - from .TOC.address of the first + computes the + address of the first entry. - If n is the offset - computed: - GOT[n] = dtpmod - GOT[n + 1] = dtprel - The call to - __tls_get_addr ( ) happens as: - __tls_get_addr - ((tls_index *) &GOT[n]) @@ -2858,21 +2842,12 @@ my_func: Allocates two contiguous entries in the GOT to hold a tls_index structure, with values dtpmod and zero, and computes - the offset from - .TOC.address of the first + the + address of the first entry. - If n is the offset - computed: - GOT[n] = dtpmod - GOT[n + 1] = 0 - The call to - __tls_get_addr ( ) happens as: - __tls_get_addr - ((tls_index *) &GOT[n]) - + @got@dtprel @@ -2887,16 +2862,9 @@ my_func: Allocates an entry in the GOT with value tprel, and - computes the offset - from .TOC.address of the + computes the + address of the entry. - If n is the offset - computed: - GOT[n] = tprel - The value of tprel is - loaded into a register from the - location (GOT + n) to be used in an r2 form instruction. @@ -3131,7 +3099,7 @@ my_func: - G – .TOC. + G – .TOC. @@ -3147,7 +3115,7 @@ my_func: - #lo(G – .TOC.) + #lo(G – .TOC.) @@ -3163,7 +3131,7 @@ my_func: - #hi(G – .TOC.) + #hi(G – .TOC.) @@ -3179,7 +3147,7 @@ my_func: - #ha(G – .TOC.) + #ha(G – .TOC.) @@ -3323,7 +3291,7 @@ my_func: - #lo(L – .TOC.) + #lo(L – .TOC.) @@ -3339,7 +3307,7 @@ my_func: - #hi(L – .TOC.) + #hi(L – .TOC.) @@ -3355,7 +3323,7 @@ my_func: - #ha(L – .TOC.) + #ha(L – .TOC.) @@ -3721,8 +3689,8 @@ my_func: - (G – .TOC.) >> - 2 + (G – .TOC.) >> + 2 @@ -3738,8 +3706,8 @@ my_func: - #lo(G – .TOC.) >> - 2 + #lo(G – .TOC.) >> + 2 @@ -3755,8 +3723,8 @@ my_func: - #lo(L – .TOC.) >> - 2 + #lo(L – .TOC.) >> + 2 @@ -4023,8 +3991,8 @@ my_func: half16* - @got@tlsgd – - .TOC. + @got@tlsgd – + .TOC. @@ -4038,8 +4006,8 @@ my_func: half16 - #lo(@got@tlsgd – - .TOC.) + #lo(@got@tlsgd – + .TOC.) @@ -4053,8 +4021,8 @@ my_func: half16* - #hi(@got@tlsgd – - .TOC.) + #hi(@got@tlsgd – + .TOC.) @@ -4068,8 +4036,8 @@ my_func: half16* - #ha(@got@tlsgd – - .TOC.) + #ha(@got@tlsgd – + .TOC.) @@ -4083,8 +4051,8 @@ my_func: half16* - @got@tlsld – - .TOC. + @got@tlsld – + .TOC. @@ -4098,8 +4066,8 @@ my_func: half16 - #lo(@got@tlsld – - .TOC.) + #lo(@got@tlsld – + .TOC.) @@ -4113,8 +4081,8 @@ my_func: half16* - #hi(@got@tlsld – - .TOC.) + #hi(@got@tlsld – + .TOC.) @@ -4128,8 +4096,8 @@ my_func: half16* - #ha(@got@tlsld – - .TOC.) + #ha(@got@tlsld – + .TOC.) @@ -4143,8 +4111,8 @@ my_func: half16ds* - @got@tprel – - .TOC. + @got@tprel – + .TOC. @@ -4158,8 +4126,8 @@ my_func: half16ds - #lo(@got@tprel – - .TOC.) + #lo(@got@tprel – + .TOC.) @@ -4173,8 +4141,8 @@ my_func: half16* - #hi(@got@tprel – - .TOC.) + #hi(@got@tprel – + .TOC.) @@ -4188,8 +4156,8 @@ my_func: half16* - #ha(@got@tprel – - .TOC.) + #ha(@got@tprel – + .TOC.) @@ -4203,8 +4171,8 @@ my_func: half16ds* - @got@dtprel – - .TOC. + @got@dtprel – + .TOC. @@ -4218,8 +4186,8 @@ my_func: half16ds - #lo(@got@dtprel – - .TOC.) + #lo(@got@dtprel – + .TOC.) @@ -4233,8 +4201,8 @@ my_func: half16* - #hi(@got@dtprel – - .TOC.) + #hi(@got@dtprel – + .TOC.) @@ -4248,8 +4216,8 @@ my_func: half16* - #ha(@got@dtprel – - .TOC.) + #ha(@got@dtprel – + .TOC.) @@ -4597,7 +4565,7 @@ my_func: none - + R_PPC64_PLTSEQ @@ -4611,7 +4579,7 @@ my_func: none - + R_PPC64_PLTCALL @@ -4625,7 +4593,7 @@ my_func: none - + R_PPC64_PLTSEQ_NOTOC @@ -4639,7 +4607,7 @@ my_func: none - + R_PPC64_PLTCALL_NOTOC @@ -4653,7 +4621,7 @@ my_func: none - + R_PPC64_PCREL_OPT @@ -4667,7 +4635,7 @@ my_func: none - + R_PPC64_D34 @@ -4681,7 +4649,7 @@ my_func: S + A - + R_PPC64_D34_LO @@ -4695,7 +4663,7 @@ my_func: #lo34(S + A) - + R_PPC64_D34_HI30 @@ -4709,7 +4677,7 @@ my_func: #hi30(S + A) - + R_PPC64_D34_HA30 @@ -4723,7 +4691,7 @@ my_func: #ha30(S + A) - + R_PPC64_PCREL34 @@ -4737,7 +4705,7 @@ my_func: S + A – P - + R_PPC64_GOT_PCREL34 @@ -4751,7 +4719,7 @@ my_func: G – P - + R_PPC64_PLT_PCREL34 @@ -4765,7 +4733,7 @@ my_func: L – P - + R_PPC64_PLT_PCREL34_NOTOC @@ -4779,7 +4747,7 @@ my_func: L – P - + R_PPC64_ADDR16_HIGHER34 @@ -4793,7 +4761,7 @@ my_func: #higher34(S + A) - + R_PPC64_ADDR16_HIGHERA34 @@ -4807,7 +4775,7 @@ my_func: #highera34(S + A) - + R_PPC64_ADDR16_HIGHEST34 @@ -4821,7 +4789,7 @@ my_func: #highest34(S + A) - + R_PPC64_ADDR16_HIGHESTA34 @@ -4835,7 +4803,7 @@ my_func: #highesta34(S + A) - + R_PPC64_REL16_HIGHER34 @@ -4849,7 +4817,7 @@ my_func: #higher34(S + A – P) - + R_PPC64_REL16_HIGHERA34 @@ -4863,7 +4831,7 @@ my_func: #highera34(S + A – P) - + R_PPC64_REL16_HIGHEST34 @@ -4877,7 +4845,7 @@ my_func: #highest34(S + A – P) - + R_PPC64_REL16_HIGHESTA34 @@ -4891,7 +4859,7 @@ my_func: #highesta34(S + A – P) - + R_PPC64_D28 @@ -4905,7 +4873,7 @@ my_func: S + A - + R_PPC64_PCREL28 @@ -4919,7 +4887,7 @@ my_func: S + A – P - + R_PPC64_TPREL34 @@ -4933,7 +4901,7 @@ my_func: @tprel - + R_PPC64_DTPREL34 @@ -4947,7 +4915,7 @@ my_func: @dtprel - + R_PPC64_GOT_TLSGD_PCREL34 @@ -4961,7 +4929,7 @@ my_func: @got@tlsgd – P - + R_PPC64_GOT_TLSLD_PCREL34 @@ -4975,7 +4943,7 @@ my_func: @got@tlsld – P - + R_PPC64_GOT_TPREL_PCREL34 @@ -4989,7 +4957,7 @@ my_func: @got@tprel – P - + R_PPC64_GOT_DTPREL_PCREL34 @@ -5003,7 +4971,7 @@ my_func: @got@dtprel – P - + R_PPC64_REL16_HIGH @@ -5017,7 +4985,7 @@ my_func: #high(S + A – P) - + R_PPC64_REL16_HIGHA @@ -5031,7 +4999,7 @@ my_func: #higha(S + A – P) - + R_PPC64_REL16_HIGHER @@ -5045,7 +5013,7 @@ my_func: #higher(S + A – P) - + R_PPC64_REL16_HIGHERA @@ -5059,7 +5027,7 @@ my_func: #highera(S + A – P) - + R_PPC64_REL16_HIGHEST @@ -5073,7 +5041,7 @@ my_func: #highest(S + A – P) - + R_PPC64_REL16_HIGHESTA @@ -5087,7 +5055,7 @@ my_func: #highesta(S + A – P) - + R_PPC64_REL16DX_HA @@ -5287,24 +5255,22 @@ my_func: R_PPC64_REL24_NOTOC This relocation type is used to specify a function call where the TOC pointer is not initialized. It is similar to R_PPC64_REL24 in that it - specifies a symbol to be resolved. If the + specifies a symbol to be resolved. If the symbol resolves to a function that requires a TOC pointer (as determined by st_other bits) then a link editor must arrange for the call to be via the global entry point of the called function. - Any - However, if the symbol is resolved by - inserting a call to a PLT stub code, the PLT stub code must - not rely on the presence of - a valid TOC base address in TOC - register r2 to reference - the PLT function table. + Any + stub code must + not rely on + a valid TOC base address in + r2. R_PPC64_ENTRY This relocation type may optionally be associated with a global entry point. See for discussion of its use. - R_PPC64_PLTSEQ, R_PPC64_PLTCALL - + R_PPC64_PLTSEQ, R_PPC64_PLTCALL + These relocations mark the instruction as being part of an inline PLT call sequence in a function where r2 is a valid TOC pointer. R_PPC64_PLTCALL is used to mark the call instruction, while @@ -5314,16 +5280,16 @@ my_func: R_PPC64_PLTCALL also implicitly marks the nop or TOC-restoring instruction immediately following the call instruction. - R_PPC64_PLTSEQ_NOTOC, + R_PPC64_PLTSEQ_NOTOC, R_PPC64_PLTCALL_NOTOC - + These relocations are like the corresponding R_PPC64_PLTSEQ and R_PPC64_PLTCALL relocations, but are used in functions where r2 is not a valid TOC pointer. All instructions in the sequence shall use _NOTOC variant relocations. - R_PPC64_PCREL_OPT - + R_PPC64_PCREL_OPT + This relocation specifies that the instruction at r_offset and the instruction at r_offset + r_addend may be @@ -5398,15 +5364,14 @@ addi 2,2,.TOC.-func@l requirements as indicated in this section.
Function Call - Unless the bl instruction is - annotated with an R_PPC64_REL24_NOTOC relocation, - the + Unless the bl instruction is + annotated with an R_PPC64_REL24_NOTOC relocation, + the static linker must modify a nop instruction after a bl function call to restore the TOC pointer in r2 from 24(r1) when an external symbol that may use the TOC may be called, as in . - A function must contain a - nop slot after a bl instruction to an external symbol. +
Reference Optimization @@ -5476,7 +5441,7 @@ target: rewrite address references created using GOT-indirect loads and bl+4 sequences to use TOC-relative address computation.
-
+
Displacement Optimization for PC-Relative Accesses Compilers and assembly programmers must assume that references to @@ -5506,7 +5471,7 @@ nop
- - Specifically, to use this ABI and ABI-compliant programs, OpenPOWER-compliant - processors must implement the following categories: - - Base - - 64-Bit - - Server (subject to system-level requirements) - - Floating-Point - - Floating-Point.Record - - Load/Store Quadword x2 - - Store Conditional Page Mobility (subject to system-level requirements) - - Stream - - Transactional Memory - - Vector - - Vector.Little-Endian - - Vector-Scalar - - - - For more information about these categories, see “Categories” in Book I of - Power ISA, version 2.07B. - - - The OpenPOWER ELF V2 ABI is intended for use in little- and big-endian environments. - - Notices