NEONなんもわからん。
● ARM NEON 超入門
ARM Compiler toolchain Assembler Reference
https://developer.arm.com/documentation/dui0489/g/neon-and-vfp-programming/
ARM NEON Intrinsics - Using the GNU Compiler Collection (GCC)
https://gcc.gnu.org/onlinedocs/gcc-4.9.4/gcc/ARM-NEON-Intrinsics.html
SIMD Assembly Tutorial: ARM NEON (pdf注意)
http://download.xskernel.org/docs/processors/cortex-a53/neon_tutorial.pdf
ARM NEONの使い方 予告編 - おぺんcv
https://atkg.hatenablog.com/entry/2016/09/25/170031
● 超初心者のチート表
n: mov結果を半型にする
h: 計算後に2で割る
d: 計算後に2をかける
q: 桁あふれ時にオーバフローさせず上限張り付き
r: シフト結果を丸める
l: 計算結果の型を倍型にする
hn: 計算結果から上位半分取り出して半型にする
w: 計算元の片側が半型
q: 倍幅で計算
● 初心者の感想
- レジスタへのload, storeがめんどい。NEONフレンドリーなデータ構造・配列にしておかないと効率よくない
- 計算順は大事。積和(vmla)にしないと命令数増えて効率悪い
- 計算幅大事。64bitだとx2なので並列度が上がらない。オーバーフローをうまく処理して32bitのx4や16bitのx8にしないといけない
- パイプラインよくわからん。依存低い並びにしないと処理速度上がらないらしいが、その域はまだよくわかってない