我想使用内在函数来增加SIMD向量的元素。最简单的方法似乎是为每个元素添加1,如下所示:
(注意:vec_inc
之前已设置为1)
vec = _mm256_add_epi16 (vec, vec_inc);
但是有没有增加矢量的特殊指令?与this page中的inc
一样?还是其他更简单的方式?
答案 0 :(得分:7)
INC
指令不是SIMD级别指令,它对整数标量进行操作。
正如您和Paul已经建议的那样,最简单的方法是向每个向量元素添加1
,您可以通过添加1
s的向量来执行此操作。
如果要模拟内在函数,可以实现自己的函数:
inline __m256i _mm256_inc_epi16(__m256i a)
{
return _mm256_add_epi16(a, _mm256_set1_epi16(1));
}
对于未来x86内在函数的类似问题,您可以在Intel's Intrinsics Guide找到英特尔ISA内在函数的集合。另请参阅x86和sse标记信息中记录的大量资源: