Lines Matching defs:vfloat4
44 // vfloat4 data type
50 struct vfloat4
55 ASTCENC_SIMD_INLINE vfloat4() = default;
63 ASTCENC_SIMD_INLINE explicit vfloat4(const float *p)
73 ASTCENC_SIMD_INLINE explicit vfloat4(float a)
83 ASTCENC_SIMD_INLINE explicit vfloat4(float a, float b, float c, float d)
92 ASTCENC_SIMD_INLINE explicit vfloat4(float32x4_t a)
116 static ASTCENC_SIMD_INLINE vfloat4 zero()
118 return vfloat4(vdupq_n_f32(0.0f));
124 static ASTCENC_SIMD_INLINE vfloat4 load1(const float* p)
126 return vfloat4(vld1q_dup_f32(p));
132 static ASTCENC_SIMD_INLINE vfloat4 loada(const float* p)
134 return vfloat4(vld1q_f32(p));
140 static ASTCENC_SIMD_INLINE vfloat4 lane_id()
143 return vfloat4(vld1q_f32(data));
149 template <int l0, int l1> ASTCENC_SIMD_INLINE vfloat4 swz() const
151 return vfloat4(lane<l0>(), lane<l1>(), 0.0f, 0.0f);
157 template <int l0, int l1, int l2> ASTCENC_SIMD_INLINE vfloat4 swz() const
159 return vfloat4(lane<l0>(), lane<l1>(), lane<l2>(), 0.0f);
165 template <int l0, int l1, int l2, int l3> ASTCENC_SIMD_INLINE vfloat4 swz() const
167 return vfloat4(lane<l0>(), lane<l1>(), lane<l2>(), lane<l3>());
215 * Consider using vfloat4::zero() for constexpr zeros.
595 ASTCENC_SIMD_INLINE float hadd_rgba_s(vfloat4 a)
667 // vfloat4 operators and functions
673 ASTCENC_SIMD_INLINE vfloat4 operator+(vfloat4 a, vfloat4 b)
675 return vfloat4(vaddq_f32(a.m, b.m));
681 ASTCENC_SIMD_INLINE vfloat4 operator-(vfloat4 a, vfloat4 b)
683 return vfloat4(vsubq_f32(a.m, b.m));
689 ASTCENC_SIMD_INLINE vfloat4 operator*(vfloat4 a, vfloat4 b)
691 return vfloat4(vmulq_f32(a.m, b.m));
697 ASTCENC_SIMD_INLINE vfloat4 operator/(vfloat4 a, vfloat4 b)
699 return vfloat4(vdivq_f32(a.m, b.m));
705 ASTCENC_SIMD_INLINE vmask4 operator==(vfloat4 a, vfloat4 b)
713 ASTCENC_SIMD_INLINE vmask4 operator!=(vfloat4 a, vfloat4 b)
721 ASTCENC_SIMD_INLINE vmask4 operator<(vfloat4 a, vfloat4 b)
729 ASTCENC_SIMD_INLINE vmask4 operator>(vfloat4 a, vfloat4 b)
737 ASTCENC_SIMD_INLINE vmask4 operator<=(vfloat4 a, vfloat4 b)
745 ASTCENC_SIMD_INLINE vmask4 operator>=(vfloat4 a, vfloat4 b)
755 ASTCENC_SIMD_INLINE vfloat4 min(vfloat4 a, vfloat4 b)
758 return vfloat4(vminnmq_f32(a.m, b.m));
766 ASTCENC_SIMD_INLINE vfloat4 max(vfloat4 a, vfloat4 b)
769 return vfloat4(vmaxnmq_f32(a.m, b.m));
775 ASTCENC_SIMD_INLINE vfloat4 abs(vfloat4 a)
779 return vfloat4(vmaxq_f32(a.m, inv));
785 ASTCENC_SIMD_INLINE vfloat4 round(vfloat4 a)
787 return vfloat4(vrndnq_f32(a.m));
793 ASTCENC_SIMD_INLINE vfloat4 hmin(vfloat4 a)
795 return vfloat4(vminvq_f32(a.m));
801 ASTCENC_SIMD_INLINE vfloat4 hmax(vfloat4 a)
803 return vfloat4(vmaxvq_f32(a.m));
809 ASTCENC_SIMD_INLINE float hadd_s(vfloat4 a)
820 ASTCENC_SIMD_INLINE vfloat4 sqrt(vfloat4 a)
822 return vfloat4(vsqrtq_f32(a.m));
828 ASTCENC_SIMD_INLINE vfloat4 select(vfloat4 a, vfloat4 b, vmask4 cond)
830 return vfloat4(vbslq_f32(cond.m, b.m, a.m));
836 ASTCENC_SIMD_INLINE vfloat4 select_msb(vfloat4 a, vfloat4 b, vmask4 cond)
840 return vfloat4(vbslq_f32(mask, b.m, a.m));
846 ASTCENC_SIMD_INLINE vfloat4 gatherf(const float* base, vint4 indices)
855 return vfloat4(vals);
861 ASTCENC_SIMD_INLINE void store(vfloat4 a, float* p)
869 ASTCENC_SIMD_INLINE void storea(vfloat4 a, float* p)
877 ASTCENC_SIMD_INLINE vint4 float_to_int(vfloat4 a)
885 ASTCENC_SIMD_INLINE vint4 float_to_int_rtn(vfloat4 a)
887 a = a + vfloat4(0.5f);
894 ASTCENC_SIMD_INLINE vfloat4 int_to_float(vint4 a)
896 return vfloat4(vcvtq_f32_s32(a.m));
902 ASTCENC_SIMD_INLINE vint4 float_to_float16(vfloat4 a)
918 vfloat4 av(a);
925 ASTCENC_SIMD_INLINE vfloat4 float16_to_float(vint4 a)
933 return vfloat4(vcvt_f32_f16(f16));
952 ASTCENC_SIMD_INLINE vint4 float_as_int(vfloat4 a)
964 ASTCENC_SIMD_INLINE vfloat4 int_as_float(vint4 v)
966 return vfloat4(vreinterpretq_f32_s32(v.m));