3

ビット演算と厳密なエイリアシング

ハードウェアの最新の機能を利用するビットベースの操作用にいくつかの高性能関数を作成しようとしていますが、直面している問題は次のとおりです。

ビット単位のカウント操作を含めたいのですが、その場合、整数型SSE4.2の値のみを受け入れる Intel を使用しました。popcnt

一方、他のビット単位の論理演算を実行する必要がある場合は、 (の 128 ビット幅のビット単位の論理演算の代わりに)のAVXような 256 ビット幅のビット単位の論理演算をサポートしますが、浮動データに対してのみサポートします。VORPDSSE2

ビット単位の設定/リセット操作の事実と相まって、 charが最速であるため、同じメモリ位置を指す少なくとも 3 種類のポインターが必要になる場合があります。ただし、 Integer型と浮動のポインターが共存すると、厳密なエイリアス規則が破られます。

これを回避するための提案はありますか?ありがとう。

4

1 に答える 1

0

gccまたはclang、同様に動作するものを使用していますか? これら__attribute__((__may_alias__))の問題を回避する必要があります。

于 2013-01-24T21:37:42.780 に答える