コンパイラ組み込み関数

本付録で説明するコンパイラ組み込み関数は、NEON 命令にほぼそのまま対応しています。各セクションは関数プロトタイプのリストで始まります。このリストには、対応するアセンブラ命令を示すコメントが付いています。命令は必要なセマンティックスに応じてコンパイラにより自動的に選択されますが、リストに示すとおりの命令が生成される保証はありません。

コンパイラ組み込み関数では、統一された NEON アセンブラ構文と同じ命名方式が使用されます。各組み込み関数の形式は以下のとおりです。

<opname><flags>_<type>

コンパイラ組み込み関数が 128 ビットベクタで動作するように指定する q フラグが追加で提供されています。

以下に例を示します。

この例に示した以外のレジスタが使用される可能性もあります。また、ソースコードのコンパイル後の命令が変更されるような最適化が、コンパイラによって実行される場合もあります。

Note

この項で示すコンパイラ組み込み関数のプロトタイプでは、次の型注釈が使用されています。

__const(n)

引数 n はコンパイル時定数でなければなりません。

__constrange(min, max)

引数は minmax の範囲内のコンパイル時定数でなければなりません。

__transfersize(n)

コンパイラ組み込み関数によってこのポインタから n バイトがロードされます。

Note

__fp16 を使用する NEON コンパイラ組み込み関数のプロトタイプは、NEON 半精度 VFP 拡張のあるターゲットでしか使用できません。__fp16 を使用できるようにするには、--fp16_format コマンドラインオプションを使用します。詳細については、‑‑fp16_format=formatを参照して下さい。

Copyright © 2010 ARM. All rights reserved.ARM DUI 0491BJ
Non-ConfidentialID011811