一次元配列同士の加算、アセンブリ言語(AVX512)で記述

一次元配列同士の加算する。呼び出し側をC++で、加算処理をAVX512アセンブリ言語で記述した例を示す。 まず、単純な例を示す。

一次元配列同士の加算、C++、SIMD(AVX-512)

一次元配列同士の加算する。C++、AVX-512の例を示す。

一次元配列へスカラーの加算、C++、アセンブラー、SIMD

一次元配列へスカラー値を加算します。C++、x86アセンブラー、AVX2、AVX-512の例を示します。

SIMD、ブロードキャスト

AVX-512 イントリンシックでブロードキャスト。

SIMD、(ゼロ)マスク移動、アンアラインド

AVX-512 イントリンシックでマスク、またはゼロマスクを使った移動。データはSIMD境界に揃っていない。

SIMD、ゼロマスク移動

AVX-512 イントリンシックでゼロマスクを使った移動。

SIMD、マスク移動

AVX-512 イントリンシックでマスクを使った移動。

SIMD、ブロードキャスト

AVX-512 イントリンシックでスカラーを__m512iへブロードキャストする。

C++とアセンブラー⑦

C++とアセンブラーで開発した関数について一通り解説してきた。今回は、戻り値を持つ関数の説明を行う。 戻り値がchar 戻り値がshort 戻り値がint 戻り値がポインター 戻り値が単精度浮動小数点 戻り値が倍精度浮動小数点

C++とアセンブラー⑥

C++とアセンブラーで開発した関数について一通り解説してきた。今回は、スタックへレジスターの保存を行うだけでなく、スタックに作業領域を割り当てて使う方法を紹介する。レジスターの保護と、作業領域確保の両方を行う例を紹介する。

C++とアセンブラー⑤

C++とアセンブラー④で紹介したように、xmmレジスターを保護しただけでは、ymmレジスターやzmmレジスターの保護が保証されないことが分かった。そこで、ここでは512ビットのSIMDをサポートしたCPUはzmmレジスターを、256ビットのSIMDをサポートしたCPUはymmレ…

C++とアセンブラー④

Visual Studio のC++が呼び出すアセンブリ関数でレジスターを保護する方法を紹介したが、xmmレジスターまでしか考慮していない。ymmレジスターやzmmレジスターを搭載したCPUで、本当にxmmレジスターをほごするだけで良いのか考察してみる。 保存するSIMDレジ…

C++とアセンブラー③

Visual Studio のC++からアセンブリコードで記述した関数を紹介したが、レジスターの退避が十分とは言えませんので、破壊してはならないレジスターを保護する例を紹介する。

C++とアセンブラー②

Visual Studio でプラットフォームにx64 を選ぶとインラインアセンブラを使用できない。理由はスタックやレジスターの管理など、いろいろ考えられる。インラインアセンブラを使用できないということは、アセンブリコードは別のファイルに単独で記述しなけれ…

C++とアセンブラー①

まず、Visual Studio のx86でC++とアセンブリ言語を混在して使用する方法を紹介します。X86ではインラインアセンブラを利用できますので、比較的簡単に記述できますが、C++はもちろん、アセンブリ言語を理解しておくのは前提です。

Windows Forms で高DPI(HDPI)対応

C#

C#のWindows フォーム アプリケーション(.NET Framework)で開発したプログラムは、WPFなどと違い高DPI対応へ対応していません。ここでは、そのようなプログラムを高DPI環境でも正常に表示される方法を紹介します。 AutoScaleMode app.manifest を作成し、コ…

C++とアセンブラーでCPU機能を読み出す

CPUの機能を読み出し、それを表示してみましょう。 arques.hatenablog.com のアゼンブラーバージョンです。

C++とアセンブラーでCPUのキャッシュ情報を表示する

キャッシュ情報を読み込み表示してみましょう。 arques.hatenablog.com のアゼンブラーバージョンです。

C++ とアセンブラでベンダー名を読み出す

CPUのベンダー名を読み出し、それを表示してみましょう。 arques.hatenablog.com のアゼンブラーバージョンです。

C++ とアセンブラでCPU を読みだす。

CPUのプロセッサ情報を読み出し、それを表示してみましょう。 arques.hatenablog.com のアゼンブラーバージョンです。

C++とアセンブラでCPU brand stringを表示

CPU brand stringを、C++から自身で開発したアセンブリ関数を呼び出し、表示してみた。 arques.hatenablog.com のアゼンブラーバージョンです。

C++でCPU機能を読み出す

C++

CPUの機能を読み出し、それを表示してみましょう。

C++でCPUのキャッシュ情報を表示する

C++

キャッシュ情報を読み込み表示してみましょう。

C++でCPUのベンダー名を読み出す

C++

CPUのベンダー名を読み出し、それを表示してみましょう。

C++ でCPU を読みだす。

C++

CPUのプロセッサ情報を読み出し、それを表示してみましょう。

C++でCPU brand stringを表示

C++

C#でCPU brand stringを表示してみた。

C#でCPU機能を読み出す

C#

CPUの機能を読み出し、それを表示してみましょう。

C#でCPUのキャッシュ情報を表示する

C#

キャッシュ情報を読み込み表示してみましょう。

C#でCPUのベンダー名を読み出す

C#

CPUのベンダー名を読み出し、それを表示してみましょう。

C# でCPU を読みだす。

C#

C#でCPUのプロセッサ情報を読み出し、それを表示してみましょう。