我有一个__m256,用来存储8个 float ,里面的元素如下:
__m256 v = {0,1,2,3,4,5,6,7};
现在我想获得另一个 __m256 的值,例如:
__m256 dst = {0,1,2,4,5,6,x,x};
x 这里表示我不在乎。
我不熟悉 SIMD,有人可以帮忙吗?或者给我一些提示?
谢谢!
最佳答案
您可以使用 AVX2 内在 _mm256_permutevar8x32_ps 。它可以帮助您打乱 256 位 vector 内的元素。请参阅下面的示例:
__m256 a = { 10, 20, 30, 40, 50, 60, 70, 80 };
__m256i k = _mm256_setr_epi32(0, 1, 2, 4, 5, 6, 0, 0);
__m256 b = _mm256_permutevar8x32_ps(a, k);
关于c++ - 从 __m256 选择元素子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39383882/