簡體   English   中英

AVX中的SSE unpacklo_ps / unpackhi_ps的等價物(用於雙打)

[英]Equivalent of SSE unpacklo_ps/unpackhi_ps in AVX (for doubles)

在SSE中,如果我有一個包含4個浮點數的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);

如果我有一個包含雙精度的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);

如果有人有更好的解決方案,請在下面發布。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM