/ 128-bit load over 64-bit stride
| 152 | |
| 153 | //// 128-bit load over 64-bit stride |
| 154 | NPY_FINLINE npyv_f64 npyv_loadn2_f64(const double *ptr, npy_intp stride) |
| 155 | { |
| 156 | __m128d a = _mm_loadu_pd(ptr); |
| 157 | __m128d b = _mm_loadu_pd(ptr + stride); |
| 158 | __m128d c = _mm_loadu_pd(ptr + stride * 2); |
| 159 | __m128d d = _mm_loadu_pd(ptr + stride * 3); |
| 160 | return npyv512_combine_pd256( |
| 161 | _mm256_insertf128_pd(_mm256_castpd128_pd256(a), b, 1), |
| 162 | _mm256_insertf128_pd(_mm256_castpd128_pd256(c), d, 1) |
| 163 | ); |
| 164 | } |
| 165 | NPY_FINLINE npyv_u64 npyv_loadn2_u64(const npy_uint64 *ptr, npy_intp stride) |
| 166 | { return npyv_reinterpret_u64_f64(npyv_loadn2_f64((const double*)ptr, stride)); } |
| 167 | NPY_FINLINE npyv_s64 npyv_loadn2_s64(const npy_int64 *ptr, npy_intp stride) |