13 template <
typename V,
typename V2>
14 KOKKOS_INLINE_FUNCTION
19 const V& v1 = a1.derived();
20 const V2& v2 = a2.derived();
22 if (v2.hasFastAccess(v1.size())) {
23 #ifdef STOKHOS_HAVE_PRAGMA_IVDEP
26 #ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
27 #pragma vector aligned
29 #ifdef STOKHOS_HAVE_PRAGMA_UNROLL
32 for(std::size_t i=0; i<mask.
size; ++i)
33 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.fastAccessCoeff(i));
36 #ifdef STOKHOS_HAVE_PRAGMA_IVDEP
39 #ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
40 #pragma vector aligned
42 #ifdef STOKHOS_HAVE_PRAGMA_UNROLL
45 for(std::size_t i=0; i<mask.
size; ++i)
46 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.coeff(i));
51 template <
typename V,
typename V2>
52 KOKKOS_INLINE_FUNCTION
57 const volatile V& v1 = a1.derived();
58 const volatile V2& v2 = a2.derived();
60 if (v2.hasFastAccess(v1.size())) {
61 #ifdef STOKHOS_HAVE_PRAGMA_IVDEP
64 #ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
65 #pragma vector aligned
67 #ifdef STOKHOS_HAVE_PRAGMA_UNROLL
70 for(std::size_t i=0; i<mask.
size; ++i)
71 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.fastAccessCoeff(i));
74 #ifdef STOKHOS_HAVE_PRAGMA_IVDEP
77 #ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
78 #pragma vector aligned
80 #ifdef STOKHOS_HAVE_PRAGMA_UNROLL
83 for(std::size_t i=0; i<mask.
size; ++i)
84 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.coeff(i));
89 template <
typename V,
typename V2>
90 KOKKOS_INLINE_FUNCTION
95 const V& v1 = a1.derived();
96 const volatile V2& v2 = a2.derived();
98 if (v2.hasFastAccess(v1.size())) {
99 #ifdef STOKHOS_HAVE_PRAGMA_IVDEP
102 #ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
103 #pragma vector aligned
105 #ifdef STOKHOS_HAVE_PRAGMA_UNROLL
108 for(std::size_t i=0; i<mask.
size; ++i)
109 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.fastAccessCoeff(i));
112 #ifdef STOKHOS_HAVE_PRAGMA_IVDEP
115 #ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
116 #pragma vector aligned
118 #ifdef STOKHOS_HAVE_PRAGMA_UNROLL
121 for(std::size_t i=0; i<mask.
size; ++i)
122 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.coeff(i));
127 template <
typename V,
typename V2>
128 KOKKOS_INLINE_FUNCTION
133 const volatile V& v1 = a1.derived();
134 const V2& v2 = a2.derived();
136 if (v2.hasFastAccess(v1.size())) {
137 #ifdef STOKHOS_HAVE_PRAGMA_IVDEP
140 #ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
141 #pragma vector aligned
143 #ifdef STOKHOS_HAVE_PRAGMA_UNROLL
146 for(std::size_t i=0; i<mask.
size; ++i)
147 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.fastAccessCoeff(i));
150 #ifdef STOKHOS_HAVE_PRAGMA_IVDEP
153 #ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
154 #pragma vector aligned
156 #ifdef STOKHOS_HAVE_PRAGMA_UNROLL
159 for(std::size_t i=0; i<mask.
size; ++i)
160 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME v2.coeff(i));
165 template <
typename V>
166 KOKKOS_INLINE_FUNCTION
171 const V& v1 = a1.derived();
173 #ifdef STOKHOS_HAVE_PRAGMA_IVDEP
176 #ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
177 #pragma vector aligned
179 #ifdef STOKHOS_HAVE_PRAGMA_UNROLL
182 for(std::size_t i=0; i<mask.
size; ++i)
183 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME a2);
187 template <
typename V>
188 KOKKOS_INLINE_FUNCTION
193 const volatile V& v1 = a1.derived();
195 #ifdef STOKHOS_HAVE_PRAGMA_IVDEP
198 #ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
199 #pragma vector aligned
201 #ifdef STOKHOS_HAVE_PRAGMA_UNROLL
204 for(std::size_t i=0; i<mask.
size; ++i)
205 mask.
set(i, v1.fastAccessCoeff(i)
OPNAME a2);
209 template <
typename V>
210 KOKKOS_INLINE_FUNCTION
215 const V& v2 = a2.derived();
217 #ifdef STOKHOS_HAVE_PRAGMA_IVDEP
220 #ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
221 #pragma vector aligned
223 #ifdef STOKHOS_HAVE_PRAGMA_UNROLL
226 for(std::size_t i=0; i<mask.
size; ++i)
227 mask.
set(i, a1
OPNAME v2.fastAccessCoeff(i));
231 template <
typename V>
232 KOKKOS_INLINE_FUNCTION
237 const volatile V& v2 = a2.derived();
239 #ifdef STOKHOS_HAVE_PRAGMA_IVDEP
242 #ifdef STOKHOS_HAVE_PRAGMA_VECTOR_ALIGNED
243 #pragma vector aligned
245 #ifdef STOKHOS_HAVE_PRAGMA_UNROLL
248 for(std::size_t i=0; i<mask.
size; ++i)
249 mask.
set(i, a1
OPNAME v2.fastAccessCoeff(i));
static const std::size_t size
KOKKOS_INLINE_FUNCTION void set(int i, bool b)
KOKKOS_INLINE_FUNCTION Vector< Stokhos::StaticFixedStorage< O, T, N, D > > OPNAME(const Vector< Stokhos::StaticFixedStorage< O, T, N, D > > &a, const Vector< Stokhos::StaticFixedStorage< O, T, N, D > > &b)