Lines Matching refs:vfloat8
43 // vfloat8 data type
49 struct vfloat8
54 ASTCENC_SIMD_INLINE vfloat8() = default;
62 ASTCENC_SIMD_INLINE explicit vfloat8(const float *p)
72 ASTCENC_SIMD_INLINE explicit vfloat8(float a)
82 ASTCENC_SIMD_INLINE explicit vfloat8(
92 ASTCENC_SIMD_INLINE explicit vfloat8(__m256 a)
114 static ASTCENC_SIMD_INLINE vfloat8 zero()
116 return vfloat8(_mm256_setzero_ps());
122 static ASTCENC_SIMD_INLINE vfloat8 load1(const float* p)
124 return vfloat8(_mm256_broadcast_ss(p));
130 static ASTCENC_SIMD_INLINE vfloat8 loada(const float* p)
132 return vfloat8(_mm256_load_ps(p));
138 static ASTCENC_SIMD_INLINE vfloat8 lane_id()
140 return vfloat8(_mm256_set_ps(7, 6, 5, 4, 3, 2, 1, 0));
615 ASTCENC_SIMD_INLINE vfloat8 operator+(vfloat8 a, vfloat8 b)
617 return vfloat8(_mm256_add_ps(a.m, b.m));
623 ASTCENC_SIMD_INLINE vfloat8& operator+=(vfloat8& a, const vfloat8& b)
632 ASTCENC_SIMD_INLINE vfloat8 operator-(vfloat8 a, vfloat8 b)
634 return vfloat8(_mm256_sub_ps(a.m, b.m));
640 ASTCENC_SIMD_INLINE vfloat8 operator*(vfloat8 a, vfloat8 b)
642 return vfloat8(_mm256_mul_ps(a.m, b.m));
648 ASTCENC_SIMD_INLINE vfloat8 operator*(vfloat8 a, float b)
650 return vfloat8(_mm256_mul_ps(a.m, _mm256_set1_ps(b)));
656 ASTCENC_SIMD_INLINE vfloat8 operator*(float a, vfloat8 b)
658 return vfloat8(_mm256_mul_ps(_mm256_set1_ps(a), b.m));
664 ASTCENC_SIMD_INLINE vfloat8 operator/(vfloat8 a, vfloat8 b)
666 return vfloat8(_mm256_div_ps(a.m, b.m));
672 ASTCENC_SIMD_INLINE vfloat8 operator/(vfloat8 a, float b)
674 return vfloat8(_mm256_div_ps(a.m, _mm256_set1_ps(b)));
681 ASTCENC_SIMD_INLINE vfloat8 operator/(float a, vfloat8 b)
683 return vfloat8(_mm256_div_ps(_mm256_set1_ps(a), b.m));
690 ASTCENC_SIMD_INLINE vmask8 operator==(vfloat8 a, vfloat8 b)
698 ASTCENC_SIMD_INLINE vmask8 operator!=(vfloat8 a, vfloat8 b)
706 ASTCENC_SIMD_INLINE vmask8 operator<(vfloat8 a, vfloat8 b)
714 ASTCENC_SIMD_INLINE vmask8 operator>(vfloat8 a, vfloat8 b)
722 ASTCENC_SIMD_INLINE vmask8 operator<=(vfloat8 a, vfloat8 b)
730 ASTCENC_SIMD_INLINE vmask8 operator>=(vfloat8 a, vfloat8 b)
740 ASTCENC_SIMD_INLINE vfloat8 min(vfloat8 a, vfloat8 b)
742 return vfloat8(_mm256_min_ps(a.m, b.m));
750 ASTCENC_SIMD_INLINE vfloat8 min(vfloat8 a, float b)
752 return min(a, vfloat8(b));
760 ASTCENC_SIMD_INLINE vfloat8 max(vfloat8 a, vfloat8 b)
762 return vfloat8(_mm256_max_ps(a.m, b.m));
770 ASTCENC_SIMD_INLINE vfloat8 max(vfloat8 a, float b)
772 return max(a, vfloat8(b));
781 ASTCENC_SIMD_INLINE vfloat8 clamp(float min, float max, vfloat8 a)
795 ASTCENC_SIMD_INLINE vfloat8 clampz(float max, vfloat8 a)
807 ASTCENC_SIMD_INLINE vfloat8 clampzo(vfloat8 a)
817 ASTCENC_SIMD_INLINE vfloat8 abs(vfloat8 a)
820 return vfloat8(_mm256_and_ps(a.m, msk));
826 ASTCENC_SIMD_INLINE vfloat8 round(vfloat8 a)
829 return vfloat8(_mm256_round_ps(a.m, flags));
835 ASTCENC_SIMD_INLINE vfloat8 hmin(vfloat8 a)
852 return vfloat8(_mm256_permute_ps(r, 0));
858 ASTCENC_SIMD_INLINE float hmin_s(vfloat8 a)
866 ASTCENC_SIMD_INLINE vfloat8 hmax(vfloat8 a)
882 return vfloat8(_mm256_permute_ps(r, 0));
888 ASTCENC_SIMD_INLINE float hmax_s(vfloat8 a)
896 ASTCENC_SIMD_INLINE float hadd_s(vfloat8 a)
907 ASTCENC_SIMD_INLINE vfloat8 select(vfloat8 a, vfloat8 b, vmask8 cond)
909 return vfloat8(_mm256_blendv_ps(a.m, b.m, cond.m));
915 ASTCENC_SIMD_INLINE vfloat8 select_msb(vfloat8 a, vfloat8 b, vmask8 cond)
917 return vfloat8(_mm256_blendv_ps(a.m, b.m, cond.m));
925 ASTCENC_SIMD_INLINE void haccumulate(vfloat4& accum, vfloat8 a)
939 ASTCENC_SIMD_INLINE void haccumulate(vfloat8& accum, vfloat8 a)
949 ASTCENC_SIMD_INLINE void haccumulate(vfloat4& accum, vfloat8 a, vmask8 m)
951 a = select(vfloat8::zero(), a, m);
960 ASTCENC_SIMD_INLINE void haccumulate(vfloat8& accum, vfloat8 a, vmask8 m)
962 a = select(vfloat8::zero(), a, m);
969 ASTCENC_SIMD_INLINE vfloat8 sqrt(vfloat8 a)
971 return vfloat8(_mm256_sqrt_ps(a.m));
977 ASTCENC_SIMD_INLINE vfloat8 gatherf(const float* base, vint8 indices)
979 return vfloat8(_mm256_i32gather_ps(base, indices.m, 4));
985 ASTCENC_SIMD_INLINE void store(vfloat8 a, float* p)
993 ASTCENC_SIMD_INLINE void storea(vfloat8 a, float* p)
1001 ASTCENC_SIMD_INLINE vint8 float_to_int(vfloat8 a)
1009 ASTCENC_SIMD_INLINE vint8 float_to_int_rtn(vfloat8 a)
1011 a = a + vfloat8(0.5f);
1019 ASTCENC_SIMD_INLINE vfloat8 int_to_float(vint8 a)
1021 return vfloat8(_mm256_cvtepi32_ps(a.m));
1031 ASTCENC_SIMD_INLINE vint8 float_as_int(vfloat8 a)
1043 ASTCENC_SIMD_INLINE vfloat8 int_as_float(vint8 a)
1045 return vfloat8(_mm256_castsi256_ps(a.m));
1193 ASTCENC_SIMD_INLINE void print(vfloat8 a)