これに似た関数シグネチャがあります
void Mutliply(const MatrixMN& a, const MatrixMN& b, MatrixMN& out);
内部的に、マトリックス クラスにはコンポーネントfloat* data;
を表す がありm x n
ます。a
コンパイラにそれを伝え、出力行列にエイリアスを設定しb
ないようにして、大量のロードストアを実行しないようにしたいと思います。
どうすればそれを行うことができますか?関数シグネチャへのポインターを渡して__restrict
(MSVC で) ポインターをマークできることはわかっていますが、オブジェクトにメモリへのポインターが含まれている参照渡しオブジェクトのイディオムを保持したいと思います。
__restrict
また、オブジェクト参照では機能しないことも知っています。