Developer Guide and Reference

Contents

vecabi, Qvecabi

Determines which vector function application binary interface (ABI) the compiler uses to create or call vector functions.

Syntax

Linux:
-vecabi=
keyword
macOS:
-vecabi=
keyword
Windows:
/Qvecabi:
keyword
Arguments
keyword
Specifies which vector function ABI to use. Possible values are:
compat
Tells the compiler to use the compatibility vector function ABI. This ABI includes Intel®-specific features.
cmdtarget
Tells the compiler to generate an extended set of vector functions. The option is very similar to setting
compat
. However, for
compat
, only one vector function is created, while for
cmdtarget
, several vector functions are created for each vector specification.
Vector variants are created for targets specified by compiler options
[Q]x
and/or
[Q]ax
.
No change is made to the source code.
gcc
Tells the compiler to use the gcc vector function ABI. Use this setting only in cases when you want to link with modules compiled by gcc. This setting is not available on Windows* systems.
legacy
Tells the compiler to use the legacy vector function ABI. Use this setting if you need to keep the generated vector function binary backward compatible with the vectorized binary generated by older versions of the Intel® compilers (V13.1 or older).
Default
compat
The compiler uses the compatibility vector function ABI.
Description
This option determines which vector function application binary interface (ABI) the compiler uses to create or call vector functions.
To avoid possible link-time and run-time errors, use identical
[Q]vecabi
settings when compiling all files in an application that define or use vector functions, including libraries.
If setting
cmdtarget
is specified, options
[Q]x
and/or
[Q]ax
must have identical values.
Be careful using setting
cmdtarget
with libraries or program modules/routines with vector function definitions that cannot be recompiled. In such cases, setting
cmdtarget
may cause link errors.
On Linux* systems, since the default is
compat
, you must specify
legacy
if you need to keep the generated vector function binary backward compatible with the vectorized binary generated by the previous version of Intel® compilers.
When
cmdtarget
is specified, the additional vector function versions are created by copying each vector specification and changing target processor in the copy.
The number of vector functions is determined by the settings specified in options
[Q]x
and/or
[Q]ax
.
For example, suppose we have the following function declaration:
__declspec (vector(processor(core_2_duo_sse4_1))) int foo(int a);
and the following options are specified:
-axAVX,CORE-AVX2
The following table shows the different results for the above declaration and option specifications when setting
compat
or setting
cmdtarget
is used:
compat
cmdtarget
One vector version is created for Intel® SSE4.1 (by vector function specification).
Four vector versions are created for the following targets:
  • Intel® SSE2 (default because no
    -x
    option is used)
  • Intel® SSE4.1 (by vector function specification)
  • Intel® AVX (by the first
    -ax
    option value)
  • Intel® AVX2 (by the second
    -ax
    option value)
For more information about the Intel®-compatible vector functions ABI, see the article titled: Vector (SIMD) Function ABI, which is located in https://software.intel.com/en-us/articles/vector-simd-function-abi/
For more information about the GCC vector functions ABI, see the item Libmvec - vector math library document in the GLIBC wiki at sourceware.org.
Optimization Notice
Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.
Notice revision #20110804
Alternate Options
None

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804