VEXTRACTF128 против VEXTRACTI128

Насколько я могу судить, инструкции 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

person Z boson    schedule 05.09.2014    source источник
comment
@PaulR, это дубликат. Может стоит удалить вопрос? Но я не уверен, что на него ответили лучше всего. Вы говорите использовать VEXTRACTI128 с целыми числами, но не объясняете, почему это лучше.   -  person Z boson    schedule 05.09.2014
comment
Правда - у меня больше нет информации об этом - вы могли бы сделать этот вопрос более конкретным, чтобы он больше не дублировался, или, может быть, удалить этот вопрос и добавить что-то к старому вопросу, чтобы снова сделать его активным.   -  person Paul R    schedule 05.09.2014
comment
@PaulR, не могли бы вы предложить что-то добавить к моему вопросу? Я попытался быть более конкретным. Все, что я получил, это то, что другой разработчик решил переключиться между двумя, что, как я понимаю, означает, что есть какая-то важная разница. На практике я бы сделал так, как вы говорите, и использовал VEXTRACTI128 с целыми числами, но на бумаге я не могу объяснить, почему это имеет значение.   -  person Z boson    schedule 05.09.2014
comment
Все, о чем я могу думать, это, возможно, реализовать два простых цикла тестов, по одному для каждой инструкции, посмотреть, есть ли какая-либо разница в производительности, а затем обновить вопрос, включив в него код теста и результаты и т. д.   -  person Paul R    schedule 05.09.2014
comment
@PaulR, это хорошее предложение. Но для меня недостаточно важно тратить на это время.   -  person Z boson    schedule 05.09.2014
comment
Хорошо - нет проблем - я думаю, тогда это должно будет оставаться загадкой еще какое-то время.   -  person Paul R    schedule 05.09.2014
comment
Сейчас я добавил награду к исходному вопросу, чтобы посмотреть, сможем ли мы активизировать какую-то активность и, возможно, получить окончательный ответ.   -  person Paul R    schedule 05.09.2014
comment
@PaulR, круто! Но я думаю, что теперь я знаю ответ. Это связано с моим комментарием. Может быть, они используют разные домены (с плавающей запятой или целое число)? Это объясняется в разделах Задержки обхода данных на Core2 и Задержки обхода данных на Nehalem в руководстве Agner Fog по микроархитектуре. Мой вопрос аналогичен вопросу «В чем разница между MOVDQA и MOVAPS». Подожду, пока другие ответят. Если я найду время написать код для измерения стоимости домена с использованием VEXTRACTF128 вместо VEXTRACTI128 для __m256i, я опубликую ответ.   -  person Z boson    schedule 05.09.2014
comment
Отлично - я думал, что это может быть что-то в этом роде, но в документах Intel, как обычно, этих деталей, к сожалению, не хватает.   -  person Paul R    schedule 06.09.2014
comment
@PaulR, похоже, у тебя уже есть хороший ответ на твою награду. Должен ли я удалить свой вопрос или закрыть его (могу ли я проголосовать за закрытие своего вопроса)? На самом деле, я только что проголосовал за то, чтобы закрыть свой вопрос. Прохладный.   -  person Z boson    schedule 07.09.2014
comment
Я думаю, вы можете просто проголосовать за то, чтобы закрыть как дубликат — таких голосов уже три, так что после вашего потребуется еще один.   -  person Paul R    schedule 07.09.2014