整数関数

提供: Tommy6
移動: 案内検索

整数関数はスカラもしくはベクトル引数をとります。

ベクトル版の整数関数では、演算はベクトルの要素ごとに行われます。それぞれの関数の解説は、各要素で行われる操作についてです。

関数の一覧

1.1 : OpenCL 1.1で追加・変更

関数 概要
abs 絶対値を求めます。
abs_diff オーバーフローが発生しないようにしながら |x| - |y| を求めます。
add_sat x + y を求めます。結果には飽和を適用します。
hadd 中間の和でオーバーフローが発生しないようにしながら (x + y) >> 1 を求めます。
rhadd 中間の和でオーバーフローが発生しないようにしながら (x + y + 1) >> 1 を求めます。
clamp min(max(x, minval), maxval) を返します。
clz 最上位ビットから連続する 0 のビットの数を数えます。
mad_hi mul_hi(a, b) + c を求めます。
mad_sat a * b + c を求めます。結果には飽和を適用します。
max x < y のときは y を、そうでないときは x を返します。
min y < x のときは y を、そうでないときは x を返します。
mul_hi x * y を求め、得た値の上位半分を返します。
rotate 指定された値のビット数の左シフトを行います。
sub_sat x - y を求めます。結果には飽和を適用します。
upsample ((<uptype>)hi[i] << <org_type_bit_size>) | lo[i] を求めます。

高速整数関数

以下の関数は、カーネルのパフォーマンスを最適化するのに利用できます。

関数 概要
mad24 24ビット整数値 xy の積をとり、そこに32ビット整数値 z を足して32ビット整数値を得ます。
mul24 24ビット整数値 xy の積を求めます。

変更記録


―――― Version 1.1, The OpenCL Specification より翻訳