据我所知,VEXTRACTF128和VEXTRACTI128指令执行相同的操作,具有相同的延迟,相同的吞吐量,并使用相同的端口。我不能告诉他们的唯一区别是VEXTRACTF128只需要AVX VEXTRACTI128需要AVX2。 如果这是唯一有效的差异,为什么要使用VEXTRACTI128?
我在Agner Fog的vectroclass中看到以下内容,我推断这意味着指令之间存在一些重要的区别。也许他们共享不同的域(浮点或整数)?
#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