优化 :NEON右移变左移

本文探讨了从ARM汇编语言转换到NEON指令集时的特殊技巧,特别是关于移位操作的处理。文章指出,在进行立即数移位时,左移和右移均可使用,并包含饱和操作;但在变量移位中,仅左移适用,且右移需转换为左移操作。通过具体示例,如将c=a-b,d>>c转换为c=b-a,d<<c,展示了正确的转换方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按照立即数移位,左右移都可以,且都有饱和操作。

按照变量移位,只有左移可用。

在ARM汇编转NEON时,按变量右移会切换为左移。

即c = a-b, d>>c   要写成   c = b-a, d<<c 。

; C语言:a=SE_L_shr(tmp1, SE_sub(Q_tmp,1));

;q0=tmp1   q1=Q_tmp

vmov.s32    q14,#1

vsub.s32     q3,q14,q1       ;原本应是q1-q14

vqshl.s32     q2,q0,q3        ;原本是右移改成左移

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值