| 663 | // uses vector as indexes into a table |
| 664 | // that contains 32 elements of float32. |
| 665 | NPY_FINLINE npyv_u32 npyv_lut32_u32(const npy_uint32 *table, npyv_u32 idx) |
| 666 | { |
| 667 | const unsigned i0 = vec_extract(idx, 0); |
| 668 | const unsigned i1 = vec_extract(idx, 1); |
| 669 | const unsigned i2 = vec_extract(idx, 2); |
| 670 | const unsigned i3 = vec_extract(idx, 3); |
| 671 | npyv_u32 r = vec_promote(table[i0], 0); |
| 672 | r = vec_insert(table[i1], r, 1); |
| 673 | r = vec_insert(table[i2], r, 2); |
| 674 | r = vec_insert(table[i3], r, 3); |
| 675 | return r; |
| 676 | } |
| 677 | NPY_FINLINE npyv_s32 npyv_lut32_s32(const npy_int32 *table, npyv_u32 idx) |
| 678 | { return (npyv_s32)npyv_lut32_u32((const npy_uint32*)table, idx); } |
| 679 | #if NPY_SIMD_F32 |
no outgoing calls
no test coverage detected