ビット演算と厳密なエイリアシング
ハードウェアの最新の機能を利用するビットベースの操作用にいくつかの高性能関数を作成しようとしていますが、直面している問題は次のとおりです。
ビット単位のカウント操作を含めたいのですが、その場合、整数型SSE4.2
の値のみを受け入れる Intel を使用しました。popcnt
一方、他のビット単位の論理演算を実行する必要がある場合は、 (の 128 ビット幅のビット単位の論理演算の代わりに)のAVX
ような 256 ビット幅のビット単位の論理演算をサポートしますが、浮動データに対してのみサポートします。VORPD
SSE2
ビット単位の設定/リセット操作の事実と相まって、 charが最速であるため、同じメモリ位置を指す少なくとも 3 種類のポインターが必要になる場合があります。ただし、 Integer型と浮動型のポインターが共存すると、厳密なエイリアス規則が破られます。
これを回避するための提案はありますか?ありがとう。