Vectorization Options

Option

Description

-ax{i|M|K|W} Enables the vectorizer and generates specialized and generic IA-32 code. The generic code is usually slower than the specialized code. -vec- disables vectorization, but processor-specific code continues to be generated.
-vec_reportn Controls the vectorizer's level of diagnostic messages:
n
=0 no diagnostic information is displayed.
n
=1 display diagnostics indicating loops successfully vectorized (default).
n
=2 same as n =1, plus diagnostics indicating loops not successfully vectorized.
n
=3 same as n =2, plus additional information about any proven or assumed dependences.
-x{i|M|K|W} Turns on the vectorizer and generates processor-specific specialized code. -vec- disables vectorization, but processor-specific code continues to be generated.

Command-line Switch Support

Option Description
-ax{i|M|K|W} Generates, on a single binary, code specialized to the extensions specified by {i|M|K|W} but also generates generic IA-32 code. The generic code is usually slower. See Specialized Code with -ax for details. The -ax{M|K|W} options turn on the vectorizer (note that -axi does not).
-vec_reportn Controls the vectorizer's level of diagnostic messages:
n
 = 0 no diagnostic information is displayed.
n
 = 1display diagnostics indicating loops successfully vectorized (default).
n
 = 2 same as n  = 1, plus diagnostics indicating loops not successfully vectorized.
n
 = 3 same as n  = 2, plus additional information about any proven or assumed dependences.
-x{i|M|K|W}   Generates specialized code to run exclusively on processors with the extensions specified by {i|M|K|W}. See Optimizing for Processors and Extensions Sets (IA-32 Only) for details. The -Qx{M|K|W} options turn on vectorizer with -O2 which is on by default.

Language Support and Pragmas

Option Description
__declspec(align(n))

Directs the compiler to align the variable var-name to an n -byte boundary. Address of the variable is address mod n = 0.

__declspec(align(n,off))

Directs the compiler to align the variable var-name to an n -byte boundary with offset off within each n -byte boundary. Address of the variable is address mod n  = off.

-restrict Permits the disambiguator flexibility in alias assumptions, which enables more vectorization.
__assume_aligned(a,n)

Instructs the compiler to assume that array a  is aligned on an n -byte boundary; used in cases where the compiler has failed to obtain alignment information.

#pragma ivdep Instructs the compiler to ignore assumed vector dependencies.
#pragma vector {aligned | unaligned} Specifies how to vectorize the loop and indicates that efficiency heuristics should be ignored.
#pragma novector Specifies that the loop should never be vectorized