【发布时间】:2012-04-20 16:44:01
【问题描述】:
我需要使用 Accelerate 框架添加/mul/sub 两个 __m128 (float) 变量。但是,我找不到这样做的功能。所有 Accelerate 框架函数都采用 int__vector__ 类型而不是 float__vector__ 类型。我找到了划分'vdivf'的函数,但我也需要添加/mul/sub。
谁能告诉我,如何使用 Accelerate 框架添加/mul/sub 两个 __m128 (float) 变量?像这样:_mm_add_ps、_mm_sub_ps、_mm_mul_ps,但使用的是 Accelerate 框架 API。
【问题讨论】:
-
您为什么觉得需要为此使用 Accelerate 框架?为什么不直接使用内在函数?
-
我认为,如果Apple提供API来使用MMX、SSE等,使用这个API会更好。我需要支持 PPC 和 Intel 处理器系列,Accelerate 框架将自动处理 CPU 命令支持。另外,如果将来有什么改变,我认为使用 Accelerate 框架我需要做的改变更少。
-
好的,但是你不想仅仅为单个向量调用 Accelerate 函数——这将是非常低效和毫无意义的——你需要处理合理大小的数组,否则函数调用开销将消除任何收益使用 SIMD。
-
谢谢你,Paul,但接下来的问题是:我有一个用于 Windows 平台的 C++ 库,我需要至少使用 SSE2!代码更改。此代码使用
_mm_add_ps等函数,由于上述原因,我需要用Accelerate 框架中的模拟替换调用_mm_add_ps等函数。你可以告诉我,有什么用呢? -
谢谢你,保罗,我希望我错过了一些东西,只是没有找到那个功能。