問題タブ [neon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1468 参照

image-processing - Fast Image square on (int) Image- ARM ネオン組み込み関数 - iOS 開発

誰かがint画像の各ピクセルの正方形を見つけるための高速関数を教えてくれますか? iOSアプリ開発に必要です。次のように定義された画像のメモリに直接取り組んでいます

これは明らかに可能な限り最も遅い関数です。iOS の ARM Neon 組み込み関数を使用すると、1 サイクルで複数の操作を実行できると聞きました。多分それは行く方法ですか?

問題は、私があまり慣れておらず、現時点でアセンブリ言語を学ぶ時間が十分にないことです。したがって、上記の問題または C/C++ でのその他の高速な実装について、誰かが Neon 組み込みコードを投稿できれば幸いです。

私がオンラインで見つけることができる NEON 組み込み関数の唯一のコードは、RGB からグレーへのコードですhttp://computer-vision-talks.com/2011/02/a-very-fast-bgra-to-grayscale-conversion- iPhone/

0 投票する
2 に答える
971 参照

neon - fpuをSoftVFPまたはnoneに設定して、CortexA8でNEONを有効にします。

RVDS4.0を使用してCortexA8の実行可能ファイルをビルドしようとしています。私のコードはNEONを使用していますが、fpuオプションをnoneまたはSoftVFPに設定したいと思います。ARM Webサイトには、fpuがSoftVFPに設定されている場合にNEONが無効になると記載されています。これは、VFPとNEONがレジスタを共有しているためですか?

fpuがSoftVFPに設定されている場合にNEONを使用できない理由、またはfpuがSOftVFPに設定されている場合でもNEONを有効にできるオプションがある場合は、誰かに説明してもらえますか?

ありがとう

0 投票する
1 に答える
341 参照

assembly - LLVM GCC 4.2 でのインライン アセンブリの奇妙なコンパイル

次の C マクロを最適化しようとしています。

ここで、Cortex-A8 プロセッサの場合、すべての変数はdoubleです。

インライン アセンブリは次のようになります。

生成されたアセンブリは次のようになります。

ご覧のとおり、コンパイラは正しい結果を得るために必要な 6 つではなく 4 つのレジスタのみを使用します。

6 つのレジスターが必要であることをコンパイラーにどのように伝えることができますか?

0 投票する
1 に答える
1328 参照

c - short から int への変換と NEON での合計

次の関数を NEON に変換したい:

ほぼできていると思いますが、うまく動かないのでエラーがあります

どうすればこれを機能させることができますか?

0 投票する
1 に答える
2948 参照

arm - NEON/ARMを使用した8ビット値のロード

char値の配列をNEONレジスタにロードし、それらを16ビットまたは32ビット整数値として処理しようとしています。だからこのようなもの...

データの読み込み方法がわかりません。8ビットデータをレーンにロードしてから、レジスタをショートとして再解釈する必要がありますか?または、ロードして変換しますか?最速の方法は何でしょうか?

NEON組み込み関数を使用してこれを行う方法の例はありますか?

ありがとう!

0 投票する
1 に答える
2036 参照

arm - ARM NEON: 128 ビット値の比較

Cortex-A9コア(VFP命令が許可されている)のNEONレジスタ(Q0とQ3など)に格納された値を比較する最速の方法(最小サイクル数)を見つけることに興味があります。

これまでのところ、次のものがあります。

(1) VFP 浮動小数点比較の使用:

64 ビットの「float」が NaN と同等の場合、このバージョンは機能しません。

(2) NEON ナローイングと VFP 比較の使用 (今回は NaN セーフな方法で 1 回のみ):

D29 レジスタには、事前に正しい 16 ビット パターンがプリロードされています。

私の質問は: これより良いものはありますか? 私はそれを行うための明白な方法を監督していますか?

0 投票する
2 に答える
3123 参照

image-processing - Fast Gaussian blur on unsigned char image- ARM Neon Intrinsics- iOS Dev

Can someone tell me a fast function to find the gaussian blur of an image using a 5x5 mask. I need it for iOS app dev. I am working directly on the memory of the image defined as

This is obviously the slowest function possible. I heard that ARM Neon intrinsics on the iOS can be used to make several operations in 1 cycle. Maybe that's the way to go ?

The problem is that I am not very familiar and don't have enough time to learn assembly language at the moment. So it would be great if anyone can post a Neon intrinsics code for the problem mentioned above or any other fast implementation in C/C++.

0 投票する
1 に答える
637 参照

c++ - SIMD 命令による滑らかなスプライン

コードでこのタイプのスプラインを使用していますが、アルゴリズムが SIMD 命令の使用から恩恵を受けることができるかどうか疑問に思っています。(ARM の NEON) 使用されるコードは、次のソース (Fortran で) の C 翻訳です。

あなたの経験から、このコードが SIMD 命令を使用して最適化される可能性があるかどうかわかりますか?

コードを「通常の」コードから SIMD 命令を使用するコードに変換するためのガイドラインはありますか?

ありがとう

0 投票する
2 に答える
3480 参照

gcc - gcc でネオン命令をチェックしようとしたときに、不正な命令「vadd.i16 q0,q0,q0」を解決する方法

フラグ -mcpu=cortex-a8 -mfpu=neon で試しましたが、成功しませんでした

上記のコードは、neon 命令の gcc サポートをテストするために使用されました。

実際、ARM プラットフォームの NEON サポートを使用して x264 をビルドしようとしています。configure スクリプトを実行した後、x264 構成ログ ファイルに次の内容が含まれています。

コマンド ライン オプション: "--cross-prefix=arm-linux-androideabi-" "--enable-pic" "--extra- cflags=-mcpu=cortex-a8" "--host=arm-linux"

目標は、neon 対応の ARM プロセッサを利用して x264 エンコーダのパフォーマンスを向上させることです...

0 投票する
2 に答える
6993 参照

android - ARM NEON アセンブラ - 使用法と理解

アセンブラと NEON プログラミングは初めてです。私の仕事は、NEON 命令を使用してアルゴリズムの一部を C から ARM アセンブラーに変換することです。このアルゴリズムは int32 配列を取り、この配列からさまざまな値をロードし、ビットシフトと Xor を実行して、結果を別の配列に書き込みます。後で 64 ビット値の配列を使用しますが、今はコードを書き直してみるだけです。

NEON命令に関する私の質問は次のとおりです。

1.) 次のようなレジスタをロードした場合:

メモリから 32 ビットのみをロードするのか、それとも 2x32 ビットをロードして 64 ビットのネオン D レジスタを埋めるのか?

2.) D レジスタの 2/4/8 (i32、i16、i8) 部分にアクセスするにはどうすればよいですか?

3.) オフセットを使用して配列から異なる値を読み込もうとしていますが、うまくいかないようです...何が間違っているのでしょうか...これが私のコードです:(これは整数配列なので、私は'たとえば、オフセットが 64 ビット = 8 バイトの 3 要素をロードしようとしている場合)

ここで、「a」は配列で、「out」は整数へのポインターです (デバッグ用)。

4.) 配列から値をロードした後、右にシフトする必要がありますが、うまくいかないようです:

5.) 必要な 1 バイトだけを取得するために何かをシフト/マスクする必要がないように、Neon レジスタに 1 バイトだけをロードすることは可能ですか?

6.) インライン アセンブラを使用する必要がありますが、最後の行が何のためにあるのかわかりません。

7.) コード例を含む適切な NEON リファレンスを知っていますか?

プログラムは、違いがある場合、Samsung Galaxy S2、cortex-A9 プロセッサで実行する必要があります。助けてくれてありがとう。

- - - - - - - - 編集 - - - - - - - - - -

それが私が見つけたものです:

  1. 常に完全なレジスタ (64 ビット) をロードします。
  2. 「vmov」命令を使用して、ネオン レジスタの一部をアーム レジスタに転送できます。
  3. オフセットはアーム レジスタにある必要があり、メモリ アクセス後にベース アドレスに追加されます。
  4. それは「破壊された登録リスト」です。入力リストにも出力リストにもない、使用されているすべてのレジスタをここに書き込む必要があります。