побитовая операция и строгое наложение

Битовая операция и строгий ализинг

Я пытаюсь написать несколько высокопроизводительных функций для операций на основе битов, использующих преимущества новейших аппаратных средств. Проблема, с которой я сталкиваюсь:

Я хочу включить операцию побитового подсчета, в этом случае я использовал Intel SSE4.2«s popcnt которые принимают только целочисленные значения.

Хотя, если мне нужно выполнить другие побитовые логические операции, то AVX поддержка побитовых логических операций шириной 256 бит VORPD (вместо SSE2128-битные логические операции шириной в бит), но только для плавающих данных.

В сочетании с фактом побитовой настройки / сброса, char является самым быстрым, поэтому мне могут понадобиться как минимум три типа указателей, указывающих на одни и те же области памяти: тип символа, длинный длинный (64-разрядное целое число для оптимального побитового подсчета) и плавающий тип указатели, однако сосуществование указателей типа Integer и плавающего типа нарушает правила строгого наложения имен.

Любое предложение обойти это? Благодарю.

3

Решение

Ты используешь gcc или же clang или что-то подобное ведет себя? У них есть __attribute__((__may_alias__)) обойти эти проблемы.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]