Grid 0.7.0
Grid_simd2< Scalar_type, Vector_type > Class Template Reference

#include <Grid_doubled_vector.h>

Data Structures

union  conv_t_union

Public Types

typedef RealPart< Scalar_type >::type Real
typedef Vector_type vector_type
typedef Scalar_type scalar_type
typedef union Grid_simd2::conv_t_union conv_t

Public Member Functions

accelerator_inline Grid_simd2operator= (const Grid_simd2 &&rhs)
accelerator_inline Grid_simd2operator= (const Grid_simd2 &rhs)
accelerator Grid_simd2 ()=default
accelerator_inline Grid_simd2 (const Grid_simd2 &rhs)
accelerator_inline Grid_simd2 (const Grid_simd2 &&rhs)
accelerator_inline Grid_simd2 (const Real a)
template<typename S = Scalar_type>
accelerator_inline Grid_simd2 (const typename std::enable_if< is_complex< S >::value, S >::type a)
accelerator_inline Grid_simd2operator= (const Zero &z)
accelerator_inline Grid_simd2operator*= (const Grid_simd2 &r)
accelerator_inline Grid_simd2operator+= (const Grid_simd2 &r)
accelerator_inline Grid_simd2operator-= (const Grid_simd2 &r)
accelerator_inline Scalar_type getlane (int lane) const
accelerator_inline void putlane (const Scalar_type &S, int lane)

Static Public Member Functions

static accelerator_inline constexpr int Nsimd (void)

Data Fields

Vector_type v [nvec]

Static Public Attributes

static constexpr int nvec

Friends

accelerator_inline void mac (Grid_simd2 *__restrict__ y, const Grid_simd2 *__restrict__ a, const Grid_simd2 *__restrict__ x)
accelerator_inline void mult (Grid_simd2 *__restrict__ y, const Grid_simd2 *__restrict__ l, const Grid_simd2 *__restrict__ r)
accelerator_inline void sub (Grid_simd2 *__restrict__ y, const Grid_simd2 *__restrict__ l, const Grid_simd2 *__restrict__ r)
accelerator_inline void add (Grid_simd2 *__restrict__ y, const Grid_simd2 *__restrict__ l, const Grid_simd2 *__restrict__ r)
accelerator_inline void mac (Grid_simd2 *__restrict__ y, const Scalar_type *__restrict__ a, const Grid_simd2 *__restrict__ x)
accelerator_inline void mult (Grid_simd2 *__restrict__ y, const Scalar_type *__restrict__ l, const Grid_simd2 *__restrict__ r)
accelerator_inline void sub (Grid_simd2 *__restrict__ y, const Scalar_type *__restrict__ l, const Grid_simd2 *__restrict__ r)
accelerator_inline void add (Grid_simd2 *__restrict__ y, const Scalar_type *__restrict__ l, const Grid_simd2 *__restrict__ r)
accelerator_inline void mac (Grid_simd2 *__restrict__ y, const Grid_simd2 *__restrict__ a, const Scalar_type *__restrict__ x)
accelerator_inline void mult (Grid_simd2 *__restrict__ y, const Grid_simd2 *__restrict__ l, const Scalar_type *__restrict__ r)
accelerator_inline void sub (Grid_simd2 *__restrict__ y, const Grid_simd2 *__restrict__ l, const Scalar_type *__restrict__ r)
accelerator_inline void add (Grid_simd2 *__restrict__ y, const Grid_simd2 *__restrict__ l, const Scalar_type *__restrict__ r)
accelerator_inline void vset (Grid_simd2 &ret, Scalar_type *a)
accelerator_inline void vstore (const Grid_simd2 &ret, Scalar_type *a)
accelerator_inline void vprefetch (const Grid_simd2 &v)
accelerator_inline Scalar_type Reduce (const Grid_simd2 &in)
accelerator_inline Grid_simd2 operator* (const Scalar_type &a, Grid_simd2 b)
accelerator_inline Grid_simd2 operator* (Grid_simd2 b, const Scalar_type &a)
accelerator_inline Grid_simd2 operator/ (const Scalar_type &a, Grid_simd2 b)
accelerator_inline Grid_simd2 operator/ (Grid_simd2 b, const Scalar_type &a)
accelerator_inline Grid_simd2 operator- (const Grid_simd2 &r)
template<class functor>
accelerator_inline Grid_simd2 SimdApply (const functor &func, const Grid_simd2 &v)
template<class functor>
accelerator_inline Grid_simd2 SimdApplyBinop (const functor &func, const Grid_simd2 &x, const Grid_simd2 &y)
accelerator_inline void exchange0 (Grid_simd2 &out1, Grid_simd2 &out2, Grid_simd2 in1, Grid_simd2 in2)
accelerator_inline void exchange1 (Grid_simd2 &out1, Grid_simd2 &out2, Grid_simd2 in1, Grid_simd2 in2)
accelerator_inline void exchange2 (Grid_simd2 &out1, Grid_simd2 &out2, Grid_simd2 in1, Grid_simd2 in2)
accelerator_inline void exchange3 (Grid_simd2 &out1, Grid_simd2 &out2, Grid_simd2 in1, Grid_simd2 in2)
accelerator_inline void exchange4 (Grid_simd2 &out1, Grid_simd2 &out2, Grid_simd2 in1, Grid_simd2 in2)
accelerator_inline void exchange (Grid_simd2 &out1, Grid_simd2 &out2, Grid_simd2 in1, Grid_simd2 in2, int n)
accelerator_inline void permute0 (Grid_simd2 &y, Grid_simd2 b)
accelerator_inline void permute1 (Grid_simd2 &y, Grid_simd2 b)
accelerator_inline void permute2 (Grid_simd2 &y, Grid_simd2 b)
accelerator_inline void permute3 (Grid_simd2 &y, Grid_simd2 b)
accelerator_inline void permute4 (Grid_simd2 &y, Grid_simd2 b)
accelerator_inline void permute (Grid_simd2 &y, Grid_simd2 b, int perm)

Detailed Description

template<class Scalar_type, class Vector_type>
class Grid_simd2< Scalar_type, Vector_type >

Definition at line 33 of file Grid_doubled_vector.h.

Member Typedef Documentation

◆ Real

template<class Scalar_type, class Vector_type>
typedef RealPart<Scalar_type>::type Grid_simd2< Scalar_type, Vector_type >::Real

Definition at line 35 of file Grid_doubled_vector.h.

◆ vector_type

template<class Scalar_type, class Vector_type>
typedef Vector_type Grid_simd2< Scalar_type, Vector_type >::vector_type

Definition at line 36 of file Grid_doubled_vector.h.

◆ scalar_type

template<class Scalar_type, class Vector_type>
typedef Scalar_type Grid_simd2< Scalar_type, Vector_type >::scalar_type

Definition at line 37 of file Grid_doubled_vector.h.

◆ conv_t

template<class Scalar_type, class Vector_type>
typedef union Grid_simd2::conv_t_union Grid_simd2< Scalar_type, Vector_type >::conv_t

Constructor & Destructor Documentation

◆ Grid_simd2() [1/5]

template<class Scalar_type, class Vector_type>
accelerator Grid_simd2< Scalar_type, Vector_type >::Grid_simd2 ( )
default

◆ Grid_simd2() [2/5]

template<class Scalar_type, class Vector_type>
accelerator_inline Grid_simd2< Scalar_type, Vector_type >::Grid_simd2 ( const Grid_simd2< Scalar_type, Vector_type > & rhs)
inline

Definition at line 64 of file Grid_doubled_vector.h.

◆ Grid_simd2() [3/5]

template<class Scalar_type, class Vector_type>
accelerator_inline Grid_simd2< Scalar_type, Vector_type >::Grid_simd2 ( const Grid_simd2< Scalar_type, Vector_type > && rhs)
inline

Definition at line 65 of file Grid_doubled_vector.h.

◆ Grid_simd2() [4/5]

template<class Scalar_type, class Vector_type>
accelerator_inline Grid_simd2< Scalar_type, Vector_type >::Grid_simd2 ( const Real a)
inline

Definition at line 66 of file Grid_doubled_vector.h.

◆ Grid_simd2() [5/5]

template<class Scalar_type, class Vector_type>
template<typename S = Scalar_type>
accelerator_inline Grid_simd2< Scalar_type, Vector_type >::Grid_simd2 ( const typename std::enable_if< is_complex< S >::value, S >::type a)
inline

Definition at line 69 of file Grid_doubled_vector.h.

Member Function Documentation

◆ Nsimd()

template<class Scalar_type, class Vector_type>
accelerator_inline constexpr int Grid_simd2< Scalar_type, Vector_type >::Nsimd ( void )
inlinestaticconstexpr

Definition at line 48 of file Grid_doubled_vector.h.

◆ operator=() [1/3]

template<class Scalar_type, class Vector_type>
accelerator_inline Grid_simd2 & Grid_simd2< Scalar_type, Vector_type >::operator= ( const Grid_simd2< Scalar_type, Vector_type > && rhs)
inline

Definition at line 54 of file Grid_doubled_vector.h.

◆ operator=() [2/3]

template<class Scalar_type, class Vector_type>
accelerator_inline Grid_simd2 & Grid_simd2< Scalar_type, Vector_type >::operator= ( const Grid_simd2< Scalar_type, Vector_type > & rhs)
inline

Definition at line 58 of file Grid_doubled_vector.h.

◆ operator=() [3/3]

template<class Scalar_type, class Vector_type>
accelerator_inline Grid_simd2 & Grid_simd2< Scalar_type, Vector_type >::operator= ( const Zero & z)
inline

Definition at line 76 of file Grid_doubled_vector.h.

◆ operator*=()

template<class Scalar_type, class Vector_type>
accelerator_inline Grid_simd2 & Grid_simd2< Scalar_type, Vector_type >::operator*= ( const Grid_simd2< Scalar_type, Vector_type > & r)
inline

Definition at line 213 of file Grid_doubled_vector.h.

◆ operator+=()

template<class Scalar_type, class Vector_type>
accelerator_inline Grid_simd2 & Grid_simd2< Scalar_type, Vector_type >::operator+= ( const Grid_simd2< Scalar_type, Vector_type > & r)
inline

Definition at line 217 of file Grid_doubled_vector.h.

◆ operator-=()

template<class Scalar_type, class Vector_type>
accelerator_inline Grid_simd2 & Grid_simd2< Scalar_type, Vector_type >::operator-= ( const Grid_simd2< Scalar_type, Vector_type > & r)
inline

Definition at line 221 of file Grid_doubled_vector.h.

◆ getlane()

template<class Scalar_type, class Vector_type>
accelerator_inline Scalar_type Grid_simd2< Scalar_type, Vector_type >::getlane ( int lane) const
inline

Definition at line 323 of file Grid_doubled_vector.h.

Referenced by getlane().

◆ putlane()

template<class Scalar_type, class Vector_type>
accelerator_inline void Grid_simd2< Scalar_type, Vector_type >::putlane ( const Scalar_type & S,
int lane )
inline

Definition at line 328 of file Grid_doubled_vector.h.

◆ mac [1/3]

template<class Scalar_type, class Vector_type>
accelerator_inline void mac ( Grid_simd2< Scalar_type, Vector_type > *__restrict__ y,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ a,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ x )
friend

Definition at line 85 of file Grid_doubled_vector.h.

◆ mult [1/3]

template<class Scalar_type, class Vector_type>
accelerator_inline void mult ( Grid_simd2< Scalar_type, Vector_type > *__restrict__ y,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ l,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ r )
friend

Definition at line 91 of file Grid_doubled_vector.h.

◆ sub [1/3]

template<class Scalar_type, class Vector_type>
accelerator_inline void sub ( Grid_simd2< Scalar_type, Vector_type > *__restrict__ y,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ l,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ r )
friend

Definition at line 97 of file Grid_doubled_vector.h.

◆ add [1/3]

template<class Scalar_type, class Vector_type>
accelerator_inline void add ( Grid_simd2< Scalar_type, Vector_type > *__restrict__ y,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ l,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ r )
friend

Definition at line 102 of file Grid_doubled_vector.h.

◆ mac [2/3]

template<class Scalar_type, class Vector_type>
accelerator_inline void mac ( Grid_simd2< Scalar_type, Vector_type > *__restrict__ y,
const Scalar_type *__restrict__ a,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ x )
friend

Definition at line 107 of file Grid_doubled_vector.h.

◆ mult [2/3]

template<class Scalar_type, class Vector_type>
accelerator_inline void mult ( Grid_simd2< Scalar_type, Vector_type > *__restrict__ y,
const Scalar_type *__restrict__ l,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ r )
friend

Definition at line 112 of file Grid_doubled_vector.h.

◆ sub [2/3]

template<class Scalar_type, class Vector_type>
accelerator_inline void sub ( Grid_simd2< Scalar_type, Vector_type > *__restrict__ y,
const Scalar_type *__restrict__ l,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ r )
friend

Definition at line 117 of file Grid_doubled_vector.h.

◆ add [2/3]

template<class Scalar_type, class Vector_type>
accelerator_inline void add ( Grid_simd2< Scalar_type, Vector_type > *__restrict__ y,
const Scalar_type *__restrict__ l,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ r )
friend

Definition at line 122 of file Grid_doubled_vector.h.

◆ mac [3/3]

template<class Scalar_type, class Vector_type>
accelerator_inline void mac ( Grid_simd2< Scalar_type, Vector_type > *__restrict__ y,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ a,
const Scalar_type *__restrict__ x )
friend

Definition at line 128 of file Grid_doubled_vector.h.

◆ mult [3/3]

template<class Scalar_type, class Vector_type>
accelerator_inline void mult ( Grid_simd2< Scalar_type, Vector_type > *__restrict__ y,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ l,
const Scalar_type *__restrict__ r )
friend

Definition at line 133 of file Grid_doubled_vector.h.

◆ sub [3/3]

template<class Scalar_type, class Vector_type>
accelerator_inline void sub ( Grid_simd2< Scalar_type, Vector_type > *__restrict__ y,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ l,
const Scalar_type *__restrict__ r )
friend

Definition at line 138 of file Grid_doubled_vector.h.

◆ add [3/3]

template<class Scalar_type, class Vector_type>
accelerator_inline void add ( Grid_simd2< Scalar_type, Vector_type > *__restrict__ y,
const Grid_simd2< Scalar_type, Vector_type > *__restrict__ l,
const Scalar_type *__restrict__ r )
friend

Definition at line 143 of file Grid_doubled_vector.h.

◆ vset

template<class Scalar_type, class Vector_type>
accelerator_inline void vset ( Grid_simd2< Scalar_type, Vector_type > & ret,
Scalar_type * a )
friend

◆ vstore

template<class Scalar_type, class Vector_type>
accelerator_inline void vstore ( const Grid_simd2< Scalar_type, Vector_type > & ret,
Scalar_type * a )
friend

◆ vprefetch

template<class Scalar_type, class Vector_type>
accelerator_inline void vprefetch ( const Grid_simd2< Scalar_type, Vector_type > & v)
friend

◆ Reduce

template<class Scalar_type, class Vector_type>
accelerator_inline Scalar_type Reduce ( const Grid_simd2< Scalar_type, Vector_type > & in)
friend

◆ operator* [1/2]

template<class Scalar_type, class Vector_type>
accelerator_inline Grid_simd2 operator* ( const Scalar_type & a,
Grid_simd2< Scalar_type, Vector_type > b )
friend

Definition at line 180 of file Grid_doubled_vector.h.

◆ operator* [2/2]

template<class Scalar_type, class Vector_type>
accelerator_inline Grid_simd2 operator* ( Grid_simd2< Scalar_type, Vector_type > b,
const Scalar_type & a )
friend

Definition at line 185 of file Grid_doubled_vector.h.

◆ operator/ [1/2]

template<class Scalar_type, class Vector_type>
accelerator_inline Grid_simd2 operator/ ( const Scalar_type & a,
Grid_simd2< Scalar_type, Vector_type > b )
friend

Definition at line 192 of file Grid_doubled_vector.h.

◆ operator/ [2/2]

template<class Scalar_type, class Vector_type>
accelerator_inline Grid_simd2 operator/ ( Grid_simd2< Scalar_type, Vector_type > b,
const Scalar_type & a )
friend

Definition at line 197 of file Grid_doubled_vector.h.

◆ operator-

template<class Scalar_type, class Vector_type>
accelerator_inline Grid_simd2 operator- ( const Grid_simd2< Scalar_type, Vector_type > & r)
friend

Definition at line 206 of file Grid_doubled_vector.h.

◆ SimdApply

template<class Scalar_type, class Vector_type>
template<class functor>
accelerator_inline Grid_simd2 SimdApply ( const functor & func,
const Grid_simd2< Scalar_type, Vector_type > & v )
friend

◆ SimdApplyBinop

template<class Scalar_type, class Vector_type>
template<class functor>
accelerator_inline Grid_simd2 SimdApplyBinop ( const functor & func,
const Grid_simd2< Scalar_type, Vector_type > & x,
const Grid_simd2< Scalar_type, Vector_type > & y )
friend

◆ exchange0

template<class Scalar_type, class Vector_type>
accelerator_inline void exchange0 ( Grid_simd2< Scalar_type, Vector_type > & out1,
Grid_simd2< Scalar_type, Vector_type > & out2,
Grid_simd2< Scalar_type, Vector_type > in1,
Grid_simd2< Scalar_type, Vector_type > in2 )
friend

◆ exchange1

template<class Scalar_type, class Vector_type>
accelerator_inline void exchange1 ( Grid_simd2< Scalar_type, Vector_type > & out1,
Grid_simd2< Scalar_type, Vector_type > & out2,
Grid_simd2< Scalar_type, Vector_type > in1,
Grid_simd2< Scalar_type, Vector_type > in2 )
friend

◆ exchange2

template<class Scalar_type, class Vector_type>
accelerator_inline void exchange2 ( Grid_simd2< Scalar_type, Vector_type > & out1,
Grid_simd2< Scalar_type, Vector_type > & out2,
Grid_simd2< Scalar_type, Vector_type > in1,
Grid_simd2< Scalar_type, Vector_type > in2 )
friend

◆ exchange3

template<class Scalar_type, class Vector_type>
accelerator_inline void exchange3 ( Grid_simd2< Scalar_type, Vector_type > & out1,
Grid_simd2< Scalar_type, Vector_type > & out2,
Grid_simd2< Scalar_type, Vector_type > in1,
Grid_simd2< Scalar_type, Vector_type > in2 )
friend

◆ exchange4

template<class Scalar_type, class Vector_type>
accelerator_inline void exchange4 ( Grid_simd2< Scalar_type, Vector_type > & out1,
Grid_simd2< Scalar_type, Vector_type > & out2,
Grid_simd2< Scalar_type, Vector_type > in1,
Grid_simd2< Scalar_type, Vector_type > in2 )
friend

Definition at line 272 of file Grid_doubled_vector.h.

◆ exchange

template<class Scalar_type, class Vector_type>
accelerator_inline void exchange ( Grid_simd2< Scalar_type, Vector_type > & out1,
Grid_simd2< Scalar_type, Vector_type > & out2,
Grid_simd2< Scalar_type, Vector_type > in1,
Grid_simd2< Scalar_type, Vector_type > in2,
int n )
friend

Definition at line 276 of file Grid_doubled_vector.h.

◆ permute0

template<class Scalar_type, class Vector_type>
accelerator_inline void permute0 ( Grid_simd2< Scalar_type, Vector_type > & y,
Grid_simd2< Scalar_type, Vector_type > b )
friend

◆ permute1

template<class Scalar_type, class Vector_type>
accelerator_inline void permute1 ( Grid_simd2< Scalar_type, Vector_type > & y,
Grid_simd2< Scalar_type, Vector_type > b )
friend

◆ permute2

template<class Scalar_type, class Vector_type>
accelerator_inline void permute2 ( Grid_simd2< Scalar_type, Vector_type > & y,
Grid_simd2< Scalar_type, Vector_type > b )
friend

◆ permute3

template<class Scalar_type, class Vector_type>
accelerator_inline void permute3 ( Grid_simd2< Scalar_type, Vector_type > & y,
Grid_simd2< Scalar_type, Vector_type > b )
friend

◆ permute4

template<class Scalar_type, class Vector_type>
accelerator_inline void permute4 ( Grid_simd2< Scalar_type, Vector_type > & y,
Grid_simd2< Scalar_type, Vector_type > b )
friend

Definition at line 309 of file Grid_doubled_vector.h.

◆ permute

template<class Scalar_type, class Vector_type>
accelerator_inline void permute ( Grid_simd2< Scalar_type, Vector_type > & y,
Grid_simd2< Scalar_type, Vector_type > b,
int perm )
friend

Definition at line 313 of file Grid_doubled_vector.h.

Field Documentation

◆ nvec

template<class Scalar_type, class Vector_type>
int Grid_simd2< Scalar_type, Vector_type >::nvec
staticconstexpr

Definition at line 45 of file Grid_doubled_vector.h.

◆ v


The documentation for this class was generated from the following file: