Changes

Jump to: navigation, search

Template:SSE2 Instructions

10,573 bytes added, 21:57, 18 May 2018
Created page with "x86 and x86-64 - SSE2 Instructions, C-[https://en.wikipedia.org/wiki/Intrinsic_function Intrinsic] reference from [https://software...."
[[x86]] and [[x86-64]] - [[Template:SSE2 Instructions|SSE2 Instructions]], [[C]]-[https://en.wikipedia.org/wiki/Intrinsic_function Intrinsic] reference from [https://software.intel.com/sites/landingpage/IntrinsicsGuide/# Intel Intrinsics Guide]
{| class="wikitable"
|-
! Mnemonic
! Description
! colspan="3" | C-Intrinsic
|-
! colspan="2" | bitwise logical
! return
!
! parameter
|-
| pand
| packed and, r := a & b
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_and_si128 _mm_and_si128]
| (_m128i a, _m128i b)
|-
| pandn
| packed and not, r := ~a & b
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_andnot_si128 _mm_andnot_si128]
| (_m128i a, _m128i b)
|-
| por
| packed or, r := a <nowiki>|</nowiki> b
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_or_si128 _mm_or_si128]
| (_m128i a, _m128i b)
|-
| pxor
| packed xor, r:= a ^ b
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_xor_si128 _mm_xor_si128]
| (_m128i a, _m128i b)
|-
! colspan="2" | quad word shifts
! return
!
! parameter
|-
| rowspan="2" | psrlq
| packed shift right logical quad
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_srl_epi64 _mm_srl_epi64]
| (_m128i a, _m128i cnt)
|-
| immediate
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_srli_epi64 _mm_srli_epi64]
| (_m128i a, int cnt)
|-
| rowspan="2" | psllq
| packed shift left logical quad
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_sll_epi64 _mm_sll_epi64]
| (_m128i a, _m128i cnt)
|-
| immediate
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_slli_epi64 _mm_slli_epi64]
| (_m128i a, int cnt)
|-
! colspan="2" | arithmetical
! return
!
! parameter
|-
| paddb
| packed add bytes
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_add_epi8 _mm_add_epi8]
| (_m128i a, _m128i b)
|-
| psubb
| packed subtract bytes
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_sub_epi8 _mm_sub_epi8]
| (_m128i a, _m128i b)
|-
| psadbw
| packed sum of absolute differences<br/>of bytes into a word
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_sad_epu8 _mm_sad_epu8]
| (_m128i a, _m128i b)
|-
| pmaxsw
| packed maximum signed words
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_max_epi16 _mm_max_epi16]
| (_m128i a, _m128i b)
|-
| pmaxub
| packed maximum unsigned bytes
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_max_epu8 _mm_max_epu8]
| (_m128i a, _m128i b)
|-
| pminsw
| packed minimum signed words
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_min_epi16 _mm_min_epi16]
| (_m128i a, _m128i b)
|-
| pminub
| packed minimum unsigned bytes
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_min_epu8 _mm_min_epu8]
| (_m128i a, _m128i b)
|-
| pcmpeqb
| packed compare equal bytes
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cmpeq_epi8 _mm_cmpeq_epi8]
| (_m128i a, _m128i b)
|-
| pmullw
| packed multiply mow signed (unsigned) word
| _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mullo_epi16 _mm_mullo_epi16]
| (_m128i a, _m128i b)
|-
| pmulhw
| packed multiply high signed word
| _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mulhi_epi16 _mm_mulhi_epi16]
| (_m128i a, _m128i b)
|-
| pmulhuw
| packed multiply high unsigned word
| _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mulhi_epu16 _mm_mulhi_epu16]
| (_m128i a, _m128i b)
|-
| pmaddwd
| packed multiply words and add doublewords
| _m128
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_madd_epi16 _mm_madd_epi16]
| (_m128i a, _m128i b)
|-
! colspan="2" | unpack, shuffle
! return
!
! parameter
|-
| punpcklbw
| unpack and interleave low bytes<br/><code>gGhHfFeE:dDcCbBaA :=</code><br/><code>xxxxxxxx:GHFEDCBA #</code><br/><code>xxxxxxxx:ghfedcba</code>
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_unpacklo_epi8 _mm_unpacklo_epi8]
| (_m128i A, _m128i a)
|-
| punpckhbw
| unpack and interleave high bytes<br/><code>gGhHfFeE:dDcCbBaA :=</code><br/><code>GHFEDCBA:xxxxxxxx #</code><br/><code>ghfedcba:xxxxxxxx</code>
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_unpackhi_epi8 _mm_unpackhi_epi8]
| (_m128i A, _m128i a)
|-
| punpcklwd
| unpack and interleave low words<br/><code>dDcC:bBaA := xxxx:DCBA#xxxx:dcba</code>
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_unpacklo_epi16 _mm_unpacklo_epi16]
| (_m128i A, _m128i a)
|-
| punpckhwd
| unpack and interleave high words<br/><code>dDcC:bBaA := DCBA:xxxx#dcba:xxxx</code>
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_unpackhi_epi16 _mm_unpackhi_epi16]
| (_m128i A, _m128i a)
|-
| punpckldq
| unpack and interleave low doublewords<br/><code>bB:aA := xx:BA # xx:ba</code>
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_unpacklo_epi32 _mm_unpacklo_epi32]
| (_m128i A, _m128i a)
|-
| punpckhdq
| unpack and interleave high doublewords<br/><code>bB:aA := BA:xx # ba:xx</code>
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_unpackhi_epi32 _mm_unpackhi_epi32]
| (_m128i A, _m128i a)
|-
| punpcklqdq
| unpack and interleave low quadwords<br/><code>a:A := x:A # x:a</code>
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_unpacklo_epi64 _mm_unpacklo_epi64]
| (_m128i A, _m128i a)
|-
| punpckhqdq
| unpack and interleave high quadwords<br/><code>a:A := A:x # a:x</code>
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_unpackhi_epi64 _mm_unpackhi_epi64]
| (_m128i A, _m128i a)
|-
| pshuflw
| packed shuffle low words
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_shufflelo_epi16 _mm_shufflelo_epi16]
| (_m128i a, int imm)
|-
| pshufhw
| packed shuffle high words
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_shufflehi_epi16 _mm_shufflehi_epi16]
| (_m128i a, int imm)
|-
| pshufd
| packed shuffle doublewords
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_shuffle_epi32 _mm_shuffle_epi32]
| (_m128i a, int imm)
|-
! colspan="2" | load, store, moves
! return
!
! parameter
|-
| movdqa
| move aligned double quadword<br/>xmm := *p
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_load_si128 _mm_load_si128]
| (_m128i const *p)
|-
| movdqu
| move unaligned double quadword<br/>xmm := *p
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_loadu_si128 _mm_loadu_si128]
| (_m128i const*p)
|-
| movdqa
| move aligned double quadword<br/>*p := xmm
| style="text-align:right;" | void
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_store_si128 _mm_store_si128]
| (_m128i *p, _m128i a)
|-
| movdqu
| move unaligned double quadword<br/>*p := xmm
| style="text-align:right;" | void
| [http://msdn.microsoft.com/en-us/library/w1k1k29t.aspx _mm_storeu_si128]
| (_m128i *p, _m128i a)
|-
| movq
| move quadword, xmm := gp64
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_storeu_si128 _mm_cvtsi64_si128]
| (_int64 a)
|-
| movq
| move quadword, gp64 := xmm
| style="text-align:right;" | _int64
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtsi128_si64 _mm_cvtsi128_si64]
| (_m128i a)
|-
| movd
| move double word or quadword<br/>xmm := gp64
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtsi64x_si128 _mm_cvtsi64x_si128]
| (_int64 value)
|-
| movd
| move doubleword, xmm := gp32
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtsi32_si128 _mm_cvtsi32_si128]
| (int a)
|-
| movd
| move doubleword, gp32 := xmm
| style="text-align:right;" | int
| [http://msdn.microsoft.com/en-us/library/5z7a9642%28VS.100%29.aspx _mm_cvtsi128_si32]
| (_m128i a)
|-
| pextrw
| extract packed word, gp16 := xmm[i]
| style="text-align:right;" | int
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_cvtsi128_si32 _mm_extract_epi16]
| (_m128i a, int imm)
|-
| pinsrw
| packed insert word, xmm[i] := gp16
| style="text-align:right;" | _m128i
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_insert_epi16 _mm_insert_epi16]
| (_m128i a, int b, int imm)
|-
| pmovmskb
| packed move mask byte,<br/>gp32 := 16 sign-bits(xmm)
| style="text-align:right;" | int
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_movemask_epi _mm_movemask_epi]
| (_m128i a)
|-
! colspan="2" | cache support
! return
!
! parameter
|-
| prefetch
|
| void
| [https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_prefetch _mm_prefetch]
| (char const* p , int i)
|}

Navigation menu