Developer Guide and Reference

Contents

vector

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

Syntax

#pragma vector {always[assert]|aligned|unaligned|dynamic_align[(var)]|nodynamic_align|temporal|nontemporal|[no]vecremainder|[no]mask_readwrite|vectorlength(n1[, n2]...)}
#pragma vector nontemporal
[
(
var1
[,
var2
,
...
])
]
Arguments
always
Instructs the compiler to override any efficiency heuristic during the decision to vectorize or not, and vectorize non-unit strides or very unaligned memory accesses; controls the vectorization of the subsequent loop in the program; optionally takes the keyword assert
aligned
Instructs the compiler to use aligned data movement instructions for all array references when vectorizing
unaligned
Instructs the compiler to use unaligned data movement instructions for all array references when vectorizing
dynamic_align
[(
var
)]
Instructs the compiler to perform dynamic alignment optimization for the loop with an optionally specified variable to perform alignment on
nodynamic_align
Disables dynamic alignment optimization for the loop
multiple_gather_scatter_by_shuffles
Instructs the optimizer to disable the generation of gather/scatter and to transform gather/scatter into unit-strided loads/stores plus a set of shuffles wherever possible
nomultiple_gather_scatter_by_shuffles
Instructs the optimizer to enable the generation of gather/scatter instructions and not to transform gather/scatter into unit-strided loads/stores
nontemporal
Instructs the compiler to use non-temporal (that is, streaming) stores on systems based on all supported architectures, unless otherwise specified; optionally takes a comma-separated list of variables.
When this pragma is specified, it is your responsibility to also insert any fences as required to ensure correct memory ordering within a thread or across threads. One typical way to do this is to insert a
_mm_sfence
intrinsic call just after the loops (such as the initialization loop) where the compiler may insert streaming store instructions.
temporal
Instructs the compiler to use temporal (that is, non-streaming) stores on systems based on all supported architectures, unless otherwise specifie