45 template <
typename V,
typename V2>
46 KOKKOS_INLINE_FUNCTION
51 const V& v1 = a1.derived();
52 const V2& v2 = a2.derived();
54 if (v2.hasFastAccess(v1.size())) {
55#ifdef STOKHOS_HAVE_PRAGMA_IVDEP
58#ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
61#ifdef STOKHOS_HAVE_PRAGMA_UNROLL
64 for(std::size_t i=0; i<mask.
size; ++i)
65 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.fastAccessCoeff(i));
68#ifdef STOKHOS_HAVE_PRAGMA_IVDEP
71#ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
74#ifdef STOKHOS_HAVE_PRAGMA_UNROLL
77 for(std::size_t i=0; i<mask.
size; ++i)
78 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.coeff(i));
83 template <
typename V,
typename V2>
84 KOKKOS_INLINE_FUNCTION
89 const volatile V& v1 = a1.derived();
90 const volatile V2& v2 = a2.derived();
92 if (v2.hasFastAccess(v1.size())) {
93#ifdef STOKHOS_HAVE_PRAGMA_IVDEP
96#ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
99#ifdef STOKHOS_HAVE_PRAGMA_UNROLL
102 for(std::size_t i=0; i<mask.
size; ++i)
103 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.fastAccessCoeff(i));
106#ifdef STOKHOS_HAVE_PRAGMA_IVDEP
109#ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
110#pragma vector aligned
112#ifdef STOKHOS_HAVE_PRAGMA_UNROLL
115 for(std::size_t i=0; i<mask.
size; ++i)
116 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.coeff(i));
121 template <
typename V,
typename V2>
122 KOKKOS_INLINE_FUNCTION
127 const V& v1 = a1.derived();
128 const volatile V2& v2 = a2.derived();
130 if (v2.hasFastAccess(v1.size())) {
131#ifdef STOKHOS_HAVE_PRAGMA_IVDEP
134#ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
135#pragma vector aligned
137#ifdef STOKHOS_HAVE_PRAGMA_UNROLL
140 for(std::size_t i=0; i<mask.
size; ++i)
141 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.fastAccessCoeff(i));
144#ifdef STOKHOS_HAVE_PRAGMA_IVDEP
147#ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
148#pragma vector aligned
150#ifdef STOKHOS_HAVE_PRAGMA_UNROLL
153 for(std::size_t i=0; i<mask.
size; ++i)
154 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.coeff(i));
159 template <
typename V,
typename V2>
160 KOKKOS_INLINE_FUNCTION
165 const volatile V& v1 = a1.derived();
166 const V2& v2 = a2.derived();
168 if (v2.hasFastAccess(v1.size())) {
169#ifdef STOKHOS_HAVE_PRAGMA_IVDEP
172#ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
173#pragma vector aligned
175#ifdef STOKHOS_HAVE_PRAGMA_UNROLL
178 for(std::size_t i=0; i<mask.
size; ++i)
179 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.fastAccessCoeff(i));
182#ifdef STOKHOS_HAVE_PRAGMA_IVDEP
185#ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
186#pragma vector aligned
188#ifdef STOKHOS_HAVE_PRAGMA_UNROLL
191 for(std::size_t i=0; i<mask.
size; ++i)
192 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.coeff(i));
197 template <
typename V>
198 KOKKOS_INLINE_FUNCTION
201 const typename V::value_type &a2)
203 const V& v1 = a1.derived();
205#ifdef STOKHOS_HAVE_PRAGMA_IVDEP
208#ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
209#pragma vector aligned
211#ifdef STOKHOS_HAVE_PRAGMA_UNROLL
214 for(std::size_t i=0; i<mask.
size; ++i)
215 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME a2);
219 template <
typename V>
220 KOKKOS_INLINE_FUNCTION
223 const typename V::value_type &a2)
225 const volatile V& v1 = a1.derived();
227#ifdef STOKHOS_HAVE_PRAGMA_IVDEP
230#ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
231#pragma vector aligned
233#ifdef STOKHOS_HAVE_PRAGMA_UNROLL
236 for(std::size_t i=0; i<mask.
size; ++i)
237 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME a2);
241 template <
typename V>
242 KOKKOS_INLINE_FUNCTION
244 operator OPNAME (
const typename V::value_type &a1,
247 const V& v2 = a2.derived();
249#ifdef STOKHOS_HAVE_PRAGMA_IVDEP
252#ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
253#pragma vector aligned
255#ifdef STOKHOS_HAVE_PRAGMA_UNROLL
258 for(std::size_t i=0; i<mask.
size; ++i)
259 mask.
set(i, a1
OPNAME v2.fastAccessCoeff(i));
263 template <
typename V>
264 KOKKOS_INLINE_FUNCTION
266 operator OPNAME (
const typename V::value_type &a1,
269 const volatile V& v2 = a2.derived();
271#ifdef STOKHOS_HAVE_PRAGMA_IVDEP
274#ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
275#pragma vector aligned
277#ifdef STOKHOS_HAVE_PRAGMA_UNROLL
280 for(std::size_t i=0; i<mask.
size; ++i)
281 mask.
set(i, a1
OPNAME v2.fastAccessCoeff(i));
static const std::size_t size
KOKKOS_INLINE_FUNCTION void set(int i, bool b)