gpt4 book ai didi

performance - _mm_shuffle_epi8 内在函数的使用

转载 作者:行者123 更新时间:2023-12-03 17:03:32 26 4
gpt4 key购买 nike

有人可以解释一下_mm_shuffle_epi8 SSSE3 内在?
我知道它在 __m128i 中混洗 16 个 8 位整数但不确定我如何使用它。

我基本上想用_mm_shuffle_epi8修改下面的函数以获得更好的性能。

while(not done)
dest[i+0] = (src+j).a;
dest[i+1] = (src+j).b;
dest[i+2] = (src+j).c;
dest[i+3] = (src+j+1).a;
dest[i+4] = (src+j+1).b;
dest[i+5] = (src+j+1).c;
i+=6;
j+=2;

最佳答案

_mm_shuffle_epi8 (更好地称为 pshufb ),基本上是这样做的:

temp = dst;
for (int i = 0; i < 16; i++)
dst[i] = (src[i] & 0x80) == 0 ? temp[src[i] & 15] : 0;

至于这里能不能用,不知道涉及到的类型是无法判断的。无论如何它都不会“好”,因为目标是一个 6 字节的块(或字?或双字?)。您可以通过展开并进行大量移动和或操作来完成这项工作。

关于performance - _mm_shuffle_epi8 内在函数的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12778620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com