17 #ifndef ALIHLTVECTOR_H
18 #define ALIHLTVECTOR_H
26 return static_cast<int_v
>(
v ) >= int_v(
Vc::Zero );
31 template<>
inline Vc::int_v Abs <Vc::int_v >(
const Vc::int_v &
x ) {
return Vc::abs(
x ); }
32 #define SPECIALIZATION( T ) \
33 template<> inline Vc::T Min <Vc::T>( const Vc::T &x, const Vc::T &y ) { return Vc::min( x, y ); } \
34 template<> inline Vc::T Max <Vc::T>( const Vc::T &x, const Vc::T &y ) { return Vc::max( x, y ); }
37 #ifndef ENABLE_LARRABEE
41 #endif // ENABLE_LARRABEE
43 #define SPECIALIZATION( T ) \
44 template<> inline T Min <T>( const T &x, const T &y ) { return Vc::min( x, y ); } \
45 template<> inline T Max <T>( const T &x, const T &y ) { return Vc::max( x, y ); } \
46 template<> inline T Sqrt <T>( const T &x ) { return Vc::sqrt( x ); } \
47 template<> inline T Abs <T>( const T &x ) { return Vc::abs( x ); } \
48 template<> inline T Log <T>( const T &x ) { return Vc::log( x ); } \
49 template<> inline T Reciprocal<T>( const T &x ) { return Vc::reciprocal( x ); } \
50 template<> inline T Round<T>( const T &x ) { return Vc::round( x ); } \
51 template<> inline T RSqrt<T>( const T &x ) { return Vc::rsqrt( x ); } \
52 template<> struct FiniteReturnTypeHelper<T> { typedef T::Mask R; }; \
53 template<> inline FiniteReturnTypeHelper<T>::R Finite<T>( const T &x ) { return Vc::isfinite( x ); } \
54 template<> inline T ATan2<T>( const T &x, const T &y ) { return Vc::atan2( x, y ); } \
55 template<> inline T ASin<T> ( const T &x ) { return Vc::asin( x ); } \
56 template<> inline T Sin <T>( const T &x ) { return Vc::sin( x ); } \
57 template<> inline T Cos <T>( const T &x ) { return Vc::cos( x ); }
67 static void AtomicMax(
unsigned int volatile *addr, uint_v
val ) {
68 for (
int i = 0;
i < uint_v::Size; ++
i ) {
69 AtomicMax( &addr[
i], val[i] );
75 #endif // ALIHLTVECTOR_H
#define SPECIALIZATION(T)
Double_t val[nBoxes][nFEBox]
static uint_m validHitIndexes(const uint_v &v)