Grid 0.7.0
Grid_simd< Scalar_type, Vector_type > Class Template Reference

#include <Grid_vector_types.h>

Public Types

typedef RealPart< Scalar_type >::type Real
typedef Vector_type vector_type
typedef Scalar_type scalar_type

Public Member Functions

accelerator_inline Grid_simdoperator= (const Grid_simd &&rhs)
accelerator_inline Grid_simdoperator= (const Grid_simd &rhs)
accelerator Grid_simd ()=default
accelerator_inline Grid_simd (const Grid_simd &rhs)
accelerator_inline Grid_simd (const Grid_simd &&rhs)
accelerator_inline Grid_simd (const Real a)
template<typename S = Scalar_type>
accelerator_inline Grid_simd (const typename std::enable_if< is_complex< S >::value, S >::type a)
accelerator_inline Grid_simdoperator= (const Zero &z)
accelerator_inline Grid_simdoperator*= (const Grid_simd &r)
accelerator_inline Grid_simdoperator+= (const Grid_simd &r)
accelerator_inline Grid_simdoperator-= (const Grid_simd &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

Friends

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

Detailed Description

template<class Scalar_type, class Vector_type>
class Grid_simd< Scalar_type, Vector_type >

Definition at line 248 of file Grid_vector_types.h.

Member Typedef Documentation

◆ Real

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

Definition at line 250 of file Grid_vector_types.h.

◆ vector_type

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

Definition at line 251 of file Grid_vector_types.h.

◆ scalar_type

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

Definition at line 252 of file Grid_vector_types.h.

Constructor & Destructor Documentation

◆ Grid_simd() [1/5]

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

◆ Grid_simd() [2/5]

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

Definition at line 355 of file Grid_vector_types.h.

◆ Grid_simd() [3/5]

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

Definition at line 356 of file Grid_vector_types.h.

◆ Grid_simd() [4/5]

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

Definition at line 358 of file Grid_vector_types.h.

◆ Grid_simd() [5/5]

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

Definition at line 361 of file Grid_vector_types.h.

Member Function Documentation

◆ Nsimd()

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

◆ operator=() [1/3]

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

Definition at line 332 of file Grid_vector_types.h.

Referenced by Grid_simd< float, SIMD_Ftype >::Grid_simd().

◆ operator=() [2/3]

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

Definition at line 336 of file Grid_vector_types.h.

◆ operator=() [3/3]

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

Definition at line 368 of file Grid_vector_types.h.

◆ operator*=()

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

Definition at line 517 of file Grid_vector_types.h.

◆ operator+=()

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

Definition at line 522 of file Grid_vector_types.h.

◆ operator-=()

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

Definition at line 526 of file Grid_vector_types.h.

◆ getlane()

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

Definition at line 644 of file Grid_vector_types.h.

Referenced by getlane(), and Grid_simd< float, SIMD_Ftype >::SimdApplyBinop.

◆ putlane()

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

◆ mac [1/3]

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

Definition at line 388 of file Grid_vector_types.h.

◆ mult [1/3]

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

Definition at line 395 of file Grid_vector_types.h.

◆ sub [1/3]

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

Definition at line 401 of file Grid_vector_types.h.

◆ add [1/3]

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

Definition at line 406 of file Grid_vector_types.h.

◆ mac [2/3]

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

Definition at line 411 of file Grid_vector_types.h.

◆ mult [2/3]

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

Definition at line 416 of file Grid_vector_types.h.

◆ sub [2/3]

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

Definition at line 421 of file Grid_vector_types.h.

◆ add [2/3]

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

Definition at line 426 of file Grid_vector_types.h.

◆ mac [3/3]

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

Definition at line 432 of file Grid_vector_types.h.

◆ mult [3/3]

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

Definition at line 437 of file Grid_vector_types.h.

◆ sub [3/3]

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

Definition at line 442 of file Grid_vector_types.h.

◆ add [3/3]

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

Definition at line 447 of file Grid_vector_types.h.

◆ vset

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

Definition at line 456 of file Grid_vector_types.h.

◆ vstore

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

Definition at line 463 of file Grid_vector_types.h.

◆ vprefetch

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

Definition at line 470 of file Grid_vector_types.h.

◆ Reduce

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

Definition at line 477 of file Grid_vector_types.h.

◆ operator* [1/2]

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

Definition at line 484 of file Grid_vector_types.h.

◆ operator* [2/2]

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

Definition at line 489 of file Grid_vector_types.h.

◆ operator/ [1/2]

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

Definition at line 496 of file Grid_vector_types.h.

◆ operator/ [2/2]

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

Definition at line 501 of file Grid_vector_types.h.

◆ operator-

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

Definition at line 510 of file Grid_vector_types.h.

◆ SimdApply

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

Definition at line 539 of file Grid_vector_types.h.

◆ SimdApplyBinop

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

Definition at line 551 of file Grid_vector_types.h.

◆ exchange

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

Definition at line 569 of file Grid_vector_types.h.

◆ exchange0

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

Definition at line 581 of file Grid_vector_types.h.

◆ exchange1

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

Definition at line 584 of file Grid_vector_types.h.

◆ exchange2

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

Definition at line 587 of file Grid_vector_types.h.

◆ exchange3

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

Definition at line 590 of file Grid_vector_types.h.

◆ permute0

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

Definition at line 598 of file Grid_vector_types.h.

Referenced by Grid_simd< float, SIMD_Ftype >::permute.

◆ permute1

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

Definition at line 601 of file Grid_vector_types.h.

Referenced by Grid_simd< float, SIMD_Ftype >::permute.

◆ permute2

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

Definition at line 604 of file Grid_vector_types.h.

Referenced by Grid_simd< float, SIMD_Ftype >::permute.

◆ permute3

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

Definition at line 607 of file Grid_vector_types.h.

Referenced by Grid_simd< float, SIMD_Ftype >::permute.

◆ permute

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

Definition at line 610 of file Grid_vector_types.h.

Field Documentation

◆ v


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