Intel® C++ Compiler Classic Developer Guide and Reference

ID 767249
Date 12/16/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Intel-Specific Pragma Reference

Pragmas specific to the Intel® C++ Compiler Classic are listed in the following table.

Some pragmas are available for both Intel® microprocessors and non-Intel microprocessors, but may perform additional optimizations for Intel® microprocessors than for non-Intel microprocessors.

Pragma

Description

alloc_section

Allocates one or more variables in the specified section. Controls section attribute specification for variables.

block_loop/noblock_loop

Enables or disables loop blocking for the immediately following nested loops. block_loop enables loop blocking for the nested loops. noblock_loop disables loop blocking for the nested loops.

code_align

Specifies the byte alignment for a loop

distribute_point

Instructs the compiler to prefer loop distribution at the location indicated.

inline/noinline/forceinline

Specifies inlining of all calls in a statement. This also describes pragmas forceinline and noinline.

intel omp task

For Intel legacy tasking, specifies a unit of work, potentially executed by a different thread.

intel omp taskq

For Intel legacy tasking, specifies an environment for the while loop in which to queue the units of work specified by the enclosed task pragma.

ivdep

Instructs the compiler to ignore assumed vector dependencies.

loop_count

Specifies the iterations for a for loop.

nofusion

Prevents a loop from fusing with adjacent loops.

novector

Specifies that a particular loop should never be vectorized.

omp simd early_exit

Extends #pragma omp simd, allowing vectorization of multiple exit loops.

optimization_level

Controls optimization for one function or all functions after its first occurrence.

optimization_parameter

Passes certain information about a function to the optimizer.

optimize

Enables or disables optimizations for code after this pragma until another optimize pragma or end of the translation unit.

parallel/noparallel

Resolves dependencies to facilitate auto-parallelization of the immediately following loop (parallel) or prevents auto-parallelization of the immediately following loop (noparallel).

prefetch/noprefetch

Invites the compiler to issue or disable requests to prefetch data from memory. This pragma applies only to Intel® Advanced Vector Extensions 512 (Intel® AVX-512).

simd

Enforces vectorization of loops.

simdoff

Specifies a block of code in the SIMD loop or SIMD-enabled function that should be executed serially, in a logical order of SIMD lanes.

unroll/nounroll

Tells the compiler to unroll or not to unroll a counted loop.

unroll_and_jam/nounroll_and_jam

Enables or disables loop unrolling and jamming. These pragmas can only be applied to iterative for loops.

unused

Describes variables that are unused (warnings not generated).

vector

Tells the compiler that the loop should be vectorized according to the argument keywords.