Cortex-A9コア(VFP命令が許可されている)のNEONレジスタ(Q0とQ3など)に格納された値を比較する最速の方法(最小サイクル数)を見つけることに興味があります。
これまでのところ、次のものがあります。
(1) VFP 浮動小数点比較の使用:
vcmp.f64 d0, d6
vmrs APSR_nzcv, fpscr
vcmpeq.f64 d1, d7
vmrseq APSR_nzcv, fpscr
64 ビットの「float」が NaN と同等の場合、このバージョンは機能しません。
(2) NEON ナローイングと VFP 比較の使用 (今回は NaN セーフな方法で 1 回のみ):
vceq.i32 q15, q0, q3
vmovn.i32 d31, q15
vshl.s16 d31, d31, #8
vcmp.f64 d31, d29
vmrs APSR_nzcv, fpscr
D29 レジスタには、事前に正しい 16 ビット パターンがプリロードされています。
vmov.i16 d29, #65280 ; 0xff00
私の質問は: これより良いものはありますか? 私はそれを行うための明白な方法を監督していますか?