インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
2 つの 256 ビットの float64 ベクトルまたは 128 ビットの float64 ベクトルのパックド・ビット・テストを実行して、ZF フラグと CF フラグの設定を確認します。対応するインテル® AVX 命令は VTESTPD です。
extern int _mm256_testnzc_pd(__m256d s1, __m256d s2); |
extern int _mm_testnzc_pd(__m128d s1, __m256d s2); |
s1 |
1 つ目の float64 ソースベクトル |
s2 |
2 つ目の float64 ソースベクトル |
VTESTPDs1、s2 命令を使用して、s1 ベクトルと s2 ベクトルのパックド・ビット・テストを実行し、ZF フラグと CF フラグのステータスを確認します。この組込み関数は、ZF フラグと CF フラグが両方とも 1 でない場合 (つまり、両方とも設定されてない場合) は 1 を返し、そうでない場合 (つまり、どちらか一方が設定されている場合) は 0 を返します。
VTESTPD 命令は、1 つ目のソースオペランドの倍精度要素のすべての符号ビットと、対応する 2 つ目のソースオペランドの符号ビットのビット単位比較を行います。1 つ目のソースオペランドの符号ビットと 2 つ目のソースオペランドの符号ビットの AND 演算がすべて 0 の場合は ZF フラグが設定され、それ以外の場合は ZF フラグがクリアされます。1 つ目のソースオペランドの符号ビットを反転したものと 2 つ目のソースオペランドの符号ビットの AND 演算がすべて 0 の場合は CF フラグが設定され、それ以外の場合は CF フラグがクリアされます。
_mm_testnzc_pd 組込み関数は、128 ビットの float64 ソースベクトルの結果に応じて ZF フラグと CF フラグを確認します。_m256_testnzc_pd 組込み関数は、256 ビットの float64 ソースベクトルの結果に応じて ZF フラグと CF フラグを確認します。
インテル® アドバンスト・ベクトル・エクステンション (インテル® AVX) 命令には、128 ビットの SIMD 命令の機能がすべて含まれています。128 ビットのベクトル長を持つインテル® AVX 命令は、YMM レジスターの上位 128 ビットを 0 に設定します。YMM レジスターの下位ビットは、対応する SIMD XMM レジスターにエイリアスされます。
1: ZF フラグと CF フラグの両方がクリアであることを示します。
0: ZF フラグまたは CF フラグのいずれかが設定されていることを示します。