【发布时间】:2016-06-14 11:46:39
【问题描述】:
我想在 ASIMD 汇编指令中实现按位提取向量指令。让我这么说吧,在 ARMv7 NEON 指令中,假设我在 q15 和 q11 中有一些值,我有:
"vext.8 d30, d30, d22, #4 \n\t"
"vext.8 d31, d31, d23, #4 \n\t"
正如您在此处看到的,我从d22 的底端提取4 字节元素,从d30 的顶端提取4 字节元素。然后我将它们组合成一个 64 位寄存器d30(上面的第一条指令)。对q 向量的后半部分(d31 和d23)执行相同的操作。现在,我想在 ARMv8 ASIMD 指令中实现完全相同的逻辑。 ASIMD中vext的替换指令为ext,定义为:
EXT Vd.(T), Vn.(T), Vm.(T), #index
按位提取(向量)。其中 (T) 是 8B 或 16B。索引是 0 到 nelem((T))-1 范围内的立即数。
我的问题是,我如何使用这条指令在我的两个 SIMD 向量寄存器 v15 和 v11 中构造相同的逻辑。
【问题讨论】: