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?]); } |