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)
 
EXPLICIT 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
926 {}
F64vec2::F64vec2 ( __m128d  m)
inline
929 { vec = m;}
__m128d m
Definition: dvec.h:71
__m128d vec
Definition: dvec.h:922
F64vec2::F64vec2 ( double  d1,
double  d0 
)
inline
932 { vec= _mm_set_pd(d1,d0); }
__m128d _mm_set_pd(double _Z, double _Y)
__m128d vec
Definition: dvec.h:922
EXPLICIT F64vec2::F64vec2 ( double  d)
inline
935 { vec = _mm_set1_pd(d); }
__m128d _mm_set1_pd(double _A)
__m128d vec
Definition: dvec.h:922

Member Function Documentation

const F64vec2& b return F64vec2::_mm_min_pd ( ,
 
)
F64vec2::F64vec2_COMI ( eq  ) const
inline
1013  { return _mm_ucomi##op##_sd(a,b); }
1014  F64vec2_UCOMI(eq) /* expanded to ucomieq(a,b) */
1015  F64vec2_UCOMI(lt) /* expanded to ucomilt(a,b) */
1016  F64vec2_UCOMI(le) /* expanded to ucomile(a,b) */
1017  F64vec2_UCOMI(gt) /* expanded to ucomigt(a,b) */
1018  F64vec2_UCOMI(ge) /* expanded to ucomige(a,b) */
1019  F64vec2_UCOMI(neq) /* expanded to ucomineq(a,b) */
1020  #undef F64vec2_UCOMI
1021 
1022  /* Debug Features */
1023 #if defined (_ENABLE_VEC_DEBUG)
1024  /* Output */
1025  friend std::ostream & operator<<(std::ostream & os, const F64vec2 &a)
1026  {
1027  /* To use: cout << "Elements of F64vec2 fvec are: " << fvec; */
1028  double *dp = (double*)&a;
1029  os << "[1]:" << *(dp+1)
1030  << " [0]:" << *dp;
1031  return os;
1032  }
1033 #endif /* defined (_ENABLE_VEC_DEBUG) */
1034  /* Element Access Only, no modifications to elements*/
1035  const double& operator[](int i) const
1036  {
1037  /* Assert enabled only during debug /DDEBUG */
1038  _VEC_ASSERT((0 <= i) && (i <= 1)); /* User should only access elements 0-1 */
1039  double *dp = (double*)&vec;
1040  return *(dp+i);
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)
int i[4]
Definition: dvec.h:70
basic_ostream< char, char_traits< char > > ostream
Definition: iosfwd:678
__m128d vec
Definition: dvec.h:922
double & operator[](int i)
Definition: dvec.h:1043
Definition: dvec.h:919
F64vec2::F64vec2_COMP ( eq  ) const
F64vec2::operator __m128d ( ) const
inline
938 { return vec; } /* Convert to __m128d */
__m128d vec
Definition: dvec.h:922
F64vec2& F64vec2::operator&= ( const F64vec2 a)
inline
955 { return *this = _mm_and_pd(vec,a); }
__m128d _mm_and_pd(__m128d _A, __m128d _B)
__m128d vec
Definition: dvec.h:922
F64vec2& F64vec2::operator*= ( const F64vec2 a)
inline
953 { return *this = _mm_mul_pd(vec,a); }
__m128d vec
Definition: dvec.h:922
__m128d _mm_mul_pd(__m128d _A, __m128d _B)
F64vec2& F64vec2::operator+= ( const F64vec2 a)
inline
951 { return *this = _mm_add_pd(vec,a); }
__m128d _mm_add_pd(__m128d _A, __m128d _B)
__m128d vec
Definition: dvec.h:922
F64vec2& F64vec2::operator-= ( const F64vec2 a)
inline
952 { return *this = _mm_sub_pd(vec,a); }
__m128d vec
Definition: dvec.h:922
__m128d _mm_sub_pd(__m128d _A, __m128d _B)
F64vec2& F64vec2::operator/= ( const F64vec2 a)
inline
954 { return *this = _mm_div_pd(vec,a); }
__m128d _mm_div_pd(__m128d _A, __m128d _B)
__m128d vec
Definition: dvec.h:922
double& F64vec2::operator[] ( int  i)
inline
1044  {
1045  /* Assert enabled only during debug /DDEBUG */
1046  _VEC_ASSERT((0 <= i) && (i <= 1)); /* User should only access elements 0-1 */
1047  double *dp = (double*)&vec;
1048  return *(dp+i);
1049  }
#define _VEC_ASSERT(_Expression)
Definition: dvec.h:53
int i[4]
Definition: dvec.h:70
__m128d vec
Definition: dvec.h:922
F64vec2& F64vec2::operator^= ( const F64vec2 a)
inline
957 { return *this = _mm_xor_pd(vec,a); }
__m128d _mm_xor_pd(__m128d _A, __m128d _B)
__m128d vec
Definition: dvec.h:922
F64vec2& F64vec2::operator|= ( const F64vec2 a)
inline
956 { return *this = _mm_or_pd(vec,a); }
__m128d _mm_or_pd(__m128d _A, __m128d _B)
__m128d vec
Definition: dvec.h:922

Friends And Related Function Documentation

F64vec2 abs ( const F64vec2 a)
friend
996  {
997  return _mm_and_pd(a, _f64vec2_abs_mask);
998  }
#define _f64vec2_abs_mask
Definition: dvec.h:74
__m128d _mm_and_pd(__m128d _A, __m128d _B)
double add_horizontal ( const F64vec2 a)
friend
961  {
962  F64vec2 ftemp = _mm_add_sd(a,_mm_shuffle_pd(a, a, 1));
963  return _mm_cvtsd_f64(ftemp);
964  }
double _mm_cvtsd_f64(__m128d _A)
__m128d _mm_shuffle_pd(__m128d _A, __m128d _B, int _I)
Definition: dvec.h:919
__m128d _mm_add_sd(__m128d _A, __m128d _B)
F64vec2 andnot ( const F64vec2 a,
const F64vec2 b 
)
friend
967 { return _mm_andnot_pd(a,b); }
__m128d _mm_andnot_pd(__m128d _A, __m128d _B)
F64vec2 operator& ( const F64vec2 a,
const F64vec2 b 
)
friend
941 { return _mm_and_pd(a,b); }
__m128d _mm_and_pd(__m128d _A, __m128d _B)
F64vec2 operator* ( const F64vec2 a,
const F64vec2 b 
)
friend
948 { return _mm_mul_pd(a,b); }
__m128d _mm_mul_pd(__m128d _A, __m128d _B)
F64vec2 operator+ ( const F64vec2 a,
const F64vec2 b 
)
friend
946 { return _mm_add_pd(a,b); }
__m128d _mm_add_pd(__m128d _A, __m128d _B)
F64vec2 operator- ( const F64vec2 a,
const F64vec2 b 
)
friend
947 { return _mm_sub_pd(a,b); }
__m128d _mm_sub_pd(__m128d _A, __m128d _B)
F64vec2 operator/ ( const F64vec2 a,
const F64vec2 b 
)
friend
949 { return _mm_div_pd(a,b); }
__m128d _mm_div_pd(__m128d _A, __m128d _B)
F64vec2 operator^ ( const F64vec2 a,
const F64vec2 b 
)
friend
943 { return _mm_xor_pd(a,b); }
__m128d _mm_xor_pd(__m128d _A, __m128d _B)
F64vec2 operator| ( const F64vec2 a,
const F64vec2 b 
)
friend
942 { return _mm_or_pd(a,b); }
__m128d _mm_or_pd(__m128d _A, __m128d _B)
F64vec2 simd_max ( const F64vec2 a,
const F64vec2 b 
)
friend
992 { return _mm_max_pd(a,b); }
__m128d _mm_max_pd(__m128d _A, __m128d _B)
F64vec2 sqrt ( const F64vec2 a)
friend
970 { 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: