SPEC CPU95 NT/Alpha Switch Disclosure Alpha Processor, Inc. 21 June 1999 This switch disclosure contains all switches used in Windows NT/Alpha submissions for June, 1999. Switches are given in alphabetical order rather than by product or benchmark. The collating sequence ignores upper/lower case, hyphens, and the presence of "no" for negation. (So if you're looking for "-notransform_loops", try looking under "-transform_loops".) In a few cases, switches documented below are not actually entered, but are generated by other switches. /ag=a (KAP Fortran NT) Perform aggressive optimization, pad common blocks and subroutine-local memory to avoid cache line collisions. /ag=ab (KAP Fortran NT) Redefine the array indices of arrays when doing so would cause cache utilization benefits. -arch:ev6 (SPIKE, Visual Fortran) Generate code for Alpha 21264 instruction set and optimize scheduling for the same. -noauto (Visual Fortran) Don't allocate local variables on the stack. -nocompile (SPIKE) Do not invoke the compiler, just invoke spike. -conc (KAP) Compile for concurrent (parallel) execution -debug (linker) Preserve debug information. -debugtype:fixup (linker) Preserve relocation records. -fast (Visual Fortran) Generates most-optimized code. This switch is equivalent to -assume:noaccuracy_sensitive -align:records -align:dcommons -math_library:fast -fast (SPIKE) Enable -hco, register allocation, copy elimination, and whole-program inlining. -Fe%binary% (VISUAL C++) Name the output file. -fixed:no (Linker) Allow program to be relocated. /fkapargs="switch" (KAP Fortran NT) Pass the switches between apostrophes to the KAP optimizer. /fuse (KAP Fortran NT) Perform loop fusion. /fuselevel=1 or 2 (KAP Fortran NT) Perform more aggressive fusion (0=default). -Gs (Visual C++) Disable stack limit checks. -Gy (Visual C++) Allow the compiler to package individual functions in the form of packaged functions (COMDATs). -hco (SPIKE) Apply hot/cold optimizations, which partitions routines into hot and cold parts based on profile feedback and shrinks the hot part to avoid un-needed instructions. -heaplimit=500 (KAP Fortran NT) KAP may require large amounts of memory in order to process your source code. The heaplimit switch specifies the maximum size in megabytes that the KAP heap can grow. -inline:speed (Visual Fortran) Provides inline expansion of function calls even when doing so may significantly increase the size of the program. /ipa (KAP Fortran NT) Do interprocedural analysis. -ipa_depth=10 (KAP Fortran NT) The ipa_depth switch sets the maximum level of subprogram nesting which kapf will attempt to analyze. /ipa_optimize=2 (KAP Fortran NT) Enables a group of interprocedural analysis options useful for optimizing large codes, including -ipa, -ipa_loop_level=3, -ipa_depth=10, -heaplimit=500 and -noarclimit. -ipa_looplevel=3 (KAP Fortran NT) The ipa_looplevel switch enables the user to limit inlining to just functions which are referenced in nested loops where the effects of reduced function call overhead or enhanced optimizations will be multiplied. kf90 (KAP Fortran NT) Invokes the KAP Fortran pre-processor and then invokes the Compaq Visual Fortran compiler. -link (Visual C++, Visual Fortran) Pass the rest of the command line to the linker -math_library:fast (Visual Fortran) Require slightly less accuracy and less error checking. -mc (KAP) Mininum amount of work in loop for it to be a candidate for concurrent execution. -Ob3 (Visual C++) Inline where the compiler believes speed can be increased, even at the cost of additional space. -Ob4 (Visual C++) Maximum inlining. -Oi (Visual C++) Enable intrinsic functions. /o=0 (KAP Fortran NT) KAP's general optimization level. Setting it to 0 disables optimizations such as DO loop interchanging and lifetime analysis. -optimize:4 (Visual Fortran) Fortran's general optimization level. O0 disable all optimizations O1 local optimizations and common subexpressions O2 global optimizations such as code motion, strength reduction, lifetime analysis, and code scheduling O3 additional global optimizations that may cost more space, such as loop unrolling and code replication O4 inline expansion O5 software pipelining and loop transformation -O2 (Visual C++) Perform all speed optimizations. -Ox (Visual C++) Perform optimizations that favor speed over code size. -pipeline (Visual Fortran) Enable software pipelining -profile_accuracy:low (SPIKE) The profile may not be representative; make optimizations more conservative. This switch may be useful as part of a software build that runs a relatively short workload, rather than exposing the application to a full production workload. -prof_dir:c:\tmp\prof (SPIKE) Name directory to hold profile information. -prof_gen_gem (SPIKE) Instrument application to collect profiles for use by the compiler. -prof_gen_spike (SPIKE) Instrument application to collect profiles for use by spike. -prof_use_gem (SPIKE) Use feedback with the compiler. GEM is the name of the compiler common back end. -prof_use_spike (SPIKE) Use spike with feedback. -QAgq (Visual C++) Use quadword granularity. -r=n (KAP Fortran NT) Tolerance for roundoff-changing transformations: 0 none 1 expression simplification, code floating, reductions, interchange 2 reciprocal substitution 3 {default} induction variables scc (SPIKE) Invokes Visual C++ followed by spike. /so=0 (KAP Fortran NT) Scalar optimizations. Setting this switch to 0 disables optimizations such as code floating out of loops, loop unrolling, and loop peeling. -speculate:all Perform all possible speculative execution. spike (SPIKE) A post-link time optimizer which does optimizations such as icache packing and procedure splitting. Note that in this disclosure, "SPIKE" refers to the software package as a whole, whereas "spike" refers to just the actual optimizer. -spike_hco (SPIKE) A synonym for -hco. -split_thresh .001 (SPIKE) Split procedures more conservatively. The default is .01 and smaller numbers cause fewer splits. /stack:nn,mm (Linker) Use a stack size of nn bytes with a maximum size of mm bytes. -transform_loops (Visual Fortran) Enables a group of loop transformation optimizations that apply to array references within loops, including loop blocking, distribution, fusion, and interchange. /tune=ev4 (KAP Fortran NT) Optimize for the EV4 (21064) chip. Also enables KAP's inner loop unroller. /tune=ev5 (KAP Fortran NT) Optimize for the EV5 (21164) chip. Also disables KAP's inner loop unroller. -tune:ev5 (Visual Fortran) Optimize for the EV5 (21164) chip /ur= (KAP Fortran NT) The maximum number of iterations to unroll inner loops. /ur2= (KAP Fortran NT) The maximum work allowed in an unrolled loop. Work is estimated by counting operands and operators in a loop.