我应该如何将SSE数据传递给我的函数/运算符?

Xav*_*olt 5 c++ sse simd parameter-passing intrinsics

我正在为SSE内在函数编写几个包装类 - 主要是为了获得类型安全的几何操作,还要添加一些便利函数.我的所有功能和操作符都是内联的.从理论上讲,它们都将直接编译为原始SSE汇编(无函数调用),我的电子永远不会离开XMM寄存器.

如何将我的SSE类作为参数传递以确保此结果?

我从不修改我的参数,所以选择主要是在传递值或传递const引用之间.我假设一个好的编译器会在相同的代码中优化这两种样式.但我肯定不知道.在该领域有更多经验的人能否阐述最佳实践?

提前致谢!

Pau*_*l R 4

对于大多数编译器来说,这两种方法都可以,但如果您希望使用 Visual Studio 来编译代码,请使用 const 引用,因为 Visual Studio 编译器有点死板,即使函数是内联的,它也会应用不必要的 ABI 限制。