大家好,欢迎来到IT知识分享网。
简介: 它是SSE3(Streaming SIMD Extensions 3)的补充,引入了一些额外的指令,用于加速多媒体和向量化计算。SSSE3指令集提供了一些新的指令,例如平行比较、平行加减运算、逐位平行操作等,可以帮助优化处理多媒体数据和执行向量化计算任务。这些指令能够提高程序的性能和效率,特别是在涉及大量数据并行处理的情况下。
水平加法/减法 | |
PHADDW |
PHADDW mm1, mm2/m64 Add 16-bit integers horizontally, pack to mm1. 将两个操作数相加,并将结果存储在mm1寄存器中。 这里的mm1和mm2/m64表示寄存器或内存位置,分别存储着16位的数据。 PHADDW xmm1, xmm2/m128 Add 16-bit integers horizontally, pack to xmm1. 将两个操作数相加,并将结果存储在xmm1寄存器中。 这里的xmm1和xmm2/m64表示寄存器或内存位置,分别存储着16位的数据。 PHADDW执行的是带符号的16位整数加法操作。 |
PHADDSW |
将两个操作数相加,并将结果存储在mm1寄存器中。 用于将两个操作数相加,并将结果存储在XMM寄存器中。 这里的xmm1和xmm2/m128表示寄存器或内存位置,分别存储着16位的数据 PHADDSW执行的是带符号的16位整数加法操作。 |
PHADDD |
PHADDD xmm1, xmm2/m128 Add 32-bit integers horizontally, pack to xmm1. 将两个操作数相加,并将结果存储在XMM寄存器中。这里的XMM表示128位的寄存器, 将两个操作数相加,并将结果存储在MM寄存器中。这里的MM表示64位的寄存器, PHADDD执行的是带符号的32位整数加法操作。 |
PHSUBW |
PHSUBW mm1, mm2/m64 Subtract 16-bit signed integers horizontally, pack to mm1. 指令用于将两个操作数相减,并将结果存储在mm1寄存器中。 这里的mm1和mm2/m64表示寄存器或内存位置,分别存储着16位的数据。 将两个操作数相减,并将结果存储在XMM寄存器中。 这里的xmm1和xmm2/m128表示寄存器或内存位置,分别存储着16位的数据 PHSUBW执行的是带符号的16位整数减法操作 |
PHSUBSW |
PHSUBSW mm1, mm2/m64 Subtract 16-bit signed integer horizontally, pack saturated integers to mm1. 用于将两个操作数相减,并将结果存储在mm1寄存器中。 这里的mm1和mm2/m64表示寄存器或内存位置,分别存储着16位的数据。 PHSUBSW xmm1, xmm2/m128 Subtract 16-bit signed integer horizontally, pack saturated integers to xmm1. 用于将两个操作数相减,并将结果存储在XMM寄存器中。 这里的xmm1和xmm2/m128表示寄存器或内存位置,分别存储着16位的数据 PHSUBSW执行的是带符号的16位整数减法操作。 |
PHSUBD |
将两个操作数相减,并将结果存储在mm1寄存器中。 这里的mm1和mm2/m64表示寄存器或内存位置,分别存储着32位的数据。 用于将两个操作数相减,并将结果存储在XMM寄存器中。 这里的xmm1和xmm2/m128表示寄存器或内存位置,分别存储着32位的数据 PHSUBD执行的是带符号的32位整数减法操作。 |
Packed Absolute Values | |
PABSB |
将mm2/m64寄存器或内存位置中的8位带符号整数取绝对值, 并将结果存储在mm1寄存器中 将xmm2/m128寄存器或内存位置中的8位带符号整数取绝对值, 并将结果存储在xmm1寄存器中 |
PABSW |
将mm2/m64寄存器或内存位置中的16位带符号整数取绝对值, 并将结果存储在mm1寄存器中 将xmm2/m128寄存器或内存位置中的16位带符号整数取绝对值, 并将结果存储在xmm1寄存器中 |
PABSSD |
将mm2/m64寄存器或内存位置中的32位带符号整数取绝对值, 并将结果存储在mm1寄存器中。 将xmm2/m128寄存器或内存位置中的32位带符号整数取绝对值, 并将结果存储在xmm1寄存器中 |
Multiply and Add Packed Signed and Unsigned Bytes | |
PMADDUBSW |
用于将两个操作数进行乘法和加法运算, 并将结果存储在mm1寄存器中。 将两个操作数进行乘法和加法运算,并将结果存储在XMM寄存器中。 这里的xmm1和xmm2/m128表示寄存器或内存位置,分别存储着8位的数据 PMADDUBSW执行的是带符号的8位整数乘法和加法操作。 |
Packed Multiply High with Round and Scale: | |
PMULHRSW |
pack high 16 bits to mm1. 将两个操作数进行带符号16位整数乘法,并将结果存储在mm1寄存器中。 pack high 16 bits to xmm1. 将两个操作数进行带符号16位整数乘法,并将结果存储在XMM寄存器中。
|
Packed Shuffle Bytes: | |
PSHUFB |
根据xmm2/m128寄存器或内存位置中的内容对xmm1寄存器中的数据进行按位重新排列。 |
Packed Sign: | |
|
|
PSIGNB |
PSIGNB mm1, mm2/m64 Negate/zero/preserve packed byte integers in mm1 depending on the corresponding sign in mm2/m64. 将mm1寄存器中的每个字节(8位)根据mm2/m64寄存器或内存位置中的符号位进行取值。如果mm2/m64中对应字节的符号位为0,则结果字节取正值;如果mm2/m64中对应字节的符号位为1,则结果字节取负值。 the corresponding sign in xmm2/m128. 将xmm1寄存器中的每个字节(8位)根据xmm2/m128寄存器或内存位置中的符号位进行取值。如果xmm2/m128中对应字节的符号位为0,则结果字节取正值;如果xmm2/m128中对应字节的符号位为1,则结果字节取负值。 |
PSIGNW |
on the corresponding sign in mm2/m128. 将mm1寄存器中的每个字(16位)根据mm2/m64寄存器或内存位置中的符号位进行取值。如果mm2/m64中对应字的符号位为0,则结果字取正值;如果mm2/m64中对应字的符号位为1,则结果字取负值。 on the corresponding sign in xmm2/m128. 将xmm1寄存器中的每个字(16位)根据xmm2/m128寄存器或内存位置中的符号位进行取值。如果xmm2/m128中对应字的符号位为0,则结果字取正值;如果xmm2/m128中对应字的符号位为1,则结果字取负值。 |
PSIGND |
on the corresponding sign in mm2/m128. 将mm1寄存器中的每个双字(32位)根据mm2/m64寄存器或内存位置中的符号位进行取值。如果mm2/m64中对应双字的符号位为0,则结果双字取正值;如果mm2/m64中对应双字的符号位为1,则结果双字取负值。 on the corresponding sign in xmm2/m128. 于将xmm1寄存器中的每个双字(32位)根据xmm2/m128寄存器或内存位置中的符号位进行取值。如果xmm2/m128中对应双字的符号位为0,则结果双字取正值;如果xmm2/m128中对应双字的符号位为1,则结果双字取负值。 |
Packed Align Right: | |
PALIGNR |
extract byte-aligned result shifted to the right by constant value in imm8 into mm1. 将mm1寄存器和mm2/m64寄存器或内存位置中的数据进行对齐和移位操作, imm8参数指定了移位的位数。 PALIGNR xmm1, xmm2/m128, imm8 Concatenate destination and source operands, extract byte-aligned result shifted to the right by constant value in imm8 into xmm1. 将xmm1寄存器和xmm2/m128寄存器或内存位置中的数据进行对齐和移位操作, imm8参数指定了移位的位数 |
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/132379.html