__m64_czx1l、__m64_czx1r、__m64_czx2l、__m64_czx2r

[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 Blank topics are included as placeholders.]

Microsoft 固有の仕様 →

は計算インデックスのさまざまな形式 (czx) 命令を生成します。

__m64 __m64_czx1l( 
   __m64 value 
);
__m64 __m64_czx1r( 
   __m64 value 
);
__m64 __m64_czx2l( 
   __m64 value 
);
__m64 __m64_czx2r( 
   __m64 value 
);

パラメーター

  • [入力] value
    走査する 64 ビットの値。

戻り値

バイトのフォームは最初のバイトを見つけるまでそれぞれのアライメントされた 8 ビット ブロックを左から右に使用される (組み込み)右から左へと順に表示され0 から検索されるバイト数を示す 7 までのすべてのゼロの数を返すように最初に配置された 8 ビット セクションを指定します。 ゼロのバイトの場合戻り値は 8. ありません。 バイトのフォームにより配置された 16 ビット ブロックを左または右から左から右へ順に表示し見つかったすべての値は先頭に配置された 16 ビットのセクションを指定します。 0 ~ 3 の戻り値はすべての後の最初の 16 ビット ブロックを見つける前に走査して 16 ビット ブロックの数を示します。 このようなセクションがない場合戻り値は 4. です。

必要条件

組み込み

アーキテクチャ

__m64_czx1l

IPF

__m64_czx1r

IPF

__m64_czx2l

IPF

__m64_czx2r

IPF

ヘッダー ファイル <intrin.h>

解説

__m64_czx1l__m64_czx1r は命令のバイトのフォームの左のフォームを出力します。czx1.l と czx1.rそれぞれ。 __m64_czx2l__m64_czx2r は命令のバイト フォームの左のフォームを出力します。czx2.l と czx2.rそれぞれ。 これらの組み込みはすべての値である 2 バイトでアライメントされたセクションに渡された値を検索します (使用される組み込みのによって) または長さが 1 回。 次の手順はフォームの左の最上位ビットを (MSB) 走査し右側のフォームは最下位ビットから (LSB) 検索します。

使用例

// czx.cpp
// compile with: /EHsc
// processor: IPF
#include <iostream>
#include <intrin.h>
using namespace std;

#pragma intrinsic(__m64_czx1l, __m64_czx1r, __m64_czx2l, __m64_czx2r)

int main()
{
   __m64 i, j, k, m;
   __m64 result_czx1l, result_czx1r, result_czx2l, result_czx2r;

   i.m64_u64 = 0xff00ff00ff00ff00;
   j.m64_u64 = 0xffffffffffffffff;
   k.m64_u64 = 0x00000000ffffffff;
   m.m64_u64 = 0x1101f0000230f10e;

   cout << hex;

   result_czx1l = __m64_czx1l(i);
   result_czx1r = __m64_czx1r(i);
   result_czx2l = __m64_czx2l(i);
   result_czx2r = __m64_czx2r(i);

   cout << "__m64_czx1l(" << i.m64_u64 << ") returns " <<
        result_czx1l.m64_u64 << " " << endl;
   cout << "__m64_czx1r(" << i.m64_u64 << ") returns " <<
        result_czx1r.m64_u64 << " " << endl; 
   cout << "__m64_czx2l(" << i.m64_u64 << ") returns " <<
        result_czx2l.m64_u64 << " " << endl;
   cout << "__m64_czx2r(" << i.m64_u64 << ") returns " <<
        result_czx2r.m64_u64 << " " << endl;
 
   result_czx1l = __m64_czx1l(j);
   result_czx1r = __m64_czx1r(j);
   result_czx2l = __m64_czx2l(j);
   result_czx2r = __m64_czx2r(j);

   cout << "__m64_czx1l(" << j.m64_u64 << ") returns " <<
        result_czx1l.m64_u64 << " " << endl;
   cout << "__m64_czx1r(" << j.m64_u64 << ") returns " <<
        result_czx1r.m64_u64 << " " << endl; 
   cout << "__m64_czx2l(" << j.m64_u64 << ") returns " <<
        result_czx2l.m64_u64 << " " << endl;
   cout << "__m64_czx2r(" << j.m64_u64 << ") returns " <<
        result_czx2r.m64_u64 << " " << endl;

   result_czx1l = __m64_czx1l(k);
   result_czx1r = __m64_czx1r(k);
   result_czx2l = __m64_czx2l(k);
   result_czx2r = __m64_czx2r(k);

   cout << "__m64_czx1l(" << k.m64_u64 << ") returns " <<
        result_czx1l.m64_u64 << " " << endl;
   cout << "__m64_czx1r(" << k.m64_u64 << ") returns " <<
        result_czx1r.m64_u64 << " " << endl; 
   cout << "__m64_czx2l(" << k.m64_u64 << ") returns " <<
        result_czx2l.m64_u64 << " " << endl;
   cout << "__m64_czx2r(" << k.m64_u64 << ") returns " <<
        result_czx2r.m64_u64 << " " << endl;

   result_czx1l = __m64_czx1l(m);
   result_czx1r = __m64_czx1r(m);
   result_czx2l = __m64_czx2l(m);
   result_czx2r = __m64_czx2r(m);

   // Even though m has a 16-bit section of zeroes, it is not aligned
   // on a 16-byte boundary, so won't be a match.

   cout << "__m64_czx1l(" << m.m64_u64 << ") returns " <<
        result_czx1l.m64_u64 << " " << endl;
   cout << "__m64_czx1r(" << m.m64_u64 << ") returns " <<
        result_czx1r.m64_u64 << " " << endl; 
   cout << "__m64_czx2l(" << m.m64_u64 << ") returns " <<
        result_czx2l.m64_u64 << " " << endl;
   cout << "__m64_czx2r(" << m.m64_u64 << ") returns " <<
        result_czx2r.m64_u64 << " " << endl;

}

出力

__m64_czx1l(ff00ff00ff00ff00) returns 1 
__m64_czx1r(ff00ff00ff00ff00) returns 0 
__m64_czx2l(ff00ff00ff00ff00) returns 4 
__m64_czx2r(ff00ff00ff00ff00) returns 4 
__m64_czx1l(ffffffffffffffff) returns 8 
__m64_czx1r(ffffffffffffffff) returns 8 
__m64_czx2l(ffffffffffffffff) returns 4 
__m64_czx2r(ffffffffffffffff) returns 4 
__m64_czx1l(ffffffff) returns 0 
__m64_czx1r(ffffffff) returns 4 
__m64_czx2l(ffffffff) returns 0 
__m64_czx2r(ffffffff) returns 2 
__m64_czx1l(1101f0000230f10e) returns 3 
__m64_czx1r(1101f0000230f10e) returns 4 
__m64_czx2l(1101f0000230f10e) returns 4 
__m64_czx2r(1101f0000230f10e) returns 4 

参照

Reference

__m64

コンパイラ組み込み関数。