按照立即数移位,左右移都可以,且都有饱和操作。
按照变量移位,只有左移可用。
在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 ;原本是右移改成左移
按照立即数移位,左右移都可以,且都有饱和操作。
按照变量移位,只有左移可用。
在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 ;原本是右移改成左移