setting the speed for the future of games programming
vectorc

contentsclose
 

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


top

contentsclose