【发布时间】:2011-08-25 02:13:09
【问题描述】:
使用 OSX 中的 Accelerate framework,您可以访问 4 路 SIMD 功能,您可以在其中对向量浮点数、向量整数和向量布尔值进行操作。它为您提供 4 路除法,例如还有 4-way sin,cos,tan 等。
对于 4 个浮点数的向量浮点数,框架提供 vFloat。 对于 4 个 bool 的向量 bool,框架提供 vBool32。
我想要完成的是这行代码的 4 路 SIMD 版本:
float a = ...;
float b = ...;
bool condition = ...;
float selected = condition ? a : b;
例如,在 Cell 处理器上,您将使用内在的 'spu_sel(val1, val2, conditional)'。
我尝试将 4 路选择写为:
vFloat a = { ... };
vFloat b = { ... };
vBool32 condition = { ... };
vFloat selected = condition ? a : b;
...LLVM 编译器不接受它作为“?”运算符不接受 vBool32。 此外,上述网页上没有名为“vsel”或“vself”或类似名称的运算符。在这个框架中是否有浮点选择可用?如果有,如何访问?
【问题讨论】:
标签: macos llvm sse simd intrinsics