在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]
Run Code Online (Sandbox Code Playgroud)
和
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]
Run Code Online (Sandbox Code Playgroud)
这两个处理器操作之间是否有任何实际差异?如果没有:为什么有两条指令?如果不是:使用它们按顺序执行整数是否安全?
所有(或几乎所有)SEE/AVX 指令的 PS 和 PD 变体的存在都有其历史背景:曾几何时,当 Intel 最初设计第一个 SSE 指令集时,他们认为未来的芯片架构将具有三个领域: 整数、单精度浮点(32 位)、双精度浮点(64 位)
注意: 域是 CPU 内的隔离逻辑单元,它们很重要,因为在它们之间传输 SSE/AVX 寄存器内容时存在很小的延迟。因此,如果来自整数域中的指令的结果被用作浮点域中的指令的输入,则可能发生1或2个周期的延迟。
因此,英特尔将大多数逻辑按位和混洗指令镜像了三次:一次用于整数,一次用于 SP-FP,一次用于 DP-FP。这些镜像指令执行的操作是相同的——包括整数和浮点类型之间的操作。
目前大多数 x86 架构有两个域: 整数和浮点。 FP 域处理单精度和双精度(32/64 位)。某些架构只有一个域用于所有 SSE/AVX 指令。未来的某些架构中可能会添加第三个双精度域。
| 归档时间: |
|
| 查看次数: |
609 次 |
| 最近记录: |