Generic SIMD Intrinsic Library API  0.6
 All Classes Namespaces Files Functions Variables Typedefs Friends Macros
Classes | Namespaces | Macros | Functions
power_vsx4.h File Reference

SIMD LANES=4 interfaces implemented by Power vsx. More...

#include <stdint.h>
#include <math.h>
#include <altivec.h>
#include <assert.h>
#include <iostream>
#include "gsimd_utility.h"
#include "platform_intrinsics.h"

Go to the source code of this file.

Classes

struct  vsx::svec< Lanes, T >
 
struct  vsx::svec< 4, bool >
 Data representation and operations on a vector of 4 boolean values. This is used in predicated vector operations. Specifically the ith value of svec<4,bool> indicates whether the ith lane of a predicated vector operation is enabled or not. More...
 
struct  vsx::svec< 4, bool >::Helper
 A special helper class to support customized subscript[] operations. More...
 
struct  vsx::svec< 4, signed char >
 data representation and operations on a vector of 4 signed chars. More...
 
struct  vsx::svec< 4, unsigned char >
 data representation and operations on a vector of 4 unsigned chars. More...
 
struct  vsx::svec< 4, int16_t >
 data representation and operations on a vector of 4 signed short. More...
 
struct  vsx::svec< 4, uint16_t >
 data representation and operations on a vector of 4 unsigned short. More...
 
struct  vsx::svec< 4, int32_t >
 data representation and operations on a vector of 4 signed int. More...
 
struct  vsx::svec< 4, uint32_t >
 data representation and operations on a vector of 4 unsigned int. More...
 
struct  vsx::svec< 4, int64_t >
 data representation and operations on a vector of 4 signed long long. More...
 
struct  vsx::svec< 4, uint64_t >
 data representation and operations on a vector of 4 unsigned long long. More...
 
struct  vsx::svec< 4, float >
 data representation and operations on a vector of 4 float. More...
 
struct  vsx::svec< 4, double >
 data representation and operations on a vector of 4 double. More...
 
struct  vsx::svec< 4, void * >
 data representation and operations on a vector of 4 pointers. This is only used in gather and scatter. More...
 

Namespaces

 vsx
 

Macros

#define LANES   4
 
#define INSERT_EXTRACT_OPT(STYPE)
 
#define INSERT_EXTRACT_OPT64(STYPE)
 
#define BROADCAST_OPT32(STYPE)
 
#define BROADCAST_OPT64(STYPE)
 
#define UNARY_OP_OPT(STYPE, NAME, OP)
 
#define UNARY_OP_OPT64(STYPE, NAME, OP)
 macros for 64bit object, i64/u64/double More...
 
#define BINARY_OP_OPT(STYPE, NAME, OP)
 macros based on __vector type's operator overload More...
 
#define BINARY_OP_OPT64(STYPE, NAME, OP)
 
#define BINARY_OP_OPT_FUNC(STYPE, STYPE2, NAME, FUNC)
 
#define BINARY_OP_OPT_FUNC64(STYPE, STYPE2, NAME, FUNC)
 
#define BIN_VEC_SCAL(STYPE)
 
#define MAX_MIN_REDUCE_METHODS(STYPE)
 
#define CAST_OPT(SFROM, STO)
 cast based on directly change the __vector type More...
 
#define CAST_OPT64(SFROM, STO)
 cast based on directly change the __vector type More...
 
#define CAST_BITS_OPT(SFROM, STO)
 cast based on directly change the __vector type More...
 
#define CAST_BITS_OPT64(SFROM, STO)
 cast based on directly change the __vector type More...
 
#define SUBSCRIPT_FUNC_IMPL_VSX(STYPE)
 this macro uses vsx specific intrinsics to do extract, insert More...
 

Functions

svec< 4, bool > vsx::svec_select (svec< 4, bool > mask, svec< 4, bool > a, svec< 4, bool > b)
 construct c by selecting elements from two input vectors according to the mask More...
 
svec< 4, int8_t > vsx::svec_select (svec< 4, bool > mask, svec< 4, int8_t > a, svec< 4, int8_t > b)
 select of svec<4,int8_t> vectors by a mask vector see svec_select(svec<4,bool> mask, svec<4,bool> a, svec<4,bool> b) More...
 
svec< 4, uint8_t > vsx::svec_select (svec< 4, bool > mask, svec< 4, uint8_t > a, svec< 4, uint8_t > b)
 select of svec<4,uint8_t> vectors by a mask vector see svec_select(svec<4,bool> mask, svec<4,bool> a, svec<4,bool> b) More...
 
svec< 4, int16_t > vsx::svec_select (svec< 4, bool > mask, svec< 4, int16_t > a, svec< 4, int16_t > b)
 select of _svec<4,int16_t> vectors by a mask vector see svec_select(svec<4,bool> mask, svec<4,bool> a, svec<4,bool> b) More...
 
svec< 4, uint16_t > vsx::svec_select (svec< 4, bool > mask, svec< 4, uint16_t > a, svec< 4, uint16_t > b)
 select of svec<4,uint16_t> vectors by a mask vector see svec_select(svec<4,bool> mask, svec<4,bool> a, svec<4,bool> b) More...
 
svec< 4, int32_t > vsx::svec_select (svec< 4, bool > mask, svec< 4, int32_t > a, svec< 4, int32_t > b)
 select of svec<4,int32_t> vectors by a mask vector see svec_select(svec<4,bool> mask, svec<4,bool> a, svec<4,bool> b) More...
 
svec< 4, uint32_t > vsx::svec_select (svec< 4, bool > mask, svec< 4, uint32_t > a, svec< 4, uint32_t > b)
 select of svec<4,uint32_t> vectors by a mask vector see svec_select(svec<4,bool> mask, svec<4,bool> a, svec<4,bool> b) More...
 
svec< 4, int64_t > vsx::svec_select (svec< 4, bool > mask, svec< 4, int64_t > a, svec< 4, int64_t > b)
 select of svec<4,int64_t> vectors by a mask vector see svec_select(svec<4,bool> mask, svec<4,bool> a, svec<4,bool> b) More...
 
svec< 4, uint64_t > vsx::svec_select (svec< 4, bool > mask, svec< 4, uint64_t > a, svec< 4, uint64_t > b)
 select of svec<4,uint64_t> vectors by a mask vector see svec_select(svec<4,bool> mask, svec<4,bool> a, svec<4,bool> b) More...
 
svec< 4, float > vsx::svec_select (svec< 4, bool > mask, svec< 4, float > a, svec< 4, float > b)
 select of svec<4,float> vectors by a mask vector see svec_select(svec<4,bool> mask, svec<4,bool> a, svec<4,bool> b) More...
 
svec< 4, double > vsx::svec_select (svec< 4, bool > mask, svec< 4, double > a, svec< 4, double > b)
 select of svec<4,double> vectors by a mask vector see svec_select(svec<4,bool> mask, svec<4,bool> a, svec<4,bool> b) More...
 
svec< 4, bool > vsx::svec_select (bool cond, svec< 4, bool > a, svec< 4, bool > b)
 Select two TYPE vectors by a bool scalar. The same as cond ? a: b. More...
 
svec< 4, int8_t > vsx::svec_select (bool cond, svec< 4, int8_t > a, svec< 4, int8_t > b)
 Select two TYPE vectors by a bool scalar. The same as cond ? a: b. More...
 
svec< 4, uint8_t > vsx::svec_select (bool cond, svec< 4, uint8_t > a, svec< 4, uint8_t > b)
 Select two TYPE vectors by a bool scalar. The same as cond ? a: b. More...
 
svec< 4, int16_t > vsx::svec_select (bool cond, svec< 4, int16_t > a, svec< 4, int16_t > b)
 Select two TYPE vectors by a bool scalar. The same as cond ? a: b. More...
 
svec< 4, uint16_t > vsx::svec_select (bool cond, svec< 4, uint16_t > a, svec< 4, uint16_t > b)
 Select two TYPE vectors by a bool scalar. The same as cond ? a: b. More...
 
svec< 4, int32_t > vsx::svec_select (bool cond, svec< 4, int32_t > a, svec< 4, int32_t > b)
 Select two TYPE vectors by a bool scalar. The same as cond ? a: b. More...
 
svec< 4, uint32_t > vsx::svec_select (bool cond, svec< 4, uint32_t > a, svec< 4, uint32_t > b)
 Select two TYPE vectors by a bool scalar. The same as cond ? a: b. More...
 
svec< 4, int64_t > vsx::svec_select (bool cond, svec< 4, int64_t > a, svec< 4, int64_t > b)
 Select two TYPE vectors by a bool scalar. The same as cond ? a: b. More...
 
svec< 4, uint64_t > vsx::svec_select (bool cond, svec< 4, uint64_t > a, svec< 4, uint64_t > b)
 Select two TYPE vectors by a bool scalar. The same as cond ? a: b. More...
 
svec< 4, float > vsx::svec_select (bool cond, svec< 4, float > a, svec< 4, float > b)
 Select two TYPE vectors by a bool scalar. The same as cond ? a: b. More...
 
svec< 4, double > vsx::svec_select (bool cond, svec< 4, double > a, svec< 4, double > b)
 Select two TYPE vectors by a bool scalar. The same as cond ? a: b. More...
 
template<>
svec< 4, int8_t > vsx::svec_load_const< svec< 4, int8_t > > (const int8_t *p)
 
template<>
svec< 4, uint8_t > vsx::svec_load_const< svec< 4, uint8_t > > (const uint8_t *p)
 
template<>
svec< 4, int16_t > vsx::svec_load_const< svec< 4, int16_t > > (const int16_t *p)
 
template<>
svec< 4, uint16_t > vsx::svec_load_const< svec< 4, uint16_t > > (const uint16_t *p)
 
template<>
svec< 4, int32_t > vsx::svec_load_const< svec< 4, int32_t > > (const int32_t *p)
 
template<>
svec< 4, uint32_t > vsx::svec_load_const< svec< 4, uint32_t > > (const uint32_t *p)
 
template<>
svec< 4, int64_t > vsx::svec_load_const< svec< 4, int64_t > > (const int64_t *p)
 
template<>
svec< 4, uint64_t > vsx::svec_load_const< svec< 4, uint64_t > > (const uint64_t *p)
 
template<>
svec< 4, float > vsx::svec_load_const< svec< 4, float > > (const float *p)
 
template<>
svec< 4, double > vsx::svec_load_const< svec< 4, double > > (const double *p)
 
template<>
svec< 4, int8_t > vsx::svec_load_and_splat< svec< 4, int8_t > > (int8_t *p)
 
template<>
svec< 4, uint8_t > vsx::svec_load_and_splat< svec< 4, uint8_t > > (uint8_t *p)
 
template<>
svec< 4, int16_t > vsx::svec_load_and_splat< svec< 4, int16_t > > (int16_t *p)
 
template<>
svec< 4, uint16_t > vsx::svec_load_and_splat< svec< 4, uint16_t > > (uint16_t *p)
 
template<>
svec< 4, int32_t > vsx::svec_load_and_splat< svec< 4, int32_t > > (int32_t *p)
 
template<>
svec< 4, uint32_t > vsx::svec_load_and_splat< svec< 4, uint32_t > > (uint32_t *p)
 
template<>
svec< 4, int64_t > vsx::svec_load_and_splat< svec< 4, int64_t > > (int64_t *p)
 
template<>
svec< 4, uint64_t > vsx::svec_load_and_splat< svec< 4, uint64_t > > (uint64_t *p)
 
template<>
svec< 4, float > vsx::svec_load_and_splat< svec< 4, float > > (float *p)
 
template<>
svec< 4, double > vsx::svec_load_and_splat< svec< 4, double > > (double *p)
 
svec< 4, int32_t > vsx::svec_madd (svec< 4, int32_t > a, svec< 4, int32_t > b, svec< 4, int32_t > c)
 vector multiply and add operation. return a * b + c. More...
 
svec< 4, int32_t > vsx::svec_msub (svec< 4, int32_t > a, svec< 4, int32_t > b, svec< 4, int32_t > c)
 vector multiply and add operation. return a * b - c. More...
 
svec< 4, int32_t > vsx::svec_nmsub (svec< 4, int32_t > a, svec< 4, int32_t > b, svec< 4, int32_t > c)
 vector multiply and add operation. return - ( a * b - c). More...
 
svec< 4, uint32_t > vsx::svec_madd (svec< 4, uint32_t > a, svec< 4, uint32_t > b, svec< 4, uint32_t > c)
 vector multiply and add operation. return a * b + c. More...
 
svec< 4, uint32_t > vsx::svec_msub (svec< 4, uint32_t > a, svec< 4, uint32_t > b, svec< 4, uint32_t > c)
 vector multiply and add operation. return a * b - c. More...
 
svec< 4, uint32_t > vsx::svec_nmsub (svec< 4, uint32_t > a, svec< 4, uint32_t > b, svec< 4, uint32_t > c)
 vector multiply and add operation. return - ( a * b - c). More...
 
svec< 4, int64_t > vsx::svec_madd (svec< 4, int64_t > a, svec< 4, int64_t > b, svec< 4, int64_t > c)
 vector multiply and add operation. return a * b + c. More...
 
svec< 4, int64_t > vsx::svec_msub (svec< 4, int64_t > a, svec< 4, int64_t > b, svec< 4, int64_t > c)
 vector multiply and add operation. return a * b - c. More...
 
svec< 4, int64_t > vsx::svec_nmsub (svec< 4, int64_t > a, svec< 4, int64_t > b, svec< 4, int64_t > c)
 vector multiply and add operation. return - ( a * b - c). More...
 
svec< 4, uint64_t > vsx::svec_madd (svec< 4, uint64_t > a, svec< 4, uint64_t > b, svec< 4, uint64_t > c)
 vector multiply and add operation. return a * b + c. More...
 
svec< 4, uint64_t > vsx::svec_msub (svec< 4, uint64_t > a, svec< 4, uint64_t > b, svec< 4, uint64_t > c)
 vector multiply and add operation. return a * b - c. More...
 
svec< 4, uint64_t > vsx::svec_nmsub (svec< 4, uint64_t > a, svec< 4, uint64_t > b, svec< 4, uint64_t > c)
 vector multiply and add operation. return - ( a * b - c). More...
 
svec< 4, float > vsx::svec_madd (svec< 4, float > a, svec< 4, float > b, svec< 4, float > c)
 vector multiply and add operation. return a * b + c. More...
 
svec< 4, double > vsx::svec_madd (svec< 4, double > a, svec< 4, double > b, svec< 4, double > c)
 vector multiply and add operation. return a * b + c. More...
 
svec< 4, float > vsx::svec_msub (svec< 4, float > a, svec< 4, float > b, svec< 4, float > c)
 vector multiply and add operation. return a * b - c. More...
 
svec< 4, double > vsx::svec_msub (svec< 4, double > a, svec< 4, double > b, svec< 4, double > c)
 vector multiply and add operation. return a * b - c. More...
 
svec< 4, float > vsx::svec_nmsub (svec< 4, float > a, svec< 4, float > b, svec< 4, float > c)
 vector multiply and add operation. return -(a * b - c). More...
 
svec< 4, double > vsx::svec_nmsub (svec< 4, double > a, svec< 4, double > b, svec< 4, double > c)
 vector multiply and add operation. return -(a * b - c). More...
 
svec< 4,float > vsx::svec_preduce_add (svec< 4, float > v0, svec< 4, float > v1, svec< 4, float > v2, svec< 4, float > v3)
 
svec< 4, double > vsx::svec_preduce_add (svec< 4, double > v0, svec< 4, double > v1, svec< 4, double > v2, svec< 4, double > v3)
 
svec< 4,bool > vsx::svec_masked_equal (svec< 4, int8_t > a, svec< 4, int8_t > b, svec< 4, bool > mask)
 Do equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_not_equal (svec< 4, int8_t > a, svec< 4, int8_t > b, svec< 4, bool > mask)
 Do not_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_than (svec< 4, int8_t > a, svec< 4, int8_t > b, svec< 4, bool > mask)
 Do less_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_equal (svec< 4, int8_t > a, svec< 4, int8_t > b, svec< 4, bool > mask)
 Do less_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_than (svec< 4, int8_t > a, svec< 4, int8_t > b, svec< 4, bool > mask)
 Do greater_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_equal (svec< 4, int8_t > a, svec< 4, int8_t > b, svec< 4, bool > mask)
 Do greater_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_equal (svec< 4, uint8_t > a, svec< 4, uint8_t > b, svec< 4, bool > mask)
 Do equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_not_equal (svec< 4, uint8_t > a, svec< 4, uint8_t > b, svec< 4, bool > mask)
 Do not_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_than (svec< 4, uint8_t > a, svec< 4, uint8_t > b, svec< 4, bool > mask)
 Do less_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_equal (svec< 4, uint8_t > a, svec< 4, uint8_t > b, svec< 4, bool > mask)
 Do less_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_than (svec< 4, uint8_t > a, svec< 4, uint8_t > b, svec< 4, bool > mask)
 Do greater_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_equal (svec< 4, uint8_t > a, svec< 4, uint8_t > b, svec< 4, bool > mask)
 Do greater_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_equal (svec< 4, int16_t > a, svec< 4, int16_t > b, svec< 4, bool > mask)
 Do equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_not_equal (svec< 4, int16_t > a, svec< 4, int16_t > b, svec< 4, bool > mask)
 Do not_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_than (svec< 4, int16_t > a, svec< 4, int16_t > b, svec< 4, bool > mask)
 Do less_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_equal (svec< 4, int16_t > a, svec< 4, int16_t > b, svec< 4, bool > mask)
 Do less_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_than (svec< 4, int16_t > a, svec< 4, int16_t > b, svec< 4, bool > mask)
 Do greater_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_equal (svec< 4, int16_t > a, svec< 4, int16_t > b, svec< 4, bool > mask)
 Do greater_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_equal (svec< 4, uint16_t > a, svec< 4, uint16_t > b, svec< 4, bool > mask)
 Do equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_not_equal (svec< 4, uint16_t > a, svec< 4, uint16_t > b, svec< 4, bool > mask)
 Do not_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_than (svec< 4, uint16_t > a, svec< 4, uint16_t > b, svec< 4, bool > mask)
 Do less_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_equal (svec< 4, uint16_t > a, svec< 4, uint16_t > b, svec< 4, bool > mask)
 Do less_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_than (svec< 4, uint16_t > a, svec< 4, uint16_t > b, svec< 4, bool > mask)
 Do greater_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_equal (svec< 4, uint16_t > a, svec< 4, uint16_t > b, svec< 4, bool > mask)
 Do greater_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_equal (svec< 4, int32_t > a, svec< 4, int32_t > b, svec< 4, bool > mask)
 Do equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_not_equal (svec< 4, int32_t > a, svec< 4, int32_t > b, svec< 4, bool > mask)
 Do not_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_than (svec< 4, int32_t > a, svec< 4, int32_t > b, svec< 4, bool > mask)
 Do less_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_equal (svec< 4, int32_t > a, svec< 4, int32_t > b, svec< 4, bool > mask)
 Do less_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_than (svec< 4, int32_t > a, svec< 4, int32_t > b, svec< 4, bool > mask)
 Do greater_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_equal (svec< 4, int32_t > a, svec< 4, int32_t > b, svec< 4, bool > mask)
 Do greater_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_equal (svec< 4, uint32_t > a, svec< 4, uint32_t > b, svec< 4, bool > mask)
 Do equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_not_equal (svec< 4, uint32_t > a, svec< 4, uint32_t > b, svec< 4, bool > mask)
 Do not_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_than (svec< 4, uint32_t > a, svec< 4, uint32_t > b, svec< 4, bool > mask)
 Do less_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_equal (svec< 4, uint32_t > a, svec< 4, uint32_t > b, svec< 4, bool > mask)
 Do less_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_than (svec< 4, uint32_t > a, svec< 4, uint32_t > b, svec< 4, bool > mask)
 Do greater_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_equal (svec< 4, uint32_t > a, svec< 4, uint32_t > b, svec< 4, bool > mask)
 Do greater_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_equal (svec< 4, int64_t > a, svec< 4, int64_t > b, svec< 4, bool > mask)
 Do equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_not_equal (svec< 4, int64_t > a, svec< 4, int64_t > b, svec< 4, bool > mask)
 Do not_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_than (svec< 4, int64_t > a, svec< 4, int64_t > b, svec< 4, bool > mask)
 Do less_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_equal (svec< 4, int64_t > a, svec< 4, int64_t > b, svec< 4, bool > mask)
 Do less_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_than (svec< 4, int64_t > a, svec< 4, int64_t > b, svec< 4, bool > mask)
 Do greater_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_equal (svec< 4, int64_t > a, svec< 4, int64_t > b, svec< 4, bool > mask)
 Do greater_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_equal (svec< 4, uint64_t > a, svec< 4, uint64_t > b, svec< 4, bool > mask)
 Do equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_not_equal (svec< 4, uint64_t > a, svec< 4, uint64_t > b, svec< 4, bool > mask)
 Do not_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_than (svec< 4, uint64_t > a, svec< 4, uint64_t > b, svec< 4, bool > mask)
 Do less_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_equal (svec< 4, uint64_t > a, svec< 4, uint64_t > b, svec< 4, bool > mask)
 Do less_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_than (svec< 4, uint64_t > a, svec< 4, uint64_t > b, svec< 4, bool > mask)
 Do greater_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_equal (svec< 4, uint64_t > a, svec< 4, uint64_t > b, svec< 4, bool > mask)
 Do greater_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_equal (svec< 4, float > a, svec< 4, float > b, svec< 4, bool > mask)
 Do equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_not_equal (svec< 4, float > a, svec< 4, float > b, svec< 4, bool > mask)
 Do not_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_than (svec< 4, float > a, svec< 4, float > b, svec< 4, bool > mask)
 Do less_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_equal (svec< 4, float > a, svec< 4, float > b, svec< 4, bool > mask)
 Do less_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_than (svec< 4, float > a, svec< 4, float > b, svec< 4, bool > mask)
 Do greater_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_equal (svec< 4, float > a, svec< 4, float > b, svec< 4, bool > mask)
 Do greater_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_equal (svec< 4, double > a, svec< 4, double > b, svec< 4, bool > mask)
 Do equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_not_equal (svec< 4, double > a, svec< 4, double > b, svec< 4, bool > mask)
 Do not_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_than (svec< 4, double > a, svec< 4, double > b, svec< 4, bool > mask)
 Do less_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_less_equal (svec< 4, double > a, svec< 4, double > b, svec< 4, bool > mask)
 Do less_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_than (svec< 4, double > a, svec< 4, double > b, svec< 4, bool > mask)
 Do greater_than operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
svec< 4,bool > vsx::svec_masked_greater_equal (svec< 4, double > a, svec< 4, double > b, svec< 4, bool > mask)
 Do greater_equal operation on a and b with mask * If mask is true, return the compare result, otherwise return false. More...
 
template<>
svec< 4, int8_t > vsx::svec_cast< svec< 4, int8_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint8_t > vsx::svec_cast< svec< 4, uint8_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int16_t > vsx::svec_cast< svec< 4, int16_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint16_t > vsx::svec_cast< svec< 4, uint16_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int32_t > vsx::svec_cast< svec< 4, int32_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint32_t > vsx::svec_cast< svec< 4, uint32_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int64_t > vsx::svec_cast< svec< 4, int64_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint64_t > vsx::svec_cast< svec< 4, uint64_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > vsx::svec_cast< svec< 4, float > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > vsx::svec_cast< svec< 4, double > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > vsx::svec_cast< svec< 4, bool > > (svec< 4, int8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint8_t > vsx::svec_cast< svec< 4, uint8_t > > (svec< 4, int8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int16_t > vsx::svec_cast< svec< 4, int16_t > > (svec< 4, int8_t > val)
 cast val from svec<4,int8_t> type to svec<4,int16_t> type. More...
 
template<>
svec< 4, uint16_t > vsx::svec_cast< svec< 4, uint16_t > > (svec< 4, int8_t > val)
 cast val from svec<4,int8_t> type to svec<4,uint16_t> type. More...
 
template<>
svec< 4, int32_t > vsx::svec_cast< svec< 4, int32_t > > (svec< 4, int8_t > val)
 cast val from svec<4,int8_t> type to svec<4,int32_t> type. More...
 
template<>
svec< 4, uint32_t > vsx::svec_cast< svec< 4, uint32_t > > (svec< 4, int8_t > val)
 cast val from svec<4,int8_t> type to svec<4,uint32_t> type. More...
 
template<>
svec< 4, int64_t > vsx::svec_cast< svec< 4, int64_t > > (svec< 4, int8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint64_t > vsx::svec_cast< svec< 4, uint64_t > > (svec< 4, int8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > vsx::svec_cast< svec< 4, float > > (svec< 4, int8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > vsx::svec_cast< svec< 4, double > > (svec< 4, int8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > vsx::svec_cast< svec< 4, bool > > (svec< 4, uint8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > vsx::svec_cast< svec< 4, int8_t > > (svec< 4, uint8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int16_t > vsx::svec_cast< svec< 4, int16_t > > (svec< 4, uint8_t > val)
 cast val from svec<4,uint8_t> type to svec<4, int16_T> type. More...
 
template<>
svec< 4, uint16_t > vsx::svec_cast< svec< 4, uint16_t > > (svec< 4, uint8_t > val)
 cast val from svec<4,uint8_t> type to svec<4,uint16_t> type. More...
 
template<>
svec< 4, int32_t > vsx::svec_cast< svec< 4, int32_t > > (svec< 4, uint8_t > val)
 cast val from svec<4,uint8_t> type to svec<4,int32_t> type. More...
 
template<>
svec< 4, uint32_t > vsx::svec_cast< svec< 4, uint32_t > > (svec< 4, uint8_t > val)
 cast val from svec<4,uint8_t> type to svec<4,uint32_t> type. More...
 
template<>
svec< 4, int64_t > vsx::svec_cast< svec< 4, int64_t > > (svec< 4, uint8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint64_t > vsx::svec_cast< svec< 4, uint64_t > > (svec< 4, uint8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > vsx::svec_cast< svec< 4, float > > (svec< 4, uint8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > vsx::svec_cast< svec< 4, double > > (svec< 4, uint8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > vsx::svec_cast< svec< 4, bool > > (svec< 4, int16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > vsx::svec_cast< svec< 4, int8_t > > (svec< 4, int16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint8_t > vsx::svec_cast< svec< 4, uint8_t > > (svec< 4, int16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint16_t > vsx::svec_cast< svec< 4, uint16_t > > (svec< 4, int16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int32_t > vsx::svec_cast< svec< 4, int32_t > > (svec< 4, int16_t > val)
 cast val from svec<4,int16_t> type to svec<4,int32_t> type. More...
 
template<>
svec< 4, uint32_t > vsx::svec_cast< svec< 4, uint32_t > > (svec< 4, int16_t > val)
 cast val from svec<4,int16_t> type to svec<4,uint32_t> type. More...
 
template<>
svec< 4, int64_t > vsx::svec_cast< svec< 4, int64_t > > (svec< 4, int16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint64_t > vsx::svec_cast< svec< 4, uint64_t > > (svec< 4, int16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > vsx::svec_cast< svec< 4, float > > (svec< 4, int16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > vsx::svec_cast< svec< 4, double > > (svec< 4, int16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > vsx::svec_cast< svec< 4, bool > > (svec< 4, uint16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > vsx::svec_cast< svec< 4, int8_t > > (svec< 4, uint16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint8_t > vsx::svec_cast< svec< 4, uint8_t > > (svec< 4, uint16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int16_t > vsx::svec_cast< svec< 4, int16_t > > (svec< 4, uint16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int32_t > vsx::svec_cast< svec< 4, int32_t > > (svec< 4, uint16_t > val)
 cast val from svec<4,uint16_t> type to svec<4,int32_t> type. More...
 
template<>
svec< 4, uint32_t > vsx::svec_cast< svec< 4, uint32_t > > (svec< 4, uint16_t > val)
 cast val from svec<4,uint16_t> type to svec<4,uint32_t> type. More...
 
template<>
svec< 4, int64_t > vsx::svec_cast< svec< 4, int64_t > > (svec< 4, uint16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint64_t > vsx::svec_cast< svec< 4, uint64_t > > (svec< 4, uint16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > vsx::svec_cast< svec< 4, float > > (svec< 4, uint16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > vsx::svec_cast< svec< 4, double > > (svec< 4, uint16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > vsx::svec_cast< svec< 4, bool > > (svec< 4, int32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > vsx::svec_cast< svec< 4, int8_t > > (svec< 4, int32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint8_t > vsx::svec_cast< svec< 4, uint8_t > > (svec< 4, int32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int16_t > vsx::svec_cast< svec< 4, int16_t > > (svec< 4, int32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint16_t > vsx::svec_cast< svec< 4, uint16_t > > (svec< 4, int32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint32_t > vsx::svec_cast< svec< 4, uint32_t > > (svec< 4, int32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int64_t > vsx::svec_cast< svec< 4, int64_t > > (svec< 4, int32_t > val)
 cast val from svec<4,int32_t> type to svec<4,int64_t> type. More...
 
template<>
svec< 4, uint64_t > vsx::svec_cast< svec< 4, uint64_t > > (svec< 4, int32_t > val)
 cast val from svec<4,int32_t> type to svec<4,uint64_t> type. More...
 
template<>
svec< 4, float > vsx::svec_cast< svec< 4, float > > (svec< 4, int32_t > val)
 cast val from svec<4,int32_t> type to svec<4,float> type. More...
 
template<>
svec< 4, double > vsx::svec_cast< svec< 4, double > > (svec< 4, int32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > vsx::svec_cast< svec< 4, bool > > (svec< 4, uint32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > vsx::svec_cast< svec< 4, int8_t > > (svec< 4, uint32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint8_t > vsx::svec_cast< svec< 4, uint8_t > > (svec< 4, uint32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int16_t > vsx::svec_cast< svec< 4, int16_t > > (svec< 4, uint32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint16_t > vsx::svec_cast< svec< 4, uint16_t > > (svec< 4, uint32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int32_t > vsx::svec_cast< svec< 4, int32_t > > (svec< 4, uint32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int64_t > vsx::svec_cast< svec< 4, int64_t > > (svec< 4, uint32_t > val)
 cast val from svec<4,uint32_t> type to svec<4,int64_t> type. More...
 
template<>
svec< 4, uint64_t > vsx::svec_cast< svec< 4, uint64_t > > (svec< 4, uint32_t > val)
 cast val from svec<4,uint32_t> type to svec<4,uint64_t> type. More...
 
template<>
svec< 4, float > vsx::svec_cast< svec< 4, float > > (svec< 4, uint32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > vsx::svec_cast< svec< 4, double > > (svec< 4, uint32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > vsx::svec_cast< svec< 4, bool > > (svec< 4, int64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > vsx::svec_cast< svec< 4, int8_t > > (svec< 4, int64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint8_t > vsx::svec_cast< svec< 4, uint8_t > > (svec< 4, int64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int16_t > vsx::svec_cast< svec< 4, int16_t > > (svec< 4, int64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint16_t > vsx::svec_cast< svec< 4, uint16_t > > (svec< 4, int64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int32_t > vsx::svec_cast< svec< 4, int32_t > > (svec< 4, int64_t > val)
 cast val from svec<4,int64_t> type to svec<4,int32_t> type. More...
 
template<>
svec< 4, uint32_t > vsx::svec_cast< svec< 4, uint32_t > > (svec< 4, int64_t > val)
 cast val from svec<4,int64_t> type to svec<4,uint32_t> type. More...
 
template<>
svec< 4, uint64_t > vsx::svec_cast< svec< 4, uint64_t > > (svec< 4, int64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > vsx::svec_cast< svec< 4, float > > (svec< 4, int64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > vsx::svec_cast< svec< 4, double > > (svec< 4, int64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > vsx::svec_cast< svec< 4, bool > > (svec< 4, uint64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > vsx::svec_cast< svec< 4, int8_t > > (svec< 4, uint64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint8_t > vsx::svec_cast< svec< 4, uint8_t > > (svec< 4, uint64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int16_t > vsx::svec_cast< svec< 4, int16_t > > (svec< 4, uint64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint16_t > vsx::svec_cast< svec< 4, uint16_t > > (svec< 4, uint64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int32_t > vsx::svec_cast< svec< 4, int32_t > > (svec< 4, uint64_t > val)
 cast val from svec<4,uint64_t> type to svec<4,int32_t> type. More...
 
template<>
svec< 4, uint32_t > vsx::svec_cast< svec< 4, uint32_t > > (svec< 4, uint64_t > val)
 cast val from svec<4,uint64_t> type to svec<4,uint32_t> type. More...
 
template<>
svec< 4, int64_t > vsx::svec_cast< svec< 4, int64_t > > (svec< 4, uint64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > vsx::svec_cast< svec< 4, float > > (svec< 4, uint64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > vsx::svec_cast< svec< 4, double > > (svec< 4, uint64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > vsx::svec_cast< svec< 4, bool > > (svec< 4, float > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > vsx::svec_cast< svec< 4, int8_t > > (svec< 4, float > val)
 cast val from svec<4,float> type to svec<4,int8_t> type. More...
 
template<>
svec< 4, uint8_t > vsx::svec_cast< svec< 4, uint8_t > > (svec< 4, float > val)
 cast val from svec<4,float> type to svec<4,uint8_t> type. More...
 
template<>
svec< 4, int16_t > vsx::svec_cast< svec< 4, int16_t > > (svec< 4, float > val)
 cast val from svec<4,float> type to svec<4,int16_t> type. More...
 
template<>
svec< 4, uint16_t > vsx::svec_cast< svec< 4, uint16_t > > (svec< 4, float > val)
 cast val from svec<4,float> type to svec<4,uint16_t> type. More...
 
template<>
svec< 4, int32_t > vsx::svec_cast< svec< 4, int32_t > > (svec< 4, float > val)
 cast val from svec<4,float> type to svec<4,int32_t> type. More...
 
template<>
svec< 4, uint32_t > vsx::svec_cast< svec< 4, uint32_t > > (svec< 4, float > val)
 cast val from svec<4,float> type to svec<4,uint32_t> type. More...
 
template<>
svec< 4, int64_t > vsx::svec_cast< svec< 4, int64_t > > (svec< 4, float > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint64_t > vsx::svec_cast< svec< 4, uint64_t > > (svec< 4, float > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > vsx::svec_cast< svec< 4, double > > (svec< 4, float > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > vsx::svec_cast< svec< 4, bool > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > vsx::svec_cast< svec< 4, int8_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint8_t > vsx::svec_cast< svec< 4, uint8_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int16_t > vsx::svec_cast< svec< 4, int16_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint16_t > vsx::svec_cast< svec< 4, uint16_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int32_t > vsx::svec_cast< svec< 4, int32_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint32_t > vsx::svec_cast< svec< 4, uint32_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int64_t > vsx::svec_cast< svec< 4, int64_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint64_t > vsx::svec_cast< svec< 4, uint64_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > vsx::svec_cast< svec< 4, float > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > vsx::svec_cast_bits< svec< 4, float > > (svec< 4, int32_t > val)
 bit cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > vsx::svec_cast_bits< svec< 4, float > > (svec< 4, uint32_t > val)
 bit cast val from FROM type to TO type. More...
 
template<>
svec< 4, int32_t > vsx::svec_cast_bits< svec< 4, int32_t > > (svec< 4, float > val)
 bit cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint32_t > vsx::svec_cast_bits< svec< 4, uint32_t > > (svec< 4, float > val)
 bit cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > vsx::svec_cast_bits< svec< 4, double > > (svec< 4, int64_t > val)
 bit cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > vsx::svec_cast_bits< svec< 4, double > > (svec< 4, uint64_t > val)
 bit cast val from FROM type to TO type. More...
 
template<>
svec< 4, int64_t > vsx::svec_cast_bits< svec< 4, int64_t > > (svec< 4, double > val)
 bit cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint64_t > vsx::svec_cast_bits< svec< 4, uint64_t > > (svec< 4, double > val)
 bit cast val from FROM type to TO type. More...
 
svec< 4, int8_t > vsx::operator+ (int8_t s, svec< 4, int8_t > a)
 Add a scalar and a vector. More...
 
svec< 4, int8_t > vsx::operator- (int8_t s, svec< 4, int8_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, int8_t > vsx::operator* (int8_t s, svec< 4, int8_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, int8_t > vsx::operator/ (int8_t s, svec< 4, int8_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, uint8_t > vsx::operator+ (uint8_t s, svec< 4, uint8_t > a)
 Add a scalar and a vector. More...
 
svec< 4, uint8_t > vsx::operator- (uint8_t s, svec< 4, uint8_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, uint8_t > vsx::operator* (uint8_t s, svec< 4, uint8_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, uint8_t > vsx::operator/ (uint8_t s, svec< 4, uint8_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, int16_t > vsx::operator+ (int16_t s, svec< 4, int16_t > a)
 Add a scalar and a vector. More...
 
svec< 4, int16_t > vsx::operator- (int16_t s, svec< 4, int16_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, int16_t > vsx::operator* (int16_t s, svec< 4, int16_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, int16_t > vsx::operator/ (int16_t s, svec< 4, int16_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, uint16_t > vsx::operator+ (uint16_t s, svec< 4, uint16_t > a)
 Add a scalar and a vector. More...
 
svec< 4, uint16_t > vsx::operator- (uint16_t s, svec< 4, uint16_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, uint16_t > vsx::operator* (uint16_t s, svec< 4, uint16_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, uint16_t > vsx::operator/ (uint16_t s, svec< 4, uint16_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, int32_t > vsx::operator+ (int32_t s, svec< 4, int32_t > a)
 Add a scalar and a vector. More...
 
svec< 4, int32_t > vsx::operator- (int32_t s, svec< 4, int32_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, int32_t > vsx::operator* (int32_t s, svec< 4, int32_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, int32_t > vsx::operator/ (int32_t s, svec< 4, int32_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, uint32_t > vsx::operator+ (uint32_t s, svec< 4, uint32_t > a)
 Add a scalar and a vector. More...
 
svec< 4, uint32_t > vsx::operator- (uint32_t s, svec< 4, uint32_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, uint32_t > vsx::operator* (uint32_t s, svec< 4, uint32_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, uint32_t > vsx::operator/ (uint32_t s, svec< 4, uint32_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, int64_t > vsx::operator+ (int64_t s, svec< 4, int64_t > a)
 Add a scalar and a vector. More...
 
svec< 4, int64_t > vsx::operator- (int64_t s, svec< 4, int64_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, int64_t > vsx::operator* (int64_t s, svec< 4, int64_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, int64_t > vsx::operator/ (int64_t s, svec< 4, int64_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, uint64_t > vsx::operator+ (uint64_t s, svec< 4, uint64_t > a)
 Add a scalar and a vector. More...
 
svec< 4, uint64_t > vsx::operator- (uint64_t s, svec< 4, uint64_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, uint64_t > vsx::operator* (uint64_t s, svec< 4, uint64_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, uint64_t > vsx::operator/ (uint64_t s, svec< 4, uint64_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, float > vsx::operator+ (float s, svec< 4, float > a)
 Add a scalar and a vector. More...
 
svec< 4, float > vsx::operator- (float s, svec< 4, float > a)
 Sub a scalar and a vector. More...
 
svec< 4, float > vsx::operator* (float s, svec< 4, float > a)
 Multiply a scalar and a vector. More...
 
svec< 4, float > vsx::operator/ (float s, svec< 4, float > a)
 Divide a scalar by a vector. More...
 
svec< 4, double > vsx::operator+ (double s, svec< 4, double > a)
 Add a scalar and a vector. More...
 
svec< 4, double > vsx::operator- (double s, svec< 4, double > a)
 Sub a scalar and a vector. More...
 
svec< 4, double > vsx::operator* (double s, svec< 4, double > a)
 Multiply a scalar and a vector. More...
 
svec< 4, double > vsx::operator/ (double s, svec< 4, double > a)
 Divide a scalar by a vector. More...
 

Detailed Description

SIMD LANES=4 interfaces implemented by Power vsx.

Copyright 2012 the Generic SIMD Intrinsic Library project authors. All rights reserved.

Copyright IBM Corp. 2013, 2013. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

 Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.
 Redistributions in binary form must reproduce the above
 copyright notice, this list of conditions and the following
 disclaimer in the documentation and/or other materials provided
 with the distribution.
 Neither the name of IBM Corp. nor the names of its contributors may be
 used to endorse or promote products derived from this software
 without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The original source code covered by the above license above has been modified significantly by IBM Corp. Copyright 2013 the Generic SIMD Intrinsic Library project authors. All rights reserved.

Copyright (c) 2010-2012, Intel Corporation All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.

Neither the name of Intel Corporation nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Date
Jun 21, 2013
Author
Peng Wu (pengw.nosp@m.u@us.nosp@m..ibm..nosp@m.com)
Ilie G Tanase (igtan.nosp@m.ase@.nosp@m.us.ib.nosp@m.m.co.nosp@m.m)
Mauricio J Serrano (mserr.nosp@m.ano@.nosp@m.us.ib.nosp@m.m.co.nosp@m.m)
Haichuan Wang (haich.nosp@m.uan@.nosp@m.us.ib.nosp@m.m.co.nosp@m.m, hwang.nosp@m.154@.nosp@m.illin.nosp@m.ois..nosp@m.edu) The source file is organized as follows I. all types definition, with class function incorporated II. data operation interfaces
  1. load/store
  2. select
  3. broadcast/rotate/shuffle/smear/setzero
  4. gather/scatter
  5. load const, smear const, load and splat
  6. masked load/masked store III. Mask type (i1) interfaces
  1. mask construction
  2. bit operations IV. General data operation interfaces
  1. Unary
  2. Math unary
  3. Binary
  4. Ternary
  5. Compare
  6. Max/Min
  7. Reduce
  8. Cast

The current implementation requires gcc to compile. Reasons 1) In order to implement the splat interface efficiently, the code uses gcc built-in function __builtin_constant_p(exp).

Macro Definition Documentation

#define BIN_VEC_SCAL (   STYPE)
Value:
static FORCEINLINE svec<LANES,STYPE> svec_add_scalar(svec<LANES,STYPE> a, STYPE s) { \
return svec_add(a, svec<LANES,STYPE>(s)); \
} \
static FORCEINLINE svec<LANES,STYPE> svec_scalar_add(STYPE s, svec<LANES,STYPE> a) { \
return svec_add(svec<LANES,STYPE>(s), a); \
} \
static FORCEINLINE svec<LANES,STYPE> svec_sub_scalar(svec<LANES,STYPE> a, STYPE s) { \
return svec_sub(a, svec<LANES,STYPE>(s)); \
} \
static FORCEINLINE svec<LANES,STYPE> svec_scalar_sub(STYPE s, svec<LANES,STYPE> a) { \
return svec_sub(svec<LANES,STYPE>(s), a); \
} \
static FORCEINLINE svec<LANES,STYPE> svec_mul_scalar(svec<LANES,STYPE> a, STYPE s) { \
return svec_mul(a, svec<LANES,STYPE>(s)); \
} \
static FORCEINLINE svec<LANES,STYPE> svec_scalar_mul(STYPE s, svec<LANES,STYPE> a) { \
return svec_mul(svec<LANES,STYPE>(s), a); \
} \
static FORCEINLINE svec<LANES,STYPE> svec_div_scalar(svec<LANES,STYPE> a, STYPE s) { \
return svec_div(a, svec<LANES,STYPE>(s)); \
} \
static FORCEINLINE svec<LANES,STYPE> svec_scalar_div(STYPE s, svec<LANES,STYPE> a) { \
return svec_div(svec<LANES,STYPE>(s), a); \
} \
#define FORCEINLINE
Definition: gsimd_utility.h:175
#define BINARY_OP_OPT (   STYPE,
  NAME,
  OP 
)
Value:
static FORCEINLINE svec<LANES,STYPE> NAME(svec<LANES,STYPE> a, svec<LANES,STYPE> b) { \
return svec<LANES,STYPE>(a.v OP b.v); \
}
#define FORCEINLINE
Definition: gsimd_utility.h:175

macros based on __vector type's operator overload

#define BINARY_OP_OPT64 (   STYPE,
  NAME,
  OP 
)
Value:
static FORCEINLINE svec<LANES,STYPE> NAME(svec<LANES,STYPE> a, svec<LANES,STYPE> b) { \
return svec<LANES,STYPE>(a.v[0] OP b.v[0], a.v[1] OP b.v[1]); \
}
#define FORCEINLINE
Definition: gsimd_utility.h:175
#define BINARY_OP_OPT_FUNC (   STYPE,
  STYPE2,
  NAME,
  FUNC 
)
Value:
static FORCEINLINE svec<LANES,STYPE> NAME(svec<LANES,STYPE> a, svec<LANES,STYPE2> b) { \
return svec<LANES,STYPE>(FUNC(a.v, b.v)); \
}
#define FORCEINLINE
Definition: gsimd_utility.h:175
#define BINARY_OP_OPT_FUNC64 (   STYPE,
  STYPE2,
  NAME,
  FUNC 
)
Value:
static FORCEINLINE svec<LANES,STYPE> NAME(svec<LANES,STYPE> a, svec<LANES,STYPE2> b) { \
return svec<LANES,STYPE>(FUNC(a.v[0], b.v[0]), FUNC(a.v[1], b.v[1])); \
}
#define FORCEINLINE
Definition: gsimd_utility.h:175
#define BROADCAST_OPT32 (   STYPE)
Value:
static FORCEINLINE svec<LANES,STYPE> svec_broadcast(svec<LANES,STYPE> v, const int index) { \
if(__builtin_constant_p(index) && index >=0 && index < 4){ return svec<LANES,STYPE>(vec_splat_p7(v.v, index)); } \
else { STYPE bval = v[index]; return svec<LANES,STYPE>(bval, bval, bval, bval); } \
}
#define FORCEINLINE
Definition: gsimd_utility.h:175
#define BROADCAST_OPT64 (   STYPE)
Value:
static FORCEINLINE svec<LANES,STYPE> svec_broadcast(svec<LANES,STYPE> v, const int index) { \
if(__builtin_constant_p(index) && index >=0 && index < 4){ \
__vector STYPE r = vec_splat_p7(v.v[index >> 1], index %2); \
return svec<LANES,STYPE>(r, r); } \
else { STYPE bval = v[index]; return svec<LANES,STYPE>(bval, bval, bval, bval); } \
}
#define FORCEINLINE
Definition: gsimd_utility.h:175
#define CAST_BITS_OPT (   SFROM,
  STO 
)
Value:
template <class T> static T svec_cast_bits(svec<LANES,SFROM> val); \ \
template <> FORCEINLINE svec<LANES,STO> svec_cast_bits<svec<LANES,STO> >(svec<LANES,SFROM> val) { \
return svec<LANES,STO>((__vector STO)(val.v)); \
}
#define FORCEINLINE
Definition: gsimd_utility.h:175

cast based on directly change the __vector type

#define CAST_BITS_OPT64 (   SFROM,
  STO 
)
Value:
template <class T> static T svec_cast_bits(svec<LANES,SFROM> val); \ \
template <> FORCEINLINE svec<LANES,STO> svec_cast_bits<svec<LANES,STO> >(svec<LANES,SFROM> val) { \
return svec<LANES,STO>((__vector STO)(val.v[0]), (__vector STO)(val.v[1])); \
}
#define FORCEINLINE
Definition: gsimd_utility.h:175

cast based on directly change the __vector type

#define CAST_OPT (   SFROM,
  STO 
)
Value:
template <class T> static T svec_cast(svec<LANES,SFROM> val); \ \
template <> FORCEINLINE svec<LANES,STO> svec_cast<svec<LANES,STO> >(svec<LANES,SFROM> val) { \
return svec<LANES,STO>((val.v)); \
}
#define FORCEINLINE
Definition: gsimd_utility.h:175

cast based on directly change the __vector type

#define CAST_OPT64 (   SFROM,
  STO 
)
Value:
template <class T> static T svec_cast(svec<LANES,SFROM> val); \ \
template <> FORCEINLINE svec<LANES,STO> svec_cast<svec<LANES,STO> >(svec<LANES,SFROM> val) { \
return svec<LANES,STO>((val.v[0]),(val.v[1])); \
}
#define FORCEINLINE
Definition: gsimd_utility.h:175

cast based on directly change the __vector type

#define INSERT_EXTRACT_OPT (   STYPE)
Value:
static FORCEINLINE STYPE svec_extract(svec<LANES,STYPE> v, int index) { \
return vec_extract(v.v, index); \
} \
static FORCEINLINE void svec_insert(svec<LANES,STYPE> *v, int index, STYPE val) { \
(*v).v = vec_insert(val, v->v, index); \
}
#define FORCEINLINE
Definition: gsimd_utility.h:175
#define INSERT_EXTRACT_OPT64 (   STYPE)
Value:
static FORCEINLINE STYPE svec_extract(svec<LANES,STYPE> v, int index) { \
return vec_extract(v.v[index >> 1], index%2); \
} \
static FORCEINLINE void svec_insert(svec<LANES,STYPE> *v, int index, STYPE val) { \
(*v).v[index >> 1] = vec_insert(val, v->v[index>>1], index%2); \
}
#define FORCEINLINE
Definition: gsimd_utility.h:175
#define LANES   4
#define MAX_MIN_REDUCE_METHODS (   STYPE)
Value:
BINARY_OP_REDUCE_FUNC_L4(STYPE, svec_reduce_add, add<STYPE>); \
BINARY_OP_REDUCE_FUNC_L4(STYPE, svec_reduce_max, max<STYPE>); \
BINARY_OP_REDUCE_FUNC_L4(STYPE, svec_reduce_min, min<STYPE>); \
#define BINARY_OP_REDUCE_FUNC_L4(STYPE, NAME, FUNC)
Definition: gsimd_utility.h:1039
#define SUBSCRIPT_FUNC_IMPL_VSX (   STYPE)
Value:
FORCEINLINE STYPE& svec<LANES,STYPE>::operator[](int index) { \
INC_STATS_NAME(STATS_INSERT, 1, "insert "#STYPE); \
return ((STYPE *)&v)[index]; \
} \
const FORCEINLINE STYPE svec<LANES,STYPE>::operator[](int index) const { \
return svec_extract(*this, index); \
}
#define INC_STATS_NAME(stat, inc, opname)
Definition: gsimd_utility.h:156
#define FORCEINLINE
Definition: gsimd_utility.h:175

this macro uses vsx specific intrinsics to do extract, insert

#define UNARY_OP_OPT (   STYPE,
  NAME,
  OP 
)
Value:
static FORCEINLINE svec<LANES,STYPE> NAME(svec<LANES,STYPE> a) { \
return OP(a.v); \
}
#define FORCEINLINE
Definition: gsimd_utility.h:175
#define UNARY_OP_OPT64 (   STYPE,
  NAME,
  OP 
)
Value:
static FORCEINLINE svec<LANES,STYPE> NAME(svec<LANES,STYPE> a) { \
return svec<LANES,STYPE>(OP(a.v[0]), OP(a.v[1])); \
}
#define FORCEINLINE
Definition: gsimd_utility.h:175

macros for 64bit object, i64/u64/double