* Non-contiguous Load ***************************/ / 32
| 73 | ***************************/ |
| 74 | //// 32 |
| 75 | NPY_FINLINE npyv_u32 npyv_loadn_u32(const npy_uint32 *ptr, npy_intp stride) |
| 76 | { |
| 77 | assert(llabs(stride) <= NPY_SIMD_MAXLOAD_STRIDE32); |
| 78 | const __m256i steps = _mm256_setr_epi32(0, 1, 2, 3, 4, 5, 6, 7); |
| 79 | const __m256i idx = _mm256_mullo_epi32(_mm256_set1_epi32((int)stride), steps); |
| 80 | return _mm256_i32gather_epi32((const int*)ptr, idx, 4); |
| 81 | } |
| 82 | NPY_FINLINE npyv_s32 npyv_loadn_s32(const npy_int32 *ptr, npy_intp stride) |
| 83 | { return npyv_loadn_u32((const npy_uint32*)ptr, stride); } |
| 84 | NPY_FINLINE npyv_f32 npyv_loadn_f32(const float *ptr, npy_intp stride) |
no outgoing calls
no test coverage detected