-------------------------------------------------------------------------------- Fujitsu PRIMEPOWER flags/tunables decription (Nov.05 2002) -------------------------------------------------------------------------------- Fujitsu Parallelnavi 1.0.2 compiler flag description Compiler options Remark -------------------------------------------------------------------------------- -Am Required if a source file contains modules which will be referenced by USE statements in other source files or if a source file contains USE statements that reference modules in another source file. -dy/-dn Specifies dynamic(-dy) or static(-dn) linkage of libraries. -dy is the default unless -Kfast_GP=n (n>=3) is specified and -Klargepage is not specified, in that case -dn is the default. -f omitmsg Set the level of diagnostic messages output and inhibit specific messages. omitmsg is one of i, w, or s, and/or a list of msgnum. i : All messages are output, this is the default. w : i level messages are not output. s : i and w level messages are not output. msgnum : Message number msgnum is inhibited. msgnum must be an i or w level message. -Fixed Specifies that Fortran source programs are written in fixed source form. -fs Do not print any warnings or diagnostic messages other than fatal errors. -Kbcopy Convert memory copy loop to memmove or memcpy function. -Kcfunc This uses high speed mathematical functions and library functions (malloc,calloc,realloc,free) prepared by this compilation system. -Kcommonpad[=N] Insert padding elements in common blocks for efficient use of cache. N can be specified from 4 to 4096. -Kcond This generates conditional-move instruction. This option is effective only if -Kcrossfile option is also specified. -Kcrossfile This option specifies crossfile optimization. If program consists of several files, the compiler refers these files at one time, and analyzes data dependency and control relation across these files. -Keval This option specifies optimization with changing of expression evaluation order. -Kfast_GP[={0|1|2|3|4|5}] This performs optimization for SPARC64 GP series. 0: This performs optimization suitable for SPARC64 GP. 1: This generates multiply and add instruction in addition to -Kfast_GP=0. (default) 2: This performs reordering of expression evaluation in addition to -Kfast_GP=1. 3:(C and C++ compiler) This generates crossfile optimization, and inter- procedural optimization in addition to -Kfast_GP=2. (Fortran compiler) This performs loop restructuring optimization in addition to -Kfast_GP=2. 4:(C and C++ compiler only) This generates advanced branch optimization in addition to -Kfast_GP=3. 5:(C and C++ compiler only) This generates global instruction scheduling optimization suit for scientific application in addition to -Kfast_GP=3. -Kfconst This option specifies to treat a floating-point type constant without an extension as float type. -Kfrecipro This option specifies to convert a floating point division into multiplication by the reciprocal. -Kfuncalign=n Adjust entry of functional alignment at n-byte boundary. -Kfuse Fuses neighboring loops. -KGREG The global registers g2 through g7 are subject to register allocation in the compile stage. -Kgs Performs global instruction scheduling. -Kilfunc This option replaces several and double precision mathematical functions,sin,cos,log10,log and exp with complier builtin functions. -Klargepage Specifies to generate executable program which utilizes Parallelnavi largepage facility. -Kmemalias In case of indirect memory access through pointer, when the accessing types are different, no memory aliase is assumed. -KNOFLTLD[=N] This option generates non-faulting load instruction. When non-faulting load instruction is used, signal does not occur even if given address is invalid. Memory access can be done before the memory address validation by using this option. N is maximum number of non-faulting load instruction for each loop or branch instruction. The compiler determine the default value of N when omitted N can be a number from 1 to 255. -Knogs This option invalidates global instruction scheduling. -Knoiopt This option prevents interprocedural optimization. -Knoprefetch Suppresses use the prefetch instruction. -Knounroll Prevents loop unrolling optimizations. -Konefile Generate only one temporary file (.s file or .o file) when multiple source files are compiled in one compilation. -Kpg Generates instructions to produce a profile file for subsequent optimization (global instruction scheduling etc.). -Kpopt This option specifies the optimization data pointed to by pointers using a limited interpretation that the areas referred by pointers are only referred by pointers. -Kpreex This option specifies the optimization by moving the evaluation of invariant expressions beyond branch. -Kpreload Moves load instructions across branches. -Kpu[=file] This performs optimization (global instruction scheduling, etc.) using program runtime profile information obtained by specifying -Kpg option. -Kprefetch[={1|2|3|4}] Generate prefetch instruction correspond to each prefetch level. 1: Basic level prefetch for array elements only inner-most loop. 2: In addition to the -Kprefetch=1, generates the prefetch instruction for array elements within the loop pre-header which access the first iteration in the loop. 3: In addition to the -Kprefetch=2, when the stride of access for array elements are larger than cache line size, compiler generates prefetch instruction for each cache line size access. 4: Maximum level for generating prefetch instruction. In addition to -Kprefetch=3, compiler generates the prefetch instruction for array elements which access in the outer loop. -Kprefetch_iteration=N Generate the prefetch instruction of the data which is referred after N iterations. -Krestp This option specifies arguments optimization based on ANSI (C Standard). -Kstaticclump This option specifies to gather all static and global variables except large array to access with same base address and index. -Kswitchopt This option specifies to change case organization by execution ratio of each case statements. -Kunroll[=N] Performs loop unrolling. N means upper limit of unrolling expansion number, whose value should be from 2 to 9999. -Kuse_rodata This option specifies whether string constant, floating point constant and initialization value of aggregate type local storage variable are allocated to read-only data section. -KV9FMADD Indicates that SPARC V9 instructions and multiply add/subtract instructions are generated. -Kxi=N Inline expansion, instead of function calls, is performed. Expanded function is selected by result of profiler. N is the percentage that means increased object size. -lssl2mtfma This option specifies libraries of SSL II, SSL II Thread- Parallel Capabilities and BLAS/LAPACK to be linked. -O[level] Specifies the optimization level. 0: No optimization. 1: Basic optimization. 2: Loop unrolling in addition to -O1. 3: Global instruction scheduling and restructuring of nested loop in addition to -O2. 4: Enhanced optimization of loop restructuring rather than -O3. -x- Inline expansion, instead of function calls, is performed for all functions defined in the C source code. -Xa The C language specifications used at compile time is based on the specifications of the C language standard (ANSI standard). This is the default mode -x dir=directory_name Performs inline expansion of procedures defined in the files under the directory specified and in the file currently being compiled. -x stm_no Applying optimization for inline expansion of user-defined external procedure having fewer than specified number of execution statements in the stm_no arguments. -------------------------------------------------------------------------------- Fujitsu PRIMEPOWER flags/tunables decription (Nov.05 2002) Fujitsu Parallelnavi 2.0.1 compiler flag description -------------------------------------------------------------------------------- -Am Required if a source file contains modules which will be referenced by USE statements in other source files or if a source file contains USE statements that reference modules in another source file. -dy/-dn Specifies dynamic(-dy) or static(-dn) linkage of libraries. -dy is the default unless -Kfast_GP=n (n>=3) is specified and -Klargepage is not specified, in that case -dn is the default. -f omitmsg Set the level of diagnostic messages output and inhibit specific messages. omitmsg is one of i, w, or s, and/or a list of msgnum. i : All messages are output, this is the default. w : i level messages are not output. s : i and w level messages are not output. msgnum : Message number msgnum is inhibited. msgnum must be an i or w level message. -Fixed Specifies that Fortran source programs are written in fixed source form. -fs Do not print any warnings or diagnostic messages other than fatal errors. -Kalignc[=N] Adjust entry of global data alignment at n-byte boundary. N can be specified from 1 to 32768. -Kalignl[=N] Adjust entry of local data alignment at n-byte boundary. N can be specified from 1 to 32768. -Kauto Local variables (without an initial value or the SAVE attribute) are allocated on the runtime stack. Their values are lost when the procedure ends. -Kcfunc This uses high speed mathematical functions and library functions (malloc,calloc,realloc,free) prepared by this compilation system. -Kcommonpad[=N] Insert padding elements in common blocks for efficient use of cache. N can be specified from 4 to 4096. -Karraypad_const[=N] Insert padding elements after each row of an array whose size is declared with constants for efficient use of cache. -Kcrossfile This option specifies crossfile optimization. If program consists of several files, the compiler refers these files at one time, and analyzes data dependency and control relation across these files. -Kfast_GP2[={0|1|2}] This performs optimization for SPARC64 GP2 series. 0: This performs optimization suitable for SPARC64 GP2. 1: This generates multiply and add instruction in addition to -Kfast_GP2=0. (default) 2: This performs reordering of expression evaluation in addition to -Kfast_GP2=1. -KFMADD This option specifies use of the combined multiply- add/subtract floating-point instructions. -Kfrecipro This option specifies to convert a floating point division into multiplication by the reciprocal. -Kfuse Fuses neighboring loops. -KGREG The global registers g2 through g7 are subject to register allocation in the compile stage. -KGREG_SYSTEM The global registers g5 through g7 are subject to register allocation in the compile stage. -Kgs Performs global instruction scheduling. -Kilfunc This option replaces several and double precision mathematical functions,sin,cos,log10,log and exp with complier builtin functions. -Klargepage Specifies to generate executable program which utilizes Parallelnavi largepage facility. -KNOFMADD This option suppresses use of the combined multiply- add/subtract floating-point instructions. -Knoprefetch Suppresses use the prefetch instruction. -Knounroll Prevents loop unrolling optimizations. -Knovfunc Suppresses to change the intrinsic function (including power operation) to a multi-operation function. -Kpreex This option specifies the optimization by moving the evaluation of invariant expressions beyond branch. -Kpopt This option specifies the optimization data pointed to by pointers using a limited interpretation that the areas referred by pointers are only referred by pointers. -Kpg Generates instructions to produce a profile file for subsequent optimization (global instruction scheduling etc.). -Kprefetch[={1|2|3|4}] Generate prefetch instruction correspond to each prefetch level. 1: Basic level prefetch for array elements only inner-most loop. 2: In addition to the -Kprefetch=1, generates the prefetch instruction for array elements within the loop pre-header which access the first iteration in the loop. 3: In addition to the -Kprefetch=2, when the stride of access for array elements are larger than cache line size, compiler generates prefetch instruction for each cache line size access. 4: Maximum level for generating prefetch instruction. In addition to -Kprefetch=3, compiler generates the prefetch instruction for array elements which access in the outer loop. -Kprefetch_cache_level=[1/2/3] LEVEL-1: Generate prefetch instructions in order for the data to reside in the primary cache. LEVEL-2: Generate prefetch instructions in order for the data to reside only in the secondary cache. LEVEL-3: Generate both level-1 and -2 prefetch instructions. -Kprefetch_infer This option is specified to be omitted of address calculation for prefetch while is prefetch by distance is guessed from existing information -Kprefetch_iteration=N Generate the prefetch instruction of the data which is referred after N iterations. -Kprefetch_line=N Generate the prefetch instruction to get the data located N times bytes in a line of the primary data cache ahead of the address a neighboring load or store instruction points. -Kprefetch_line_L2=N Same to -Kprefetch_line=N, except the data reside only in the secondary cache. -Kpreload Moves load instructions across branches. -Kpreschedule_length[=N] Specifies the schedule length of pre-pass scheduler. This is effective only when -O5 option is used. -Kpu[=file] This performs optimization (global instruction scheduling, etc.) using program runtime profile information obtained by specifying -Kpg option. -Kunroll[=N] Performs loop unrolling. N means upper limit of unrolling expansion number, whose value should be from 2 to 9999. -Kvect Vectorize the body of an innermost loop before the optimization, then unvectorize. -O[level] Specifies the optimization level. 0: No optimization. 1: Basic optimization. 2: Loop unrolling in addition to -O1. 3: Global instruction scheduling and restructuring of nested loop in addition to -O2. 4: Enhanced optimization of loop restructuring rather than -O3. 5: Creates an object program by applying further optimizations of register allocation in addition to -O4. -SSL2 The whole set of routines from SSL II, SSL II Thread- Parallel Capabilities and BLAS/LAPACK becomes part of link-edit libraries. -x- Inline expansion, instead of function calls, is performed for all functions defined in the C source code. -x stm_no Applying optimization for inline expansion of user-defined external procedure having fewer than specified number of execution statements in the stm_no arguments. -x dir=directory_name Performs inline expansion of procedures defined in the files under the directory specified and in the file currently being compiled. -------------------------------------------------------------------------------- Sun C, C++ and Fortran Sun ONE Studio 7 Last updated: 10/02/2002 Compiler options Description -------------------------------------------------------------------------------- -D Set definition for preprocessor. -dalign Assume data is naturally aligned. -dn Specify static binding. -e Accept extended (132 character) input source lines (FORTRAN). -fast This is a convenience option for selecting a set of optimizations for performance. In all three of Fortran, C, and C++, -fast implies: * -dalign, align memory objects on their natural boundaries (also spelt as -xmemalign=8s, meaning that doubles (8 byte) items are correctly aligned, and if an incorrect item is found, a signal should be raised). * -fsimple=2 permitting reordering of floating point operations. * -fns disable gradual underflow * -libmil use inline expansion for math library, libm (also spelt -xlibmil) * Optimization level 5 (spelt either as -O5 or -xO5) * -xtarget=native, the native best machine characteristics option (also sometimes spelt -native). This option implies all three of -xarch=native, -xchip=native, -xcache=native In addition, the -fast option sets the following options for the compilers noted: * -depend (Fortran and C): analyze loops for data dependendencies (also spelt -xdepend) * -D__MATHERR_ERRNO_DONTCARE (C): errno may not be set for math functions. * -fsingle (C): evaluate float expressions as single precision * -ftrap=%none (f77, C, C++) turn off IEEE 754 trapping * -ftrap=common (f90) limit IEEE 754 trapping to common cases * -xlibmopt (Fortran and C++): select the optimized math library * -pad=local (Fortran): pad local variables * -xalias_level=basic (C) assume ISO C9X aliasing rules for basic types only. * -xbuiltin=%all (C and C++): substitute intrinsic functions or inline system functions where profitable for performance. * -xprefetch=yes (Fortran and C): enable prefetching * -xprefetch_level=2 (Fortran): set the level of searching that the prefetcher will do (valid values are 1, 2, or 3, where higher values mean more searching) * -xvector=yes (Fortran): permits the compiler to transform math library calls within DO loops into single calls to the equivalent vector math routines when such transformations are possible. -fixed Accept fixed-format input source files (FORTRAN). -fns Disable gradual underflow, allowing tiny results to be flushed to zero rather than producing subnormal numbers (non-standard according to IEEE 754) -fsimple=0 Permits no simplifying assumptions. Preserves strict IEEE 754 conformance. -fsimple=1 With -fsimple=1, the optimizer can assume the following: * The IEEE 754 default rounding/trapping modes do not change after process initialization. * Computations producing no visible result other than potential floating-point exceptions may be deleted. * Computations with Infinity or NaNs as operands need not propagate NaNs to their results. For example, x*0 may be replaced by 0. * Computations do not depend on sign of zero. -fsimple=2 Permits more aggressive floating point optimizations that may cause programs to produce different numeric results due to changes in rounding. Even with -fsimple=2, the optimizer still is not permitted to introduce a floating point exception in a program that otherwise produces none. -ftrap=t Sets the IEEE 754 trapping mode in effect at startup. t is a comma-separated list that consists of one or more of the following: %all, %none, common, [no%]invalid, [no%]overflow, [no%]underflow, [no%]division, [no%]inexact. The default is -ftrap=%none for f77, C, and C++; for f90 the default is common. This option sets the IEEE 754 trapping modes that are established at program initialization. Processing is left-to-right. The common exceptions, by definition, are invalid, division by zero, and overflow. %none turns off all trapping modes. common traps on invalid, division by zero, and overflow. Do not use this option for programs that depend on IEEE standard exception handling; you can get different numerical results, premature program termination, or unexpected SIGFPE signals. -libmil Use inline expansion templates for libm. -library=iostream Use "classic" (pre 1998 C++ standard) iostream library Prior to the C++ standard (1998), there was one iostream library, what is now often called "classic" iostreams. The C++ standard defines a different, but similar, iostream library, which we call "standard" iostreams. To get classic iostreams in standard (default) mode, you use the option "-library=iostream". -ll2amm Library containing chip specific memory routines. -lm Link with math library -lmopt This chooses the math library that is optimized for speed -lprism32 Library to enable Intimate Shared Memory (ISM) (4MB page) usage. -lsunperf Link with the Sun Performance Library (netlib and Society for Industrial and Applied Mathematics (SIAM) routines) -native Select native machine characteristics for optimization. Equivalent to setting all three of -xarch=native, -xchip=native, -xcache=native -Qicache-chbab=1 See -Wc,-Qicache-chbab=1 -Qoption Pass flags along to compiler phase: f90comp Fortran first pass iropt Global optimizer cg Code generator -Qoption cg See -Wc, below. (The code generation phase is addressed via -Qoption cg in Fortran and C++; and via -Wc in C.) -Qoption f90comp Enable padding of f90 arrays by n. -array_pad_rows, -Qoption f90comp Enable f90 array expansion. -expansion -qoption f90comp This reduces the optimization level of the f90 -O3 front/middle end to O3. The effect is to turn off loop cloning and unrolling (note that it has no effect on cg's loop unrolling). -Qoption iropt See also -W2, below. (The optimizer can be addressed either via Qoption iropt in Fortran and C++, or via -W2 in C.) -Qoption iropt enable optimizations based on data access patterns -Adata_access -Qoption iropt Set memory store operation weight for loop -Addint:sf=9 interchange to 9 -Qoption iropt See -W2,-Amemopt -Amemopt -Qoption iropt See -W2,-Ma -Ma -Qoption iropt See -W2,-Mm -Mm -Qoption iropt Do not inline calls when parameters are arrays and -MR actual array dimensions and formal array dimensions are mismatched -Qoption iropt See -W2,-Mr -Mr -Qoption iropt disable scalar replacement optimization -Rscalarrep -Qoption iropt Same as -Qoption iropt -Rscalarrep plus -Qoption -Rscalarrep,-MR iropt -MR -Qoption iropt See -W2,-whole -whole -stackvar Allocate routine local variables on stack (FORTRAN). -W, Pass flags along to compiler phase (2=optimizer, c=code generator) -W2,-Abopt Enable aggressive optimizations of all branches. -W2,-Adata_access Enable optimizations based on data access patterns. -W2,-Aheap Allows the compiler to recognize malloc-like memory allocation functions. -W2,-Ainline Perform Inter-Procedural Analysis (IPA) -based inlining. -W2,-Aivel: More aggresive strength reduction by replicating duplicate_loops loops. -W2,-Amemopt Memory access optimization. This does whole-program mode inter-procedural memory access analysis, merges memory allocations, and performs cache conscious data layout program transformations. -W2,-Amemopt: Reconstruct array subscripts during memory arrayloc allocation merging and data layout program transformation -W2,-Ashort_ldst Convert multiple short memory operations into single long memory operations. -W2,-Aunroll Enables outer-loop unrolling. -W2,-crit Enable optimization of critical control paths -W2,-Ma Enable inlining of routines with frame size up to n. -W2,-Mm Maximum module increase limit for inlining. -W2,-Mp Procedures with entry counts equal or greater than n become candidates for inlining. -W2,-Mr Maximum code increase due to inlining is limited to n triples. -W2,-Ms Maximum level of recursive inlining. -W2,-Mt The maximum size of a routine body eligible for inlining is limited to n triples. -W2, Assume that different global pointer variables point -O4+restrict_g to their own memory locations. -W2,-reroll=1 Turns on loop rerolling. -W2,-whole Do whole program optimizations. -Wc, Enable early cross-call instruction scheduling. -Qdepgraph-early_ cross_call=1 -Wc,-Qeps: Allow generating speculative load during EPS. do_spec_load=1 -Wc,-Qeps: Use enhanced pipeline scheduling(EPS) and selective enabled=1 scheduling algorithms for instruction scheduling. -Wc,-Qeps: Turn off register pressure heuristic in EPS. rp_filtering_ margin=100 -Wc,-Qgsched-T4 Sets the aggressiveness of the trace formation. -Wc, Turns on the late trace scheduler. -Qgsched-trace_ late=1 -Wc, Turns on the conversion of loads to non-faulting -Qgsched-trace_ loads inside the trace. spec_load=1 -Wc, Turn on optimization to reduce branch after branch -Qicache-chbab=1 penalty -Wc, Inline calls to memcpy with n bytes or fewer being -Qinline_memcpy= copied -Wc,-Qipa: Use profile feedback data to predict values and valueprediction attempt to generate faster code along these control paths, even at the expense of possibly slower code along paths leading to different values. Correct code is generated for both paths. -Wc, Do function entry alignment at n-byte boundaries. -Qiselect- funcalign= -Wc, Peels the most frequent test branches/cases off a -Qiselect-sw_pf_ switch until the branch probability reaches less tbl_th= than 1/n. This is effective only when profile feedback is used -Wc,-Qlp=1-av=