MICROSOFT VISUAL STUDIO INTEGRATION
To use VectorC from within Microsoft Visual Studio, the easiest way is to use
the VectorCL.exe program. When set up, VectorCL will be called instead of
Microsoft's CL.exe and will itself pass the compilation job onto VectorC or CL.
VectorC cannot provide browse information (the format is not documented) and cannot put debug information into a .pdb file. It places debug information in the object file, which should not normally be noticable to you.
To set up, from the command prompt, use:
vectorcl /setup
To remove, from the command prompt, use:
vectorcl /remove
You can now use VectorC to re-compile your entire project or to compile individual
source files within your project. To force your entire project to be compiled
with VectorC, add one or more of the following '/vec' options to the command-line
options or preprocessor macros in the project settings dialog box (within the
C/C++ tab). To force one or more source files to be compiled with VectorC and
the rest with Visual C/C++, select the files you wish to be compiled with VectorC
and add one or more '/vec' options to the pre-processor definitions field in the
project settings dialog box.
- To avoid problems with Microsoft Visual Studio, you should add one underscore
("_") before the /vec options, so it looks like this: "
_/vec:pii ".
This is a change from version 1.0 to fix a problem some users have been having.
VectorCL will use Visual C/C++ if no '/vec' option appears on its command line
(including in preprocessor definitions) and VectorC otherwise.
To use VectorC on the command line or in a make file, you can just type 'vectorc
/vc' and then the rest of the command line options can be as CL.exe's command
line options.
The full set of VectorC's /vec options is as follows:-
Target Processor Selection
/vec:k6 |
Compile for AMD K6 (uses MMX) |
/vec:k6-2 |
Compile for AMD K6-2 (uses MMX and 3DNow!) |
/vec:athlon |
Compile for AMD Athlon (uses MMX and Advanced 3DNow!) - not available in Special Edition |
/vec:p |
Compile for Intel Pentium |
/vec:pmmx |
Compile for Intel Pentium with MMX |
/vec:ppro |
Compile for Intel Pentium Pro (uses conditional move and fast FPU compare) |
/vec:pii |
Compile for Intel Pentium II (uses MMX and extra Pentium Pro instructions)
|
/vec:piii
|
Compile for Intel Pentium III (uses Streaming SIMD Extensions, MMX and extra
Pentium II instructions)
|
/vec:p4 |
Compile for Intel Pentium 4 (Willamette) - New Intel processor with SSE 2
- preliminary support - not available in Special Edition |
Optimization Options
/vec
/vec:yes
/vec:no |
Use VectorC
Enable vectorizations
Disable vectorizations |
/vec:noaliasarguments |
Assume no arguments point to the same memory. See aliasing |
/vec:noaliasatomic |
Assume pointers that use arithmetic do not point to values with atomic types.
See aliasing |
/vec:nomemorder |
Allow re-ordering of all memory accesses. This is likely to produce incorrect
code, but can help with single functions to increase vectorization. |
/vec:noalias |
Assume all pointers have "restrict" applied to them. This will often
not produce correct code, but can help with single functions to increase vectorization. |
/vec:single |
Use single-precision arithmetic for floats and intrinsics if the arguments
are single-precision and the results are used in a single-precision expression.
This can be useful when compiling for 3DNow or SSE because they use single-precision
values whereas C defines constants and sqrt to be double-precision. |
/vec:o0 .. /vec:o10 |
Set level of optimization from 0 (produces very slow code) to 10 (produces
the fastest code, but takes a long time to comile). Optimization settings in between
will be bumped up for individual functions that are small and have small loops. |
/vec:fastftoi |
Don't call runtime function to truncate floats when converting to ints. If
you want truncation, set the FPU mode to round towards zero. |
/vec:setfpuprec |
If a function does a lot of single-precision arithmetic, then the FPU will
be put into single-precision mode at the start of the function and at the end
of the function restored to whatever state it was in at the start. This can speed
up single-precision divides and intrinsic functions (like sqrt, sin and cos) when
not using 3DNow! or Streaming SIMD Extensions. It may be better to switch the
FPU to single-precision at the start of your code. |
/vec:uncachedsize n |
Automatically prefetch memory accesses from variables larger than n in size. |
/vec:cpcalls |
Use CodePlay register calling conventions by default |
/vec:mmxcalls |
Use CodePlay MMX register calling conventions by default |
/vec:3dnowcalls |
Use CodePlay 3DNow register calling conventions by default |
/vec:ssecalls |
Use CodePlay SSE register calling conventions by default |
/vec:ignorealign |
Force the optimizer to vectorize even if it can't determine that alignment
of pointers is correct. This may cause vectorization to occur in unsuitable situations
and slow down your code. However, it may also vectorize more code and so speed
up your program. |
Control Options
/gnu |
GNU compatibility - adds some GNU source code extensions |
/vec:stats |
Prints out statistics from the code generator about vectorization and MMX,
3D Now! and SSE usage |
/vec:advice |
Give optimization advice. The Interactive Optimizer uses this option. |
/vec:interopt |
Execute the Interactive Optimizer before compiling. All compilation options
will be passed to the Interactive Optimizer |
|