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
59 #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
72 #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
97 #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
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
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
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
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)
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)