![](/img/trans.png)
[英]Replacing defined constant by an integer value in function with matrices
[英]Assembly replacing constant with a register value
我不是装配专家,所以这可能很简单。
如果我有一条指令需要一个常量作为参数,例如:
VQSHRN.U32 d0,q0,#16
如何用寄存器中的值(例如r0
替换#16
? 该说明甚至可能允许您这样做,但是我还没有找到关于该功能的文档。 有正常的方法吗?
如果这很重要,我将编写ARMv7程序集并将其与c ++代码内联。 谢谢。
正如@Michael指出的那样, VQRSHL
是此处的适当移位寄存器指令-幸运的是,右恰好是负左。 我将先使用VDUP
将r0
转换为适当的移位值矢量,然后使用VQMOVN
进行缩小。 所有这些都可以作为内部函数来使用,以帮助避免内联汇编的复杂性,如下所示:
vshift = vdupq_n_s32(-shift);
result = vqmovn_u32(vqrshlq_u32(data, vshift));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.