Even more vectorized and even slower
This commit is contained in:
17
vec.cpp
17
vec.cpp
@@ -7,21 +7,26 @@ union Vec8{
|
||||
force_inline F32 &operator[](S64 i){ return e[i]; }
|
||||
};
|
||||
|
||||
Vec8 loadu8(void *m){ return {_mm256_loadu_ps((const float *)m)}; }
|
||||
Vec8 vec8(F32 x){return {_mm256_set1_ps(x)}; }
|
||||
Vec8 vec8(F32 a, F32 b, F32 c, F32 d, F32 e, F32 f, F32 g, F32 h){ return {_mm256_set_ps(h, g, f, e, d, c, b, a)}; }
|
||||
force_inline Vec8 floor8(Vec8 v){ return {_mm256_floor_ps(v.simd)}; }
|
||||
force_inline Vec8 loadu8(void *m){ return {_mm256_loadu_ps((const float *)m)}; }
|
||||
force_inline Vec8 vec8(F32 x){return {_mm256_set1_ps(x)}; }
|
||||
force_inline Vec8 vec8(F32 a, F32 b, F32 c, F32 d, F32 e, F32 f, F32 g, F32 h){ return {_mm256_set_ps(h, g, f, e, d, c, b, a)}; }
|
||||
Vec8 operator+(Vec8 a, Vec8 b){ return {_mm256_add_ps(a.simd, b.simd)}; }
|
||||
Vec8 operator-(Vec8 a, Vec8 b){ return {_mm256_sub_ps(a.simd, b.simd)}; }
|
||||
Vec8 operator*(Vec8 a, Vec8 b){ return {_mm256_mul_ps(a.simd, b.simd)}; }
|
||||
Vec8 operator/(Vec8 a, Vec8 b){ return {_mm256_div_ps(a.simd, b.simd)}; }
|
||||
Vec8 operator+=(Vec8 &a, Vec8 b){ a = a + b; return a; }
|
||||
Vec8 operator-=(Vec8 &a, Vec8 b){ a = a - b; return a; }
|
||||
|
||||
Vec8 operator>=(Vec8 a, Vec8 b){ return {_mm256_cmp_ps(a.simd, b.simd, _CMP_GE_OQ)}; }
|
||||
Vec8 operator<=(Vec8 a, Vec8 b){ return {_mm256_cmp_ps(a.simd, b.simd, _CMP_LE_OQ)}; }
|
||||
Vec8 operator<(Vec8 a, Vec8 b){ return {_mm256_cmp_ps(a.simd, b.simd, _CMP_LT_OQ)}; }
|
||||
Vec8 operator>(Vec8 a, Vec8 b){ return {_mm256_cmp_ps(a.simd, b.simd, _CMP_GT_OQ)}; }
|
||||
Vec8 operator&(Vec8 a, Vec8 b){ return {_mm256_and_ps(a.simd, b.simd)}; }
|
||||
|
||||
Vec8 operator+=(Vec8 &a, Vec8 b){ a = a + b; return a; }
|
||||
Vec8 operator-=(Vec8 &a, Vec8 b){ a = a - b; return a; }
|
||||
Vec8 operator*=(Vec8 &a, Vec8 b){ a = a * b; return a; }
|
||||
Vec8 operator/=(Vec8 &a, Vec8 b){ a = a / b; return a; }
|
||||
|
||||
union Vec8I{
|
||||
__m256i simd;
|
||||
S32 e[8];
|
||||
@@ -36,3 +41,5 @@ Vec8I operator-(Vec8I a, Vec8I b){ return {_mm256_sub_epi32(a.simd, b.simd)}; }
|
||||
Vec8I operator*(Vec8I a, Vec8I b){ return {_mm256_mul_epi32(a.simd, b.simd)}; }
|
||||
// Vec8I operator/(Vec8I a, Vec8I b){ return {_mm256_div_epi32(a.simd, b.simd)}; }
|
||||
Vec8I operator+=(Vec8I &a, Vec8I b){ return a + b; }
|
||||
|
||||
Vec8I convert_vec8_to_vec8i(Vec8 v){ return Vec8I{_mm256_cvtps_epi32(v.simd)}; }
|
||||
|
||||
Reference in New Issue
Block a user