SIMD

予測と分岐・設定とクリア・32ビット整数型

配列の値によって処理を変更するプログラム紹介します。 AVX-512 命令のマスクレジスターを使用すると、プレディケーション(分岐の排除)によって、条件判断が必要な処理を効率良く実行できます。プレディケーションでは、各レーンで命令を実行するかしない…

予測と分岐・設定とクリア・64ビット整数型

配列の値によって処理を変更するプログラム紹介します。 AVX-512 命令のマスクレジスターを使用すると、プレディケーション(分岐の排除)によって、条件判断が必要な処理を効率良く実行できます。プレディケーションでは、各レーンで命令を実行するかしない…

予測と分岐・設定・64ビット浮動小数点型

プレディケーション(分岐の排除)によって、条件判断が必要な処理を効率良く実行できます。

予測と分岐・設定・8ビット整数型

プレディケーション(分岐の排除)によって、条件判断が必要な処理を効率良く実行できます。

予測と分岐・設定・16ビット整数型

プレディケーション(分岐の排除)によって、条件判断が必要な処理を効率良く実行できます。

予測と分岐・設定・32ビット整数型

プレディケーション(分岐の排除)によって、条件判断が必要な処理を効率良く実行できます。

予測と分岐・設定・64ビット整数型

プレディケーション(分岐の排除)によって、条件判断が必要な処理を効率良く実行できます。AVX-512 命令のマスクレジスターを使用すると、プレディケーション(分岐の排除)によって、条件判断が必要な処理を効率良く実行できます。ここで紹介するものは、…

一次元配列同士の演算をAVX512アセンブリ言語で記述・float

一次元配列同士の演算(float)をAVX512アセンブリ言語で記述します。呼び出し側をC++で、演算処理をAVX512アセンブリ言語で記述します。

一次元配列同士の演算をAVX512アセンブリ言語で記述・double

一次元配列同士の演算(double)をAVX512アセンブリ言語で記述します。呼び出し側をC++で、演算処理をAVX512アセンブリ言語で記述します。

一次元配列同士の演算をAVX512アセンブリ言語で記述・byte

一次元配列同士の演算(byte)をAVX512アセンブリ言語で記述します。呼び出し側をC++で、演算処理をAVX512アセンブリ言語で記述します。

一次元配列同士の演算をAVX512アセンブリ言語で記述・short

一次元配列同士の演算(short)をAVX512アセンブリ言語で記述します。呼び出し側をC++で、演算処理をAVX512アセンブリ言語で記述します。

一次元配列同士の演算をAVX512アセンブリ言語で記述・int or long

一次元配列同士の演算(int or long)をAVX512アセンブリ言語で記述します。呼び出し側をC++で、演算処理をAVX512アセンブリ言語で記述します。

一次元配列同士の演算をAVX512アセンブリ言語で記述・long long

一次元配列同士の演算(long long)をAVX512アセンブリ言語で記述します。呼び出し側をC++で、演算処理をAVX512アセンブリ言語で記述します。

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

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

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

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

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

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

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

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

SIMD、ゼロマスク移動

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

SIMD、マスク移動

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

SIMD、ブロードキャスト

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

C++とアセンブラー⑤

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