STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Protected Attributes | Friends | List of all members
F64vec2 Class Reference

#include <dvec.h>

Public Member Functions

 F64vec2 ()
 
 F64vec2 (__m128d _M)
 
 F64vec2 (double _D1, double _D0)
 
 F64vec2 (double _D)
 
 operator __m128d () const
 
F64vec2operator+= (const F64vec2 &_A)
 
F64vec2operator-= (const F64vec2 &_A)
 
F64vec2operator*= (const F64vec2 &_A)
 
F64vec2operator/= (const F64vec2 &_A)
 
F64vec2operator&= (const F64vec2 &_A)
 
F64vec2operator|= (const F64vec2 &_A)
 
F64vec2operator^= (const F64vec2 &_A)
 
 F64vec2_COMP (eq) F64vec2_COMP(lt) F64vec2_COMP(le) F64vec2_COMP(gt) F64vec2_COMP(ge) F64vec2_COMP(ngt) F64vec2_COMP(nge) F64vec2_COMP(neq) F64vec2_COMP(nlt) F64vec2_COMP(nle) friend F64vec2 simd_min(const F64vec2 &_A
 
const F64vec2 &_B return _mm_min_pd (_A, _B)
 
 F64vec2_COMI (eq) F64vec2_COMI(lt) F64vec2_COMI(le) F64vec2_COMI(gt) F64vec2_COMI(ge) F64vec2_COMI(neq) F64vec2_UCOMI(eq) F64vec2_UCOMI(lt) F64vec2_UCOMI(le) F64vec2_UCOMI(gt) F64vec2_UCOMI(ge) F64vec2_UCOMI(neq) const double &operator[](int _I) const
 
double & operator[] (int _I)
 

Protected Attributes

__m128d vec
 

Friends

F64vec2 operator& (const F64vec2 &_A, const F64vec2 &_B)
 
F64vec2 operator| (const F64vec2 &_A, const F64vec2 &_B)
 
F64vec2 operator^ (const F64vec2 &_A, const F64vec2 &_B)
 
F64vec2 operator+ (const F64vec2 &_A, const F64vec2 &_B)
 
F64vec2 operator- (const F64vec2 &_A, const F64vec2 &_B)
 
F64vec2 operator* (const F64vec2 &_A, const F64vec2 &_B)
 
F64vec2 operator/ (const F64vec2 &_A, const F64vec2 &_B)
 
double add_horizontal (const F64vec2 &_A)
 
F64vec2 andnot (const F64vec2 &_A, const F64vec2 &_B)
 
F64vec2 sqrt (const F64vec2 &_A)
 
F64vec2 simd_max (const F64vec2 &_A, const F64vec2 &_B)
 
F64vec2 abs (const F64vec2 &_A)
 

Constructor & Destructor Documentation

F64vec2::F64vec2 ( )
inline
924 {}
F64vec2::F64vec2 ( __m128d  _M)
inline
927 { vec = _M;}
__m128d vec
Definition: dvec.h:920
F64vec2::F64vec2 ( double  _D1,
double  _D0 
)
inline
930 { vec= _mm_set_pd(_D1,_D0); }
__m128d _mm_set_pd(double _Z, double _Y)
__m128d vec
Definition: dvec.h:920
F64vec2::F64vec2 ( double  _D)
inlineexplicit
933 { vec = _mm_set1_pd(_D); }
__m128d _mm_set1_pd(double _A)
__m128d vec
Definition: dvec.h:920

Member Function Documentation

const F64vec2& _B return F64vec2::_mm_min_pd ( _A  ,
_B   
)
F64vec2::F64vec2_COMI ( eq  ) const
inline
1011  { return _mm_ucomi##op##_sd(_A,_B); }
1012  F64vec2_UCOMI(eq) /* expanded to ucomieq(_A,_B) */
1013  F64vec2_UCOMI(lt) /* expanded to ucomilt(_A,_B) */
1014  F64vec2_UCOMI(le) /* expanded to ucomile(_A,_B) */
1015  F64vec2_UCOMI(gt) /* expanded to ucomigt(_A,_B) */
1016  F64vec2_UCOMI(ge) /* expanded to ucomige(_A,_B) */
1017  F64vec2_UCOMI(neq) /* expanded to ucomineq(_A,_B) */
1018  #undef F64vec2_UCOMI
1019 
1020  /* Debug Features */
1021 #if defined (_ENABLE_VEC_DEBUG)
1022  /* Output */
1023  friend std::ostream & operator<<(std::ostream & _Os, const F64vec2 &_A)
1024  {
1025  /* To use: cout << "Elements of F64vec2 fvec are: " << fvec; */
1026  double *_Dp = (double*)&_A;
1027  _Os << "[1]:" << *(_Dp+1)
1028  << " [0]:" << *_Dp;
1029  return _Os;
1030  }
1031 #endif /* defined (_ENABLE_VEC_DEBUG) */
1032  /* Element Access Only, no modifications to elements*/
1033  const double& operator[](int _I) const
1034  {
1035  /* Assert enabled only during debug /DDEBUG */
1036  _VEC_ASSERT((0 <= _I) && (_I <= 1)); /* User should only access elements 0-1 */
1037  double *_Dp = (double*)&vec;
1038  return *(_Dp+ _I);
1039  }
double & operator[](int _I)
Definition: dvec.h:1041
#define _VEC_ASSERT(_Expression)
Definition: dvec.h:53
uint_2 operator<<(const uint_2 &_Lhs, const uint_2 &_Rhs) __GPU
Definition: amp_short_vectors.h:22866
#define F64vec2_UCOMI(op)
basic_ostream< char, char_traits< char > > ostream
Definition: iosfwd:679
__m128d vec
Definition: dvec.h:920
Definition: dvec.h:917
F64vec2::F64vec2_COMP ( eq  ) const
F64vec2::operator __m128d ( ) const
inline
936 { return vec; } /* Convert to __m128d */
__m128d vec
Definition: dvec.h:920
F64vec2& F64vec2::operator&= ( const F64vec2 _A)
inline
953 { return *this = _mm_and_pd(vec,_A); }
__m128d _mm_and_pd(__m128d _A, __m128d _B)
__m128d vec
Definition: dvec.h:920
F64vec2& F64vec2::operator*= ( const F64vec2 _A)
inline
951 { return *this = _mm_mul_pd(vec,_A); }
__m128d vec
Definition: dvec.h:920
__m128d _mm_mul_pd(__m128d _A, __m128d _B)
F64vec2& F64vec2::operator+= ( const F64vec2 _A)
inline
949 { return *this = _mm_add_pd(vec,_A); }
__m128d _mm_add_pd(__m128d _A, __m128d _B)
__m128d vec
Definition: dvec.h:920
F64vec2& F64vec2::operator-= ( const F64vec2 _A)
inline
950 { return *this = _mm_sub_pd(vec,_A); }
__m128d vec
Definition: dvec.h:920
__m128d _mm_sub_pd(__m128d _A, __m128d _B)
F64vec2& F64vec2::operator/= ( const F64vec2 _A)
inline
952 { return *this = _mm_div_pd(vec,_A); }
__m128d _mm_div_pd(__m128d _A, __m128d _B)
__m128d vec
Definition: dvec.h:920
double& F64vec2::operator[] ( int  _I)
inline
1042  {
1043  /* Assert enabled only during debug /DDEBUG */
1044  _VEC_ASSERT((0 <= _I) && (_I <= 1)); /* User should only access elements 0-1 */
1045  double *_Dp = (double*)&vec;
1046  return *(_Dp+ _I);
1047  }
#define _VEC_ASSERT(_Expression)
Definition: dvec.h:53
__m128d vec
Definition: dvec.h:920
F64vec2& F64vec2::operator^= ( const F64vec2 _A)
inline
955 { return *this = _mm_xor_pd(vec,_A); }
__m128d _mm_xor_pd(__m128d _A, __m128d _B)
__m128d vec
Definition: dvec.h:920
F64vec2& F64vec2::operator|= ( const F64vec2 _A)
inline
954 { return *this = _mm_or_pd(vec,_A); }
__m128d _mm_or_pd(__m128d _A, __m128d _B)
__m128d vec
Definition: dvec.h:920

Friends And Related Function Documentation

F64vec2 abs ( const F64vec2 _A)
friend
994  {
995  return _mm_and_pd(_A, _f64vec2_abs_mask);
996  }
#define _f64vec2_abs_mask
Definition: dvec.h:72
__m128d _mm_and_pd(__m128d _A, __m128d _B)
double add_horizontal ( const F64vec2 _A)
friend
959  {
960  F64vec2 _Ftemp = _mm_add_sd(_A,_mm_shuffle_pd(_A, _A, 1));
961  return _mm_cvtsd_f64(_Ftemp);
962  }
double _mm_cvtsd_f64(__m128d _A)
__m128d _mm_shuffle_pd(__m128d _A, __m128d _B, int _I)
Definition: dvec.h:917
__m128d _mm_add_sd(__m128d _A, __m128d _B)
F64vec2 andnot ( const F64vec2 _A,
const F64vec2 _B 
)
friend
965 { return _mm_andnot_pd(_A,_B); }
__m128d _mm_andnot_pd(__m128d _A, __m128d _B)
F64vec2 operator& ( const F64vec2 _A,
const F64vec2 _B 
)
friend
939 { return _mm_and_pd(_A,_B); }
__m128d _mm_and_pd(__m128d _A, __m128d _B)
F64vec2 operator* ( const F64vec2 _A,
const F64vec2 _B 
)
friend
946 { return _mm_mul_pd(_A,_B); }
__m128d _mm_mul_pd(__m128d _A, __m128d _B)
F64vec2 operator+ ( const F64vec2 _A,
const F64vec2 _B 
)
friend
944 { return _mm_add_pd(_A,_B); }
__m128d _mm_add_pd(__m128d _A, __m128d _B)
F64vec2 operator- ( const F64vec2 _A,
const F64vec2 _B 
)
friend
945 { return _mm_sub_pd(_A,_B); }
__m128d _mm_sub_pd(__m128d _A, __m128d _B)
F64vec2 operator/ ( const F64vec2 _A,
const F64vec2 _B 
)
friend
947 { return _mm_div_pd(_A,_B); }
__m128d _mm_div_pd(__m128d _A, __m128d _B)
F64vec2 operator^ ( const F64vec2 _A,
const F64vec2 _B 
)
friend
941 { return _mm_xor_pd(_A,_B); }
__m128d _mm_xor_pd(__m128d _A, __m128d _B)
F64vec2 operator| ( const F64vec2 _A,
const F64vec2 _B 
)
friend
940 { return _mm_or_pd(_A,_B); }
__m128d _mm_or_pd(__m128d _A, __m128d _B)
F64vec2 simd_max ( const F64vec2 _A,
const F64vec2 _B 
)
friend
990 { return _mm_max_pd(_A,_B); }
__m128d _mm_max_pd(__m128d _A, __m128d _B)
F64vec2 sqrt ( const F64vec2 _A)
friend
968 { return _mm_sqrt_pd(_A); }
__m128d _mm_sqrt_pd(__m128d _A)

Member Data Documentation

__m128d F64vec2::vec
protected

The documentation for this class was generated from the following file: