OSX のAccelerate フレームワークを使用すると、ベクトル float、ベクトル int、およびベクトル bool を操作できる 4 方向の SIMD 機能にアクセスできます。それはあなたに4方向の除算、例えば4方向のsin、cos、tanなどを提供します.
4 つの float の vector float の場合、フレームワークはvFloatを提供します。4 つの bool のベクトル bool の場合、フレームワークはvBool32を提供します。
私が達成しようとしているのは、このコード行の 4-way 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 コンパイラによって受け入れられません。operator は vBool32 を受け入れません。また、上記の Web ページには、「vsel」または「vself」などと呼ばれる演算子はありません。このフレームワークで使用可能な浮動小数点選択はありますか? もしそうなら、どのようにアクセスするのですか?