Учитывая этот код:Что такое __attribute__ vector_size?
using vec = uint32_t __attribute__ ((vector_size (16)));
Как это может быть переписан для MSVC 2015?
Учитывая этот код:Что такое __attribute__ vector_size?
using vec = uint32_t __attribute__ ((vector_size (16)));
Как это может быть переписан для MSVC 2015?
Это специальное расширение GCC для создания целых чисел &, размер которых превышает 64 бит, и насколько я знаю, в VC++ нет прямой замены, но существует тип __m128d, который вы можете использовать вместо этого ,
Это пример gcc vector extensions, который является абстракцией по инструкциям SIMD.
Эта конкретная строка создает псевдоним типа vec
для вектора длиной в 16 байт и состоит из 32-разрядных беззнаковых itegers.
У MSVC, похоже, нет эквивалентного расширения. Использование SIMD поддерживается через alignment routines and inline assembly. Таким образом, нет возможности точно переписать строку, и недостаточно переписать только эту строку, но также используются строки, в которых используются псевдоним или объекты с использованием этого типа.
MSVC предоставляет тип данных [__m128i] (https://msdn.microsoft.com/en-us/library/26232t5c.aspx) с эквивалентным макетом, который ищет OP. Переменные типа '__m128i' также соответствующим образом выровнены по 16-байтовым границам. Инструкции SIMD поддерживаются с помощью [встроенных компиляторов] (https://msdn.microsoft.com/en-us/library/26td21ds.aspx). Компилятор x64 не поддерживает встроенную сборку, а встроенная сборка не является рекомендуемым способом реализации кода SIMD. – IInspectable
Возможно, '__m128', мы не видим, как вы его используете. –