bmi

    4

    1答えて

    2(BMI2)を設定し、インテルのビット操作命令でparallel deposit instruction(PDEP)のドキュメントは、命令(C-のような擬似コード)については、以下のシリアル実装を説明します U64 _pdep_u64(U64 val, U64 mask) { U64 res = 0; for (U64 bb = 1; mask; bb += bb) {

    3

    1答えて

    考える: 少なくとも一組(1)ビットを含むビットマスクa(例えば、std::uint64_t)。 a(すなわちa & b == b)のサブセットであり、少なくとも1ビットが設定されたセレクタビットマスクb。 Iはbのビットと重複aで連続1ビットのスパンを選択する: a = 0b1111001110001100; b = 0b0000001010001000; //c=0b00000011100

    3

    1答えて

    私はAVXに依存するいくつかのコードを持っています。 同じコードベースでは、TZCNTも使用しています。 後者はBMI1の一部です。私はCPUIDを使ってこの命令をテストできることは知っていますが、実際に実装していないので怠惰です。 サポートをテストするには、単にAVX命令を実行します。 #UD未定義の命令例外が戻ったら、私はCPUがAVXをサポートしていないことを知っています。 tzcntは、b

    2

    1答えて

    複数のプラットフォームで動作するコードがあります。このコードでは、core i7 5th genのように、使用可能な場合に組み込み関数BMI/BMI2が使用されています。 Solarisの11.3に日によって提供されるGCCは__BMI__と__BMI2__を定義しているが、BMI/BMI2組み込み関数を見つけるその苦労: $ cat test.cxx #include <x86intrin.h