ReactOS 0.4.15-dev-7953-g1f49173
dvec.h File Reference
#include <emmintrin.h>
#include <assert.h>
#include <fvec.h>
#include <crtdefs.h>
Include dependency graph for dvec.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  M128
 
class  I128vec1
 
class  I64vec2
 
class  I32vec4
 
class  Is32vec4
 
class  Iu32vec4
 
class  I16vec8
 
class  Is16vec8
 
class  Iu16vec8
 
class  I8vec16
 
class  Is8vec16
 
class  Iu8vec16
 
class  F64vec2
 

Macros

#define EXPLICIT   explicit
 
#define _MM_16UB(element, vector)   (*((unsigned char*)&##vector + ##element))
 
#define _MM_16B(element, vector)   (*((signed char*)&##vector + ##element))
 
#define _MM_8UW(element, vector)   (*((unsigned short*)&##vector + ##element))
 
#define _MM_8W(element, vector)   (*((short*)&##vector + ##element))
 
#define _MM_4UDW(element, vector)   (*((unsigned int*)&##vector + ##element))
 
#define _MM_4DW(element, vector)   (*((int*)&##vector + ##element))
 
#define _MM_2QW(element, vector)   (*((__int64*)&##vector + ##element))
 
#define IVEC128_LOGICALS(vect, element)   inline I##vect##vec##element operator& (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_and_si128(a,b); } inline I##vect##vec##element operator| (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_or_si128(a,b); } inline I##vect##vec##element operator^ (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_xor_si128(a,b); } inline I##vect##vec##element andnot (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_andnot_si128(a,b); }
 
#define IVEC128_ADD_SUB(vect, element, opsize)   inline I##vect##vec##element operator+ (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_add_##opsize(a,b); } inline I##vect##vec##element operator- (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_sub_##opsize(a,b); }
 
#define IVEC128_SELECT(vect12, vect34, element, selop, arg1, arg2)   inline I##vect34##vec##element select_##selop (const I##vect12##vec##element &a,const I##vect12##vec##element &b,const I##vect34##vec##element &c,const I##vect34##vec##element &d) { I##vect12##vec##element mask = cmp##selop(a,b); return(I##vect34##vec##element ((mask & arg1) | I##vect12##vec##element ((_mm_andnot_si128(mask,arg2))))); }
 
#define F64vec2_COMP(op)   friend F64vec2 cmp##op (const F64vec2 &a,const F64vec2 &b) { return _mm_cmp##op##_pd(a,b); }
 
#define F64vec2_COMI(op)   friend int comi##op (const F64vec2 &a,const F64vec2 &b) { return _mm_comi##op##_sd(a,b); }
 
#define F64vec2_UCOMI(op)   friend int ucomi##op (const F64vec2 &a,const F64vec2 &b) { return _mm_ucomi##op##_sd(a,b); }
 
#define F64vec2_SELECT(op)   inline F64vec2 select_##op (const F64vec2 &a,const F64vec2 &b,const F64vec2 &c,const F64vec2 &d) { F64vec2 mask = _mm_cmp##op##_pd(a,b); return((mask & c) | F64vec2((_mm_andnot_pd(mask,d)))); }
 

Functions

const __m128i get_mask128 ()
 
M128 operator& (const M128 &a, const M128 &b)
 
M128 operator| (const M128 &a, const M128 &b)
 
M128 operator^ (const M128 &a, const M128 &b)
 
M128 andnot (const M128 &a, const M128 &b)
 
I64vec2 unpack_low (const I64vec2 &a, const I64vec2 &b)
 
I64vec2 unpack_high (const I64vec2 &a, const I64vec2 &b)
 
I32vec4 cmpeq (const I32vec4 &a, const I32vec4 &b)
 
I32vec4 cmpneq (const I32vec4 &a, const I32vec4 &b)
 
I32vec4 unpack_low (const I32vec4 &a, const I32vec4 &b)
 
I32vec4 unpack_high (const I32vec4 &a, const I32vec4 &b)
 
Is32vec4 cmpeq (const Is32vec4 &a, const Is32vec4 &b)
 
Is32vec4 cmpneq (const Is32vec4 &a, const Is32vec4 &b)
 
Is32vec4 cmpgt (const Is32vec4 &a, const Is32vec4 &b)
 
Is32vec4 cmplt (const Is32vec4 &a, const Is32vec4 &b)
 
Is32vec4 unpack_low (const Is32vec4 &a, const Is32vec4 &b)
 
Is32vec4 unpack_high (const Is32vec4 &a, const Is32vec4 &b)
 
I64vec2 operator* (const Iu32vec4 &a, const Iu32vec4 &b)
 
Iu32vec4 cmpeq (const Iu32vec4 &a, const Iu32vec4 &b)
 
Iu32vec4 cmpneq (const Iu32vec4 &a, const Iu32vec4 &b)
 
Iu32vec4 unpack_low (const Iu32vec4 &a, const Iu32vec4 &b)
 
Iu32vec4 unpack_high (const Iu32vec4 &a, const Iu32vec4 &b)
 
I16vec8 operator* (const I16vec8 &a, const I16vec8 &b)
 
I16vec8 cmpeq (const I16vec8 &a, const I16vec8 &b)
 
I16vec8 cmpneq (const I16vec8 &a, const I16vec8 &b)
 
I16vec8 unpack_low (const I16vec8 &a, const I16vec8 &b)
 
I16vec8 unpack_high (const I16vec8 &a, const I16vec8 &b)
 
Is16vec8 operator* (const Is16vec8 &a, const Is16vec8 &b)
 
Is16vec8 cmpeq (const Is16vec8 &a, const Is16vec8 &b)
 
Is16vec8 cmpneq (const Is16vec8 &a, const Is16vec8 &b)
 
Is16vec8 cmpgt (const Is16vec8 &a, const Is16vec8 &b)
 
Is16vec8 cmplt (const Is16vec8 &a, const Is16vec8 &b)
 
Is16vec8 unpack_low (const Is16vec8 &a, const Is16vec8 &b)
 
Is16vec8 unpack_high (const Is16vec8 &a, const Is16vec8 &b)
 
Is16vec8 mul_high (const Is16vec8 &a, const Is16vec8 &b)
 
Is32vec4 mul_add (const Is16vec8 &a, const Is16vec8 &b)
 
Is16vec8 sat_add (const Is16vec8 &a, const Is16vec8 &b)
 
Is16vec8 sat_sub (const Is16vec8 &a, const Is16vec8 &b)
 
Is16vec8 simd_max (const Is16vec8 &a, const Is16vec8 &b)
 
Is16vec8 simd_min (const Is16vec8 &a, const Is16vec8 &b)
 
Iu16vec8 operator* (const Iu16vec8 &a, const Iu16vec8 &b)
 
Iu16vec8 cmpeq (const Iu16vec8 &a, const Iu16vec8 &b)
 
Iu16vec8 cmpneq (const Iu16vec8 &a, const Iu16vec8 &b)
 
Iu16vec8 unpack_low (const Iu16vec8 &a, const Iu16vec8 &b)
 
Iu16vec8 unpack_high (const Iu16vec8 &a, const Iu16vec8 &b)
 
Iu16vec8 sat_add (const Iu16vec8 &a, const Iu16vec8 &b)
 
Iu16vec8 sat_sub (const Iu16vec8 &a, const Iu16vec8 &b)
 
Iu16vec8 simd_avg (const Iu16vec8 &a, const Iu16vec8 &b)
 
I16vec8 mul_high (const Iu16vec8 &a, const Iu16vec8 &b)
 
I8vec16 cmpeq (const I8vec16 &a, const I8vec16 &b)
 
I8vec16 cmpneq (const I8vec16 &a, const I8vec16 &b)
 
I8vec16 unpack_low (const I8vec16 &a, const I8vec16 &b)
 
I8vec16 unpack_high (const I8vec16 &a, const I8vec16 &b)
 
Is8vec16 cmpeq (const Is8vec16 &a, const Is8vec16 &b)
 
Is8vec16 cmpneq (const Is8vec16 &a, const Is8vec16 &b)
 
Is8vec16 cmpgt (const Is8vec16 &a, const Is8vec16 &b)
 
Is8vec16 cmplt (const Is8vec16 &a, const Is8vec16 &b)
 
Is8vec16 unpack_low (const Is8vec16 &a, const Is8vec16 &b)
 
Is8vec16 unpack_high (const Is8vec16 &a, const Is8vec16 &b)
 
Is8vec16 sat_add (const Is8vec16 &a, const Is8vec16 &b)
 
Is8vec16 sat_sub (const Is8vec16 &a, const Is8vec16 &b)
 
Iu8vec16 cmpeq (const Iu8vec16 &a, const Iu8vec16 &b)
 
Iu8vec16 cmpneq (const Iu8vec16 &a, const Iu8vec16 &b)
 
Iu8vec16 unpack_low (const Iu8vec16 &a, const Iu8vec16 &b)
 
Iu8vec16 unpack_high (const Iu8vec16 &a, const Iu8vec16 &b)
 
Iu8vec16 sat_add (const Iu8vec16 &a, const Iu8vec16 &b)
 
Iu8vec16 sat_sub (const Iu8vec16 &a, const Iu8vec16 &b)
 
I64vec2 sum_abs (const Iu8vec16 &a, const Iu8vec16 &b)
 
Iu8vec16 simd_avg (const Iu8vec16 &a, const Iu8vec16 &b)
 
Iu8vec16 simd_max (const Iu8vec16 &a, const Iu8vec16 &b)
 
Iu8vec16 simd_min (const Iu8vec16 &a, const Iu8vec16 &b)
 
Is16vec8 pack_sat (const Is32vec4 &a, const Is32vec4 &b)
 
Is8vec16 pack_sat (const Is16vec8 &a, const Is16vec8 &b)
 
Iu8vec16 packu_sat (const Is16vec8 &a, const Is16vec8 &b)
 
F64vec2 unpack_low (const F64vec2 &a, const F64vec2 &b)
 
F64vec2 unpack_high (const F64vec2 &a, const F64vec2 &b)
 
int move_mask (const F64vec2 &a)
 
void loadu (F64vec2 &a, double *p)
 
void storeu (double *p, const F64vec2 &a)
 
void store_nta (double *p, F64vec2 &a)
 
 F64vec2_SELECT (eq) F64vec2_SELECT(lt) F64vec2_SELECT(le) F64vec2_SELECT(gt) F64vec2_SELECT(ge) F64vec2_SELECT(neq) F64vec2_SELECT(nlt) F64vec2_SELECT(nle) inline int F64vec2ToInt(const F64vec2 &a)
 
F64vec2 F32vec4ToF64vec2 (const F32vec4 &a)
 
F32vec4 F64vec2ToF32vec4 (const F64vec2 &a)
 
F64vec2 IntToF64vec2 (const F64vec2 &a, int b)
 

Macro Definition Documentation

◆ _MM_16B

#define _MM_16B (   element,
  vector 
)    (*((signed char*)&##vector + ##element))

Definition at line 42 of file dvec.h.

◆ _MM_16UB

#define _MM_16UB (   element,
  vector 
)    (*((unsigned char*)&##vector + ##element))

Definition at line 41 of file dvec.h.

◆ _MM_2QW

#define _MM_2QW (   element,
  vector 
)    (*((__int64*)&##vector + ##element))

Definition at line 50 of file dvec.h.

◆ _MM_4DW

#define _MM_4DW (   element,
  vector 
)    (*((int*)&##vector + ##element))

Definition at line 48 of file dvec.h.

◆ _MM_4UDW

#define _MM_4UDW (   element,
  vector 
)    (*((unsigned int*)&##vector + ##element))

Definition at line 47 of file dvec.h.

◆ _MM_8UW

#define _MM_8UW (   element,
  vector 
)    (*((unsigned short*)&##vector + ##element))

Definition at line 44 of file dvec.h.

◆ _MM_8W

#define _MM_8W (   element,
  vector 
)    (*((short*)&##vector + ##element))

Definition at line 45 of file dvec.h.

◆ EXPLICIT

#define EXPLICIT   explicit

This file has no copyright assigned and is placed in the Public Domain. This file is part of the w64 mingw-runtime package. No warranty is given; refer to the file DISCLAIMER within this package.

Definition at line 27 of file dvec.h.

◆ F64vec2_COMI

#define F64vec2_COMI (   op)    friend int comi##op (const F64vec2 &a,const F64vec2 &b) { return _mm_comi##op##_sd(a,b); }

Definition at line 776 of file dvec.h.

◆ F64vec2_COMP

#define F64vec2_COMP (   op)    friend F64vec2 cmp##op (const F64vec2 &a,const F64vec2 &b) { return _mm_cmp##op##_pd(a,b); }

Definition at line 760 of file dvec.h.

◆ F64vec2_SELECT

#define F64vec2_SELECT (   op)    inline F64vec2 select_##op (const F64vec2 &a,const F64vec2 &b,const F64vec2 &c,const F64vec2 &d) { F64vec2 mask = _mm_cmp##op##_pd(a,b); return((mask & c) | F64vec2((_mm_andnot_pd(mask,d)))); }

Definition at line 824 of file dvec.h.

◆ F64vec2_UCOMI

#define F64vec2_UCOMI (   op)    friend int ucomi##op (const F64vec2 &a,const F64vec2 &b) { return _mm_ucomi##op##_sd(a,b); }

◆ IVEC128_ADD_SUB

#define IVEC128_ADD_SUB (   vect,
  element,
  opsize 
)    inline I##vect##vec##element operator+ (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_add_##opsize(a,b); } inline I##vect##vec##element operator- (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_sub_##opsize(a,b); }

Definition at line 665 of file dvec.h.

◆ IVEC128_LOGICALS

#define IVEC128_LOGICALS (   vect,
  element 
)    inline I##vect##vec##element operator& (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_and_si128(a,b); } inline I##vect##vec##element operator| (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_or_si128(a,b); } inline I##vect##vec##element operator^ (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_xor_si128(a,b); } inline I##vect##vec##element andnot (const I##vect##vec##element &a,const I##vect##vec##element &b) { return _mm_andnot_si128(a,b); }

Definition at line 650 of file dvec.h.

◆ IVEC128_SELECT

#define IVEC128_SELECT (   vect12,
  vect34,
  element,
  selop,
  arg1,
  arg2 
)    inline I##vect34##vec##element select_##selop (const I##vect12##vec##element &a,const I##vect12##vec##element &b,const I##vect34##vec##element &c,const I##vect34##vec##element &d) { I##vect12##vec##element mask = cmp##selop(a,b); return(I##vect34##vec##element ((mask & arg1) | I##vect12##vec##element ((_mm_andnot_si128(mask,arg2))))); }

Definition at line 679 of file dvec.h.

Function Documentation

◆ andnot()

M128 andnot ( const M128 a,
const M128 b 
)
inline

Definition at line 78 of file dvec.h.

78{ return _mm_andnot_si128(a,b); }
__m128i _mm_andnot_si128(__m128i a, __m128i b)
Definition: emmintrin.h:1326
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204

◆ cmpeq() [1/9]

I16vec8 cmpeq ( const I16vec8 a,
const I16vec8 b 
)
inline

Definition at line 321 of file dvec.h.

321{ return _mm_cmpeq_epi16(a,b); }
__m128i _mm_cmpeq_epi16(__m128i a, __m128i b)
Definition: emmintrin.h:1432

◆ cmpeq() [2/9]

I32vec4 cmpeq ( const I32vec4 a,
const I32vec4 b 
)
inline

Definition at line 162 of file dvec.h.

162{ return _mm_cmpeq_epi32(a,b); }
__m128i _mm_cmpeq_epi32(__m128i a, __m128i b)
Definition: emmintrin.h:1437

◆ cmpeq() [3/9]

I8vec16 cmpeq ( const I8vec16 a,
const I8vec16 b 
)
inline

Definition at line 508 of file dvec.h.

508{ return _mm_cmpeq_epi8(a,b); }
__m128i _mm_cmpeq_epi8(__m128i a, __m128i b)
Definition: emmintrin.h:1427

◆ cmpeq() [4/9]

Is16vec8 cmpeq ( const Is16vec8 a,
const Is16vec8 b 
)
inline

Definition at line 395 of file dvec.h.

395{ return _mm_cmpeq_epi16(a,b); }

◆ cmpeq() [5/9]

Is32vec4 cmpeq ( const Is32vec4 a,
const Is32vec4 b 
)
inline

Definition at line 225 of file dvec.h.

225{ return _mm_cmpeq_epi32(a,b); }

◆ cmpeq() [6/9]

Is8vec16 cmpeq ( const Is8vec16 a,
const Is8vec16 b 
)
inline

Definition at line 567 of file dvec.h.

567{ return _mm_cmpeq_epi8(a,b); }

◆ cmpeq() [7/9]

Iu16vec8 cmpeq ( const Iu16vec8 a,
const Iu16vec8 b 
)
inline

Definition at line 479 of file dvec.h.

479{ return _mm_cmpeq_epi16(a,b); }

◆ cmpeq() [8/9]

Iu32vec4 cmpeq ( const Iu32vec4 a,
const Iu32vec4 b 
)
inline

Definition at line 290 of file dvec.h.

290{ return _mm_cmpeq_epi32(a,b); }

◆ cmpeq() [9/9]

Iu8vec16 cmpeq ( const Iu8vec16 a,
const Iu8vec16 b 
)
inline

Definition at line 631 of file dvec.h.

631{ return _mm_cmpeq_epi8(a,b); }

◆ cmpgt() [1/3]

Is16vec8 cmpgt ( const Is16vec8 a,
const Is16vec8 b 
)
inline

Definition at line 397 of file dvec.h.

397{ return _mm_cmpgt_epi16(a,b); }
__m128i _mm_cmpgt_epi16(__m128i a, __m128i b)
Definition: emmintrin.h:1449

◆ cmpgt() [2/3]

Is32vec4 cmpgt ( const Is32vec4 a,
const Is32vec4 b 
)
inline

Definition at line 227 of file dvec.h.

227{ return _mm_cmpgt_epi32(a,b); }
__m128i _mm_cmpgt_epi32(__m128i a, __m128i b)
Definition: emmintrin.h:1454

◆ cmpgt() [3/3]

Is8vec16 cmpgt ( const Is8vec16 a,
const Is8vec16 b 
)
inline

Definition at line 569 of file dvec.h.

569{ return _mm_cmpgt_epi8(a,b); }
__m128i _mm_cmpgt_epi8(__m128i a, __m128i b)
Definition: emmintrin.h:1442

◆ cmplt() [1/3]

Is16vec8 cmplt ( const Is16vec8 a,
const Is16vec8 b 
)
inline

Definition at line 398 of file dvec.h.

398{ return _mm_cmpgt_epi16(b,a); }

◆ cmplt() [2/3]

Is32vec4 cmplt ( const Is32vec4 a,
const Is32vec4 b 
)
inline

Definition at line 228 of file dvec.h.

228{ return _mm_cmpgt_epi32(b,a); }

◆ cmplt() [3/3]

Is8vec16 cmplt ( const Is8vec16 a,
const Is8vec16 b 
)
inline

Definition at line 570 of file dvec.h.

570{ return _mm_cmplt_epi8(a,b); }
__m128i _mm_cmplt_epi8(__m128i a, __m128i b)
Definition: emmintrin.h:1459

◆ cmpneq() [1/9]

I16vec8 cmpneq ( const I16vec8 a,
const I16vec8 b 
)
inline

Definition at line 322 of file dvec.h.

const __m128i get_mask128()
Definition: dvec.h:52

◆ cmpneq() [2/9]

I32vec4 cmpneq ( const I32vec4 a,
const I32vec4 b 
)
inline

Definition at line 163 of file dvec.h.

◆ cmpneq() [3/9]

I8vec16 cmpneq ( const I8vec16 a,
const I8vec16 b 
)
inline

Definition at line 509 of file dvec.h.

◆ cmpneq() [4/9]

Is16vec8 cmpneq ( const Is16vec8 a,
const Is16vec8 b 
)
inline

Definition at line 396 of file dvec.h.

◆ cmpneq() [5/9]

Is32vec4 cmpneq ( const Is32vec4 a,
const Is32vec4 b 
)
inline

Definition at line 226 of file dvec.h.

◆ cmpneq() [6/9]

Is8vec16 cmpneq ( const Is8vec16 a,
const Is8vec16 b 
)
inline

Definition at line 568 of file dvec.h.

◆ cmpneq() [7/9]

Iu16vec8 cmpneq ( const Iu16vec8 a,
const Iu16vec8 b 
)
inline

Definition at line 480 of file dvec.h.

◆ cmpneq() [8/9]

Iu32vec4 cmpneq ( const Iu32vec4 a,
const Iu32vec4 b 
)
inline

Definition at line 291 of file dvec.h.

◆ cmpneq() [9/9]

Iu8vec16 cmpneq ( const Iu8vec16 a,
const Iu8vec16 b 
)
inline

Definition at line 632 of file dvec.h.

◆ F32vec4ToF64vec2()

F64vec2 F32vec4ToF64vec2 ( const F32vec4 a)
inline

Definition at line 836 of file dvec.h.

836{ return _mm_cvtps_pd(a); }
__m128d _mm_cvtps_pd(__m128 a)
Definition: emmintrin.h:851

◆ F64vec2_SELECT()

F64vec2_SELECT ( eq  ) const &

Definition at line 825 of file dvec.h.

835 { return _mm_cvttsd_si32(a); }
int _mm_cvttsd_si32(__m128d a)
Definition: emmintrin.h:902

◆ F64vec2ToF32vec4()

F32vec4 F64vec2ToF32vec4 ( const F64vec2 a)
inline

Definition at line 837 of file dvec.h.

837{ return _mm_cvtpd_ps(a); }
__m128 _mm_cvtpd_ps(__m128d a)
Definition: emmintrin.h:846

◆ get_mask128()

const __m128i get_mask128 ( )
inline

Definition at line 52 of file dvec.h.

53{
54 static const __m128i mask128 = _mm_set1_epi64(M64(0xffffffffffffffffi64));
55 return mask128;
56}
__m128i _mm_set1_epi64(__m64 q)
Definition: emmintrin.h:1603

Referenced by cmpneq().

◆ IntToF64vec2()

F64vec2 IntToF64vec2 ( const F64vec2 a,
int  b 
)
inline

Definition at line 838 of file dvec.h.

838{ return _mm_cvtsi32_sd(a,b); }
__m128d _mm_cvtsi32_sd(__m128d a, int b)
Definition: emmintrin.h:884

◆ loadu()

void loadu ( F64vec2 a,
double p 
)
inline

Definition at line 820 of file dvec.h.

820{ a = _mm_loadu_pd(p); }
__m128d _mm_loadu_pd(double const *dp)
Definition: emmintrin.h:956
GLfloat GLfloat p
Definition: glext.h:8902

◆ move_mask()

int move_mask ( const F64vec2 a)
inline

Definition at line 819 of file dvec.h.

819{ return _mm_movemask_pd(a); }
int _mm_movemask_pd(__m128d a)
Definition: emmintrin.h:1896

◆ mul_add()

Is32vec4 mul_add ( const Is16vec8 a,
const Is16vec8 b 
)
inline

Definition at line 404 of file dvec.h.

404{ return _mm_madd_epi16(a,b);}
__m128i _mm_madd_epi16(__m128i a, __m128i b)
Definition: emmintrin.h:1189

◆ mul_high() [1/2]

Is16vec8 mul_high ( const Is16vec8 a,
const Is16vec8 b 
)
inline

Definition at line 403 of file dvec.h.

403{ return _mm_mulhi_epi16(a,b); }
__m128i _mm_mulhi_epi16(__m128i a, __m128i b)
Definition: emmintrin.h:1230

◆ mul_high() [2/2]

I16vec8 mul_high ( const Iu16vec8 a,
const Iu16vec8 b 
)
inline

Definition at line 489 of file dvec.h.

489{ return _mm_mulhi_epu16(a,b); }
__m128i _mm_mulhi_epu16(__m128i a, __m128i b)
Definition: emmintrin.h:1235

◆ operator&()

M128 operator& ( const M128 a,
const M128 b 
)
inline

Definition at line 75 of file dvec.h.

75{ return _mm_and_si128(a,b); }
__m128i _mm_and_si128(__m128i a, __m128i b)
Definition: emmintrin.h:1321

◆ operator*() [1/4]

I16vec8 operator* ( const I16vec8 a,
const I16vec8 b 
)
inline

Definition at line 319 of file dvec.h.

319{ return _mm_mullo_epi16(a,b); }
__m128i _mm_mullo_epi16(__m128i a, __m128i b)
Definition: emmintrin.h:1240

◆ operator*() [2/4]

Is16vec8 operator* ( const Is16vec8 a,
const Is16vec8 b 
)
inline

Definition at line 393 of file dvec.h.

393{ return _mm_mullo_epi16(a,b); }

◆ operator*() [3/4]

Iu16vec8 operator* ( const Iu16vec8 a,
const Iu16vec8 b 
)
inline

Definition at line 477 of file dvec.h.

477{ return _mm_mullo_epi16(a,b); }

◆ operator*() [4/4]

I64vec2 operator* ( const Iu32vec4 a,
const Iu32vec4 b 
)
inline

Definition at line 289 of file dvec.h.

289{ return _mm_mul_epu32(a,b); }
__m128i _mm_mul_epu32(__m128i a, __m128i b)
Definition: emmintrin.h:1250

◆ operator^()

M128 operator^ ( const M128 a,
const M128 b 
)
inline

Definition at line 77 of file dvec.h.

77{ return _mm_xor_si128(a,b); }
__m128i _mm_xor_si128(__m128i a, __m128i b)
Definition: emmintrin.h:1336

◆ operator|()

M128 operator| ( const M128 a,
const M128 b 
)
inline

Definition at line 76 of file dvec.h.

76{ return _mm_or_si128(a,b); }
__m128i _mm_or_si128(__m128i a, __m128i b)
Definition: emmintrin.h:1331

◆ pack_sat() [1/2]

Is8vec16 pack_sat ( const Is16vec8 a,
const Is16vec8 b 
)
inline

Definition at line 647 of file dvec.h.

647{ return _mm_packs_epi16(a,b); }
__m128i _mm_packs_epi16(__m128i a, __m128i b)
Definition: emmintrin.h:1742

◆ pack_sat() [2/2]

Is16vec8 pack_sat ( const Is32vec4 a,
const Is32vec4 b 
)
inline

Definition at line 646 of file dvec.h.

646{ return _mm_packs_epi32(a,b); }
__m128i _mm_packs_epi32(__m128i a, __m128i b)
Definition: emmintrin.h:1747

◆ packu_sat()

Iu8vec16 packu_sat ( const Is16vec8 a,
const Is16vec8 b 
)
inline

Definition at line 648 of file dvec.h.

648{ return _mm_packus_epi16(a,b);}
__m128i _mm_packus_epi16(__m128i a, __m128i b)
Definition: emmintrin.h:1752

◆ sat_add() [1/4]

Is16vec8 sat_add ( const Is16vec8 a,
const Is16vec8 b 
)
inline

Definition at line 406 of file dvec.h.

406{ return _mm_adds_epi16(a,b); }
__m128i _mm_adds_epi16(__m128i a, __m128i b)
Definition: emmintrin.h:1152

◆ sat_add() [2/4]

Is8vec16 sat_add ( const Is8vec16 a,
const Is8vec16 b 
)
inline

Definition at line 575 of file dvec.h.

575{ return _mm_adds_epi8(a,b); }
__m128i _mm_adds_epi8(__m128i a, __m128i b)
Definition: emmintrin.h:1143

◆ sat_add() [3/4]

Iu16vec8 sat_add ( const Iu16vec8 a,
const Iu16vec8 b 
)
inline

Definition at line 485 of file dvec.h.

485{ return _mm_adds_epu16(a,b); }
__m128i _mm_adds_epu16(__m128i a, __m128i b)
Definition: emmintrin.h:1170

◆ sat_add() [4/4]

Iu8vec16 sat_add ( const Iu8vec16 a,
const Iu8vec16 b 
)
inline

Definition at line 637 of file dvec.h.

637{ return _mm_adds_epu8(a,b); }
__m128i _mm_adds_epu8(__m128i a, __m128i b)
Definition: emmintrin.h:1161

◆ sat_sub() [1/4]

Is16vec8 sat_sub ( const Is16vec8 a,
const Is16vec8 b 
)
inline

Definition at line 407 of file dvec.h.

407{ return _mm_subs_epi16(a,b); }
__m128i _mm_subs_epi16(__m128i a, __m128i b)
Definition: emmintrin.h:1294

◆ sat_sub() [2/4]

Is8vec16 sat_sub ( const Is8vec16 a,
const Is8vec16 b 
)
inline

Definition at line 576 of file dvec.h.

576{ return _mm_subs_epi8(a,b); }
__m128i _mm_subs_epi8(__m128i a, __m128i b)
Definition: emmintrin.h:1285

◆ sat_sub() [3/4]

Iu16vec8 sat_sub ( const Iu16vec8 a,
const Iu16vec8 b 
)
inline

Definition at line 486 of file dvec.h.

486{ return _mm_subs_epu16(a,b); }
__m128i _mm_subs_epu16(__m128i a, __m128i b)
Definition: emmintrin.h:1312

◆ sat_sub() [4/4]

Iu8vec16 sat_sub ( const Iu8vec16 a,
const Iu8vec16 b 
)
inline

Definition at line 638 of file dvec.h.

638{ return _mm_subs_epu8(a,b); }
__m128i _mm_subs_epu8(__m128i a, __m128i b)
Definition: emmintrin.h:1303

◆ simd_avg() [1/2]

Iu16vec8 simd_avg ( const Iu16vec8 a,
const Iu16vec8 b 
)
inline

Definition at line 488 of file dvec.h.

488{ return _mm_avg_epu16(a,b); }
__m128i _mm_avg_epu16(__m128i a, __m128i b)
Definition: emmintrin.h:1184

◆ simd_avg() [2/2]

Iu8vec16 simd_avg ( const Iu8vec16 a,
const Iu8vec16 b 
)
inline

Definition at line 642 of file dvec.h.

642{ return _mm_avg_epu8(a,b); }
__m128i _mm_avg_epu8(__m128i a, __m128i b)
Definition: emmintrin.h:1179

◆ simd_max() [1/2]

Is16vec8 simd_max ( const Is16vec8 a,
const Is16vec8 b 
)
inline

Definition at line 409 of file dvec.h.

409{ return _mm_max_epi16(a,b); }
__m128i _mm_max_epi16(__m128i a, __m128i b)
Definition: emmintrin.h:1194

◆ simd_max() [2/2]

Iu8vec16 simd_max ( const Iu8vec16 a,
const Iu8vec16 b 
)
inline

Definition at line 643 of file dvec.h.

643{ return _mm_max_epu8(a,b); }
__m128i _mm_max_epu8(__m128i a, __m128i b)
Definition: emmintrin.h:1203

◆ simd_min() [1/2]

Is16vec8 simd_min ( const Is16vec8 a,
const Is16vec8 b 
)
inline

Definition at line 410 of file dvec.h.

410{ return _mm_min_epi16(a,b); }
__m128i _mm_min_epi16(__m128i a, __m128i b)
Definition: emmintrin.h:1212

◆ simd_min() [2/2]

Iu8vec16 simd_min ( const Iu8vec16 a,
const Iu8vec16 b 
)
inline

Definition at line 644 of file dvec.h.

644{ return _mm_min_epu8(a,b); }
__m128i _mm_min_epu8(__m128i a, __m128i b)
Definition: emmintrin.h:1221

◆ store_nta()

void store_nta ( double p,
F64vec2 a 
)
inline

Definition at line 822 of file dvec.h.

822{ _mm_stream_pd(p,a); }
void _mm_stream_pd(double *p, __m128d a)
Definition: emmintrin.h:1706

◆ storeu()

void storeu ( double p,
const F64vec2 a 
)
inline

Definition at line 821 of file dvec.h.

821{ _mm_storeu_pd(p,a); }
void _mm_storeu_pd(double *dp, __m128d a)
Definition: emmintrin.h:1083

◆ sum_abs()

I64vec2 sum_abs ( const Iu8vec16 a,
const Iu8vec16 b 
)
inline

Definition at line 640 of file dvec.h.

640{ return _mm_sad_epu8(a,b); }
__m128i _mm_sad_epu8(__m128i a, __m128i b)
Definition: emmintrin.h:1255

◆ unpack_high() [1/11]

F64vec2 unpack_high ( const F64vec2 a,
const F64vec2 b 
)
inline

Definition at line 818 of file dvec.h.

818{ return _mm_unpackhi_pd(a,b); }
__m128d _mm_unpackhi_pd(__m128d a, __m128d b)
Definition: emmintrin.h:1878

◆ unpack_high() [2/11]

I16vec8 unpack_high ( const I16vec8 a,
const I16vec8 b 
)
inline

Definition at line 325 of file dvec.h.

325{ return _mm_unpackhi_epi16(a,b); }
__m128i _mm_unpackhi_epi16(__m128i a, __m128i b)
Definition: emmintrin.h:1790

◆ unpack_high() [3/11]

I32vec4 unpack_high ( const I32vec4 a,
const I32vec4 b 
)
inline

Definition at line 166 of file dvec.h.

166{ return _mm_unpackhi_epi32(a,b); }
__m128i _mm_unpackhi_epi32(__m128i a, __m128i b)
Definition: emmintrin.h:1800

◆ unpack_high() [4/11]

I64vec2 unpack_high ( const I64vec2 a,
const I64vec2 b 
)
inline

Definition at line 138 of file dvec.h.

138{return _mm_unpackhi_epi64(a,b); }
__m128i _mm_unpackhi_epi64(__m128i a, __m128i b)
Definition: emmintrin.h:1810

◆ unpack_high() [5/11]

I8vec16 unpack_high ( const I8vec16 a,
const I8vec16 b 
)
inline

Definition at line 512 of file dvec.h.

512{ return _mm_unpackhi_epi8(a,b); }
__m128i _mm_unpackhi_epi8(__m128i a, __m128i b)
Definition: emmintrin.h:1779

◆ unpack_high() [6/11]

Is16vec8 unpack_high ( const Is16vec8 a,
const Is16vec8 b 
)
inline

Definition at line 401 of file dvec.h.

401{ return _mm_unpackhi_epi16(a,b); }

◆ unpack_high() [7/11]

Is32vec4 unpack_high ( const Is32vec4 a,
const Is32vec4 b 
)
inline

Definition at line 231 of file dvec.h.

231{ return _mm_unpackhi_epi32(a,b); }

◆ unpack_high() [8/11]

Is8vec16 unpack_high ( const Is8vec16 a,
const Is8vec16 b 
)
inline

Definition at line 573 of file dvec.h.

573{ return _mm_unpackhi_epi8(a,b); }

◆ unpack_high() [9/11]

Iu16vec8 unpack_high ( const Iu16vec8 a,
const Iu16vec8 b 
)
inline

Definition at line 483 of file dvec.h.

483{ return _mm_unpackhi_epi16(a,b); }

◆ unpack_high() [10/11]

Iu32vec4 unpack_high ( const Iu32vec4 a,
const Iu32vec4 b 
)
inline

Definition at line 294 of file dvec.h.

294{ return _mm_unpackhi_epi32(a,b); }

◆ unpack_high() [11/11]

Iu8vec16 unpack_high ( const Iu8vec16 a,
const Iu8vec16 b 
)
inline

Definition at line 635 of file dvec.h.

635{ return _mm_unpackhi_epi8(a,b); }

◆ unpack_low() [1/11]

F64vec2 unpack_low ( const F64vec2 a,
const F64vec2 b 
)
inline

Definition at line 817 of file dvec.h.

817{ return _mm_unpacklo_pd(a,b); }
__m128d _mm_unpacklo_pd(__m128d a, __m128d b)
Definition: emmintrin.h:1887

◆ unpack_low() [2/11]

I16vec8 unpack_low ( const I16vec8 a,
const I16vec8 b 
)
inline

Definition at line 324 of file dvec.h.

324{ return _mm_unpacklo_epi16(a,b); }
__m128i _mm_unpacklo_epi16(__m128i a, __m128i b)
Definition: emmintrin.h:1830

◆ unpack_low() [3/11]

I32vec4 unpack_low ( const I32vec4 a,
const I32vec4 b 
)
inline

Definition at line 165 of file dvec.h.

165{ return _mm_unpacklo_epi32(a,b); }
__m128i _mm_unpacklo_epi32(__m128i a, __m128i b)
Definition: emmintrin.h:1840

◆ unpack_low() [4/11]

I64vec2 unpack_low ( const I64vec2 a,
const I64vec2 b 
)
inline

Definition at line 137 of file dvec.h.

137{return _mm_unpacklo_epi64(a,b); }
__m128i _mm_unpacklo_epi64(__m128i a, __m128i b)
Definition: emmintrin.h:1850

◆ unpack_low() [5/11]

I8vec16 unpack_low ( const I8vec16 a,
const I8vec16 b 
)
inline

Definition at line 511 of file dvec.h.

511{ return _mm_unpacklo_epi8(a,b); }
__m128i _mm_unpacklo_epi8(__m128i a, __m128i b)
Definition: emmintrin.h:1819

◆ unpack_low() [6/11]

Is16vec8 unpack_low ( const Is16vec8 a,
const Is16vec8 b 
)
inline

Definition at line 400 of file dvec.h.

400{ return _mm_unpacklo_epi16(a,b); }

◆ unpack_low() [7/11]

Is32vec4 unpack_low ( const Is32vec4 a,
const Is32vec4 b 
)
inline

Definition at line 230 of file dvec.h.

230{ return _mm_unpacklo_epi32(a,b); }

◆ unpack_low() [8/11]

Is8vec16 unpack_low ( const Is8vec16 a,
const Is8vec16 b 
)
inline

Definition at line 572 of file dvec.h.

572{ return _mm_unpacklo_epi8(a,b); }

◆ unpack_low() [9/11]

Iu16vec8 unpack_low ( const Iu16vec8 a,
const Iu16vec8 b 
)
inline

Definition at line 482 of file dvec.h.

482{ return _mm_unpacklo_epi16(a,b); }

◆ unpack_low() [10/11]

Iu32vec4 unpack_low ( const Iu32vec4 a,
const Iu32vec4 b 
)
inline

Definition at line 293 of file dvec.h.

293{ return _mm_unpacklo_epi32(a,b); }

◆ unpack_low() [11/11]

Iu8vec16 unpack_low ( const Iu8vec16 a,
const Iu8vec16 b 
)
inline

Definition at line 634 of file dvec.h.

634{ return _mm_unpacklo_epi8(a,b); }