整数関数
提供: 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ビット整数値 x と y の積をとり、そこに32ビット整数値 z を足して32ビット整数値を得ます。 |
mul24 | 24ビット整数値 x と y の積を求めます。 |
変更記録
―――― Version 1.1, The OpenCL Specification
より翻訳