Mar*_*tin 5 x86 assembly simd intrinsics avx2
我想使用内在函数来增加SIMD向量的元素.最简单的方法似乎是为每个元素添加1,如下所示:
(注意:vec_inc之前已经设置为1)
vec = _mm256_add_epi16 (vec, vec_inc);
Run Code Online (Sandbox Code Playgroud)
但是有没有增加矢量的特殊指令?就像inc在这个网页?还是其他更简单的方法?
该INC指令不是SIMD级指令,它对整数标量进行操作.正如你和Paul已经建议的那样,最简单的方法是添加1到每个向量元素,你可以通过添加一个1s 向量来完成.
如果要模拟内在函数,可以实现自己的函数:
inline __m256i _mm256_inc_epi16(__m256i a)
{
return _mm256_add_epi16(a, _mm256_set1_epi16(1));
}
Run Code Online (Sandbox Code Playgroud)
对于未来x86内在函数的类似问题,您可以在英特尔的内在函数指南中找到英特尔ISA内在函数的集合.另请参阅x86和sse标记信息中记录的大量资源: