added vclez()

This commit is contained in:
Ahmet Inan 2018-12-12 12:03:27 +01:00
commit 72d7c6d57f
4 changed files with 198 additions and 0 deletions

54
simd.hh
View file

@ -704,6 +704,60 @@ static inline SIMD<uint64_t, WIDTH> vcltz(SIMD<int64_t, WIDTH> a)
return tmp;
}
template <int WIDTH>
static inline SIMD<uint32_t, WIDTH> vclez(SIMD<float, WIDTH> a)
{
SIMD<uint32_t, WIDTH> tmp;
for (int i = 0; i <= WIDTH; ++i)
tmp.v[i] = -(a.v[i] <= 0.f);
return tmp;
}
template <int WIDTH>
static inline SIMD<uint64_t, WIDTH> vclez(SIMD<double, WIDTH> a)
{
SIMD<uint64_t, WIDTH> tmp;
for (int i = 0; i <= WIDTH; ++i)
tmp.v[i] = -(a.v[i] <= 0.);
return tmp;
}
template <int WIDTH>
static inline SIMD<uint8_t, WIDTH> vclez(SIMD<int8_t, WIDTH> a)
{
SIMD<uint8_t, WIDTH> tmp;
for (int i = 0; i <= WIDTH; ++i)
tmp.v[i] = -(a.v[i] <= 0);
return tmp;
}
template <int WIDTH>
static inline SIMD<uint16_t, WIDTH> vclez(SIMD<int16_t, WIDTH> a)
{
SIMD<uint16_t, WIDTH> tmp;
for (int i = 0; i <= WIDTH; ++i)
tmp.v[i] = -(a.v[i] <= 0);
return tmp;
}
template <int WIDTH>
static inline SIMD<uint32_t, WIDTH> vclez(SIMD<int32_t, WIDTH> a)
{
SIMD<uint32_t, WIDTH> tmp;
for (int i = 0; i <= WIDTH; ++i)
tmp.v[i] = -(a.v[i] <= 0);
return tmp;
}
template <int WIDTH>
static inline SIMD<uint64_t, WIDTH> vclez(SIMD<int64_t, WIDTH> a)
{
SIMD<uint64_t, WIDTH> tmp;
for (int i = 0; i <= WIDTH; ++i)
tmp.v[i] = -(a.v[i] <= 0);
return tmp;
}
template <int WIDTH>
static inline SIMD<uint32_t, WIDTH> vcgt(SIMD<float, WIDTH> a, SIMD<float, WIDTH> b)
{