# Debug Operations

The debug operations do not map to any compiler intrinsics for MMX™ instructions. They are provided for debugging programs only. Use of these operations may result in loss of performance, so you should not use them outside of debugging.

## Output

The four 32-bit values of `A` are placed in the output buffer and printed in the following format (default in decimal):

`cout << Is32vec4 A;`

`cout << Iu32vec4 A;`

`cout << hex << Iu32vec4 A; /* print in hex format */`

`"[3]:A3 [2]:A2 [1]:A1 [0]:A0"`

Corresponding Intrinsics: none

The two 32-bit values of `A` are placed in the output buffer and printed in the following format (default in decimal):

`cout << Is32vec2 A;`

`cout << Iu32vec2 A;`

`cout << hex << Iu32vec2 A; /* print in hex format */`

`"[1]:A1 [0]:A0"`

Corresponding Intrinsics: none

The eight 16-bit values of `A` are placed in the output buffer and printed in the following format (default in decimal):

`cout << Is16vec8 A;`

`cout << Iu16vec8 A;`

`cout << hex << Iu16vec8 A; /* print in hex format */`

`"[7]:A7 [6]:A6 [5]:A5 [4]:A4 [3]:A3 [2]:A2 [1]:A1 [0]:A0"`

Corresponding Intrinsics: none

The four 16-bit values of `A` are placed in the output buffer and printed in the following format (default in decimal):

`cout << Is16vec4 A;`

`cout << Iu16vec4 A;`

`cout << hex << Iu16vec4 A; /* print in hex format */`

`"[3]:A3 [2]:A2 [1]:A1 [0]:A0"`

Corresponding Intrinsics: none

The sixteen 8-bit values of `A` are placed in the output buffer and printed in the following format (default is decimal):

`cout << Is8vec16 A; cout << Iu8vec16 A; cout << hex << Iu8vec8 A;`

`/* print in hex format instead of decimal*/`

`"[15]:A15 [14]:A14 [13]:A13 [12]:A12 [11]:A11 [10]:A10 [9]:A9 [8]:A8 [7]:A7 [6]:A6 [5]:A5 [4]:A4 [3]:A3 [2]:A2 [1]:A1 [0]:A0"`

Corresponding Intrinsics: none

The eight 8-bit values of `A` are placed in the output buffer and printed in the following format (default is decimal):

`cout << Is8vec8 A; cout << Iu8vec8 A;cout << hex << Iu8vec8 A;`

`/* print in hex format instead of decimal*/`

`"[7]:A7 [6]:A6 [5]:A5 [4]:A4 [3]:A3 [2]:A2 [1]:A1 [0]:A0"`

Corresponding Intrinsics: none

## Element Access Operators

`int R = Is64vec2 A[i];`

`unsigned int R = Iu64vec2 A[i];`

`int R = Is32vec4 A[i];`

`unsigned int R = Iu32vec4 A[i];`

`int R = Is32vec2 A[i];`

`unsigned int R = Iu32vec2 A[i];`

`short R = Is16vec8 A[i];`

`unsigned short R = Iu16vec8 A[i];`

`short R = Is16vec4 A[i];`

`unsigned short R = Iu16vec4 A[i];`

`signed char R = Is8vec16 A[i];`

`unsigned char R = Iu8vec16 A[i];`

`signed char R = Is8vec8 A[i];`

`unsigned char R = Iu8vec8 A[i];`

Access and read element `i` of `A`. If DEBUG is enabled and the user tries to access an element outside of `A`, a diagnostic message is printed and the program aborts.

Corresponding Intrinsics: none

## Element Assignment Operators

`Is64vec2 A[i] = int R;`

`Is32vec4 A[i] = int R;`

`Iu32vec4 A[i] = unsigned int R;`

`Is32vec2 A[i] = int R;`

`Iu32vec2 A[i] = unsigned int R;`

`Is16vec8 A[i] = short R;`

`Iu16vec8 A[i] = unsigned short R;`

`Is16vec4 A[i] = short R;`

`Iu16vec4 A[i] = unsigned short R;`

`Is8vec16 A[i] = signed char R;`

`Iu8vec16 A[i] = unsigned char R;`

`Is8vec8 A[i] = signed char R;`

`Iu8vec8 A[i] = unsigned char R;`

Assign `R` to element i of `A`. If `DEBUG` is enabled and the user tries to assign a value to an element outside of `A`, a diagnostic message is printed and the program aborts.

Corresponding Intrinsics: none

Parent topic: Integer Vector Classes