其他分享
首页 > 其他分享> > AVX2指令

AVX2指令

作者:互联网

一、数据类型

        SSE指令有3种数据类型,分别为__m256、__m256i、__m256d。每一种类型都以"__"+"m"+“vector的位长度”构成。

         包含8个float类型数据的向量

        包含若干个整型数据的向量,如char、short、int、unsigned long long等。例如256位的vector可以32个char、16个short、8个int,这些整型既可以是有符号的也可以是无符号的。

        包含4个double类型数据的向量。

二、函数命名约定

        _mm256_<name>_<data_type>

三、指令

3.1 初始化函数

3.1.1 从内存中加载数据

        从内存中读入一个256位的整型数据放到dst中(32字节地址无需对齐)。

dst[255:0] := MEM[mem_addr+255:mem_addr]
dst[MAX:256] := 0

         从内存中读入一个256位的整型数据放到dst中(32字节地址必需对齐)。

dst[255:0] := MEM[mem_addr+255:mem_addr]
dst[MAX:256] := 0

        从内存中读入8个float型数据放入dst(32字节地址必需对齐)。

dst[255:0] := MEM[mem_addr+255:mem_addr]
dst[MAX:256] := 0

        从内存中读入128位(4个float),根据mask的真假赋值。

FOR j := 0 to 3
    i := j*32
    IF mask[i+31]
        dst[i+31:i] := MEM[mem_addr+i+31:mem_addr+i]
    ELSE
        dst[i+31:i] := 0
    FI
ENDFOR
dst[MAX:128] := 0

        根据掩码载入8个float数据

FOR j := 0 to 7
	i := j*32
	IF mask[i+31]
		dst[i+31:i] := MEM[mem_addr+i+31:mem_addr+i]
	ELSE
		dst[i+31:i] := 0
	FI
ENDFOR
dst[MAX:256] := 0

标签:__,AVX2,addr,mem,dst,float,指令,31
来源: https://blog.csdn.net/fyire/article/details/120826881