Я заметил, что доступ к полям __m128
по индексу возможен в gcc
, без использования трюка union
.Доступ к полям __m128 через компиляторы
__m128 t;
float r(t[0] + t[1] + t[2] + t[3]);
Я также могу загрузить __m128
так же, как массив:
__m128 t{1.f, 2.f, 3.f, 4.f};
Это все в соответствии с векторными расширениями gcc
«s. Однако они могут быть недоступны в других местах. Поддерживаются ли функции загрузки и доступа, поддерживаемые компилятором Intel и msvc?
Стандартный C++ не поддерживает SSE. На каких целевых платформах вас интересует? –
Что такое трюк 'union' для доступа к полям __m128? – Blue
@Выполните что-нибудь вроде: 'union vec {__m128 a; float b [4]; double c [2]; }; '. Это не гарантируется. – user1095108