c - 将 __m256 拆分为两个 __m128 寄存器

标签 c intrinsics avx avx2

我有一个包含 8 个 float 的 __m256,我想将它分成 2 个 __m128,一个包含前四个 float ,另一个包含后四个 float float 。这可能吗?

谢谢

最佳答案

_mm256_extractf128_ps 上下两部分都可以使用。对于上半部分,这是提取它的最佳方法。然而,对于一些稍旧的 MSVC 版本,内在总是产生相应的指令,即使索引为零(在这种情况下实际上不需要指令)。因此,对于提取下半部分,_mm256_castps256_ps128 应该是首选。

关于c - 将 __m256 拆分为两个 __m128 寄存器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66536865/

相关文章:

x86 - _mm256_testz_pd 不工作?

x86 - 为新指令集开发

C 性能和函数参数的选择

c - 在两个函数中使用 Goto 函数

c - 点积 - SSE2 与 BLAS

c++ - 使用 AVX CPU 指令 : Poor performance without "/arch:AVX"

c - 如何在Csfml中为 map 充电

c++ - 结构 (C) 中的 malloc 错误

asp.net-mvc-2 - 如何在 asp.net mvc 2 中使用 fakeiteasy 伪造用户登录以进行单元测试

c - 使用 SSE 内在函数将 4 个点积存储到 C 中的连续数组中的最有效方法