Intel Xeon Phi "Knights Landing" 处理器将是第一个支持 AVX-512 的处理器,但它只支持 "F"(比如没有 SSE2 的 SSE,或者没有 AVX2 的 AVX),所以主要是浮点数。
我正在编写通过内部函数使用高达 SSE4.1 指令对字节和字(8 位和 16 位)进行操作的软件。
我很困惑在 AVX-512F 中是否会有所有/大多数 SSE4.1 指令的 EVEX 编码版本,这是否意味着我可以期望我的 SSE 代码自动获得 EVEX 扩展指令并映射到所有新寄存器。
维基百科是这样说的:
SIMD寄存器文件的宽度从256位增加到512位,共有32个寄存器ZMM0-ZMM31。这些寄存器可以作为来自 AVX 扩展的 256 位 YMM 寄存器和来自 Streaming SIMD 扩展的 128 位 XMM 寄存器进行寻址,并且在使用 EVEX 时,可以扩展传统的 AVX 和 SSE 指令以对 16 个额外的寄存器 XMM16-XMM31 和 YMM16-YMM31 进行操作编码形式。
不幸的是,这并没有说明在启用 AVX512 的情况下编译 SSE4 代码是否会导致与将其编译为 AVX2 提供的相同(令人敬畏的)加速(遗留指令的 VEX 编码)。
有人知道为 AVX-512F 编译 SSE2/4 代码(C 内在函数)时会发生什么吗?可以期待像 AVX1 的字节和字指令的 VEX 编码那样的减速带吗?