__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指令ADDPD
将 *** 作结果存储在其选择的XMM寄存器中.编译器将进行寄存器分配(甚至存储/重载C向量变量,如果它用完了寄存器,或者围绕一个破坏向量寄存器的函数调用).
Intrinsics对C变量进行 *** 作,就像使用int或float类型一样.通常这些编译为对寄存器进行 *** 作的asm指令(或者如果它结合了加载和添加内部函数,则可能是内存源 *** 作数),但将所有这些留给编译器是使用内在函数的关键.
您确实希望编写代码以便可以高效编译:如果超过16个__m128变量一次“存活”,编译器将不得不溢出/重新加载它们.
总结以上是内存溢出为你收集整理的c – SSE2内在函数存储结果在哪里?全部内容,希望文章能够帮你解决c – SSE2内在函数存储结果在哪里?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)