Intel® C++ Compiler 16.0 User and Reference Guide
Creates a version of a function that can process multiple arguments using Single Instruction Multiple Data (SIMD) instructions from a single invocation from a SIMD loop.
#pragma omp declare simd [clause][[,]clause] ...] |
function definition or declaration
clause |
Can be any of the following:
|
The declare_simd construct enables the creation of SIMD versions of a specific function. These versions can be used to process multiple arguments from a single invocation from a SIMD loop concurrently.
When the function is called, the function must not have any side-effects that would change its execution for concurrent iterations of a SIMD chunk. When the function is called from a SIMD loop, the function cannot cause the execution of any OpenMP* construct.
Example: Generating a version of the min function that will be executed using SIMD instructions |
---|
#pragma omp declare simd notinbranch float min (float a, float b) { Return a < b ? a : b; } void minner (float *a, float *b, float *c) { #pragma omp parallel for simd for (i=0; i<N; i++) c[i] = min(a[i], b[i], c[i]); } |