
前回は演算後のHavingで桁あふれに備える系統の命令を実験しました。今回はサチュレーション演算によって桁あふれしない範囲内に結果をとどめるための系統の命令を使ってみます。SQADD、UQSUBなどと命令ニーモニックの中にQを含む命令共です。しかし命令充実(A64の命令数大すぎ。)とても1回じゃ練習しきれませぬ。 “ぐだぐだ低レベルプログラミング(137)ARM64(AArach64)SIMD sqadd” の続きを読む
デバイス作る人>>デバイス使う人>>デバイスおたく
前回は演算後のHavingで桁あふれに備える系統の命令を実験しました。今回はサチュレーション演算によって桁あふれしない範囲内に結果をとどめるための系統の命令を使ってみます。SQADD、UQSUBなどと命令ニーモニックの中にQを含む命令共です。しかし命令充実(A64の命令数大すぎ。)とても1回じゃ練習しきれませぬ。 “ぐだぐだ低レベルプログラミング(137)ARM64(AArach64)SIMD sqadd” の続きを読む
前回はチラリと代数学が出てきてビビリました。今回はビビらないで済む普通の算術っす。整数の足し算ね。でもSIMDあるあるデス。整数の足し算といっても一筋縄ではいかんのですな(勿論フツーの足し算もあるけれども。)今回は加算後に1ビット右シフトを伴う(値をだいたい半分にするということだね)一族を練習してみます。
“ぐだぐだ低レベルプログラミング(136)ARM64(AArach64)SIMD shadd” の続きを読む
何度も書いてますが、A64の命令、特にSIMD命令多すぎ。SIMDで普通の足し算だのはメンドイのでほぼ省略、ユニークな奴らだけ練習してます。前回はニュートン・ラフソン法にてご利益があるらしい命令をやりました。今回は多項式っす。ここを掘っていくと群、環、体などという者どもが飛び出してくること必定。ヤバイ命令だよ。
“ぐだぐだ低レベルプログラミング(135)ARM64(AArach64)SIMD pmul” の続きを読む
前回は「実はA64のSIMD(ベクトル)命令にMOVなんてない」の回でした。今回はMOVじゃないけどMOVする命令があるの回です。INSとDUP。INSは前回の復習になりますが、DUPはSIMD計算するときにゃゼッテー欲しくなる操作です。ただ同じエレメントを並べるだけなんだけれども。無かったらどうして良いか分からない?
“ぐだぐだ低レベルプログラミング(131)ARM64(AArach64)DUP(ベクトル)” の続きを読む
前回のSIMD命令はソースオペランド1個をとって計算結果をデスティネーション1個に格納するパターン。このパターンの一番シンプルなものはMOVですな。勿論、SIMD(ベクトル)命令にもMOVというニーモニックは「有り」です。しかし、エイリアスが久しぶりの登場。「MOVはエイリアスなので実はMOV命令など無い」、なんと。
“ぐだぐだ低レベルプログラミング(130)ARM64(AArach64)MOV(ベクトル)” の続きを読む
前回、intelの内蔵GPU搭載機上で OpenCL をWSL2環境とMSYS2環境から使えるように環境整備。しかしこれは Jetson Nano のCuda環境がホコリを被っていたためでした。今回Jetson Nanoの復活に取り組み。復活したのはよいけれど、その際OSアップグレードしようとしてハマリましたです。
“やっつけな日常(54) Jetson Nanoの復活とOSアップグレードの失敗” の続きを読む
前回、前々回とA64のSIMD命令のうちソースオペランドを2つ取る演算命令の2タイプを練習しました。今回はソースオペランドを一つだけとる演算命令の代表選手?FSQRTです。前にもそんなこと書いた気がするな。デジャヴか記憶の混濁か?SIMD命令はとっても数が多いので「各パターン」せめて一種類くらいは練習しておこうと。 “ぐだぐだ低レベルプログラミング(129)ARM64(AArach64)FSQRT(ベクトル)” の続きを読む
前回からA64のベクトル(SIMD)演算命令に入ってます。今回は、はやくも「核心」的なSIMDの積和算を練習してみます。なんでSIMD使うのかと問われれば半分くらいは積和したいから、ということになるんじゃないかと思うからです。SIMD積和算にも浮動小数、整数の両方あるのですが今回は単精度浮動小数のみ。手抜き。
“ぐだぐだ低レベルプログラミング(128)ARM64(AArach64)FMLA、ベクトル積和” の続きを読む
前回までベクトルロード/ストアは「1要素」のLD1/ST1命令使ってました。しかしA64の命令セットには1要素から4要素まで、ロードはLD1からLD4、ストアはST1からST4まであるのです。今回はLD3命令を使って「3要素」のときの動作を確認してみます。キーワードは de-interleaving とな。
“ぐだぐだ低レベルプログラミング(125)ARM64(AArach64)LD3、デインタリーブ” の続きを読む