「整数関数」の版間の差分
提供: Tommy6
細 |
細 |
||
56行: | 56行: | ||
{{!}} [[upsample]] | {{!}} [[upsample]] | ||
{{!}} {{!}} ((<uptype>)''hi''[i] << <org_type_bit_size>) {{!}} ''lo''[i] を求めます。 | {{!}} {{!}} ((<uptype>)''hi''[i] << <org_type_bit_size>) {{!}} ''lo''[i] を求めます。 | ||
+ | |||
+ | {{!}}} | ||
+ | |||
+ | === 高速整数関数 === | ||
+ | これらの関数は、カーネルのパフォーマンスを最適化するのに利用できます。 | ||
+ | |||
+ | {{{!}} class{{=}}"wikitable" | ||
+ | !関数 | ||
+ | !概要 | ||
+ | {{!-}} | ||
+ | {{!}} [[mad24]] | ||
+ | {{!}} | ||
+ | {{!-}} | ||
+ | {{!}} [[mul24]] | ||
+ | {{!}} | ||
{{!}}} | {{!}}} |
2011年5月13日 (金) 23:12時点における版
整数関数はスカラもしくはベクトル引数をとります。
ベクトル版の整数関数では、演算はベクトルの要素ごとに行われます。それぞれの関数の解説は、各要素で行われる操作についてです。
関数の一覧
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 | |
mul24 |
変更記録
―――― Version 1.1, The OpenCL Specification
より翻訳