| (1)MMX | 數據傳輸指令 |
| movd | 復制MMX寄存器中的低位雙字到一個通用寄存器或內存中,也可以把通用寄存器或內存中的數據復制到MMX寄存器的低位雙字中 |
| movq | 把一個MMX寄存器的內容復制到另一個MMX寄存器中,這個指令也能被用來把一個內存區域中的內容復制到一個MMX寄存器中,或者把MMX寄存器中的內容復制到內存中 |
| (2)MXX | 算術運算指令 |
| paddb paddw | 使用指定的操作數進行組合整型加法 |
| paddd paddq | 使用指定的操作數進行組合整型加法 |
| paddsb paddsw | 用飽和運算對有符號組合整型進行加法計算 |
| paddusb paddusw | 用飽和運算對無符號組合整型進行加法計算 |
| psubb psubw | 使用指定的操作數進行組合整型減法,源操作數存放減數,目標操作數存放被減數 |
| psubd psubq | 使用指定的操作數進行組合整型減法,源操作數存放減數,目標操作數存放被減數 |
| psubsb psubsw | 用飽和運算對有符號組合整型進行減法計算,源操作數存放減數,目標操作數存放被減數 |
| psubusb psubusw | 用飽和運算對無符號組合整型進行減法計算,源操作數存放減數,目標操作數存放被減數 |
| pmaddwd | 對有符號組合整型進行乘法,然后對結果中相鄰的數據元素進行有符號的整型加法,這個指令可以用來進行整型的點乘運算 |
| pmaddubsw | 進行一個組合整型乘法,其中源操作數中存放有符號的字節,目標操作數中存放無符號的字節,然后對產生的有符號單字值進行飽和運算相加,最后將結果存放在目標操作數中 |
| pmuludq | 將源操作數中的低位雙字與目標操作數的低位雙字相乘,產生的四字結果存放在目標操作數中 |
| pmullw | 使用單字進行有符號組合整型乘法,然后將每個雙字的乘積中的低位單字存放在目標操作數中 |
| pmulhw | 使用單字進行有符號組合整型乘法,然后將每個雙字的乘積中的高位單字存放在目標操作數中 |
| pmulhuw | 使用單字進行無符號組合整型乘法,然后將每個雙字的乘積中的高位單字存放在目標操作數中 |
| pmulhrsw | 使用單字值進行無符號組合整型乘法,然后將雙字的乘積舍入到18位,在縮放到16位,最后存放在目標操作數 |
| pavgb pavgw | 對指定操作數中無符號整型數據計算組合平均值 |
| pmaxub | 對兩組無符號單字節組合整型數據進行比較,保存每個比較重較大的單字節數值 |
| pminub | 對兩組無符號單字節組合整型數據進行比較,保存每個比較重較小的單字節數值 |
| pmaxsw | 對兩組有符號單字節組合整型數據進行比較,保存每個比較重較大的單字節數值 |
| pminsw | 對兩組有符號單字節組合整型數據進行比較,保存每個比較重較小的單字節數值 |
| psignb psignw psignd | 根據源操作數中對應數據元素的符號,對目標操作數中的每個有符號整型數據進行取負,取零或保存不變的操作 |
| pabsb pabsw pabsd | 計算每組組合數據元素中的絕對值 |
| phaddw phaddd | 對源操作數和目標操作數中的相鄰的數據元素進行整型加法操作 |
| phaddsw | 利用飽和運算,對源操作數和目標操作數中相鄰的數據元素進行有符號的整型加法操作,結果存放在目標操作數中 |
| phsubw phsubd | 對源操作數和目標操作數中相鄰的數據元素進行整型減法操作 |
| phsubsw | 利用飽和運算,對源操作數和目標操作數中相鄰的數據元素進行有符號的整型減法操作,結果存放目標操作數中 |
| (3)MMX | 比較指令 |
| pcmpeqb pcmpeqw pcmpeqd | 逐個元素比較來個組合整型操作數是否相等,如果源操作數和目標操作數中的數據元素相等,則對應的目標操作數中的數據元素被設置為全1;如果不相等,則目標操作數中的數據元素被設置為全0 |
| pcmpgtb pcmpgtw pcmpgtd | 逐個元素比較來個組合整型操作數的大小,如果目標操作數中的數據元素較大,則對應的目標操作數中的數據元素被設置為全1;否則目標操作數中的數據元素被設置為全0 |
| packsswb packssdw | 使用有符號的飽和運算,將源操作數和目標操作數中的組合整型單字或雙字轉換為組合整型字節或單字 |
| packuswb | 使用無符號的飽和運算,將源操作數和目標操作數中的組合整型單字轉換為組合整型字節 |
| (4)MMX | 邏輯和位移指令 |
| pand | 對指定的源操作數和目標操作數進行按位邏輯與操作 |
| pandn | 對指定的源操作數和反轉的目標操作數進行按位的邏輯與操作 |
| por | 對指定的源操作數和目標操作數進行按位的邏輯或操作 |
| pxor | 對指定的源操作數和目標操作數進行按位的邏輯異或操作 |
| psllw pslld psllq | 對目標操作數中的每個元素進行邏輯左移操作,低位用0補進。源操作數中存放需要左移的位數,可以是內存地址,MMX寄存器或者是立即數 |
| psrlw psrld psrlq | 對目標操作數中的每個元素進行邏輯右移操作,高位用0補進。源操作數中存放需要右移的位數,可以是內存地址,MMX寄存器或者是立即數 |
| psraw psrad | 對目標操作數中的每個元素進行算術右移操作,高位用符號位補進。源操作數中存放需要右移的位數,可以是內存地址,MMX寄存器或者是立即數 |
| palignr | 將目標操作數和源操作數組成一個臨時數值,然后按照立即操作數指定的計數對這個臨時數值進行按字節右移操作。將臨時數值最右邊的四字存入目標操作數 |
| (5)MMX | 解租和重排指令 |
| punpckhbw punpckhbd punpckhbq | 解租并交織源操作數和目標操作數中的高位數據元素。這些指令可以用于把字節轉換字,字轉換為雙字以及雙字轉換為四字 |
| punpcklbw punpcklbd punpcklbq | 解租并交織源操作數和目標操作數中的低位數據元素。這些指令可以用于把字節轉換字,字轉換為雙字以及雙字轉換為四字 |
| pshufb | 源操作數指定一個控制掩碼,根據這個掩碼對目標操作數中的字節進行重排操作。這個指令用于對組合操作數的字節進行重新排列 |
| pshufw | 立即操作數指定一個掩碼,根據這個掩碼對目標操作數中的字進行重排操作。這個指令用于對組合操作數的字進行重新排列 |
| (6)MMX | 插入和提取指令 |
| pinstrw | 復制通用寄存器中的低位單字,將其插入一個MMX寄存器中,插入的位置由立即操作數指定 |
| pextrw | 從MMX寄存器中提取一個單字,將其復制到一個通用寄存器的低位單字中,提取的位置由立即操作數指定 |
| (7)MMX | 狀態和緩存控制指令 |
| emms | 通過重置FPU標簽字來清除MMX的狀態信息,用以標識所有的FPU寄存器都已經被清空,這指令在每次從MMX指令到FPU指令轉換之前必須執行 |
| movntq | 使用非臨時提示將MMX寄存器中的內容復制到內存中 |
| maskmovq | 使用非臨時提示有條件地將MMX寄存器中的某些字節復制到內存中,另一個MMX寄存器存放一個掩碼值,用于指定那些字節需要被復制。EDI寄存器指向目標的內存位置 |