我想使用内部函数来增加SIMD向量的元素。最简单的方法似乎是给每个元素加1,如下所示:(note:vec_inc之前已设置为1)
vec_inc
vec = _mm256_add_epi16 (vec, vec_inc);
但是,有没有类似于inc的特殊指令来递增向量呢?或者有没有其他更简单的方法呢?
inc
1qczuiv01#
INC指令不是SIMD级别的指令,它对整数标量进行操作。正如您和Paul所建议的,最简单的方法是将1添加到每个向量元素中,您可以通过添加1 s向量来实现。如果你想模拟一个内在函数,你可以实现你自己的函数:
INC
1
inline __m256i _mm256_inc_epi16(__m256i a) { return _mm256_add_epi16(a, _mm256_set1_epi16(1)); }
有关x86内部函数的类似问题,您可以在Intel's Intrinsics Guide找到英特尔伊萨内部函数集合。另请参阅x86和sse标签信息下的大量资源:
1条答案
按热度按时间1qczuiv01#
INC
指令不是SIMD级别的指令,它对整数标量进行操作。正如您和Paul所建议的,最简单的方法是将1
添加到每个向量元素中,您可以通过添加1
s向量来实现。如果你想模拟一个内在函数,你可以实现你自己的函数:
有关x86内部函数的类似问题,您可以在Intel's Intrinsics Guide找到英特尔伊萨内部函数集合。另请参阅x86和sse标签信息下的大量资源: