Fujitsu Siemens Computers SPEC CPU2000 Flag Description Intel Compilers 9.0 Note ---- "/" and "-" are both allowable starting tokens for flags passed to the compiler i.e. -fast and /fast are identical switches. Flags common to both C/C++ Compiler and Fortran Compiler -------------------------------------------------------- -O1 optimize for speed, but disable some optimizations which increase code size for a small speed benefit. Includes inline expansion except for intrinsic functions, global optimizations, string pooling optimizations. -O2 This is the default level of optimization. Optimizes for speed. The -O2 option includes O1 optimizations and in addition enables inlining of intrinsics and more speed optimizations. -O3 Builds on -O1 and -O2 optimizations by enabling high-level optimization. This level does not guarantee higher performance unless loop and memory access transformation take place. This switch causes the compiler to perform more aggressive data dependency analysis than for -O2. This may result in longer compilation times. -Qx generate specialized code to run exclusively on processors supporting the extensions indicated by . From all possible values for , only P and B are used. P Intel Pentium 4 processors with SSE3 extensions B Intel Pentium M and compatible Intel processors --------------------------------------------------------------------------- Additional Notes on /QxN and /QxP: --------------------------------------------------------------------------- -Qx{N|P} The /QxN and /QxP options target your program to run on Intel Pentium 4 and compatible Intel processors. The resulting code might contain unconditional use of features that are not supported on other processors. Programs, where the function main() is compiled with this option, will detect non compatible processors and generate an error message during execution. This option also enables new optimizations in addition to Intel processor specific optimizations. These options also enable advanced data layout and code restructuring optimizations to improve memory accesses for Intel processors. --------------------------------------------------------------------------- -Qip single-file inter-procedural optimizations (applied within files), including - inline function expansion - interprocedural constant propogation - dead code elimination - propagation of function characteristics - passing arguments in registers - loop-invariant code motion - monitoring module-level static variables -Qipo multi-file inter-procedural optimizations (across files) -Qprec-div[-] [do not] improve precision of floating-point divides (some speed impact) -fast The -fast option enhances execution speed across the entire program. It is equivalent to the combination of the following flags: -QxP (generate code specialized for Intel Pentium 4 processor with Streaming SIMD Extensions 3) -O3 (maximum speed and high-level optimizations) -Qipo (enables interprocedural optimizations across files) -Qprec-div- (do not improve precision of FP divides) The options set by -fast may change from release to release. -Qprof_gen instrument program for profiling for the first phase of two-phase profile guided otimization -Qprof_use Instructs the compiler to produce a profile-optimized executable and merges available dynamic information (.dyn) files into a pgopti.dpi file. If you perform multiple executions of the instrumented program, -Qprof_use merges the dynamic information files again and overwrites the previous pgopti.dpi file. Without any other options, the current directory is searched for .dyn files Additional flags for the C/C++ Compiler --------------------------------------- -GX Enables the full C++ Exception Handling unwind semantics. -GR Enables C++ Runtime Type Information (RTTI). -Qcxx_features Enables both -GX and -GR as described above, so C++ Runtime Type Information and Exception Handling are both enabled. Additional flags for the FORTRAN Compiler ----------------------------------------- -Qscalar_rep[-] Enables[disables] scalar replacement performed during loop transformations (requires -O3). -Qauto Causes all variables to be allocated on the stack, rather than in local static storage. Does not affect variables that appear in an EQUIVALENCE or SAVE statement, or those that are in COMMON. Makes all local variables AUTOMATIC. -FI Fixed-format F90 source code. (Portability flag for 178.galgel) Flags for Linking ----------------- -Fn Tell the linker to pre-allocate n bytes of stack. (Portability flag for 176.gcc and 178.galgel) The default amount of stack allocated is not sufficient for 176.gcc and 178.galgel. These two programs crash with run-time error, when no stacksize is specified. -MT Use the static multi-threaded library. (Portability flag for 253.perlbmk) 253.perlbmk does not build without this flag. shlW32M.lib Link with MicroQuill SmartHeap Library 6.03 available from http://www.microquill.com/ Defined Preprocessor Macros for CPU2000 --------------------------------------- 176.gcc: -Dalloca=_alloca : so as to use the built-in optimized alloca 186.crafty: -DNT_i386 : Specifies that it is a Windows NT Intel processor-based system which makes the compiler use "long long" as the 64-bit variable that 186.crafty needs. 253.perlbmk: -DSPEC_CPU2000_NTOS : This enables the code changes for porting to Windows get included -DPERLDLL : On Windows, we need a perl.exe instead of a perl.exe and perl.dll. This pre-define ensures that the changes necessary to get a single, UNIX-style executable without getting the indirect calls that can cause a 10% performance degradation. This allows the Windows-based executable to be as close as possible to the Unix-based one. 254.gap: -DSYS_HAS_CALLOC_PROTO : -DSYS_HAS_MALLOC_PROTO : These two pre-defines tell of the existence of malloc and calloc prototypes.