【发布时间】:2018-03-14 23:52:31
【问题描述】:
我在使用 AVX2 指令集对 2 个短(16 位整数)向量类型执行加法运算时遇到问题。 我已经构建了代码,但在添加命令中出现错误,可能是因为语法错误。 我正在使用以下代码创建 2 个向量:
short int si1[16] ={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
short int si2[16] ={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
__m256i i1 = _mm256_load_si256((__m256i*)si1);
__m256i i2 = _mm256_load_si256((__m256i*)si2);
我正在尝试使用以下代码执行添加:
__m256i result = _mm256_add_si256(i1,i2);
我知道对于 16 位整数我们使用标量后缀,但是编译器给出了函数隐式声明添加命令的错误。
【问题讨论】:
-
所以为了清楚起见,编译器说
_mm256_add_epi16不存在? -
嗯,没有
_mm256_add_si256()这样的东西。 -
我认为错误“隐式声明函数”确实意味着该函数/方法不存在。
-
@Romal 可能,但哪个功能?你已经展示了
_mm256_add_si256(它确实不存在也不能存在——即使它确实存在它也不会添加短裤),但是在下一段中你似乎正在走向_mm256_add_epi16(如果那是什么“标量后缀”的意思) -