Miscellaneous Intrinsics

The following tables list and describe intrinsics that you can use across all Intel architectures, except where noted. These intrinsics are available for both Intel® and non-Intel microprocessors but they may perform additional optimizations for Intel® microprocessors than they perform for non-Intel microprocessors.

Intrinsic

Description

Intrinsics for all Supported Intel® Architectures

__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. Swaps 4 bytes; bits 0-7 are swapped with bits 24-31, bits 8-15 are swapped with bits 16-23.

__int64 _bswap64(__int64 x)

Reverses the byte order of x. Swaps 8 bytes; bits 0-7 are swapped with bits 56-63, bits 8-15 are swapped with bits 48-55, bits 16-23 are swapped with bits 40-47, and bits 24-31 are swapped with bits 32-39.

unsigned int __cacheSize(unsigned int cacheLevel)

__cacheSize(n) returns the size in kilobytes of the cache at level n. 1 represents the first-level cache. 0 is returned for a non-existent cache level. For example, an application may query the cache size and use it to select block sizes in algorithms that operate on matrices.

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 _outpw(int, int)

Same as _out_word

int _outpd(int, int)

Same as _out_dword

int _popcnt32(int x)

Returns the number of set bits in x.

int _popcnt64(__int64 x)

Returns the number of set bits in x.

__int64 _rdpmc(int p)

Returns the current value of the 40-bit performance monitoring counter specified by p.

Intrinsics for IA-32 and Intel® 64 Architectures

__int64 _rdtsc(void)

Returns the current value of the processor's 64-bit time stamp counter.

int _setjmp(jmp_buf)

A fast version of setjmp(), which bypasses the termination handling. Saves the callee-save registers, stack pointer and return address.

int __pin_value(char *annotation) Bypasses code that executes only in PIN mode. Especially useful with Intel® Treading Building Blocks, which adds specified annotations to the object file so that code is executed in PIN mode.

Submit feedback on this help topic

Copyright © 1996-2011, Intel Corporation. All rights reserved.