【发布时间】:2017-08-21 08:09:23
【问题描述】:
考虑内存布局使得八个连续的 4 字节块读取[abcdefgh]。我将它们加载到两个寄存器v0.4s 和v1.4s,所以我得到v0.4s = [abcd] 和v1.4s = [efgh],其中每个字符代表一个32 位块。我想重新排序它们以在两个(可能不同的)寄存器中获得[abef] 和[cdgh]。
我目前的方法是首先将 [efgh] 的 64 位一半反转为 [ghef]。然后我可以使用提取来获取[abef] 和[ghcd]。然后,我终于可以再次将 [ghcd] 的 64 位部分反转为 [cdgh]。
谁能说出更好的方法?
【问题讨论】:
-
您不使用
zip、uzp或trn是否有原因?
标签: assembly arm simd neon armv8