1

チャンネルごとに 32 ビットとして 128 ビットの NEON レジスタに格納されている ARGB ピクセルがあります。これを 8 ビット チャネル ARGB (ナローイングとサチュレーション) としてメモリに格納する必要があります。

vmla.32 q1, q2, d0; の後に結果を得ました。いくつかのサイクルを直接節約する mul 命令を介してナローイングまたはサチュレーションを達成できるかどうか疑問に思っています。

それについて行く最善の方法は何ですか?

4

1 に答える 1

1

のようなエンコーディングはありませんvmla.32 q1, q2, d0。あなたが意味したと仮定しましょうq0

シンプルで素朴な答えは次のとおりです。

vqmovn.s32  d0, q1  // saturate and narrow 32 -> 16
vqmovn.s16  d0, q0  // saturate and narrow 16 -> 8

これは符号付き飽和を行います。符号なしの値がある場合は.u32and.u16型を使用し、符号付きの値があるが符号なしに飽和させたい場合は、vqmovun命令を使用します。

ある種の絞り込み乗算を実行できるかどうかという質問に対して、それは正確な操作 (および関連する値) に大きく依存します。ただし、を使用していることを考えるとvmla、答えは「おそらくそうではない」です。

NEON で飽和操作を使用して、最初から拡大を回避できますか?それとも、そのヘッドルームがすべて必要ですか?

于 2011-02-17T04:31:05.680 に答える