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

SIMD LANES=4 interfaces implemented by scalar The source file is organized as follows I. all types definition, with class function incorporated II. data operation interfaces. More...

#include "gsimd_utility.h"

Go to the source code of this file.

Classes

struct  generic::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  generic::svec< 4, bool >::Helper
 A special helper class to support customized subscript[] operations. More...
 
struct  generic::svec< 4, int8_t >
 data representation and operations on a vector of 4 signed chars. More...
 
struct  generic::svec< 4, uint8_t >
 data representation and operations on a vector of 4 unsigned chars. More...
 
struct  generic::svec< 4, int16_t >
 data representation and operations on a vector of 4 signed short. More...
 
struct  generic::svec< 4, uint16_t >
 data representation and operations on a vector of 4 unsigned short. More...
 
struct  generic::svec< 4, int32_t >
 data representation and operations on a vector of 4 signed int. More...
 
struct  generic::svec< 4, uint32_t >
 data representation and operations on a vector of 4 unsigned int. More...
 
struct  generic::svec< 4, int64_t >
 data representation and operations on a vector of 4 signed 64-bit int. More...
 
struct  generic::svec< 4, uint64_t >
 data representation and operations on a vector of 4 unsigned 64-bit int. More...
 
struct  generic::svec< 4, float >
 data representation and operations on a vector of 4 float. More...
 
struct  generic::svec< 4, double >
 data representation and operations on a vector of 4 double. More...
 
struct  generic::svec< 4, void * >
 data representation and operations on a vector of 4 pointers. This is only used in gather and scatter. More...
 

Namespaces

 generic
 : Generic SIMD Library header configuration file for generic implementation The common defintions for all generic implementations
 

Macros

#define LANES   4
 
#define BINARY_OP_METHODS(STYPE)
 
#define INT_BINARY_OP_METHODS(STYPE)
 
#define MAX_MIN_REDUCE_METHODS(STYPE)
 

Functions

svec< 4, bool > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::svec_load_const< svec< 4, int8_t > > (const int8_t *p)
 
template<>
svec< 4, int8_t > generic::svec_load_and_splat< svec< 4, int8_t > > (int8_t *p)
 
template<>
svec< 4, uint8_t > generic::svec_load_const< svec< 4, uint8_t > > (const uint8_t *p)
 
template<>
svec< 4, uint8_t > generic::svec_load_and_splat< svec< 4, uint8_t > > (uint8_t *p)
 
template<>
svec< 4, int16_t > generic::svec_load_const< svec< 4, int16_t > > (const int16_t *p)
 
template<>
svec< 4, int16_t > generic::svec_load_and_splat< svec< 4, int16_t > > (int16_t *p)
 
template<>
svec< 4, uint16_t > generic::svec_load_const< svec< 4, uint16_t > > (const uint16_t *p)
 
template<>
svec< 4, uint16_t > generic::svec_load_and_splat< svec< 4, uint16_t > > (uint16_t *p)
 
template<>
svec< 4, int32_t > generic::svec_load_const< svec< 4, int32_t > > (const int32_t *p)
 
template<>
svec< 4, int32_t > generic::svec_load_and_splat< svec< 4, int32_t > > (int32_t *p)
 
template<>
svec< 4, uint32_t > generic::svec_load_const< svec< 4, uint32_t > > (const uint32_t *p)
 
template<>
svec< 4, uint32_t > generic::svec_load_and_splat< svec< 4, uint32_t > > (uint32_t *p)
 
template<>
svec< 4, int64_t > generic::svec_load_const< svec< 4, int64_t > > (const int64_t *p)
 
template<>
svec< 4, int64_t > generic::svec_load_and_splat< svec< 4, int64_t > > (int64_t *p)
 
template<>
svec< 4, uint64_t > generic::svec_load_const< svec< 4, uint64_t > > (const uint64_t *p)
 
template<>
svec< 4, uint64_t > generic::svec_load_and_splat< svec< 4, uint64_t > > (uint64_t *p)
 
template<>
svec< 4, float > generic::svec_load_const< svec< 4, float > > (const float *p)
 
template<>
svec< 4, float > generic::svec_load_and_splat< svec< 4, float > > (float *p)
 
template<>
svec< 4, double > generic::svec_load_const< svec< 4, double > > (const double *p)
 
template<>
svec< 4, double > generic::svec_load_and_splat< svec< 4, double > > (double *p)
 
svec< 4, int32_t > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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, float > generic::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, float > generic::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 > generic::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, double > generic::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, double > generic::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 > generic::svec_preduce_add (svec< 4, float > v0, svec< 4, float > v1, svec< 4, float > v2, svec< 4, float > v3)
 
svec< 4,double > generic::svec_preduce_add (svec< 4, double > v0, svec< 4, double > v1, svec< 4, double > v2, svec< 4, double > v3)
 
svec< 4,bool > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::svec_cast< svec< 4, int8_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint8_t > generic::svec_cast< svec< 4, uint8_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int16_t > generic::svec_cast< svec< 4, int16_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint16_t > generic::svec_cast< svec< 4, uint16_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int32_t > generic::svec_cast< svec< 4, int32_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint32_t > generic::svec_cast< svec< 4, uint32_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int64_t > generic::svec_cast< svec< 4, int64_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint64_t > generic::svec_cast< svec< 4, uint64_t > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > generic::svec_cast< svec< 4, float > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > generic::svec_cast< svec< 4, double > > (svec< 4, bool > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > generic::svec_cast< svec< 4, bool > > (svec< 4, int8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint8_t > generic::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 > generic::svec_cast< svec< 4, int16_t > > (svec< 4, int8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint16_t > generic::svec_cast< svec< 4, uint16_t > > (svec< 4, int8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int32_t > generic::svec_cast< svec< 4, int32_t > > (svec< 4, int8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint32_t > generic::svec_cast< svec< 4, uint32_t > > (svec< 4, int8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int64_t > generic::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 > generic::svec_cast< svec< 4, uint64_t > > (svec< 4, int8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > generic::svec_cast< svec< 4, float > > (svec< 4, int8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > generic::svec_cast< svec< 4, double > > (svec< 4, int8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > generic::svec_cast< svec< 4, bool > > (svec< 4, uint8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > generic::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 > generic::svec_cast< svec< 4, int16_t > > (svec< 4, uint8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint16_t > generic::svec_cast< svec< 4, uint16_t > > (svec< 4, uint8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int32_t > generic::svec_cast< svec< 4, int32_t > > (svec< 4, uint8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint32_t > generic::svec_cast< svec< 4, uint32_t > > (svec< 4, uint8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int64_t > generic::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 > generic::svec_cast< svec< 4, uint64_t > > (svec< 4, uint8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > generic::svec_cast< svec< 4, float > > (svec< 4, uint8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > generic::svec_cast< svec< 4, double > > (svec< 4, uint8_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > generic::svec_cast< svec< 4, bool > > (svec< 4, int16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > generic::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 > generic::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 > generic::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 > generic::svec_cast< svec< 4, int32_t > > (svec< 4, int16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint32_t > generic::svec_cast< svec< 4, uint32_t > > (svec< 4, int16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int64_t > generic::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 > generic::svec_cast< svec< 4, uint64_t > > (svec< 4, int16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > generic::svec_cast< svec< 4, float > > (svec< 4, int16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > generic::svec_cast< svec< 4, double > > (svec< 4, int16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > generic::svec_cast< svec< 4, bool > > (svec< 4, uint16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > generic::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 > generic::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 > generic::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 > generic::svec_cast< svec< 4, int32_t > > (svec< 4, uint16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint32_t > generic::svec_cast< svec< 4, uint32_t > > (svec< 4, uint16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int64_t > generic::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 > generic::svec_cast< svec< 4, uint64_t > > (svec< 4, uint16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > generic::svec_cast< svec< 4, float > > (svec< 4, uint16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > generic::svec_cast< svec< 4, double > > (svec< 4, uint16_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > generic::svec_cast< svec< 4, bool > > (svec< 4, int32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::svec_cast< svec< 4, int64_t > > (svec< 4, int32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint64_t > generic::svec_cast< svec< 4, uint64_t > > (svec< 4, int32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > generic::svec_cast< svec< 4, float > > (svec< 4, int32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > generic::svec_cast< svec< 4, double > > (svec< 4, int32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > generic::svec_cast< svec< 4, bool > > (svec< 4, uint32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > generic::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 > generic::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 > generic::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 > generic::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 > generic::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 > generic::svec_cast< svec< 4, int64_t > > (svec< 4, uint32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint64_t > generic::svec_cast< svec< 4, uint64_t > > (svec< 4, uint32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > generic::svec_cast< svec< 4, float > > (svec< 4, uint32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > generic::svec_cast< svec< 4, double > > (svec< 4, uint32_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > generic::svec_cast< svec< 4, bool > > (svec< 4, int64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > generic::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 > generic::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 > generic::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 > generic::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 > generic::svec_cast< svec< 4, int32_t > > (svec< 4, int64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint32_t > generic::svec_cast< svec< 4, uint32_t > > (svec< 4, int64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint64_t > generic::svec_cast< svec< 4, uint64_t > > (svec< 4, int64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > generic::svec_cast< svec< 4, float > > (svec< 4, int64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > generic::svec_cast< svec< 4, double > > (svec< 4, int64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > generic::svec_cast< svec< 4, bool > > (svec< 4, uint64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > generic::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 > generic::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 > generic::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 > generic::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 > generic::svec_cast< svec< 4, int32_t > > (svec< 4, uint64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint32_t > generic::svec_cast< svec< 4, uint32_t > > (svec< 4, uint64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int64_t > generic::svec_cast< svec< 4, int64_t > > (svec< 4, uint64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > generic::svec_cast< svec< 4, float > > (svec< 4, uint64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > generic::svec_cast< svec< 4, double > > (svec< 4, uint64_t > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > generic::svec_cast< svec< 4, bool > > (svec< 4, float > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > generic::svec_cast< svec< 4, int8_t > > (svec< 4, float > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint8_t > generic::svec_cast< svec< 4, uint8_t > > (svec< 4, float > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int16_t > generic::svec_cast< svec< 4, int16_t > > (svec< 4, float > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint16_t > generic::svec_cast< svec< 4, uint16_t > > (svec< 4, float > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int32_t > generic::svec_cast< svec< 4, int32_t > > (svec< 4, float > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint32_t > generic::svec_cast< svec< 4, uint32_t > > (svec< 4, float > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int64_t > generic::svec_cast< svec< 4, int64_t > > (svec< 4, float > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint64_t > generic::svec_cast< svec< 4, uint64_t > > (svec< 4, float > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, double > generic::svec_cast< svec< 4, double > > (svec< 4, float > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, bool > generic::svec_cast< svec< 4, bool > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int8_t > generic::svec_cast< svec< 4, int8_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint8_t > generic::svec_cast< svec< 4, uint8_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int16_t > generic::svec_cast< svec< 4, int16_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint16_t > generic::svec_cast< svec< 4, uint16_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int32_t > generic::svec_cast< svec< 4, int32_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint32_t > generic::svec_cast< svec< 4, uint32_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, int64_t > generic::svec_cast< svec< 4, int64_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, uint64_t > generic::svec_cast< svec< 4, uint64_t > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > generic::svec_cast< svec< 4, float > > (svec< 4, double > val)
 cast val from FROM type to TO type. More...
 
template<>
svec< 4, float > generic::svec_cast_bits< svec< 4, float > > (svec< 4, int32_t > val)
 
template<>
svec< 4, float > generic::svec_cast_bits< svec< 4, float > > (svec< 4, uint32_t > val)
 
template<>
svec< 4, int32_t > generic::svec_cast_bits< svec< 4, int32_t > > (svec< 4, float > val)
 
template<>
svec< 4, uint32_t > generic::svec_cast_bits< svec< 4, uint32_t > > (svec< 4, float > val)
 
template<>
svec< 4, double > generic::svec_cast_bits< svec< 4, double > > (svec< 4, int64_t > val)
 
template<>
svec< 4, double > generic::svec_cast_bits< svec< 4, double > > (svec< 4, uint64_t > val)
 
template<>
svec< 4, int64_t > generic::svec_cast_bits< svec< 4, int64_t > > (svec< 4, double > val)
 
template<>
svec< 4, uint64_t > generic::svec_cast_bits< svec< 4, uint64_t > > (svec< 4, double > val)
 
svec< 4, int8_t > generic::operator+ (int8_t s, svec< 4, int8_t > a)
 Add a scalar and a vector. More...
 
svec< 4, int8_t > generic::operator- (int8_t s, svec< 4, int8_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, int8_t > generic::operator* (int8_t s, svec< 4, int8_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, int8_t > generic::operator/ (int8_t s, svec< 4, int8_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, uint8_t > generic::operator+ (uint8_t s, svec< 4, uint8_t > a)
 Add a scalar and a vector. More...
 
svec< 4, uint8_t > generic::operator- (uint8_t s, svec< 4, uint8_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, uint8_t > generic::operator* (uint8_t s, svec< 4, uint8_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, uint8_t > generic::operator/ (uint8_t s, svec< 4, uint8_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, int16_t > generic::operator+ (int16_t s, svec< 4, int16_t > a)
 Add a scalar and a vector. More...
 
svec< 4, int16_t > generic::operator- (int16_t s, svec< 4, int16_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, int16_t > generic::operator* (int16_t s, svec< 4, int16_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, int16_t > generic::operator/ (int16_t s, svec< 4, int16_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, uint16_t > generic::operator+ (uint16_t s, svec< 4, uint16_t > a)
 Add a scalar and a vector. More...
 
svec< 4, uint16_t > generic::operator- (uint16_t s, svec< 4, uint16_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, uint16_t > generic::operator* (uint16_t s, svec< 4, uint16_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, uint16_t > generic::operator/ (uint16_t s, svec< 4, uint16_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, int32_t > generic::operator+ (int32_t s, svec< 4, int32_t > a)
 Add a scalar and a vector. More...
 
svec< 4, int32_t > generic::operator- (int32_t s, svec< 4, int32_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, int32_t > generic::operator* (int32_t s, svec< 4, int32_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, int32_t > generic::operator/ (int32_t s, svec< 4, int32_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, uint32_t > generic::operator+ (uint32_t s, svec< 4, uint32_t > a)
 Add a scalar and a vector. More...
 
svec< 4, uint32_t > generic::operator- (uint32_t s, svec< 4, uint32_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, uint32_t > generic::operator* (uint32_t s, svec< 4, uint32_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, uint32_t > generic::operator/ (uint32_t s, svec< 4, uint32_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, int64_t > generic::operator+ (int64_t s, svec< 4, int64_t > a)
 Add a scalar and a vector. More...
 
svec< 4, int64_t > generic::operator- (int64_t s, svec< 4, int64_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, int64_t > generic::operator* (int64_t s, svec< 4, int64_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, int64_t > generic::operator/ (int64_t s, svec< 4, int64_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, uint64_t > generic::operator+ (uint64_t s, svec< 4, uint64_t > a)
 Add a scalar and a vector. More...
 
svec< 4, uint64_t > generic::operator- (uint64_t s, svec< 4, uint64_t > a)
 Sub a scalar and a vector. More...
 
svec< 4, uint64_t > generic::operator* (uint64_t s, svec< 4, uint64_t > a)
 Multiply a scalar and a vector. More...
 
svec< 4, uint64_t > generic::operator/ (uint64_t s, svec< 4, uint64_t > a)
 Divide a scalar by a vector. More...
 
svec< 4, float > generic::operator+ (float s, svec< 4, float > a)
 Add a scalar and a vector. More...
 
svec< 4, float > generic::operator- (float s, svec< 4, float > a)
 Sub a scalar and a vector. More...
 
svec< 4, float > generic::operator* (float s, svec< 4, float > a)
 Multiply a scalar and a vector. More...
 
svec< 4, float > generic::operator/ (float s, svec< 4, float > a)
 Divide a scalar by a vector. More...
 
svec< 4, double > generic::operator+ (double s, svec< 4, double > a)
 Add a scalar and a vector. More...
 
svec< 4, double > generic::operator- (double s, svec< 4, double > a)
 Sub a scalar and a vector. More...
 
svec< 4, double > generic::operator* (double s, svec< 4, double > a)
 Multiply a scalar and a vector. More...
 
svec< 4, double > generic::operator/ (double s, svec< 4, double > a)
 Divide a scalar by a vector. More...
 

Detailed Description

SIMD LANES=4 interfaces implemented by scalar The source file is organized as follows I. all types definition, with class function incorporated II. data operation interfaces.

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
July 14, 2013
Author
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)
  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 BINARY_OP_METHODS (   STYPE)
Value:
BINARY_OP(STYPE, svec_add, +); \
BINARY_OP(STYPE, svec_sub, -); \
BINARY_OP(STYPE, svec_mul, *); \
BINARY_OP(STYPE, svec_div, /); \
BINARY_OP_SCALAR(STYPE, svec_add_scalar, +); \
BINARY_SCALAR_OP(STYPE, svec_scalar_add, +); \
BINARY_OP_SCALAR(STYPE, svec_sub_scalar, -); \
BINARY_SCALAR_OP(STYPE, svec_scalar_sub, -); \
BINARY_OP_SCALAR(STYPE, svec_mul_scalar, *); \
BINARY_SCALAR_OP(STYPE, svec_scalar_mul, *); \
BINARY_OP_SCALAR(STYPE, svec_div_scalar, /); \
BINARY_SCALAR_OP(STYPE, svec_scalar_div, /); \
#define BINARY_SCALAR_OP(STYPE, NAME, OP)
macros for binary: scalar op vector
Definition: gsimd_utility.h:950
#define BINARY_OP_SCALAR(STYPE, NAME, OP)
macros for binary: vector op scalar
Definition: gsimd_utility.h:930
#define BINARY_OP(STYPE, NAME, OP)
macros for generic slow impl of binary operation
Definition: gsimd_utility.h:853
#define INT_BINARY_OP_METHODS (   STYPE)
Value:
BINARY_OP(STYPE, svec_or, |); \
BINARY_OP(STYPE, svec_and, &); \
BINARY_OP(STYPE, svec_xor, ^); \
BINARY_SHT_SCALAR(STYPE, int32_t, svec_shl, <<); \
BINARY_SHT_SCALAR(STYPE, int32_t, svec_shr, >>); \
BINARY_OP(STYPE, svec_rem, %); \
BINARY_OP_SCALAR(STYPE, svec_rem, %);
#define BINARY_SHT_SCALAR(STYPE, SHTTYPE, NAME, OP)
macros for binary shift: vector op intvalue
Definition: gsimd_utility.h:940
#define BINARY_OP_SCALAR(STYPE, NAME, OP)
macros for binary: vector op scalar
Definition: gsimd_utility.h:930
#define BINARY_OP(STYPE, NAME, OP)
macros for generic slow impl of binary operation
Definition: gsimd_utility.h:853
#define LANES   4
#define MAX_MIN_REDUCE_METHODS (   STYPE)
Value:
BINARY_OP_FUNC(STYPE, svec_max, max<STYPE>); \
BINARY_OP_FUNC(STYPE, svec_min, min<STYPE>); \
BINARY_OP_REDUCE_FUNC(STYPE, svec_reduce_add, add<STYPE>); \
BINARY_OP_REDUCE_FUNC(STYPE, svec_reduce_max, max<STYPE>); \
BINARY_OP_REDUCE_FUNC(STYPE, svec_reduce_min, min<STYPE>); \
#define BINARY_OP_FUNC(STYPE, NAME, FUNC)
Definition: gsimd_utility.h:869
#define BINARY_OP_REDUCE_FUNC(STYPE, NAME, FUNC)
Definition: gsimd_utility.h:1031