問題タブ [bmi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - BMI2 を使用せずに PDEP に代わるポータブルで効率的な代替手段は?
Intel の Bit Manipulation Instruction Set 2 (BMI2)のパラレル デポジット命令( )のドキュメントでは、次の命令のシリアル実装について説明しています (C に似た擬似コード)。PDEP
Intel のpdep
insn ref マニュアル エントリも参照してください。
このアルゴリズムは O(n) です。ここで、n は のセット ビット数ですmask
。これは明らかに O(k) の最悪のケースを持ちます。ここで、k は の総ビット数ですmask
。
より効率的な最悪のケースのアルゴリズムは可能ですか?
val
最大で 1 つのビットが設定されている、つまり 0 に等しいか、0 から 63 まで1<<r
の値に等しいと仮定する、より高速なバージョンを作成することは可能ですか?r
assembly - AVX のサポートは BMI1 のサポートを意味しますか?
AVX に依存するコードがいくつかあります。
同じコードベースで も使用しますTZCNT
。
後者はBMI1の一部です。CPUID を使用してこの命令をテストできることはわかっていますが、怠け者なので、実際には実装しませんでした。
サポートをテストするには、AVX 命令を実行するだけです。未定義の命令例外が返された場合#UD
、CPU が AVX をサポートしていないことがわかります。
ただし、 (または-どちらがどちらかを常に忘れるtzcnt
)と(一種の)下位互換性があるため、例外は発生しません。 bsf
bsr
サポートがある場合、それはAVX
サポートを意味BMI1
しますか?
記録として、現在テストしている CPU に AVX2 はありません。
assembly - ワードのマスクとして単一ビットを使用する
プログラム内のすべてのメモリ操作を計測する LLVM パス モジュールを作成しています。ロジックの一部では、ポインターに対して非常にホットなバイナリ ロジックを実行する必要があります。
「bit ? u64_value : zero」をできるだけ少ないサイクルで、できれば明示的な分岐を使用せずに実装するにはどうすればよいですか? レジスタの最下位ビットにビットがあり、別のレジスタに値 (u64 と仮定) があります。ビットが設定されている場合は、値を保持します。ビットがゼロの場合、レジスタをゼロにします。
x86 BMI 命令を使用できます。
python - 私はpythonが初めてで、bmi計算機を作ろうとしています
出力は正確ではありません 体重は kg 単位、身長はセンチメートル単位で測定されます 助けてください!
体重が 65 kg で身長が 150 cm のように、体重が減っていることを示しています。過体重または健康であるはずです