NAME¶
Integer_Built-In_Functions - Click an item in the table below for details about
that function.
abs(3clc) |
|x| |
abs(3clc) |
|x-y| without modulo overflow |
add_sat(3clc) |
x+y and saturate result |
hadd(3clc) |
(x+y) >> 1 without modulo overflow |
hadd(3clc) |
(x+y+1) >> 1. The intermediate sum does not modulo
overflow. |
clz(3clc) |
Number of leading 0-bits in x |
integerClamp(3clc) |
min(max( x, minval), maxval) |
mad_hi(3clc) |
mul_hi(a,b)+c |
mad24(3clc) |
(Fast integer function.) Multiply 24-bit integer then add the 32-bit
result to 32-bit integer |
mad_sat(3clc) |
a*b+c and saturate the result |
integerMax(3clc) |
The greater of x or y |
integerMax(3clc) |
The lessor of x or y |
mul_hi(3clc) |
High half of the product of x and y |
mul24(3clc) |
(Fast integer function.) Multiply 24-bit integer values a and
b |
rotate(3clc) |
result[indx]=v[indx]<<i[indx] |
sub_sat(3clc) |
x - y and saturate the result |
upsample(3clc) |
result[i] = ((gentype)hi[i] << 8|16|32) |
lo[i] |
popcount(3clc) |
Returns the number of non-zero bits in x. |
DESCRIPTION¶
Built-in integer functions take scalar or vector arguments. The vector versions
of the integer functions operate component-wise. The description is per
component.
We use the generic type name
gentype to indicate that the function can
take
char,
char{2|3|4|8|16},
uchar,
uchar{2|3|4|8|16},
short,
short{2|3|4|8|16},
ushort,
ushort{2|3|4|8|16},
int,
int{2|3|4|8|16},
uint,
uint{2|3|4|8|16},
long,
long{2|3|4|8|16},
ulong, or
ulong{2|3|4|8|16} as the type for the arguments. We
use the generic type name
ugentype to refer to unsigned versions of
gentype. For example, if
gentype is
char4,
ugentype is
uchar4.
We also use the generic type name
sgentype to indicate that the function
can take a scalar data type i.e.
char,
uchar,
short,
ushort,
int,
uint,
long, or
ulong as the
type for the arguments. For built-in integer functions that take
gentype and
sgentype arguments, the
gentype argument must
be a vector or scalar version of the
sgentype argument. For example, if
sgentype is
uchar,
gentype must be
uchar or
uchar{2|3|4|8|16}. For vector versions,
sgentype is implicitly
widened to
gentype as described in section 6.3.a of the OpenCL
specification.
For any specific use of a function, the actual type has to be the same for all
arguments and the return type unless otherwise specified.
SPECIFICATION¶
OpenCL Specification[1]
AUTHORS¶
The Khronos Group
COPYRIGHT¶
Copyright © 2007-2011 The Khronos Group Inc.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction,
including without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to permit
persons to whom the Materials are furnished to do so, subject to the condition
that this copyright notice and permission notice shall be included in all
copies or substantial portions of the Materials.
NOTES¶
- 1.
- OpenCL Specification
page 256, section 6.12.3 - Integer Functions