2011-02-08 12 views
1

私はARGBピクセルを128ビットのNEONレジスタに32ビット/チャネルとして格納しています。私はこれを8ビットチャンネルのARGB(ナローとサチュレート)としてメモリに保存する必要があります。NEON:128ビットARGBを飽和のある32ビットARGBに変換するにはどうすればいいですか?

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

どうすればいいですか?

+0

は、符号なしの色成分ですか、または32ビット成分が負になることがありますか? –

答えて

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 

この署名しない飽和状態。符号なしの値を使用する場合は.u32.u16の型を使用し、値に符号を付けたが符号なしに飽和させたい場合は、vqmovun命令を使用します。

何らかの並べ替えを行うことができるかどうかは、正確な操作(および関連する値)に大きく依存します。あなたがvmlaを使用していることを考えると、答えは "おそらく"ではありません。

NEONの飽和演算を使用して拡大処理を行うことはできませんか、そのすべてのヘッドルームが必要ですか?

関連する問題