表B.110 表:四則・絶対値・最小最大値関数
関数 | 詳細  |
---|---|
ugentype abs (gentype x)  | | x |を計算します。 |
ugentype abs_diff (gentype x, gentype y) | オーバーフローを発生 させずに| x – y |を 計算します。 |
gentype hadd (gentype x, gentype y) | 和のオーバーフローを 発生させずに(x + y) >> 1 を計算します。 |
gentype rhadd (gentype x, gentype y) | 和のオーバーフローを発生 させずに(x + y + 1) >> 1 を計算します。  |
gentype clamp (gentype x, gentype minval, gentype maxval) gentype clamp (gentype x, sgentype minval, sgentype maxval) | min(max(x, minval), maxval) を計算します。 結果はminval > maxval のときに未定義です。  |
gentype clz (gentype x) | 最上位ビットから連続 する0のビット数を計算 します。  |
gentype max (gentype x, gentype y) gentype max (gentype x, sgentype y) | x < yのときは、y それ以外のときは、 xを計算します。 |
gentype min (gentype x, gentype y) gentype min (gentype x, sgentype y)  | y < xのときは、y れ以外のときは、xを計算します。 |
gentype rotate (gentype v, gentype i) | vの各要素に対して、iビット の左シフトを行ないます。 左シフトで押し出されたビッ トは右側に挿入されます。 |
short upsample (char hi, uchar lo) ushort upsample (uchar hi, uchar lo) shortn upsample (charn hi, ucharn lo) ushortn upsample (ucharn hi, ucharn lo) int upsample (short hi, ushort lo) uint upsample (ushort hi, ushort lo) intn upsample (shortn hi, ushortn lo) uintn upsample (ushortn hi, ushortn lo) long upsample (int hi, uint lo) ulong upsample (uint hi, uint lo) longn upsample (intn hi, uintn lo) ulongn upsample (uintn hi, uintn lo) | 以下の計算をします。 result[i] = ((short)hi[i] << 8) | lo[i] result[i] = ((ushort)hi[i] << 8) | lo[i] result[i] = ((int)hi[i] << 16) | lo[i] result[i] = ((uint)hi[i] << 16) | lo[i] result[i] = ((long)hi[i] << 32) | lo[i] result[i] = ((ulong)hi[i] << 32) | lo[i]  |
gentype popcount (gentype x)  | 引数xの0でないビットの数を計算します。 |
表B.111 表:乗算関数
関数 | 詳細 |
---|---|
gentype mul_hi ( gentype x, gentype y) | x * yを計算し、算出し た値の上半分を返します。 |
gentype mad_hi ( gentype a, gentype b, gentype c) | mul_hi(a, b) + c を計算します。 |
gentype mad24 ( gentype x, gentype y, gentype z) | 2つの24ビット整数値x とyの積を計算し、32ビッ ト整数値zを足します。 |
gentype mul24 ( gentype x, gentype y) | 2つの24ビット整数値xと yの積を計算します。xとy は両方とも32ビット整数値 ですが計算では下位24ビッ トのみを使います。xとyの 両方が符号つきのときは、 [-223, 223-1]、符号無し のときは [0, 224-1] の 範囲内にあるとき使うこと が推奨されています。xとy がこれらの範囲内にないと き、計算結果は実装システ ムに依存します。 |
表B.112 表:(飽和)加算・減算関数
関数 | 詳細 |
---|---|
gentype sub_sat (gentype x, gentype y)  | x - yを計算します。 結果については飽和を 適用します |
gentype add_sat (gentype x, gentype y)  | x + yを計算します。 結果については飽和を 適用します。 |
gentype mad_sat ( gentype a, gentype b, gentype c) | a * b + cを計算します。 結果については飽和を 適用します。 |
#define CHAR_BIT 8 #define CHAR_MAX SCHAR_MAX #define CHAR_MIN SCHAR_MIN #define INT_MAX 2147483647 #define INT_MIN (-2147483647 – 1) #define LONG_MAX 0x7fffffffffffffffL #define LONG_MIN (-0x7fffffffffffffffL – 1) #define SCHAR_MAX 127 #define SCHAR_MIN (-127 – 1) #define SHRT_MAX 32767 #define SHRT_MIN (-32767 – 1) #define UCHAR_MAX 255 #define USHRT_MAX 65535 #define UINT_MAX 0xffffffff #define ULONG_MAX 0xffffffffffffffffUL
表B.113 表:ホストAPIとデータ型の対応
OpenCL Cマクロ | OpenCL APIマクロ |
---|---|
CHAR_BIT | CL_CHAR_BIT |
CHAR_MAX | CL_CHAR_MAX  |
CHAR_MIN | CL_CHAR_MIN |
INT_MAX | CL_INT_MAX |
INT_MIN | CL_INT_MIN |
LONG_MAX | CL_LONG_MAX |
LONG_MIN | CL_LONG_MIN |
SCHAR_MAX  | CL_SCHAR_MAX |
SCHAR_MIN | CL_SCHAR_MIN |
SHRT_MAX | CL_SHRT_MAX |
SHRT_MIN | CL_SHRT_MIN |
UCHAR_MAX | CL_UCHAR_MAX |
Copyright 2018-2019, by Masaki Komatsu