If statement armv8霓虹灯中频条件

If statement armv8霓虹灯中频条件,if-statement,arm,overflow,conditional-statements,neon,If Statement,Arm,Overflow,Conditional Statements,Neon,我想了解armv8内联汇编代码中的if条件。 在armv7中,可以通过如下方式检查溢出位: VMRS r4, FPSCR BIC r4, r4, #(1<<27) VMSR FPSCR, r4 vtst.16 d30, d30, d30 vqadd.u16 d30, d30, d30 vmrs r4, FPSCR tst r4, #(1<<27)

我想了解armv8内联汇编代码中的if条件。 在armv7中,可以通过如下方式检查溢出位:

  VMRS r4, FPSCR            
  BIC r4, r4, #(1<<27)      
  VMSR FPSCR, r4     

  vtst.16  d30, d30, d30    
  vqadd.u16  d30, d30, d30 

  vmrs r4, FPSCR            
  tst  r4, #(1<<27)         
  bne label1
VMRS r4,FPSCR

BIC r4,r4,#(1Aarch64中提供了相同的信息。您只需更换:


VMSR r4,FPSCR
VMRS FPSCR,r4

作者:


w4女士,FPSR
MSR FPSR,w4

您所说的“FPCR中的溢出位”是什么意思?FPCR是控制寄存器;状态位在FPSR中。您的A64代码当前在做什么?我的意思是FPSR。我的代码的作用类似于:将图像中的像素加载到霓虹灯寄存器中,在此寄存器上进行一些计算,然后检查是否至少有一个像素不是0。如果此条件为真,则在此霓虹灯寄存器上执行大量指令。其他rwise继续新的加载…嗯,
sqadd
的ARM中的伪代码肯定表示,如果出现饱和,它会设置FPSR.QC。当然,再看看A32代码,如果您希望-1+-1溢出有符号类型,那是另一回事…这和您查找
UQADD
而不是
sqadd一样简单吗?您的AArch32代码使用
vqadd.u16
,即查找无符号饱和,而不是有符号饱和。向我们展示您使用ARMv8代码所做的尝试