| 2351 | } |
| 2352 | |
| 2353 | inline vec_int16 VecInt16Deinterleave(const vec_int16& v) |
| 2354 | { |
| 2355 | #if defined(TERATHON_SSE) |
| 2356 | |
| 2357 | vec_int16 i = _mm_shufflelo_epi16(v, _MM_SHUFFLE(3, 1, 2, 0)); |
| 2358 | i = _mm_shufflehi_epi16(i, _MM_SHUFFLE(3, 1, 2, 0)); |
| 2359 | return (_mm_shuffle_epi32(i, _MM_SHUFFLE(3, 1, 2, 0))); |
| 2360 | |
| 2361 | #elif defined(TERATHON_NEON) |
| 2362 | |
| 2363 | int16x4x2_t r = vuzp_s16(vget_low_s16(v), vget_high_s16(v)); |
| 2364 | return (vcombine_s16(r.val[0], r.val[1])); |
| 2365 | |
| 2366 | #endif |
| 2367 | } |
| 2368 | |
| 2369 | inline vec_float VecInt32ConvertFloat(const vec_int32& v) |
| 2370 | { |
nothing calls this directly
no outgoing calls
no test coverage detected