Насколько я могу судить, инструкции VEXTRACTF128 и VEXTRACTI128 делают одно и то же, имеют одинаковую задержку, одинаковую пропускную способность и используют одни и те же порты. Единственная разница, которую я не могу сказать между ними, заключается в том, что VEXTRACTF128 требует только AVX. VEXTRACTI128 требует AVX2. Если это единственное эффективное отличие, зачем использовать VEXTRACTI128?
В векторном классе Агнера Фога я увидел следующее, что, как я полагаю, означает, что между инструкциями есть важное различие. Может быть, они используют разные домены (с плавающей запятой или целое число)?
#if defined (_MSC_VER) && _MSC_VER <= 1700 && ! defined(__INTEL_COMPILER)
__m128i sum5 = _mm256_extractf128_si256(sum4,1); // bug in MS VS 11
#else
__m128i sum5 = _mm256_extracti128_si256(sum4,1); // get high sum
#endif
MOVDQA
иMOVAPS
». Подожду, пока другие ответят. Если я найду время написать код для измерения стоимости домена с использованием VEXTRACTF128 вместо VEXTRACTI128 для__m256i
, я опубликую ответ. - person Z boson   schedule 05.09.2014