gpt4 book ai didi

c - Intel x86 SSE SIMD 指令入门

转载 作者:太空狗 更新时间:2023-10-29 16:19:24 26 4
gpt4 key购买 nike

我想了解更多关于使用 SSE 的信息.

除了明显的阅读Intel® 64 and IA-32 Architectures Software Developer's Manuals还有什么方法可以学习?

主要是我对使用 GCC X86 Built-in Functions 感兴趣.

最佳答案

首先,我不建议使用内置函数——它们不可移植(跨同一架构的编译器)。

使用intrinsics , 海合会 does a wonderful job将 SSE 内在函数优化为更优化的代码。您可以随时查看程序集,了解如何充分发挥 SSE 的潜力。

内部函数很简单——就像普通的函数调用一样:

#include <immintrin.h>  // portable to all x86 compilers

int main()
{
__m128 vector1 = _mm_set_ps(4.0, 3.0, 2.0, 1.0); // high element first, opposite of C array order. Use _mm_setr_ps if you want "little endian" element order in the source.
__m128 vector2 = _mm_set_ps(7.0, 8.0, 9.0, 0.0);

__m128 sum = _mm_add_ps(vector1, vector2); // result = vector1 + vector 2

vector1 = _mm_shuffle_ps(vector1, vector1, _MM_SHUFFLE(0,1,2,3));
// vector1 is now (1, 2, 3, 4) (above shuffle reversed it)
return 0;
}

使用_mm_load_ps_mm_loadu_ps 从数组加载数据。

当然还有更多选择,SSE 真的很强大,而且在我看来相对容易学习。

另见 https://stackoverflow.com/tags/sse/info获取指南的一些链接。

关于c - Intel x86 SSE SIMD 指令入门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1389712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com