Instructions函數對照表:01 mmintrin.h與MMX指令集

 Name:函數名。ide

Name2:另外一種函數名。
功能:功能描述。
Asm:彙編指令。
PCode:僞代碼。函數

Name Name2 功能 Asm PCode
_m_empty _mm_empty MMX狀態置空 EMMS  
_m_from_int _mm_cvtsi32_si64 加載32位 MOVD r=ZX(i)
_m_to_int _mm_cvtsi64_si32 返回低32位 MOVD r=(uD)m
_m_packsswb _mm_packs_pi16 飽和打包.符16位至符8位 PACKSSWB for(i=0;i<4;++i){ r.iB[i]=SS(m1.iW[i]); r.iB[4+i]=SS(m2.iW[i]); }
_m_packssdw _mm_packs_pi32 飽和打包.符32位至符16位 PACKSSDW for(i=0;i<2;++i){ r.iW[i]=SS(m1.iD[i]); r.iW[2+i]=SS(m2.iD[i]); }
_m_packuswb _mm_packs_pu16 飽和打包.符16位至無8位 PACKUSWB for(i=0;i<4;++i){ r.uB[i]=SU(m1.iW[i]); r.uB[4+i]=SU(m2.iW[i]); }
_m_punpckhbw _mm_unpackhi_pi8 高位解包.8位 PUNPCKHBW for(i=0;i<4;++i){ r.mB[i*2]=m1.mB[4+i]; r.mB[i*2+1]=m2.mB[4+i]; }
_m_punpckhwd _mm_unpackhi_pi16 高位解包.16位 PUNPCKHWD for(i=0;i<2;++i){ r.mW[i*2]=m1.mW[2+i]; r.mW[i*2+1]=m2.mW[2+i]; }
_m_punpckhdq _mm_unpackhi_pi32 高位解包.32位 PUNPCKHDQ for(i=0;i<1;++i){ r.mD[i*2]=m1.mD[1+i]; r.mD[i*2+1]=m2.mD[1+i]; }
_m_punpcklbw _mm_unpacklo_pi8 低位解包.8位 PUNPCKLBW for(i=0;i<4;++i){ r.mB[i*2]=m1.mB[i]; r.mB[i*2+1]=m2.mB[i]; }
_m_punpcklwd _mm_unpacklo_pi16 低位解包.16位 PUNPCKLWD for(i=0;i<2;++i){ r.mW[i*2]=m1.mW[i]; r.mW[i*2+1]=m2.mW[i]; }
_m_punpckldq _mm_unpacklo_pi32 低位解包.32位 PUNPCKLDQ for(i=0;i<1;++i){ r.mD[i*2]=m1.mD[i]; r.mD[i*2+1]=m2.mD[i]; }
_m_paddb _mm_add_pi8 環繞加法.8位 PADDB for(i=0;i<8;++i){ r.uB[i]=m1.uB[i]+m1.uB[i]; }
_m_paddw _mm_add_pi16 環繞加法.16位 PADDW for(i=0;i<4;++i){ r.uW[i]=m1.uW[i]+m1.uW[i]; }
_m_paddd _mm_add_pi32 環繞加法.32位 PADDD for(i=0;i<2;++i){ r.uD[i]=m1.uD[i]+m1.uD[i]; }
_m_paddsb _mm_adds_pi8 飽和加法.符8位 PADDSB for(i=0;i<8;++i){ r.uB[i]=SS(m1.uB[i]+m1.uB[i]); }
_m_paddsw _mm_adds_pi16 飽和加法.符16位 PADDSW for(i=0;i<4;++i){ r.uW[i]=SS(m1.uW[i]+m1.uW[i]); }
_m_paddusb _mm_adds_pu8 飽和加法.無8位 PADDUSB for(i=0;i<8;++i){ r.uB[i]=SU(m1.uB[i]+m1.uB[i]); }
_m_paddusw _mm_adds_pu16 飽和加法.無16位 PADDUSW for(i=0;i<4;++i){ r.uW[i]=SU(m1.uW[i]+m1.uW[i]); }
_m_psubb _mm_sub_pi8 環繞減法.8位 PSUBB for(i=0;i<8;++i){ r.uB[i]=m1.uB[i]-m1.uB[i]; }
_m_psubw _mm_sub_pi16 環繞減法.16位 PSUBW for(i=0;i<4;++i){ r.uW[i]=m1.uW[i]-m1.uW[i]; }
_m_psubd _mm_sub_pi32 環繞減法.32位 PSUBD for(i=0;i<2;++i){ r.uD[i]=m1.uD[i]-m1.uD[i]; }
_m_psubsb _mm_subs_pi8 飽和減法.符8位 PSUBSB for(i=0;i<8;++i){ r.uB[i]=SS(m1.uB[i]-m1.uB[i]); }
_m_psubsw _mm_subs_pi16 飽和減法.符16位 PSUBSW for(i=0;i<4;++i){ r.uW[i]=SS(m1.uW[i]-m1.uW[i]); }
_m_psubusb _mm_subs_pu8 飽和減法.無8位 PSUBUSB for(i=0;i<8;++i){ r.uB[i]=SU(m1.uB[i]-m1.uB[i]); }
_m_psubusw _mm_subs_pu16 飽和減法.無16位 PSUBUSW for(i=0;i<4;++i){ r.uW[i]=SU(m1.uW[i]-m1.uW[i]); }
_m_pmaddwd _mm_madd_pi16 乘後二加.符16位 PMADDWD for(i=0;i<2;++i){ r.iD[i]=iD(m1.iW[i*2]*m2.iW[i*2]) + iD(m1.iW[i*2+1]*m2.iW[i*2+1]); }
_m_pmulhw _mm_mulhi_pi16 乘法高位.符16位 PMULHW for(i=0;i<4;++i){ r.iW[i]=hi16(m1.iW[i]*m1.iW[i]); }
_m_pmullw _mm_mullo_pi16 乘法低位.符16位 PMULLW for(i=0;i<4;++i){ r.iW[i]=lo16(m1.iW[i]*m1.iW[i]); }
_m_psllw _mm_sll_pi16 邏輯左移.寄存器.16位 PSLLW  
_m_psllwi _mm_slli_pi16 邏輯左移.當即數.16位 PSLLW for(i=0;i<4;++i){ r.uW[i]=m.uW[i]<<count; }
_m_pslld _mm_sll_pi32 邏輯左移.寄存器.32位 PSLLD  
_m_pslldi _mm_slli_pi32 邏輯左移.當即數.32位 PSLLD for(i=0;i<2;++i){ r.uD[i]=m.uW[i]<<count; }
_m_psllq _mm_sll_si64 邏輯左移.寄存器.64位 PSLLQ  
_m_psllqi _mm_slli_si64 邏輯左移.當即數.64位 PSLLQ for(i=0;i<1;++i){ r.uQ[i]=m.uW[i]<<count; }
_m_psraw _mm_sra_pi16 算術右移.寄存器.16位 PSRAW  
_m_psrawi _mm_srai_pi16 算術右移.當即數.16位 PSRAW for(i=0;i<4;++i){ r.uW[i]=SX(m.uW[i]>>count); }
_m_psrad _mm_sra_pi32 算術右移.寄存器.32位 PSRAD  
_m_psradi _mm_srai_pi32 算術右移.當即數.32位 PSRAD for(i=0;i<2;++i){ r.uD[i]=SX(m.uW[i]>>count); }
_m_psrlw _mm_srl_pi16 邏輯右移.寄存器.16位 PSRLW  
_m_psrlwi _mm_srli_pi16 邏輯右移.當即數.16位 PSRLW for(i=0;i<4;++i){ r.uW[i]=ZX(m.uW[i]>>count); }
_m_psrld _mm_srl_pi32 邏輯右移.寄存器.32位 PSRLD  
_m_psrldi _mm_srli_pi32 邏輯右移.當即數.32位 PSRLD for(i=0;i<2;++i){ r.uD[i]=ZX(m.uW[i]>>count); }
_m_psrlq _mm_srl_si64 邏輯右移.寄存器.64位 PSRLQ  
_m_psrlqi _mm_srli_si64 邏輯右移.當即數.64位 PSRLQ for(i=0;i<1;++i){ r.uQ[i]=zX(m.uW[i]>>count); }
_m_pand _mm_and_si64 邏輯位與 PAND r = m1&m2
_m_pandn _mm_andnot_si64 邏輯位與非 PANDN r = (!m1)&m2
_m_por _mm_or_si64 邏輯位或 POR r = m1|m2
_m_pxor _mm_xor_si64 邏輯位異或 PXOR r = m1^m2
_m_pcmpeqb _mm_cmpeq_pi8 比較.相等.符8位 PCMPEQB for(i=0;i<8;++i){ r.iB[i]=BM(m1.iB[i]==m2.iB[i]); }
_m_pcmpeqw _mm_cmpeq_pi16 比較.相等.符16位 PCMPEQW for(i=0;i<4;++i){ r.iW[i]=BM(m1.iW[i]==m2.iW[i]); }
_m_pcmpeqd _mm_cmpeq_pi32 比較.相等.符32位 PCMPEQD for(i=0;i<2;++i){ r.iD[i]=BM(m1.iD[i]==m2.iD[i]); }
_m_pcmpgtb _mm_cmpgt_pi8 比較.大於.符8位 PCMPGTB for(i=0;i<8;++i){ r.iB[i]=BM(m1.iB[i]>m2.iB[i]); }
_m_pcmpgtw _mm_cmpgt_pi16 比較.大於.符16位 PCMPGTW for(i=0;i<4;++i){ r.iW[i]=BM(m1.iW[i]>m2.iW[i]); }
_m_pcmpgtd _mm_cmpgt_pi32 比較.大於.符32位 PCMPGTD for(i=0;i<2;++i){ r.iD[i]=BM(m1.iD[i]>m2.iD[i]); }
_mm_setzero_si64   賦值爲零   r = 0
_mm_set_pi32   賦值自32位   for(i=0;i<2;++i){ r.uD[i]=arg[i]); }
_mm_set_pi16   賦值自16位   for(i=0;i<4;++i){ r.uW[i]=arg[i]); }
_mm_set_pi8   賦值自8位   for(i=0;i<8;++i){ r.uB[i]=arg[i]); }
_mm_set1_pi32   重複賦值自32位   for(i=0;i<2;++i){ r.uD[i]=arg[0]); }
_mm_set1_pi16   重複賦值自16位   for(i=0;i<4;++i){ r.uW[i]=arg[0]); }
_mm_set1_pi8   重複賦值自8位   for(i=0;i<8;++i){ r.uB[i]=arg[0]); }
_mm_setr_pi32   逆序賦值自32位   for(i=0;i<2;++i){ r.uD[i]=arg[i?]); }
_mm_setr_pi16   逆序賦值自16位   for(i=0;i<4;++i){ r.uW[i]=arg[i?]); }
_mm_setr_pi8   逆序賦值自8位   for(i=0;i<8;++i){ r.uB[i]=arg[i?]); }
相關文章
相關標籤/搜索