c – SSE2内在函数存储结果在哪里?
发布时间:2020-12-16 10:15:03 所属栏目:百科 来源:网络整理
导读:我正在向C中的第一步迈进SSE2. Here’s我现在正在学习的内在: __m128d _mm_add_pd (__m128d a,__m128d b) 该文档说:在a和b中添加打包的双精度(64位)浮点元素,并将结果存储在dst中. 但我从未将dst传递给该功能.那么,如果我不传递它,它怎么能添加两个双I传递
我正在向C中的第一步迈进SSE2.
Here’s我现在正在学习的内在:
__m128d _mm_add_pd (__m128d a,__m128d b) 该文档说:在a和b中添加打包的双精度(64位)浮点元素,并将结果存储在dst中. 但我从未将dst传递给该功能.那么,如果我不传递它,它怎么能添加两个双I传递(通过指针)到结果数组? 解决方法
描述“将结果存储在dst中”有点误导.内部函数将向量加法的结果作为__m128d类型的值返回.
__m128d arg1 = ...; __m128d arg2 = ...; __m128d result = _mm_add_pd(arg1,arg2); 如果您调用变量dst而不是result,那么您将拥有符合描述的代码. (但你可以随意调用它.) 底层SSE指令 Intrinsics对C变量进行操作,就像使用int或float类型一样.通常这些编译为对寄存器进行操作的asm指令(或者如果它结合了加载和添加内部函数,则可能是内存源操作数),但将所有这些留给编译器是使用内在函数的关键. 您确实希望编写代码以便可以高效编译:如果超过16个__m128变量一次“存活”,编译器将不得不溢出/重新加载它们. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |