Intel 近来在指令集方面的动作真快,AVX2 规范已经出来了。AVX2 是 AVX 指令集的扩展,和 AVX 同样的使用环境。
AVX2 最大的扩展就是引进了 256 位的整数处理指令,而 AVX 是停留在 128 位的整数处理。
AVX2 引入了 VEX 编码版的通用指令,分为三类:
其中 LZCNT 和 TZCNT 以及 INVPCID 是非 VEX 编码版本,其它的通用指令均使用了 VEX 编码。
下面这条指令是例子:
|
andn rax, rbx, rax
|
它的编码是:C4 E2 E0 F2 C0
|
C4 E2 E0 F2 C0 operand1: VEX.R + ModRM.reg = 1000(rax 寄存器) |
在 VEX 编码的通用指令中:
AVX2 需要在 CPUID.(EAX=07H, ECX=0H):EBX.AVX2[bit 5] 里检测:
|
mov eax, 1 mov eax, 7 mov ecx, 0 |
关于这些检测的详细说明,请浏览:http://www.mouseos.com/x64/SIMD/AVX_enable.html 这里不重复说明了。
除了检测上述的 AVX2 指令外,还要分别检测:
|
mov eax, 7 mov eax, 80000000H mov eax, 80000001H |