Intel® oneAPI DPC++/C++ Compiler Developer Guide and Reference

ID 767253
Date 3/22/2024
Public
Document Table of Contents

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 Examples

  • 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

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

Examples:

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];

Element Assignment Operators

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

Examples:

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;