Почему последний аргумент _mm_permute_ps int? - PullRequest
2 голосов
/ 01 апреля 2019

GCC любезно сообщил мне, что последний аргумент встроенного SIMD _mm_permute_ps должен быть 8-разрядным.Почему тогда его последний аргумент объявлен как ожидающий int?

__m128     _mm_permute_ps(__m128  a, int imm8);
__m256d _mm256_permute_pd(__m256d a, int imm8);

Может ли параметр 8-битного типа не предоставить более полезный интерфейс для конечного пользователя?

1 Ответ

1 голос
/ 25 апреля 2019

Это согласуется со всеми другими внутренностями, принимающими случайный вектор или непосредственный аргумент.Вероятно, чтобы указать, что это целое число, а не символ, избегая зависимости от stdint.h для int8_t.

Более забавная часть с точки зрения C ++ - это не constexpr, так что вы можете дать ему не-компилировать временные аргументы, которые потом вызывают забавные вещи для компилятора.Однажды я попытался улучшить встроенные функции для gcc таким образом, чтобы предполагать, что непосредственным аргументом является время компиляции, и он сломал удивительно большое количество кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...