| 70 | |
| 71 | // deinterleave two vectors |
| 72 | NPY_FINLINE npyv_u8x2 npyv_unzip_u8(npyv_u8 ab0, npyv_u8 ab1) |
| 73 | { |
| 74 | const npyv_u8 idx_even = npyv_set_u8( |
| 75 | 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30 |
| 76 | ); |
| 77 | const npyv_u8 idx_odd = npyv_set_u8( |
| 78 | 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31 |
| 79 | ); |
| 80 | npyv_u8x2 r; |
| 81 | r.val[0] = vec_perm(ab0, ab1, idx_even); |
| 82 | r.val[1] = vec_perm(ab0, ab1, idx_odd); |
| 83 | return r; |
| 84 | } |
| 85 | NPY_FINLINE npyv_s8x2 npyv_unzip_s8(npyv_s8 ab0, npyv_s8 ab1) |
| 86 | { |
| 87 | npyv_u8x2 ru = npyv_unzip_u8((npyv_u8)ab0, (npyv_u8)ab1); |