Skip to content

Custom data types, including 24-bit integers and fixed-point.

License

Notifications You must be signed in to change notification settings

Zenefess/DataTypes

Repository files navigation

File: typedefs.h

Provides convenient short-hand names for all standard data types. Naming scheme is as follows; pointers are read right-to-left to avoid naming clashes:

{state}[sign][integer/float][bits]{pointers with state modifiers}

Examples:

"ui32" is 32-bit unsigned integer.

"vsi128ptrc" is constant pointer to a 128-bit volatile signed integer.

"vptrcptr" is pointer to constant pointer to volatile.

.

File: 24-bit integers.h

Provides 24-bit integers, both signed and unsigned variants. Uses same naming scheme as "typedefs.h": eg. "ui24" for 24-bit unsigned integer. All arithmetic, logic, and conversion operations with all standard data types of up to 64 bits are supported.

.

File: vector structures.h

Provides vector data types for all standard, SSE, and AVX data types, including 24-bit integers. Vector element counts range from 2 to 64. Naming scheme is similar to that of "typedefs.h":

{state}VEC[element count]D[sign][element type]

Examples:

"VEC3Ds24" is a vector of three 24-bit signed integers.

"SSE4Df32" is a vector of four 32-bit floats, for use with 128-bit SIMD operations.

"cAVX16Du16" is a constant vector of sixteen 16-bit unsigned integers, for use with 256-bit SIMD operations.

"vAVX8Df64" is a volatile vector of eight 64-bit floats, for use with 512-bit SIMD operations.

.

File: Fixed-point data types.h

Provides a broad range of fixed-point data types. There are 8, 16, 24, and 32-bit variants available, including types with a user-definable range, as well as vectors of 2 & 4 elements. Naming scheme is as follows:

{state}f{integer bits}p[fraction bits]{normalised}{[lowest value]_[highest value]}

Examples:

"fp8n" is 8 bits with a normalised range that is user-definable.

"cfs1p14x2" is two constant 16 bits, each with a signed range of -2.0~1.99993896484375.

"fp16n0_128" is 32 bits with a normalised range of 0.0~128.0.

"fp32n_1_1" is 32 bits with a normalised range of -1.0~1.0.