Lines Matching refs:skvx
56 auto bilerp = [&](skvx::Vec<8,uint32_t> packed_x_coordinates) -> skvx::Vec<8,uint32_t> {
58 skvx::Vec<8,uint32_t> x0,x1,wx;
67 auto gather = [](const uint32_t* ptr, skvx::Vec<8,uint32_t> ix) {
70 return skvx::bit_pun<skvx::Vec<8,uint32_t>>(
71 _mm256_i32gather_epi32((const int*)ptr, skvx::bit_pun<__m256i>(ix), 4));
74 return skvx::Vec<8,uint32_t>{
82 skvx::Vec<8,uint32_t> tl = gather(row0, x0), tr = gather(row0, x1),
87 auto lerp_x = [&](skvx::Vec<8,uint32_t> L, skvx::Vec<8,uint32_t> R) {
88 __m256i l = skvx::bit_pun<__m256i>(L),
89 r = skvx::bit_pun<__m256i>(R),
90 wr = skvx::bit_pun<__m256i>(wx),
111 return skvx::join(skvx::bit_pun<skvx::Vec<16,uint16_t>>(abcd),
112 skvx::bit_pun<skvx::Vec<16,uint16_t>>(efgh));
115 skvx::Vec<32, uint16_t> top = lerp_x(tl, tr),
120 auto to_16x4 = [](auto v) -> skvx::Vec<32, uint16_t> {
121 return skvx::cast<uint16_t>(skvx::bit_pun<skvx::Vec<32, uint8_t>>(v));
135 skvx::Vec<32, uint16_t> sum = lerp(lerp(to_16x4(tl), to_16x4(bl), wy),
149 return skvx::bit_pun<skvx::Vec<8,uint32_t>>(skvx::cast<uint8_t>(sum));
153 bilerp(skvx::Vec<8,uint32_t>::Load(xy)).store(colors);
159 __m256i active = skvx::bit_pun<__m256i>( count > skvx::Vec<8,int>{0,1,2,3, 4,5,6,7} ),
163 bilerp(skvx::bit_pun<skvx::Vec<8,uint32_t>>(coords)).store(&pixels);