在AVX中,有两条指令可以执行按位操作-或VORPD和VORPS。医生说:
VORPD (VEX.256 encoded version)
DEST[63:0] <- SRC1[63:0] BITWISE OR SRC2[63:0]
DEST[127:64] <- SRC1[127:64] BITWISE OR SRC2[127:64]
DEST[191:128] <- SRC1[191:128] BITWISE OR SRC2[191:128]
DEST[255:192] <- SRC1[255:192] BITWISE OR SRC2[255:192]和
VORPS (VEX.256 encoded version)
DEST[31:0] <- SRC1[31:0] BITWISE OR SRC2[31:0]
DEST[63:32] <- SRC1[63:32] BITWISE OR SRC2[63:32]
DEST[95:64] <- SRC1[95:64] BITWISE OR SRC2[95:64]
DEST[127:96] <- SRC1[127:96] BITWISE OR SRC2[127:96]
DEST[159:128] <- SRC1[159:128] BITWISE OR SRC2[159:128]
DEST[191:160] <- SRC1[191:160] BITWISE OR SRC2[191:160]
DEST[223:192] <- SRC1[223:192] BITWISE OR SRC2[223:192]
DEST[255:224] <- SRC1[255:224] BITWISE OR SRC2[255:224]这两种处理器操作之间有什么实际区别吗?如果没有:为什么有两条指令?另外,如果不是这样:使用它们进行整数位或操作安全吗?
发布于 2015-08-10 21:56:04
所有(或几乎所有) SEE/AVX指令的PS和PD变体的出现有其历史背景:曾几何时,当英特尔最初设计第一个SSE指令集时,他们认为未来的芯片体系结构将有三个领域:整数,单精度浮点(32位),双精度浮点(64位)。
注意:CPU域是中独立的逻辑单元,它们之所以重要,是因为它们之间传输/AVX域的寄存器内容有很小的延迟。因此,如果来自整数域中的指令的结果被用作对浮点域中的指令的输入,则可能发生1或2个周期延迟。
因此,Intel将大多数逻辑逐位和无序指令镜像三次:一次用于整数,一次用于SP-FP,另一次用于DP-FP。这些镜像指令执行的操作是相同的--包括整数和浮点变量。
目前,大多数x86体系结构都有两个域:整数和浮点域。 FP域同时处理单精度和双精度(32/64位)。某些架构只有一个域可用于所有SSE/AVX指令。有可能会在未来的一些架构中添加第三个双精度域。
发布于 2013-06-05 20:25:22
操作的结果没有差别。逻辑一致性有两种类型,因为有两种数据类型:单包(float32)和双包(float64)。
对于整数,使用什么操作并不重要,只需与数据类型保持一致即可。如果你用最大32位的宽度打包int,使用单包,如果更大,使用双包。想象一下这是一个强制转换,你可以毫无损失地将32位int提升到64位int,但反过来,如果这是一条通往灾难的道路。
https://stackoverflow.com/questions/13990912
复制相似问题