16 #ifndef _IVEC_H_INCLUDED
17 #define _IVEC_H_INCLUDED
20 #if !defined __cplusplus
21 #error ERROR: This file is only supported in C++ compilations!
24 #if defined (_M_CEE_PURE)
25 #error ERROR: This file is not supported in the pure mode!
30 #define EXPLICIT explicit
36 #define _VEC_ASSERT(_Expression) ((void)0)
47 #define _VEC_ASSERT(_Expression) (void)( (!!(_Expression)) || (_wassert(_CRT_WIDE(#_Expression), _CRT_WIDE(__FILE__), __LINE__), 0) )
56 #if defined (_SILENCE_IVEC_C4799)
58 #pragma warning(disable: 4799)
64 #if defined (_ENABLE_VEC_DEBUG)
79 #define _MM_8UB(element,vector) (*((unsigned char*)&##vector + ##element))
80 #define _MM_8B(element,vector) (*((signed char*)&##vector + ##element))
82 #define _MM_4UW(element,vector) (*((unsigned short*)&##vector + ##element))
83 #define _MM_4W(element,vector) (*((short*)&##vector + ##element))
85 #define _MM_2UDW(element,vector) (*((unsigned int*)&##vector + ##element))
86 #define _MM_2DW(element,vector) (*((int*)&##vector + ##element))
88 #define _MM_QW (*((__int64*)&vec))
115 {0xffffffffffffffff};
117 #define _mmx_all_ones ((M64)__mmx_all_ones_cheat.m2)
227 #if defined (_ENABLE_VEC_DEBUG)
297 #if defined (_ENABLE_VEC_DEBUG)
337 I16vec4(
short i0,
short i1,
short i2,
short i3)
407 #if defined (_ENABLE_VEC_DEBUG)
411 os <<
"[3]:" <<
_MM_4W(3,a)
414 <<
" [0]:" <<
_MM_4W(0,a);
462 unsigned short ui2,
unsigned short ui3)
463 :
I16vec4(ui0, ui1, ui2, ui3) { }
490 #if defined (_ENABLE_VEC_DEBUG)
535 I8vec8(
char s0,
char s1,
char s2,
char s3,
char s4,
char s5,
char s6,
char s7)
570 Is8vec8(
signed char s0,
signed char s1,
signed char s2,
signed char s3,
571 signed char s4,
signed char s5,
signed char s6,
signed char s7)
572 :
I8vec8(s0, s1, s2, s3, s4, s5, s6, s7) { }
588 #if defined (_ENABLE_VEC_DEBUG)
592 os <<
"[7]:" << short(
_MM_8B(7,a))
593 <<
" [6]:" << short(
_MM_8B(6,a))
594 <<
" [5]:" << short(
_MM_8B(5,a))
595 <<
" [4]:" << short(
_MM_8B(4,a))
596 <<
" [3]:" << short(
_MM_8B(3,a))
597 <<
" [2]:" << short(
_MM_8B(2,a))
598 <<
" [1]:" << short(
_MM_8B(1,a))
599 <<
" [0]:" << short(
_MM_8B(0,a));
641 Iu8vec8(
unsigned char s0,
unsigned char s1,
unsigned char s2,
642 unsigned char s3,
unsigned char s4,
unsigned char s5,
643 unsigned char s6,
unsigned char s7)
644 :
I8vec8(s0, s1, s2, s3, s4, s5, s6, s7) { }
658 #if defined (_ENABLE_VEC_DEBUG)
662 os <<
"[7]:" << (
unsigned short) (
_MM_8UB(7,a))
663 <<
" [6]:" << (
unsigned short) (
_MM_8UB(6,a))
664 <<
" [5]:" << (
unsigned short) (
_MM_8UB(5,a))
665 <<
" [4]:" << (
unsigned short) (
_MM_8UB(4,a))
666 <<
" [3]:" << (
unsigned short) (
_MM_8UB(3,a))
667 <<
" [2]:" << (
unsigned short) (
_MM_8UB(2,a))
668 <<
" [1]:" << (
unsigned short) (
_MM_8UB(1,a))
669 <<
" [0]:" << (
unsigned short) (
_MM_8UB(0,a));
704 #define IVEC_LOGICALS(vect,element) \
705 inline I##vect##vec##element operator& (const I##vect##vec##element &a, const I##vect##vec##element &b) \
706 { return _m_pand( a,b); } \
707 inline I##vect##vec##element operator| (const I##vect##vec##element &a, const I##vect##vec##element &b) \
708 { return _m_por( a,b); } \
709 inline I##vect##vec##element operator^ (const I##vect##vec##element &a, const I##vect##vec##element &b) \
710 { return _m_pxor( a,b); } \
711 inline I##vect##vec##element andnot (const I##vect##vec##element &a, const I##vect##vec##element &b) \
712 { return _m_pandn( a,b); }
727 #define IVEC_ADD_SUB(vect,element,opsize) \
728 inline I##vect##vec##element operator+ (const I##vect##vec##element &a, const I##vect##vec##element &b) \
729 { return _m_padd##opsize( a,b); } \
730 inline I##vect##vec##element operator- (const I##vect##vec##element &a, const I##vect##vec##element &b) \
731 { return _m_psub##opsize( a,b); }
737 IVEC_ADD_SUB(u16,4, w)
738 IVEC_ADD_SUB(s16,4, w)
739 IVEC_ADD_SUB(32,2, d)
740 IVEC_ADD_SUB(u32,2, d)
741 IVEC_ADD_SUB(s32,2, d)
753 #define IVEC_SELECT(vect12,vect34,element,selop) \
754 inline I##vect34##vec##element select_##selop ( \
755 const I##vect12##vec##element &a, \
756 const I##vect12##vec##element &b, \
757 const I##vect34##vec##element &c, \
758 const I##vect34##vec##element &d) \
760 I##vect12##vec##element mask = cmp##selop(a,b); \
761 return( (I##vect34##vec##element)(mask & c ) | \
762 (I##vect34##vec##element)((_m_pandn(mask, d )))); \
767 IVEC_SELECT(8,8,8,eq)
768 IVEC_SELECT(8,s8,8,neq)
769 IVEC_SELECT(8,u8,8,neq)
770 IVEC_SELECT(8,8,8,neq)
772 IVEC_SELECT(16,s16,4,eq)
773 IVEC_SELECT(16,u16,4,eq)
774 IVEC_SELECT(16,16,4,eq)
775 IVEC_SELECT(16,s16,4,neq)
776 IVEC_SELECT(16,u16,4,neq)
777 IVEC_SELECT(16,16,4,neq)
779 IVEC_SELECT(32,s32,2,eq)
780 IVEC_SELECT(32,u32,2,eq)
781 IVEC_SELECT(32,32,2,eq)
782 IVEC_SELECT(32,s32,2,neq)
783 IVEC_SELECT(32,u32,2,neq)
784 IVEC_SELECT(32,32,2,neq)
787 IVEC_SELECT(s8,s8,8,gt)
788 IVEC_SELECT(s8,u8,8,gt)
789 IVEC_SELECT(s8,8,8,gt)
790 IVEC_SELECT(s8,s8,8,lt)
791 IVEC_SELECT(s8,u8,8,lt)
792 IVEC_SELECT(s8,8,8,lt)
793 IVEC_SELECT(s8,s8,8,le)
794 IVEC_SELECT(s8,u8,8,le)
795 IVEC_SELECT(s8,8,8,le)
796 IVEC_SELECT(s8,s8,8,ge)
797 IVEC_SELECT(s8,u8,8,ge)
798 IVEC_SELECT(s8,8,8,ge)
800 IVEC_SELECT(s16,s16,4,gt)
801 IVEC_SELECT(s16,u16,4,gt)
802 IVEC_SELECT(s16,16,4,gt)
803 IVEC_SELECT(s16,s16,4,lt)
804 IVEC_SELECT(s16,u16,4,lt)
805 IVEC_SELECT(s16,16,4,lt)
806 IVEC_SELECT(s16,s16,4,le)
807 IVEC_SELECT(s16,u16,4,le)
808 IVEC_SELECT(s16,16,4,le)
809 IVEC_SELECT(s16,s16,4,ge)
810 IVEC_SELECT(s16,u16,4,ge)
811 IVEC_SELECT(s16,16,4,ge)
813 IVEC_SELECT(s32,s32,2,gt)
814 IVEC_SELECT(s32,u32,2,gt)
815 IVEC_SELECT(s32,32,2,gt)
816 IVEC_SELECT(s32,s32,2,lt)
817 IVEC_SELECT(s32,u32,2,lt)
818 IVEC_SELECT(s32,32,2,lt)
819 IVEC_SELECT(s32,s32,2,le)
820 IVEC_SELECT(s32,u32,2,le)
821 IVEC_SELECT(s32,32,2,le)
822 IVEC_SELECT(s32,s32,2,ge)
823 IVEC_SELECT(s32,u32,2,ge)
824 IVEC_SELECT(s32,32,2,ge)
831 #if defined (_SILENCE_IVEC_C4799)
Iu8vec8()
Definition: ivec.h:639
Is16vec4 & operator^=(const M64 &a)
Definition: ivec.h:389
I8vec8 & operator-=(const I8vec8 &a)
Definition: ivec.h:552
EXPLICIT Iu8vec8(int i)
Definition: ivec.h:646
__m64 _m_pslld(__m64 _M, __m64 _Count)
EXPLICIT I32vec2(__int64 i)
Definition: ivec.h:163
EXPLICIT Is16vec4(__int64 i)
Definition: ivec.h:380
Is16vec4 & operator-=(const I16vec4 &a)
Definition: ivec.h:393
Is16vec4 & operator<<=(int count)
Definition: ivec.h:400
Is8vec8 & operator|=(const M64 &a)
Definition: ivec.h:581
Is8vec8(__m64 mm)
Definition: ivec.h:569
Is32vec2 operator>>(const M64 &a)
Definition: ivec.h:222
Is8vec8 & operator^=(const M64 &a)
Definition: ivec.h:582
Iu8vec8 & operator+=(const I8vec8 &a)
Definition: ivec.h:655
Is16vec4 operator>>(const M64 &a)
Definition: ivec.h:402
__m64 _m_punpckhwd(__m64 _MM1, __m64 _MM2)
_CRTIMP void __cdecl _wassert(_In_z_ const wchar_t *_Message, _In_z_ const wchar_t *_File, _In_ unsigned _Line)
__m64 _m_pslldi(__m64 _M, int _Count)
__m64 _m_paddb(__m64 _MM1, __m64 _MM2)
I8vec8(char s0, char s1, char s2, char s3, char s4, char s5, char s6, char s7)
Definition: ivec.h:535
#define IVEC_SELECT(vect12, vect34, element, selop)
Definition: ivec.h:753
Is16vec4 operator<<(int count)
Definition: ivec.h:398
I64vec1 & operator>>=(int count)
Definition: ivec.h:150
__m64 _mm_set_pi16(short _S3, short _S2, short _S1, short _S0)
Iu32vec2 operator<<(int count)
Definition: ivec.h:289
I64vec1 operator<<(int count)
Definition: ivec.h:144
short & operator[](int i)
Definition: ivec.h:427
I16vec4 & operator-=(const I16vec4 &a)
Definition: ivec.h:354
Is32vec2 & operator<<=(int count)
Definition: ivec.h:220
I64vec1 & operator=(const M64 &a)
Definition: ivec.h:137
Is16vec4 & operator>>=(const M64 &a)
Definition: ivec.h:404
__m64 _m_pmullw(__m64 _MM1, __m64 _MM2)
I64vec1 & operator<<=(const M64 &a)
Definition: ivec.h:145
#define IVEC_LOGICALS(vect, element)
Definition: ivec.h:704
EXPLICIT I8vec8(int i)
Definition: ivec.h:540
Iu16vec4(__m64 mm)
Definition: ivec.h:460
EXPLICIT I16vec4(__int64 i)
Definition: ivec.h:341
#define _MM_4UW(element, vector)
Definition: ivec.h:82
const int & operator[](int i) const
Definition: ivec.h:238
__m64 _m_punpckhdq(__m64 _MM1, __m64 _MM2)
Iu16vec4(unsigned short ui0, unsigned short ui1, unsigned short ui2, unsigned short ui3)
Definition: ivec.h:461
#define _MM_8B(element, vector)
Definition: ivec.h:80
Iu8vec8 & operator=(const M64 &a)
Definition: ivec.h:649
I64vec1 operator>>(const M64 &a)
Definition: ivec.h:147
M64()
Definition: ivec.h:100
const unsigned int & operator[](int i) const
Definition: ivec.h:308
I64vec1 & operator|=(const M64 &a)
Definition: ivec.h:139
EXPLICIT I16vec4(int i)
Definition: ivec.h:342
#define _CRTIMP
Definition: crtdefs.h:23
Is16vec4 sat_sub(const Is16vec4 &a, const Is16vec4 &b)
Definition: ivec.h:448
Iu32vec2 & operator&=(const M64 &a)
Definition: ivec.h:279
Iu32vec2 operator>>(int count)
Definition: ivec.h:293
Iu16vec4 & operator>>=(int count)
Definition: ivec.h:488
M64 & operator^=(const M64 &a)
Definition: ivec.h:110
__m64 _m_punpcklbw(__m64 _MM1, __m64 _MM2)
Is16vec4(short i0, short i1, short i2, short i3)
Definition: ivec.h:379
iterator_traits< _InIt >::difference_type count(_InIt _First, _InIt _Last, const _Ty &_Val)
Definition: xutility:3086
Is32vec2 & operator|=(const M64 &a)
Definition: ivec.h:209
__m64 _m_psrlwi(__m64 _M, int _Count)
__m64 _m_psubw(__m64 _MM1, __m64 _MM2)
EXPLICIT Is32vec2(__int64 i)
Definition: ivec.h:202
__m64 _m_pand(__m64 _MM1, __m64 _MM2)
Is16vec4 & operator&=(const M64 &a)
Definition: ivec.h:387
uint_2 operator<<(const uint_2 &_Lhs, const uint_2 &_Rhs) __GPU
Definition: amp_short_vectors.h:22866
__m64 _m_psllw(__m64 _M, __m64 _Count)
I16vec4 operator<<(const I16vec4 &a)
Definition: ivec.h:358
I32vec2 cmpeq(const I32vec2 &a, const I32vec2 &b)
Definition: ivec.h:186
I64vec1(__m64 mm)
Definition: ivec.h:133
__m64 _m_psrad(__m64 _M, __m64 _Count)
Iu32vec2(__m64 mm)
Definition: ivec.h:270
Is32vec2 & operator>>=(int count)
Definition: ivec.h:225
Is32vec2 & operator<<=(const M64 &a)
Definition: ivec.h:219
Iu16vec4 & operator|=(const M64 &a)
Definition: ivec.h:472
Iu32vec2 operator>>(const M64 &a)
Definition: ivec.h:292
Iu8vec8 & operator-=(const I8vec8 &a)
Definition: ivec.h:656
I64vec1 & operator<<=(int count)
Definition: ivec.h:146
__m64 _m_psubusb(__m64 _MM1, __m64 _MM2)
Is32vec2 & operator+=(const I32vec2 &a)
Definition: ivec.h:213
I16vec4 & operator|=(const M64 &a)
Definition: ivec.h:349
Iu32vec2 & operator>>=(const M64 &a)
Definition: ivec.h:294
Iu16vec4 operator<<(int count)
Definition: ivec.h:482
I8vec8()
Definition: ivec.h:533
__m64 _mm_set_pi32(int _I1, int _I0)
Is32vec2 & operator>>=(const M64 &a)
Definition: ivec.h:224
__m64 _m_psubsb(__m64 _MM1, __m64 _MM2)
Iu32vec2 & operator>>=(int count)
Definition: ivec.h:295
Iu16vec4 & operator&=(const M64 &a)
Definition: ivec.h:471
static void empty(void)
Definition: ivec.h:829
I8vec8(__m64 mm)
Definition: ivec.h:534
__m64 _m_psrlw(__m64 _M, __m64 _Count)
__m64 _m_punpckhbw(__m64 _MM1, __m64 _MM2)
unsigned short & operator[](int i)
Definition: ivec.h:510
I32vec2 & operator-=(const I32vec2 &a)
Definition: ivec.h:175
__m64 _m_psrldi(__m64 _M, int _Count)
I32vec2 & operator&=(const M64 &a)
Definition: ivec.h:169
__m64 _m_psrawi(__m64 _M, int _Count)
__m64 _m_pcmpeqw(__m64 _MM1, __m64 _MM2)
I64vec1 operator>>(int count)
Definition: ivec.h:148
__m64 _mm_set_pi8(char _B7, char _B6, char _B5, char _B4, char _B3, char _B2, char _B1, char _B0)
EXPLICIT I8vec8(__int64 i)
Definition: ivec.h:539
I32vec2 & operator^=(const M64 &a)
Definition: ivec.h:171
I16vec4(__m64 mm)
Definition: ivec.h:336
I16vec4 & operator<<=(int count)
Definition: ivec.h:361
I32vec2 operator<<(const I32vec2 &a)
Definition: ivec.h:178
I8vec8 & operator+=(const I8vec8 &a)
Definition: ivec.h:551
__m64 _m_psubusw(__m64 _MM1, __m64 _MM2)
M64 andnot(const M64 &a, const M64 &b)
Definition: ivec.h:122
I16vec4 & operator&=(const M64 &a)
Definition: ivec.h:348
__m64 _m_psraw(__m64 _M, __m64 _Count)
__m64 _m_packsswb(__m64 _MM1, __m64 _MM2)
I64vec1()
Definition: ivec.h:132
__m64 _m_paddusw(__m64 _MM1, __m64 _MM2)
EXPLICIT Iu32vec2(__int64 i)
Definition: ivec.h:273
__m64 _m_psllwi(__m64 _M, int _Count)
__m64 _m_por(__m64 _MM1, __m64 _MM2)
I32vec2 unpack_low(const I32vec2 &a, const I32vec2 &b)
Definition: ivec.h:189
const unsigned short & operator[](int i) const
Definition: ivec.h:503
Iu16vec4()
Definition: ivec.h:459
I16vec4 & operator^=(const M64 &a)
Definition: ivec.h:350
__m64 _m_pmaddwd(__m64 _MM1, __m64 _MM2)
int i[4]
Definition: dvec.h:70
Iu8vec8 & operator^=(const M64 &a)
Definition: ivec.h:653
Is32vec2()
Definition: ivec.h:198
Is16vec4 pack_sat(const Is32vec2 &a, const Is32vec2 &b)
Definition: ivec.h:699
I32vec2 & operator=(const M64 &a)
Definition: ivec.h:166
__m64 _m_pandn(__m64 _MM1, __m64 _MM2)
#define _In_z_
Definition: sal.h:319
#define _In_
Definition: sal.h:314
M64(__m64 mm)
Definition: ivec.h:101
I16vec4()
Definition: ivec.h:335
EXPLICIT Is16vec4(int i)
Definition: ivec.h:381
EXPLICIT I64vec1(__int64 mm)
Definition: ivec.h:135
__m64 _m_punpckldq(__m64 _MM1, __m64 _MM2)
__m64 _m_paddsw(__m64 _MM1, __m64 _MM2)
Iu8vec8 & operator&=(const M64 &a)
Definition: ivec.h:651
I8vec8 & operator|=(const M64 &a)
Definition: ivec.h:547
M64 operator|(const M64 &a, const M64 &b)
Definition: ivec.h:120
I32vec2 operator<<(int count)
Definition: ivec.h:179
__m64 _m_punpcklwd(__m64 _MM1, __m64 _MM2)
__m64 _m_psrld(__m64 _M, __m64 _Count)
M64 & operator&=(const M64 &a)
Definition: ivec.h:108
Is8vec8 & operator-=(const I8vec8 &a)
Definition: ivec.h:586
I32vec2(int i0, int i1)
Definition: ivec.h:161
int & operator[](int i)
Definition: ivec.h:245
I64vec1 & operator^=(const M64 &a)
Definition: ivec.h:140
Iu32vec2 & operator+=(const I32vec2 &a)
Definition: ivec.h:284
M64 & operator|=(const M64 &a)
Definition: ivec.h:109
__m64
Definition: mmintrin.h:42
__m64 _m_pmulhw(__m64 _MM1, __m64 _MM2)
Iu32vec2 & operator<<=(int count)
Definition: ivec.h:291
unsigned char & operator[](int i)
Definition: ivec.h:682
Iu32vec2 & operator-=(const I32vec2 &a)
Definition: ivec.h:285
Iu8vec8 & operator|=(const M64 &a)
Definition: ivec.h:652
Is32vec2 operator<<(int count)
Definition: ivec.h:218
I16vec4 operator*(const I16vec4 &a, const I16vec4 &b)
Definition: ivec.h:364
EXPLICIT Is8vec8(int i)
Definition: ivec.h:574
Iu8vec8 packu_sat(const Is16vec4 &a, const Is16vec4 &b)
Definition: ivec.h:701
I32vec2 & operator|=(const M64 &a)
Definition: ivec.h:170
__m64 _m_psubb(__m64 _MM1, __m64 _MM2)
Is32vec2 & operator^=(const M64 &a)
Definition: ivec.h:210
Iu32vec2(unsigned int i0, unsigned int i1)
Definition: ivec.h:271
EXPLICIT Is8vec8(__int64 i)
Definition: ivec.h:573
I8vec8 & operator&=(const M64 &a)
Definition: ivec.h:546
M64 operator^(const M64 &a, const M64 &b)
Definition: ivec.h:121
Iu8vec8(unsigned char s0, unsigned char s1, unsigned char s2, unsigned char s3, unsigned char s4, unsigned char s5, unsigned char s6, unsigned char s7)
Definition: ivec.h:641
Is16vec4(__m64 mm)
Definition: ivec.h:378
I16vec4 & operator+=(const I16vec4 &a)
Definition: ivec.h:353
basic_ostream< char, char_traits< char > > ostream
Definition: iosfwd:678
__m64 _m_psllq(__m64 _M, __m64 _Count)
M64 operator&(const M64 &a, const M64 &b)
Definition: ivec.h:119
Is32vec2 cmpge(const Is32vec2 &a, const Is32vec2 &b)
Definition: ivec.h:258
Iu32vec2()
Definition: ivec.h:269
__m64 _m_psrlq(__m64 _M, __m64 _Count)
I16vec4 operator<<(int count)
Definition: ivec.h:359
M64(int i)
Definition: ivec.h:103
I32vec2 & operator<<=(int count)
Definition: ivec.h:181
EXPLICIT Iu32vec2(int i)
Definition: ivec.h:272
EXPLICIT Iu8vec8(__int64 i)
Definition: ivec.h:645
#define _MM_4W(element, vector)
Definition: ivec.h:83
Is8vec8 & operator+=(const I8vec8 &a)
Definition: ivec.h:585
Iu16vec4 & operator+=(const I16vec4 &a)
Definition: ivec.h:476
Is32vec2(signed int i0, signed int i1)
Definition: ivec.h:200
#define EXPLICIT
Definition: ivec.h:30
I64vec1 & operator&=(const M64 &a)
Definition: ivec.h:138
Is16vec4 sat_add(const Is16vec4 &a, const Is16vec4 &b)
Definition: ivec.h:447
Is32vec2 cmpgt(const Is32vec2 &a, const Is32vec2 &b)
Definition: ivec.h:255
I32vec2 & operator<<=(const I32vec2 &a)
Definition: ivec.h:180
Is16vec4 & operator>>=(int count)
Definition: ivec.h:405
Is32vec2 operator<<(const M64 &a)
Definition: ivec.h:217
Iu16vec4 & operator<<=(int count)
Definition: ivec.h:484
__m64 vec
Definition: ivec.h:97
Iu32vec2 & operator^=(const M64 &a)
Definition: ivec.h:281
const unsigned char & operator[](int i) const
Definition: ivec.h:675
#define _MM_2DW(element, vector)
Definition: ivec.h:86
_Check_return_ _In_z_ const char _Inout_ FILE * _File
Definition: stdio.h:226
const short & operator[](int i) const
Definition: ivec.h:420
Iu32vec2 & operator|=(const M64 &a)
Definition: ivec.h:280
I32vec2(__m64 mm)
Definition: ivec.h:160
EXPLICIT Is32vec2(int i)
Definition: ivec.h:201
Is16vec4 & operator<<=(const M64 &a)
Definition: ivec.h:399
Iu16vec4 & operator=(const M64 &a)
Definition: ivec.h:468
#define IVEC_ADD_SUB(vect, element, opsize)
Definition: ivec.h:727
__m64 _m_from_int(int _I)
Is32vec2 & operator&=(const M64 &a)
Definition: ivec.h:208
const signed char & operator[](int i) const
Definition: ivec.h:605
Iu16vec4 & operator>>=(const M64 &a)
Definition: ivec.h:487
Is32vec2 & operator=(const M64 &a)
Definition: ivec.h:205
EXPLICIT Iu16vec4(__int64 i)
Definition: ivec.h:464
Iu16vec4 operator>>(int count)
Definition: ivec.h:486
I32vec2 unpack_high(const I32vec2 &a, const I32vec2 &b)
Definition: ivec.h:190
Iu32vec2 operator<<(const M64 &a)
Definition: ivec.h:288
__m64 _m_pcmpgtw(__m64 _MM1, __m64 _MM2)
Is8vec8(signed char s0, signed char s1, signed char s2, signed char s3, signed char s4, signed char s5, signed char s6, signed char s7)
Definition: ivec.h:570
__m64 _m_paddw(__m64 _MM1, __m64 _MM2)
Iu32vec2 & operator=(const M64 &a)
Definition: ivec.h:276
Is32vec2 cmple(const Is32vec2 &a, const Is32vec2 &b)
Definition: ivec.h:257
__m64 _m_pcmpgtb(__m64 _MM1, __m64 _MM2)
#define _VEC_ASSERT(_Expression)
Definition: ivec.h:47
Is16vec4()
Definition: ivec.h:377
Iu16vec4 & operator^=(const M64 &a)
Definition: ivec.h:473
Is32vec2 operator>>(int count)
Definition: ivec.h:223
I32vec2()
Definition: ivec.h:159
I64vec1 & operator>>=(const M64 &a)
Definition: ivec.h:149
M64(__int64 mm)
Definition: ivec.h:102
__m64 _m_pcmpeqb(__m64 _MM1, __m64 _MM2)
Iu16vec4 & operator-=(const I16vec4 &a)
Definition: ivec.h:477
unsigned int & operator[](int i)
Definition: ivec.h:315
Iu16vec4 operator>>(const M64 &a)
Definition: ivec.h:485
Is8vec8 & operator=(const M64 &a)
Definition: ivec.h:577
__m64 _m_paddusb(__m64 _MM1, __m64 _MM2)
__m64 _m_packuswb(__m64 _MM1, __m64 _MM2)
const union @94 __mmx_all_ones_cheat
Is8vec8 & operator&=(const M64 &a)
Definition: ivec.h:580
__int64 m1
Definition: ivec.h:114
I8vec8 & operator=(const M64 &a)
Definition: ivec.h:543
EXPLICIT Iu16vec4(int i)
Definition: ivec.h:465
__m64 _m_pcmpeqd(__m64 _MM1, __m64 _MM2)
Is32vec2 cmplt(const Is32vec2 &a, const Is32vec2 &b)
Definition: ivec.h:256
I32vec2 cmpneq(const I32vec2 &a, const I32vec2 &b)
Definition: ivec.h:187
__m64 _m_paddd(__m64 _MM1, __m64 _MM2)
Is16vec4 & operator*=(const I16vec4 &a)
Definition: ivec.h:394
Is8vec8()
Definition: ivec.h:568
I16vec4 & operator=(const M64 &a)
Definition: ivec.h:345
Is16vec4 mul_high(const Is16vec4 &a, const Is16vec4 &b)
Definition: ivec.h:449
Is32vec2 & operator-=(const I32vec2 &a)
Definition: ivec.h:214
Is16vec4 & operator=(const M64 &a)
Definition: ivec.h:384
Iu16vec4 operator<<(const M64 &a)
Definition: ivec.h:481
Iu8vec8(__m64 mm)
Definition: ivec.h:640
__m64 _m_psrlqi(__m64 _M, int _Count)
EXPLICIT I32vec2(int i)
Definition: ivec.h:162
#define _MM_2UDW(element, vector)
Definition: ivec.h:85
__m64 _m_paddsb(__m64 _MM1, __m64 _MM2)
Is32vec2 mul_add(const Is16vec4 &a, const Is16vec4 &b)
Definition: ivec.h:450
#define _MM_8UB(element, vector)
Definition: ivec.h:79
signed char & operator[](int i)
Definition: ivec.h:612
Is32vec2(__m64 mm)
Definition: ivec.h:199
Is16vec4 operator>>(int count)
Definition: ivec.h:403
I64vec1 operator<<(const M64 &a)
Definition: ivec.h:143
__m64 _m_psubsw(__m64 _MM1, __m64 _MM2)
__m64 _m_psradi(__m64 _M, int _Count)
EXPLICIT I64vec1(int i)
Definition: ivec.h:134
Iu32vec2 & operator<<=(const M64 &a)
Definition: ivec.h:290
__m64 _m_pxor(__m64 _MM1, __m64 _MM2)
__m64 _m_psubd(__m64 _MM1, __m64 _MM2)
__m64 _m_pcmpgtd(__m64 _MM1, __m64 _MM2)
__m64 m2
Definition: ivec.h:114
#define _mmx_all_ones
Definition: ivec.h:117
I16vec4 & operator*=(const I16vec4 &a)
Definition: ivec.h:355
Iu16vec4 & operator*=(const I16vec4 &a)
Definition: ivec.h:478
Iu16vec4 & operator<<=(const M64 &a)
Definition: ivec.h:483
__m64 _m_psllqi(__m64 _M, int _Count)
I16vec4(short i0, short i1, short i2, short i3)
Definition: ivec.h:337
I32vec2 & operator+=(const I32vec2 &a)
Definition: ivec.h:174
I16vec4 & operator<<=(const I16vec4 &a)
Definition: ivec.h:360
I8vec8 & operator^=(const M64 &a)
Definition: ivec.h:548
Is16vec4 & operator+=(const I16vec4 &a)
Definition: ivec.h:392
Is16vec4 & operator|=(const M64 &a)
Definition: ivec.h:388
Is16vec4 operator<<(const M64 &a)
Definition: ivec.h:397
__m64 _m_packssdw(__m64 _MM1, __m64 _MM2)