29 #ifndef ALIHLTVECTOR_H 30 #define ALIHLTVECTOR_H 37 return static_cast<int_v
>(
v) >= int_v(Vc::Zero);
42 inline Vc::int_v Abs<Vc::int_v>(
const Vc::int_v &x)
46 #define SPECIALIZATION(T) \ 48 inline Vc::T Min<Vc::T>(const Vc::T &x, const Vc::T &y) \ 50 return Vc::min(x, y); \ 53 inline Vc::T Max<Vc::T>(const Vc::T &x, const Vc::T &y) \ 55 return Vc::max(x, y); \ 59 #ifndef ENABLE_LARRABEE 63 #endif // ENABLE_LARRABEE 65 #define SPECIALIZATION(T) \ 67 inline T Min<T>(const T &x, const T &y) \ 69 return Vc::min(x, y); \ 72 inline T Max<T>(const T &x, const T &y) \ 74 return Vc::max(x, y); \ 77 inline T Sqrt<T>(const T &x) \ 82 inline T Abs<T>(const T &x) \ 87 inline T Log<T>(const T &x) \ 92 inline T Reciprocal<T>(const T &x) \ 94 return Vc::reciprocal(x); \ 97 inline T Round<T>(const T &x) \ 99 return Vc::round(x); \ 102 inline T RSqrt<T>(const T &x) \ 104 return Vc::rsqrt(x); \ 107 struct FiniteReturnTypeHelper<T> { \ 111 inline FiniteReturnTypeHelper<T>::R Finite<T>(const T &x) \ 113 return Vc::isfinite(x); \ 116 inline T ATan2<T>(const T &x, const T &y) \ 118 return Vc::atan2(x, y); \ 121 inline T ASin<T>(const T &x) \ 123 return Vc::asin(x); \ 126 inline T Sin<T>(const T &x) \ 131 inline T Cos<T>(const T &x) \ 139 #endif // VC_IMPL_SSE 141 #undef SPECIALIZATION 144 static void AtomicMax(
unsigned int volatile *addr, uint_v val)
146 for (
int i = 0;
i < uint_v::Size; ++
i) {
147 AtomicMax(&addr[
i], val[i]);
153 #endif // ALIHLTVECTOR_H
#define SPECIALIZATION(T)
static uint_m validHitIndexes(const uint_v &v)