我正在使用AVX2内部,并希望获得以下信息:
输入:[1,2,3,4,5,6,7,8]
输出:[8,1,2,3,4,5,6,7]
以下代码适用于128位向量:
let vec1 = _mm_set_epi32(1,2,3,4);
let vec2 = _mm_alignr_epi8(vec1, 4); // shift values one position, catch at bottom
Ve1会给[1,2,3,4]
Ve2会给[4,1,2,3]
分.
这不出所料.
具有256位向量
let vec256_1 = _mm256_set_epi32(1,2,3,4,5,6,7,8);
let vec256_2 = _mm256_alignr_epi8(vec256_1, 4); // shift values one position
Vec256_1将给[1,2,3,4,5,6,7,8]
Vec256_2将给[4,1,2,3,8,5,6,7]
所以在我看来,它在低位和高位部分都在做128位版本.
我的问题是:我如何做到这一点,从而使整个256位向左移动一个值?
目标:如何获得以下载体:[8,1,2,3,4,5,6,7]