Intel指令集未来发展,来自官方网站
提到了AVX-512太大,上传无能
提供地址
http://download-software.intel.com/sites/default/files/319433-015.pdf 主要思想是
提供32个新的zmm寄存器,512位宽,从zmm0-zmm31
其中16个扩展自AVX寄存器,16个为新设
64位下可以访问所有32个寄存器,32位下,只能访问8个
提供8个opmask寄存器k0-k7,其中k1-k7用来标志某些不需要处理的向量项目, k0干啥使,暂时没看懂
MSB........................................LSB
zmm0 =
[ 0x00000003 0x00000002 0x00000001 0x00000000 ] (bytes 15 through 0)
[ 0x00000007 0x00000006 0x00000005 0x00000004 ] (bytes 31 through 16)
[ 0x0000000B 0x0000000A 0x00000009 0x00000008 ] (bytes 47 through 32)
[ 0x0000000F 0x0000000E 0x0000000D 0x0000000C ] (bytes 63 through 48)
zmm1 =
[ 0x0000000F 0x0000000F 0x0000000F 0x0000000F ] (bytes 15 through 0)
[ 0x0000000F 0x0000000F 0x0000000F 0x0000000F ] (bytes 31 through 16)
[ 0x0000000F 0x0000000F 0x0000000F 0x0000000F ] (bytes 47 through 32)
[ 0x0000000F 0x0000000F 0x0000000F 0x0000000F ] (bytes 63 through 48)
zmm2 =
[ 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA 0xAAAAAAAA ] (bytes 15 through 0)
[ 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB ] (bytes 31 through 16)
[ 0xCCCCCCCC 0xCCCCCCCC 0xCCCCCCCC 0xCCCCCCCC ] (bytes 47 through 32)
[ 0xDDDDDDDD 0xDDDDDDDD 0xDDDDDDDD 0xDDDDDDDD ] (bytes 63 through 48)
k3 = 0x8F03 (1000 1111 0000 0011)
vpaddd zmm2 {k3}, zmm0, zmm1
效果
[ ********** ********** 0x00000010 0x0000000F ] (bytes 15 through 0)
[ ********** ********** ********** ********** ] (bytes 31 through 16)
[ 0x0000001A 0x00000019 0x00000018 0x00000017 ] (bytes 47 through 32)
[ 0x0000001E ********** ********** ********** ] (bytes 63 through 48)
结果
zmm2 =
[ 0xAAAAAAAA 0xAAAAAAAA 0x00000010 0x0000000F ] (bytes 15 through 0)
[ 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB 0xBBBBBBBB ] (bytes 31 through 16)
[ 0x0000001A 0x00000019 0x00000018 0x00000017 ] (bytes 47 through 32)
[ 0x0000001E 0xDDDDDDDD 0xDDDDDDDD 0xDDDDDDDD ] (bytes 63 through 48)
随着操作数据类型不同, opmask寄存器并不是所有标志都有效,从低位起直到操作的向量个数相等的位,为有效mask长度
比如64位下操作8个8位时候,k寄存器就仅仅低8位有效 操作k寄存器的指令分成3类
读写,测试(类似test指令),逻辑 还支持一种叫broadcast的特性,具体如何翻译不太清楚
效果是
vmulps zmm1, zmm2,
把指向的内存地址中的32位浮点复制16份,跟zmm2中的32位浮点相乘,写入zmm1 发现两个问题
1、AVX就有整数指令,而不是仅仅AVX2,但是仅仅限于对xmm寄存器操作,AVX2是3操作数,并且支持YMM寄存器,AVX已经有完善的乘法加法了!
2、AVX-512也有完善的整数指令,但是会不会一次推出?
所有的指令,对加法都很完善了,对乘法,仅仅支持到64X64=64,未发现64X64=128
所以,似乎mulx更好一些 无心人 发表于 2013-9-8 08:51
发现两个问题
1、AVX就有整数指令,而不是仅仅AVX2,但是仅仅限于对xmm寄存器操作,AVX2是3操作数,并且支 ...
乘法有52x52,可以获得高52bit或者低52bit的数据
这大概是从double抄过去的
页:
[1]