The data type names described in the table below are reserved and cannot be used
by applications as userdefined type names. The vector data type names defined in
Vector Data Types,
but where n
is any value other than 2, 3, 4, 8 and 16, are also reserved.
Type  Description 

booln

A boolean vector. 
halfn

A 16bit float vector. 
quad, quadn

A 128bit floatingpoint number and vectors. 
complex half, 
A complex 16bit floatingpoint number, and complex and imaginary 16bit floatingpoint vectors. 
complex float, 
A complex single precision floatingpoint number, and complex and imaginary single precision floatingpoint vectors. 
complex double, 
A complex double precision floatingpoint number, and complex and imaginary double precision floatingpoint vectors. 
complex quad, 
A complex 128bit floatingpoint number, and complex and imaginary 128bit floatingpoint vectors. 
floatn xm

An n x m matrix of single precision floatingpoint values stored in columnmajor order. 
doublen xm

An n x m matrix of double precision floatingpoint values stored in columnmajor order. 
long double, 
A floatingpoint scalar and vector type with at long doublen least as much precision and range as a double and no more precision and range than a quad. 
long long,
long longn

A 128bit signed integer scalar and vector. 
unsigned long long,
ulong long,
ulong longn

A 128bit unsigned integer scalar and vector. 
The C99 derived types (arrays, structs, union, function, and pointers), constructed from the builtin data types described in Scalar Data Types, Vector Data Types, and Other Data Types are also supported.
The type qualifiers const
,
restrict
, and volatile
as
defined by the C99 specification are
supported. These qualifiers cannot be
used with image2d_t
and image3d_t
type. Types other than pointer types
shall not use the restrict
qualifier.
Macros and Limits, Scalar Data Types, Vector Data Types, Other Data Types, Abstract Data Types