Речь идет не столько о внутренних функциях, характерных для Microsoft, сколько о типе данных. Фактические свойства идентичны в обоих компиляторах на 100% и являются стандартом де-факто (на основе данных Intel).
Проблема, с которой вы сталкиваетесь, заключается в том, что тип __m128i
- для удобства - union
под MSVC, который включает такие поля, как m128i_u16
. Пример кода, на который вы ссылаетесь, предполагает это.
В gcc __m128i
является , а не объединением и, следовательно, неудивительно, что не имеет этих полей. Это на самом деле не является недостатком, потому что доступ к полям в объединении, подобном этому, сводит на нет любые выгоды, которые вы могли бы получить от использования SSE, во-первых, кроме как в демонстрационных фрагментах, подобных приведенному выше, вы (почти) никогда не захотите использовать такие вещь.