30#ifndef GRID_LATTICE_PEEK_H
31#define GRID_LATTICE_PEEK_H
44template<
int Index,
class vobj>
52 ret_v[ss] = peekIndex<Index>(lhs_v[ss],i);
56template<
int Index,
class vobj>
64 ret_v[ss] = peekIndex<Index>(lhs_v[ss],i,j);
72template<
int Index,
class vobj>
78 pokeIndex<Index>(lhs_v[ss],rhs_v[ss],i);
81template<
int Index,
class vobj>
87 pokeIndex<Index>(lhs_v[ss],rhs_v[ss],i,j);
94template<
class vobj,
class sobj>
99 int Nsimd = grid->
Nsimd();
102 assert(
sizeof(sobj)*Nsimd ==
sizeof(vobj));
127 typename vobj::scalar_object s;
131template<
class vobj,
class sobj>
136 int Nsimd = grid->
Nsimd();
158template<
class vobj,
class sobj>
164 typedef typename vobj::vector_type vector_type;
166 int Nsimd = grid->
Nsimd();
169 assert(
sizeof(sobj)*Nsimd ==
sizeof(vobj));
171 static const int words=
sizeof(vobj)/
sizeof(vector_type);
176 const vector_type *vp = (
const vector_type *) &l[odx];
179 for(
int w=0;w<words;w++){
185template<
class vobj,
class sobj>
194template<
class vobj,
class sobj>
201 typedef typename vobj::vector_type vector_type;
203 int Nsimd = grid->
Nsimd();
206 assert(
sizeof(sobj)*Nsimd ==
sizeof(vobj));
208 static const int words=
sizeof(vobj)/
sizeof(vector_type);
213 vector_type * vp = (vector_type *)&l[odx];
215 for(
int w=0;w<words;w++){
221template<
class vobj,
class sobj>
#define accelerator_for(iterator, num, nsimd,...)
AcceleratorVector< int, MaxDims > Coordinate
accelerator_inline S getlane(const Grid_simd< S, V > &in, int lane)
accelerator_inline void putlane(Grid_simd< S, V > &vec, const S &_S, int lane)
void PokeIndex(Lattice< vobj > &lhs, const Lattice< decltype(peekIndex< Index >(vobj(), 0))> &rhs, int i)
auto PeekIndex(const Lattice< vobj > &lhs, int i) -> Lattice< decltype(peekIndex< Index >(vobj(), i))>
void pokeSite(const sobj &s, Lattice< vobj > &l, const Coordinate &site)
void peekLocalSite(sobj &s, const LatticeView< vobj > &l, Coordinate &site)
void pokeLocalSite(const sobj &s, LatticeView< vobj > &l, Coordinate &site)
vobj::scalar_object peekSite(const Lattice< vobj > &l, const Coordinate &site)
#define autoView(l_v, l, mode)
#define NAMESPACE_BEGIN(A)
accelerator_inline auto peekIndex(const vtype &arg, int i) -> RemoveCRV(TensorIndexRecursion< Level >::peekIndex(arg, 0))
void Broadcast(int root, void *data, int bytes)
virtual int oIndex(Coordinate &coor)
void GlobalCoorToRankIndex(int &rank, int &o_idx, int &i_idx, const Coordinate &gcoor)
virtual int CheckerBoard(const Coordinate &site)=0
virtual int iIndex(Coordinate &lcoor)
accelerator_inline int Checkerboard(void) const
GridBase * getGrid(void) const
GridBase * Grid(void) const