Miscellaneous Intrinsics

The following table lists and describes intrinsics that you can use across all Intel® architectures, except where noted.

Intrinsic Description
_abnormal_termination(void) Can be invoked only by termination handlers. Returns TRUE if the termination handler is invoked as a result of a premature exit of the corresponding try-finally region.

__cpuid

Queries the processor for information about processor type and supported features. The Intel® C++ Compiler supports the Microsoft* implementation of this intrinsic. See the Microsoft documentation for details.

void *_alloca(int)

Allocates memory in the local stack frame. The memory is automatically freed upon return from the function.

int _bit_scan_forward(int x) Returns the bit index of the least significant set bit of x. If x is 0, the result is undefined.
int _bit_scan_reverse(int) Returns the bit index of the most significant set bit of x. If x is 0, the result is undefined.
int _bswap(int) Reverses the byte order of x. Bits 0-7 are swapped with bits 24-31, and bits 8-15 are swapped with bits 16-23.
_exception_code(void) Returns the exception code.
_exception_info(void) Returns the exception information.
void _enable(void) Enables the interrupt.
void _disable(void) Disables the interrupt.
int _in_byte(int) Intrinsic that maps to the IA-32 instruction IN. Transfer data byte from port specified by argument.
int _in_dword(int) Intrinsic that maps to the IA-32 instruction IN. Transfer double word from port specified by argument.
int _in_word(int) Intrinsic that maps to the IA-32 instruction IN. Transfer word from port specified by argument.
int _inp(int) Same as _in_byte
int _inpd(int) Same as _in_dword
int _inpw(int) Same as _in_word
int _out_byte(int, int) Intrinsic that maps to the IA-32 instruction OUT. Transfer data byte in second argument to port specified by first argument.
int _out_dword(int, int) Intrinsic that maps to the IA-32 instruction OUT. Transfer double word in second argument to port specified by first argument.
int _out_word(int, int) Intrinsic that maps to the IA-32 instruction OUT. Transfer word in second argument to port specified by first argument.
int _outp(int, int) Same as _out_byte
int _outpd(int, int) Same as _out_dword
int _outpw(int, int) Same as _out_word
int _popcnt32(int x) Returns the number of set bits in x.
__int64 _rdtsc(void) Returns the current value of the processor's 64-bit time stamp counter.
This intrinsic is not implemented on ItaniumŪ-based systems. See Time Stamp for an example of using this intrinsic.
__int64 _rdpmc(int p) Returns the current value of the 40-bit performance monitoring counter specified by p.
int _setjmp(jmp_buf) A fast version of setjmp(), which bypasses the termination handling. Saves the callee-save registers, stack pointer and return address. This intrinsic is not implemented on ItaniumŪ-based systems.