* Non-contiguous Load ***************************/ / 32
| 77 | ***************************/ |
| 78 | //// 32 |
| 79 | NPY_FINLINE npyv_s32 npyv_loadn_s32(const npy_int32 *ptr, npy_intp stride) |
| 80 | { |
| 81 | __m128i a = _mm_cvtsi32_si128(*ptr); |
| 82 | #ifdef NPY_HAVE_SSE41 |
| 83 | a = _mm_insert_epi32(a, ptr[stride], 1); |
| 84 | a = _mm_insert_epi32(a, ptr[stride*2], 2); |
| 85 | a = _mm_insert_epi32(a, ptr[stride*3], 3); |
| 86 | #else |
| 87 | __m128i a1 = _mm_cvtsi32_si128(ptr[stride]); |
| 88 | __m128i a2 = _mm_cvtsi32_si128(ptr[stride*2]); |
| 89 | __m128i a3 = _mm_cvtsi32_si128(ptr[stride*3]); |
| 90 | a = _mm_unpacklo_epi32(a, a1); |
| 91 | a = _mm_unpacklo_epi64(a, _mm_unpacklo_epi32(a2, a3)); |
| 92 | #endif |
| 93 | return a; |
| 94 | } |
| 95 | NPY_FINLINE npyv_u32 npyv_loadn_u32(const npy_uint32 *ptr, npy_intp stride) |
| 96 | { return npyv_loadn_s32((const npy_int32*)ptr, stride); } |
| 97 | NPY_FINLINE npyv_f32 npyv_loadn_f32(const float *ptr, npy_intp stride) |
no outgoing calls
no test coverage detected