This simple skinning loop was implemented and compiled using, GCC 2.95.3, CodeWarrior and VectorC{EE}.
for (i=0; i
pos1 = SkinBones [SkinVerts [i].bone1].viewtransform * pos;
pos2 = SkinBones [SkinVerts [i].bone2].viewtransform * pos;
pos = SkinVerts [i].bone1factor * pos1
+ SkinVerts [i].bone2factor * pos2;
SkinVerts [i].transformed = pos;
}
|
VectorC{EE}
|
CodeWarrior with intrinsics
|
CodeWarrior with inline assembly |
GCC 2.95.3 with inline assembly
|
|
| Cycle counts |
438,274
|
1,055,416
|
910,220
|
816,058
|
| % improvement using VectorC{EE} |
140%
|
107%
|
86%
|
VectorC{EE} 2.1 is compatible with CodeWarrior and GCC 2.9x. You can use VectorC{EE} in CodeWarrior, Visual Studio and makeiles.
With the development of ever more ambitious games with increasingly complex gameplay, the demands upon the PlayStation®2’s Emotion Engine are becoming yet greater over time. Similarly the challenges for PS2 game programmers in achieving adequate performance are also increasing.
In addition to the cutting edge autovectorization features, VectorC{EE} is a potent MIPS compiler. Dedicated to the specific architecture of the EE Core, VectorC{EE} utilises enhanced instruction scheduling and extensive memory optimization such as intelligent prefetching and uncached stores.
The goal of VectorC {EE} is not only to provide superior performance over GCC for standard C/C++ code but also to allow more rapid development of adequately optimized game code for inclusion in tomorrow’s cutting-edge PlayStation®2 games.
VectorC {EE} can autovectorize standard C/C++ source programs and generate highly optimized code including Multi Media Instructions (MMI), one of the EE Core’s unique features. VectorC {EE} is also capable of autovectorizing for the co-processor vector unit (VU0) by outputting embedded macro-mode instructions. Using this facility, complex programs can gain the computational power of VU0 without the need to write separate micro-mode programs.
While VectorC {EE} compiles standard C/C++, a few extra language features have been added to help the optimizer know when to apply its most powerful transformations. These transparent features are identical across all VectorC compilers and do not change the meaning of the code. Effectively these additions provide the developer with the ability to obtain performance close to the maximum capabilities of the hardware without resorting to assembly language.
Another unique aspect of VectorC {EE} is the included Interactive Optimizer application. Codeplay ‘Smart Compiler’ technology provides advice back to the developer on how performance gains may be made from the source code, either by changing the source code or embedding the provided extra language features. The goal of the Interactive Optimizer is to provide an easy mechanism to view this advice and to modify the compiler settings and source code in order to maximize the performance of the output code.
PlayStation is a registered trademark of Sony Computer Entertainment Inc.