------------------------------------------------------ Dell SPEC CPU2000 Flags Descriptions Intel C/C++/Visual FORTRAN Compilers Version 8.1 ------------------------------------------------------ ------------------------------------------------------ General Options (C/C++/FORTRAN) ------------------------------------------------------ -fast The -fast option maximizes speed across the entire program. For Itanium-based systems, -fast sets -O3 and -Qipo. For IA-32 and Intel(r) EM64T systems, -fast sets -O3, -Qipo, and -QxP. -O{1|2|3} Optimization-level options: 1: optimize for speed, but disable some optimizations that increase code size for a small speed benefit. Includes inline expansion for intrinsic functions, global optimizations, string pooling optimizations. 2: optimizes for speed (DEFAULT). The -O2 option includes O1 optimizations and in addition enables inlining of intrinsics and more speed optimizations. 3: builds on -01 and -02 optimizations by enabling high-level optimization. This level does not guarantee higher performance unless loop and memory access transformation take place. In conjunction with -QaxK/-QxK and QaxW/QxW, this switch causes the compiler to perform more aggressive data dependency analysis than for -O2. This may result in longer compilation times. -Oa[-] Assume [do not assume] no aliasing in program. -Qansi_alias Directs the compiler to assume that the program adheres to the rules defined in the ISO C Standard. If your program adheres to these rules, then this option will allow the compiler to optimize more aggressively. If it doesn't adhere to these rules, then it can cause the compiler to generate incorrect code. -Qax{K|W|N|B|P} (IA-32 only) Generates specialized code for processor-specific codes (see -Qx) while also generating generic IA-32 code. -Qx{K|W|N|B|P} (IA-32 only) Generates specialized code for processor specific codes: K: Streamng SIMD Extensions (SSE) W: Intel processor with Streamng SIMD Extensions 2 (SSE2) N: Intel processor with Streamng SIMD Extensions 2 (SSE2) B: Intel processor with Streamng SIMD Extensions 2 (SSE2) P: Intel processor with Streamng SIMD Extensions 3 (SSE3) Notes: Only the -QxW and -QxP options are available on Intel(r) EM64T. -Qx{N|B|P} and -Qax{N|B|P}: These options also enable advanced data layout and code restructuring optimizations to improve memory accesses for Intel processors. -Qx{N|B|P}: Programs, where the function main()is compiled with these options, will detect non-compatible processors and generate an error message during execution. -QIPF_fp_relaxed[-] Enables [disables] use of faster but slightly less accurate code sequences for math functions, such as divide and square root. As compared to strict IEEE* precision, using this option slightly reduces the accuracy of floating-point calculations performed by these functions, usually limited to the least significant digit. -Qip Enable single-file IP optimizations (within files, same as -Ob2). -Qipo[value] Enables interprocedural optimizations across files. The optional value argument controls the maximum number of link-time compilations (or number of object files) that are spawned. The default for value is 1 when value is not specified. This option is not compatible with the Microsoft /GL option. -Qprof_gen Instrument program for profiling for the first phase of two-phase profile guided optimization. -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. -Qrcd The Intel compiler uses the -Qrcd option to improve the performance of code that requires floating-point-to-integer conversions. The system default floating point rounding mode is round-to-nearest. This means that values are rounded during floating point calculations. However, the C language requires floating point values to be truncated when a conversion to an integer is involved. To do this, the compiler must change the rounding mode to truncation before each floating point-to-integer conversion and change it back afterwards. The -Qrcd option disables the change to truncation of the rounding mode for all floating point calculations, including floating point-to-integer conversions. Turning on this option can improve performance, but floating point conversions to integer may not conform to C semantics. -Qunroll[n] Specifies the maximum number of times to unroll a loop. Omit n to let the compiler decide whether to perform unrolling or not. Use n = 0 to disable unroller. -Qwp_ipo Additionally to -Qipo, makes the whole program assumption that all variables and functions seen in compiled sources are referenced only within those sources; the user must guarantee that this assumption is safe. ------------------------------------------------------ Flags Specific to C/C++ ------------------------------------------------------ -G{5|6|7} Optimize code specifically for a targeted processor. Includes one or more of the following characters: 5: Pentium processors with or without MMX technology 6: Pentium Pro, Pentium II, and Pentium III processors 7: Pentium 4 processor -Oi[-] Enables (DEFAULT) [disables] inline expansion of standard library functions. -Zp(1|2|4|8|16) Use the -Zp{n} option to determine the alignment constraint for structure declarations, on n-byte boundary (n = 1, 2, 4, 8, 16). Generally, smaller constraints result in smaller data sections while larger constraints support faster execution. For example, to specify 2 bytes as the alignment constraint for all structures and unions in the file prog1.c, use the following command: -Zp2 prog1.c The default is -Zp16. -Qcxx_features Enables standard C++ features without disabling Microsoft features and within the bounds of what is provided in the Microsoft headers and libraries. This option also enables -GR and -GX. -GR[-] Enables [disables (DEFAULT)] C++ Runtime Type Information (RTTI). -GX[-] Enables [disables (DEFAULT)] C++ exception handling. -Qauto_ilp32 (i32em, i64) Specifies that the application cannot exceed a 32-bit address space, which allows the compiler to use 32-bit pointers whenever possible. To use this option, you must also specify -Qipo[value]. Using the -Qauto_ilp32 option on programs that can exceed 32-bit address space (2**32) may cause unpredictable results during program execution. ------------------------------------------------------ Flags Specific to FORTRAN ------------------------------------------------------ -Ob{0|1|2} Controls the compiler's inline expansion. 0: disable inlining. 1: disables inlining unless /Qip or /Ob2 are specified. 2: enables inlining of any function. However, the compiler decides which functions are inlined. This option enables interprocedural optimizations and has the same effect as specifying the /Qip option. -Qauto Causes all variables to be allocated on the stack, rather than in local static storage. -Qprefetch[-] Enable [disable (DEFAULT)] prefetch insertion. The default with -O3 is -Qprefetch. -Qscalar_rep[-] Enables (DEFAULT) [disables] scalar replacement performed during loop transformations. -Qipo[value] Enables interprocedural optimizations across files. The optional value argument controls the maximum number of link-time compilations (or number of object files) that are spawned. The default for value is 1 when value is not specified. This option is not compatible with the Microsoft /GL option. ------------------------------------------------------ General Options and Libraries ------------------------------------------------------ The starting tokens "/" and "-" are both equivalent for flags passed to the compiler. For example, -QxW and /QxW are identical switches. +FDO PASS1= -Qprof_gen PASS2= -Qprof_use Using feedback-directed optimization, a profile is generated on the first pass of compilation and used on the second pass. shlW32M.lib MicroQuill SmartHeap Library 7.1 available from www.microquill.com ------------------------------------------------------ Benchmark-Specific Portability Options ------------------------------------------------------ 176.gcc: -Dalloca=_alloca So as to use the built-in optimized alloca. /F10000000 176.gcc uses alloca and this option tells the linker to pre-allocate 10MB of stack. The default amount of stack allocated is not enough and 176.gcc crashes with a run-time error 178.galgel: /FI Fixed-format F90 source code. /F32000000 Same as with 176.gcc, pre-allocates a 32MB stack 186.crafty: -DNT_i386 Specifies that it is a Windows NT Intel processor-based system which makes the compiler use "_int64" 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-defines ensures that the changes necessary to get a single, UNIX-style executible without getting the indirect calls that can cause a 10% performance degradation. This allows the Windows-based executible to be as close as possible to the Unix-based one. /MT Use the static multi-threaded library else it will not compile. 254.gap: -DSYS_HAS_CALLOC_PROTO -DSYS_HAS_MALLOC_PROTO These two pre-defines tell of the existence of malloc and calloc prototypes.