Lines Matching defs:vint8

150 // vint8 data type
156 struct vint8
161 ASTCENC_SIMD_INLINE vint8() = default;
169 ASTCENC_SIMD_INLINE explicit vint8(const int *p)
177 ASTCENC_SIMD_INLINE explicit vint8(const uint8_t *p)
188 ASTCENC_SIMD_INLINE explicit vint8(int a)
198 ASTCENC_SIMD_INLINE explicit vint8(
208 ASTCENC_SIMD_INLINE explicit vint8(__m256i a)
230 static ASTCENC_SIMD_INLINE vint8 zero()
232 return vint8(_mm256_setzero_si256());
238 static ASTCENC_SIMD_INLINE vint8 load1(const int* p)
241 return vint8(_mm256_broadcastd_epi32(a));
247 static ASTCENC_SIMD_INLINE vint8 load(const uint8_t* p)
249 return vint8(_mm256_lddqu_si256(reinterpret_cast<const __m256i*>(p)));
255 static ASTCENC_SIMD_INLINE vint8 loada(const int* p)
257 return vint8(_mm256_load_si256(reinterpret_cast<const __m256i*>(p)));
263 static ASTCENC_SIMD_INLINE vint8 lane_id()
265 return vint8(_mm256_set_epi32(7, 6, 5, 4, 3, 2, 1, 0));
304 vint8 mask(a == false ? 0 : -1);
377 // vint8 operators and functions
382 ASTCENC_SIMD_INLINE vint8 operator+(vint8 a, vint8 b)
384 return vint8(_mm256_add_epi32(a.m, b.m));
390 ASTCENC_SIMD_INLINE vint8& operator+=(vint8& a, const vint8& b)
399 ASTCENC_SIMD_INLINE vint8 operator-(vint8 a, vint8 b)
401 return vint8(_mm256_sub_epi32(a.m, b.m));
407 ASTCENC_SIMD_INLINE vint8 operator*(vint8 a, vint8 b)
409 return vint8(_mm256_mullo_epi32(a.m, b.m));
415 ASTCENC_SIMD_INLINE vint8 operator~(vint8 a)
417 return vint8(_mm256_xor_si256(a.m, _mm256_set1_epi32(-1)));
423 ASTCENC_SIMD_INLINE vint8 operator|(vint8 a, vint8 b)
425 return vint8(_mm256_or_si256(a.m, b.m));
431 ASTCENC_SIMD_INLINE vint8 operator&(vint8 a, vint8 b)
433 return vint8(_mm256_and_si256(a.m, b.m));
439 ASTCENC_SIMD_INLINE vint8 operator^(vint8 a, vint8 b)
441 return vint8(_mm256_xor_si256(a.m, b.m));
447 ASTCENC_SIMD_INLINE vmask8 operator==(vint8 a, vint8 b)
455 ASTCENC_SIMD_INLINE vmask8 operator!=(vint8 a, vint8 b)
463 ASTCENC_SIMD_INLINE vmask8 operator<(vint8 a, vint8 b)
471 ASTCENC_SIMD_INLINE vmask8 operator>(vint8 a, vint8 b)
479 template <int s> ASTCENC_SIMD_INLINE vint8 lsl(vint8 a)
481 return vint8(_mm256_slli_epi32(a.m, s));
487 template <int s> ASTCENC_SIMD_INLINE vint8 asr(vint8 a)
489 return vint8(_mm256_srai_epi32(a.m, s));
495 template <int s> ASTCENC_SIMD_INLINE vint8 lsr(vint8 a)
497 return vint8(_mm256_srli_epi32(a.m, s));
503 ASTCENC_SIMD_INLINE vint8 min(vint8 a, vint8 b)
505 return vint8(_mm256_min_epi32(a.m, b.m));
511 ASTCENC_SIMD_INLINE vint8 max(vint8 a, vint8 b)
513 return vint8(_mm256_max_epi32(a.m, b.m));
519 ASTCENC_SIMD_INLINE vint8 hmin(vint8 a)
527 vint8 vmin(r);
534 ASTCENC_SIMD_INLINE vint8 hmax(vint8 a)
542 vint8 vmax(r);
549 ASTCENC_SIMD_INLINE void storea(vint8 a, int* p)
557 ASTCENC_SIMD_INLINE void store(vint8 a, int* p)
565 ASTCENC_SIMD_INLINE void store_nbytes(vint8 a, uint8_t* p)
576 ASTCENC_SIMD_INLINE vint8 gatheri(const int* base, vint8 indices)
578 return vint8(_mm256_i32gather_epi32(base, indices.m, 4));
584 ASTCENC_SIMD_INLINE vint8 pack_low_bytes(vint8 v)
596 return vint8(r);
602 ASTCENC_SIMD_INLINE vint8 select(vint8 a, vint8 b, vmask8 cond)
605 return vint8(_mm256_blendv_epi8(a.m, b.m, condi));
977 ASTCENC_SIMD_INLINE vfloat8 gatherf(const float* base, vint8 indices)
1001 ASTCENC_SIMD_INLINE vint8 float_to_int(vfloat8 a)
1003 return vint8(_mm256_cvttps_epi32(a.m));
1009 ASTCENC_SIMD_INLINE vint8 float_to_int_rtn(vfloat8 a)
1012 return vint8(_mm256_cvttps_epi32(a.m));
1019 ASTCENC_SIMD_INLINE vfloat8 int_to_float(vint8 a)
1031 ASTCENC_SIMD_INLINE vint8 float_as_int(vfloat8 a)
1033 return vint8(_mm256_castps_si256(a.m));
1043 ASTCENC_SIMD_INLINE vfloat8 int_as_float(vint8 a)
1051 ASTCENC_SIMD_INLINE void vtable_prepare(vint4 t0, vint8& t0p)
1055 t0p = vint8(astcenc_mm256_set_m128i(t0n, t0n));
1061 ASTCENC_SIMD_INLINE void vtable_prepare(vint4 t0, vint4 t1, vint8& t0p, vint8& t1p)
1065 t0p = vint8(astcenc_mm256_set_m128i(t0n, t0n));
1068 t1p = vint8(astcenc_mm256_set_m128i(t1n, t1n));
1076 vint8& t0p, vint8& t1p, vint8& t2p, vint8& t3p)
1080 t0p = vint8(astcenc_mm256_set_m128i(t0n, t0n));
1083 t1p = vint8(astcenc_mm256_set_m128i(t1n, t1n));
1086 t2p = vint8(astcenc_mm256_set_m128i(t2n, t2n));
1089 t3p = vint8(astcenc_mm256_set_m128i(t3n, t3n));
1095 ASTCENC_SIMD_INLINE vint8 vtable_8bt_32bi(vint8 t0, vint8 idx)
1101 return vint8(result);
1107 ASTCENC_SIMD_INLINE vint8 vtable_8bt_32bi(vint8 t0, vint8 t1, vint8 idx)
1117 return vint8(result);
1123 ASTCENC_SIMD_INLINE vint8 vtable_8bt_32bi(vint8 t0, vint8 t1, vint8 t2, vint8 t3, vint8 idx)
1142 return vint8(result);
1153 ASTCENC_SIMD_INLINE vint8 interleave_rgba8(vint8 r, vint8 g, vint8 b, vint8 a)
1163 ASTCENC_SIMD_INLINE void store_lanes_masked(uint8_t* base, vint8 data, vmask8 mask)
1171 ASTCENC_SIMD_INLINE void print(vint8 a)
1182 ASTCENC_SIMD_INLINE void printx(vint8 a)
1209 print(select(vint8(0), vint8(1), a));