Lines Matching defs:skvx
11 static inline skvx::Vec<N,int> gather32(const int* ptr, const skvx::Vec<N,int>& ix) {
14 return skvx::bit_pun<skvx::Vec<N,int>>(
15 _mm256_i32gather_epi32(ptr, skvx::bit_pun<__m256i>(ix), 4));
34 using I32 = skvx::Vec<K, int>;
35 using I16 = skvx::Vec<K, int16_t>;
36 using F32 = skvx::Vec<K, float>;
37 using U64 = skvx::Vec<K, uint64_t>;
38 using U32 = skvx::Vec<K, uint32_t>;
39 using U16 = skvx::Vec<K, uint16_t>;
40 using U8 = skvx::Vec<K, uint8_t>;
75 // the skvx::Vec types may have alignment greater than what they provide.
125 STRIDE_K(Op::store8 ): skvx::cast<uint8_t> (r[x].i32).store(args[immA]); break;
126 STRIDE_K(Op::store16): skvx::cast<uint16_t>(r[x].i32).store(args[immA]); break;
128 STRIDE_K(Op::store64): (skvx::cast<uint64_t>(r[x].u32) << 0 |
129 skvx::cast<uint64_t>(r[y].u32) << 32).store(args[immA]);
138 STRIDE_K(Op::load8 ): r[d].i32= skvx::cast<int>(U8 ::Load(args[immA])); break;
139 STRIDE_K(Op::load16): r[d].i32= skvx::cast<int>(U16::Load(args[immA])); break;
143 r[d].i32 = skvx::cast<int>(U64::Load(args[immA]) >> (32*immB)); break;
191 U64 lo = (skvx::cast<uint64_t>(r[x].u32) << 0 |
192 skvx::cast<uint64_t>(r[y].u32) << 32),
193 hi = (skvx::cast<uint64_t>(r[z].u32) << 0 |
194 skvx::cast<uint64_t>(r[w].u32) << 32);
297 CASE(Op::select): r[d].i32 = skvx::if_then_else(r[x].i32, r[y].i32, r[z].i32);
300 CASE(Op::ceil): r[d].f32 = skvx::ceil(r[x].f32) ; break;
301 CASE(Op::floor): r[d].f32 = skvx::floor(r[x].f32) ; break;
302 CASE(Op::to_f32): r[d].f32 = skvx::cast<float>( r[x].i32 ); break;
303 CASE(Op::trunc): r[d].i32 = skvx::cast<int> ( r[x].f32 ); break;
304 CASE(Op::round): r[d].i32 = skvx::cast<int> (skvx::lrint(r[x].f32)); break;
307 r[d].i32 = skvx::cast<int>(skvx::to_half(r[x].f32));
310 r[d].f32 = skvx::from_half(skvx::cast<uint16_t>(r[x].i32));