ARM NEONの使い方 データ型編
NEONデータ型の概要
NEONのデータ型は以下の規則で名前が付けられています
<type><size>x<number of lanes>_t
例えば、 int16x4_t は符号付き16bit整数を4個保持する型となります
それぞれの要素を「レーン」と呼びます
NEONのデータ型は64bitのものと128bitのものがあります
NEONデータ型一覧
NEONのデータ型一覧を示します
64bit型 | 128bit型 |
---|---|
int8x8_t | int8x16_t |
int16x4_t | int16x8_t |
int32x2_t | int32x4_t |
int64x1_t | int64x2_t |
uint8x8_t | uint8x16_t |
uint16x4_t | uint16x8_t |
uint32x2_t | uint32x4_t |
uint64x1_t | uint64x2_t |
float16x4_t | float16x8_t |
float32x2_t | float32x4_t |
poly8x8_t | poly8x16_t |
poly16x4_t | poly16x8_t |
以上をさらに配列にした型もあり、以下の規則で名前が付けられています
<type><size>x<number of lanes>x<length of array>_t
例えば、 int16x4x2_t は int16x4_t を2つ要素に持つ型です
各要素はvalというメンバに格納されています
struct int16x4x2_t { int16x4_t val[2]; };
これらの配列型は一部のNEON命令で使用されます
使いどころについては今後の記事で解説したいと思います
polyって何?
データ型一覧の中に、見慣れないpolyという型がありました
気になってググったところ、以下の投稿を発見しました
どうやら多項式(polynomial)算術演算というものをするための型らしく
誤り検出符号や暗号化に利用されているようです
次回
個別の組み込み関数について説明する前に、全体像に触れておきたいと思います
ARM NEONの使い方 組み込み関数一覧編