Terms, Conventions, and Syntax
The following are special terms and syntax used in this chapter to describe
functionality of the classes with respect to their associated operations.
Ivec Class Syntax Conventions
The name of each class denotes the data type, signedness, bit size,
number of elements using the following generic format:
<type><signedness><bits>vec<elements>
{ F | I } { s | u } { 64 | 32 | 16 | 8 } vec { 8 |
4 | 2 | 1 }
where
| type |
indicates floating point ( F ) or integer (
I ) |
| signedness |
indicates signed ( s ) or unsigned ( u ). For the Ivec class, leaving this field blank indicates
an intermediate class. There are no unsigned Fvec classes, therefore for
the Fvec classes, this field is blank. |
| bits |
specifies the number of bits per element |
| elements |
specifies the number of elements |
Special Terms and Conventions
The following terms are used to define the functionality and characteristics
of the classes and operations defined in this manual.
- Nearest Common Ancestor
-- This is the intermediate or parent class of two classes of the same
size. For example, the nearest common ancestor of Iu8vec8
and Is8vec8 is I8vec8.
Also, the nearest common ancestor between Iu8vec8
and I16vec4 is M64.
- Casting --
Changes the data type from one class to another. When an operation uses
different data types as operands, the return value of the operation must
be assigned to a single data type. Therefore, one or more of the data
types must be converted to a required data type. This conversion is known
as a typecast. Sometimes, typecasting is automatic, other times you must
use special syntax to explicitly typecast it yourself.
- Operator Overloading
-- This is the ability to use various operators on the same user-defined
data type of a given class. Once you declare a variable, you can add,
subtract, multiply, and perform a range of operations. Each family of
classes accepts a specified range of operators, and must comply by rules
and restrictions regarding typecasting and operator overloading as defined
in the header files. The following table shows the notation used in this
documention to address typecasting, operator overloading, and other rules.
Class Syntax Notation Conventions
| Class Name |
Description |
| I[s|u][N]vec[N] |
Any value except I128vec1 nor I64vec1 |
| I64vec1 |
__m64 data type |
| I[s|u]64vec2 |
two 64-bit values of any signedness |
| I[s|u]32vec4 |
four 32-bit values of any signedness |
| I[s|u]8vec16 |
eight 16-bit values of any signedness |
| I[s|u]16vec8 |
sixteen 8-bit values of any signedness |
| I[s|u]32vec2 |
two 32-bit values of any signedness |
| I[s|u]16vec4 |
four 16-bit values of any signedness |
| I[s|u]8vec8 |
eight 8-bit values of any signedness |