gpt4 book ai didi

c - 等同于 AVX 中的 SSE unpacklo_ps/unpackhi_ps(对于 double )

转载 作者:太空狗 更新时间:2023-10-29 17:24:25 25 4
gpt4 key购买 nike

在 SSE 中,如果我有一个包含 4 个 float 的 128 位寄存器,即

A = a b c d ('a','b','c','d' are floats and 'A' is a 128-bit SSE register)

B = e f g h

如果我愿意的话

C = a e b f

我可以简单地做:

C = _mm_unpacklo_ps(A,B);

同样如果我想

D = c g d h

我能做到:

D = _mm_unpackhi_ps(A,B);

如果我有一个包含 double 值的 AVX 寄存器,是否可以用一条指令执行相同的操作?

根据这些内部函数的工作方式,我知道我不能使用 _mm256_unpacklo_pd()_mm256_shuffle_pd()_mm256_permute2f128_pd()_mm256_blend_pd()。除了这些之外,是否还有其他说明可供我使用,或者我是否必须结合使用上述说明?

最佳答案

我能想到的一种方法如下:

A1 = _mm256_unpacklo_pd(A,B);
A2 = _mm256_unpackhi_pd(A,B);

C = _mm256_permute2f128_pd(A1,A2,0x20);
D = _mm256_permute2f128_pd(A1,A2,0x31);

如果有人有更好的解决方案,请在下面发表。

关于c - 等同于 AVX 中的 SSE unpacklo_ps/unpackhi_ps(对于 double ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13619408/

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