NEON コンパイラ組み込み関数の概要

ここでは、NEON コンパイラ組み込み関数のカテゴリの概要について説明します。ここから個々のコンパイラ組み込み関数の説明を見つけて下さい内容は以下のとおりです。

Table 44. NEON コンパイラ組み込み関数の概要

カテゴリ

コンパイラ組み込み関数の説明

加算

ベクタ加算: vadd{q}_<type>.Vr[i]:=Va[i]+Vb[i]

 

ベクタ加算(long): vaddl_<type>.Vr[i]:=Va[i]+Vb[i]

 

ベクタ加算(ワイド): vaddw_<type>.Vr[i]:=Va[i]+Vb[i]

 

ベクタ二分加算: vhadd{q}_<type>.Vr[i]:=(Va[i]+Vb[i])>>1

 

ベクタ丸め二分加算: vrhadd{q}_<type>.Vr[i]:=(Va[i]+Vb[i]+1)>>1

 

VQADD:サチュレートベクタ加算

 

ベクタ加算、上位半分: vaddhn_<type>.Vr[i]:=Va[i]+Vb[i]

 

ベクタ丸め加算、上位半分:vraddhn_<type>.

乗算

ベクタ乗算: vmul{q}_<type>.Vr[i] := Va[i] * Vb[i]

 

ベクタ積和: vmla{q}_<type>.Vr[i] := Va[i] + Vb[i] * Vc[i]

 

ベクタ積和(long): vmlal_<type>.Vr[i] := Va[i] + Vb[i] * Vc[i]

 

ベクタ積差: vmls{q}_<type>.Vr[i] := Va[i] - Vb[i] * Vc[i]

 

ベクタ積差(long)

 

ベクタサチュレートダブル乗算、上位半分

 

サチュレート丸めベクタダブル乗算、上位半分

 

サチュレートベクタダブル積和(long)

 

サチュレートベクタダブル積差(long)

 

ベクタ乗算(long)

 

サチュレートベクタダブル乗算(long)

減算

ベクタ減算

 

ベクタ減算(long): vsubl_<type>.Vr[i]:=Va[i]+Vb[i]

 

ベクタ減算(ワイド): vsubw_<type>.Vr[i]:=Va[i]+Vb[i]

 

サチュレートベクタ減算

 

ベクタ二分減算

 

ベクタ減算、上位半分

 

丸めベクタ減算、上位半分

比較

ベクタ比較(等しい)

 

ベクタ比較(以上)

 

ベクタ比較(以下)

 

ベクタ比較(より大きい)

 

ベクタ比較(より小さい)

 

ベクタ絶対値比較(以上)

 

ベクタ絶対値比較(以下)

 

ベクタ絶対値比較(より大きい)

 

ベクタ絶対値比較(より小さい)

 

ベクタテストビット

絶対差

引数間の絶対差: vabd{q}_<type>.Vr[i] = | Va[i] - Vb[i] |

 

絶対差(long)

 

絶対差と累積:vaba{q}_<type>.Vr[i] = Va[i] + | Vb[i] - Vc[i] |

 

絶対差と累積(long)

最大と最小

vmax{q}_<type>.Vr[i] := (Va[i] >= Vb[i]) ? Va[i] :Vb[i]

 

vmin{q}_<type>.Vr[i] := (Va[i] >= Vb[i]) ? Vb[i] :Va[i]

対加算

対加算

 

対加算(long)

 

対加算および加算累積

最大値の畳み込み

最大値の畳み込み

最小値の畳み込み

最小値の畳み込み

逆数と平方根

逆数 / 平方根

符号付き変数によるシフト

ベクタ左シフト:vshl{q}_<type>.Vr[i] := Va[i] << Vb[i](負の値は右シフト)

 

サチュレートベクタ左シフト:(負の値は右シフト)

 

丸めベクタ左シフト:(負の値は右シフト)

 

サチュレート丸めベクタ左シフト:(負の値は右シフト)

定数によるシフト

定数によるベクタ右シフト

 

定数によるベクタ左シフト

 

定数によるベクタ丸め右シフト

 

定数によるベクタ右シフトと累積

 

定数による丸め右シフトと累積

 

定数によるサチュレートベクタ左シフト

 

定数によるサチュレートベクタ左シフト(符号付きから符号なしへの変換)

 

定数によるベクタナローイング右シフト

 

定数によるベクタナローイングサチュレート右シフト(符号付きから符号なしへの変換)

 

定数による丸めベクタナローイングサチュレート右シフト(符号付きから符号なしへの変換)

 

定数によるベクタナローイングサチュレート右シフト

 

定数による丸めベクタナローイング右シフト

 

定数による丸めベクタナローイングサチュレート右シフト

 

定数による拡張付きベクタ左シフト

シフトして挿入

ベクタ右シフトと挿入

 

ベクタ左シフトと挿入

ベクタまたはベクタのレーンのロード

メモリからの単一ベクタのロード

 

リテラルビットパターンからのベクタの初期化

 

メモリからの単一レーンのロード

 

リテラルからの単一のベクタレーンのロード

 

メモリからの同一の値をもつすべてのベクタレーンのロード

 

同一のリテラル値へのすべてのベクタレーンのロード

 

ベクタレーンの値へのすべてのベクタレーンのロード

ベクタからのレーンの抽出

ベクタからのレーンの抽出とレジスタへの挿入

ベクタまたはベクタのレーンのストア

単一ベクタのメモリへのストア

 

ベクタレーンのメモリへのストア

N 要素構造体のロード

メモリからの N 要素構造体のロード

 

メモリからの N 要素構造体の単一のレーンのロード

 

メモリからの同一の値をもつすべての N 要素構造体レーンのロード

N 要素構造体のストア

メモリへの N 要素構造体のストア

 

メモリへの N 要素構造体の単一のレーンのストア

ベクタの結合

ベクタの結合

ベクタの分割

ベクタの分割

ベクタの変換

浮動小数点からの変換

 

浮動小数点への変換

 

浮動小数点間の変換

 

ベクタ Narrow 整数

 

ベクタ Long 移動

 

ベクタサチュレート Narrow 整数

 

ベクタサチュレート Narrow 整数、符号付きから符号なしへの変換

テーブル検索

テーブル検索

拡張テーブル検索

拡張テーブル検索のコンパイラ組み込み関数

スカラでの演算

スカラによるベクタ積和

 

スカラによるベクタ拡張積和

 

スカラによるベクタ拡張サチュレートダブル積和

 

スカラによるベクタ積差

 

スカラによるベクタ拡張積差

 

スカラによるベクタ拡張サチュレートダブル積差

 

スカラによるベクタ乗算

 

スカラによるベクタ Long 乗算

 

スカラによる Long ベクタ乗算

 

スカラによるサチュレート Long ベクタダブル乗算

 

スカラによるサチュレート Long ベクタダブル乗算

 

スカラによるサチュレートベクタダブル乗算(上位半分)

 

スカラによるサチュレートベクタダブル乗算(上位半分)

 

スカラによるサチュレート丸めベクタダブル乗算(上位半分)

 

スカラによる丸めサチュレートベクタダブル乗算(上位半分)

 

スカラによるベクタ積和

 

スカラによるベクタ拡張積和

 

スカラによるベクタ拡張サチュレートダブル積和

 

スカラによるベクタ積差

 

スカラによるベクタ拡張積差

 

スカラによるベクタ拡張サチュレートダブル積差

ベクタ抽出

ベクタ抽出

ベクタ要素の反転

ベクタ要素の反転(エンディアン方式のスワップ)

その他の単一オペランドの算術演算

絶対値:vabs{q}_<type>.Vd[i] = |Va[i]|

 

サチュレート絶対値:vqabs{q}_<type>.Vd[i] = sat(|Va[i]|)

 

否定:vneg{q}_<type>.Vd[i] = - Va[i]

 

サチュレート反転:vqneg{q}_<type>. sat(Vd[i] = - Va[i])

 

先行符号ビットカウント

 

先行ゼロカウント

 

セットビット数カウント

 

逆数の推定

 

逆平方根の推定

論理演算

ビット否定

 

ビット単位論理積

 

ビット論理和

 

ビット排他的論理和(EOR または XOR)

 

ビットクリア

 

ビット論理和補数

 

ビット単位の選択

転置操作

要素の置換

 

要素のインターリーブ

 

要素のインターリーブ解除


大部分の NEON 命令には、同等の NEON コンパイラ組み込み関数があります。以下の NEON 命令には、同等のコンパイラ組み込み関数がありません。

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711