Compilers: IBM Open XL C/C++ for AIX 17.1.x
Compilers: IBM Open XL Fortran for AIX 17.1.x
Libraries: tcmalloc version 2.7.1 + IBM AIX enablement patch Available for download at : https://github.com/gilamn5tr/gperftools/archive/refs/heads/aix-enablement-upstream.zip
Tcmalloc library has been built with IBM XL 16.1.0 with the compiler flags -O3 -qmaxmem=-1, where -qmaxmem=-1 permits each optimization to take as much memory as it needs without checking for limits
Operating systems: AIX V7.3 Technology Level 0, Service Pack 2 running on Power10
Selecting one of the following will take you directly to that section:
Pass the optimization flag that is an argument to -bplugin_opt to the linker.
Searches the directory path for library files specified by the "-l" option at link time.
Enable use of scalar MASS library while using link time optimization(LTO).
Place uninitialized global variables in a common block.
The -bbigtoc option instructs the linker to generate extra code if the size of TOC is greater than 64K. For C/C++ programs it is invoked as -Wl,-bplugin_opt:-bbigtoc and for Fortran programs it is invoked as -bbigtoc.
<suboption> must be one of the following suboptions:
Default: -fold-complex-pointer-compare=true
<suboption> must be one of the following suboptions:
Default: -fold-complex-pointer-compare=true
Instructs the linker to search for the specified library file in the path specified by the -L option. For static and dynamic linking, the linker searches for libxxx.a.
The -blpdata is a linker option and it sets the bit in the file's XCOFF header indicating that this executable will request the use of large pages when they are available on the system and when the user has an appropriate privilege. For C/C++ programs it is invoked as -Wl,-blpdata and for Fortran programs it is invoked as -blpdata.
Link the mathematical acceleration subsystem libraries (MASS), which consist of a set of mathematical functions for C,C++ and Fortran language applications that are tuned for specific Power processor architectures.
Link the standard C library of basic mathematical functions such as sin(x), cos(x), exp(x) etc.
Link the standard C++ library that supports C++11 features.
Link the standard Posix threading library.
Enables use of certain functions from the MASS library for scalars and vectors.
Generates 64-bit ABI binaries. Used as a compiler option for C/C++ programs. If -m64 is not specified, the default is to generate 32-bit ABI binaries on AIX.
Generates 32-bit ABI binaries. Used as a compiler option for C/C++ programs.
Generates 32-bit ABI binaries. Used as a compiler option for Fortran programs.
Generates 64-bit ABI binaries. Used as a compiler option for Fortran programs. If -q64 is not specified, the default is to generate 32-bit ABI binaries on AIX.
Supported values for this flag are :
Supported values for this flag are :
This option is used in the first pass of a profile guided optimization(PGO) compile and causes PGO information to be generated. The profile guided optimization gathers data on both execution path and data values. It does not use hardware counters, nor gather any data other than path and data values for PGO specific optimizations. Instructs the compiler to generate profiling instrumentation in the generated binary. This compiler option is used for C/C++ programs.
This option is used in the second pass of a profile guided optimization(PGO) compile. This flag instructs the compiler to use the profiling information in the file specified by the argument to -fprofile-use. This file summarizes profile information that was emitted into default*profraw files by the -fprofile-generate option. The profiling information is utilized to guide the compiler optimizer in making better optimization decisions. This compiler option is used for C/C++ programs.
This option is used in the first pass of a profile guided optimization(PGO) compile and causes PGO information to be generated. The profile guided optimization gathers data on both execution path and data values. It does not use hardware counters, nor gather any data other than path and data values for PGO specific optimizations. Instructs the compiler to generate profiling instrumentation in the generated binary. This compiler option is used for Fortran programs.
This option is used in the second pass of a profile guided optimization(PGO) compile. This flag instructs the compiler to use the profiling information in the file specified by the argument to -qprofile-use. This file summarizes profile information that was emitted into default*profraw files by the -fprofile-generate option. The profiling information is utilized to guide the compiler optimizer in making better optimization decisions. This compiler option is used for Fortran programs.
Passes the option name provided following -mllvm through the compiler frontend to the optimizer.
This flag is to enable automatic use of the MASS scalar library and call scalar functions in your program.
This flag is to enable automatic use of the MASS SIMD library in your program.
Causes the system loader to put the heap in its own segment of the size specified. This is only required for 32-bit applications, as their segments are 256M. A 32 bit application can be made to use a large or very large memory model. A large memory model allows up to 2GB to be used for data and a very large memory model allows up to 3.25GB to be used for data. Values above 2GB must use the dsa, or dynamic segment allocation parameter as in -bmaxdata:0xD0000000/dsa.
Pass on the DSCR (data stream control register) value to the linker. This value controls the aggressiveness of the hardware data prefetch engine.
Tries to convert __dynamic_cast function call into an address comparision when possible. The default value is off.
Instructs the compiler to use the GNU semantics for "inline" functions.
Enable the extended Altivec ABI on AIX, which uses volatile and nonvolatile vector registers.
Generate output files in LLVM format, suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files. The LLVM bitcode generated is suitable for Link Time Optimization (LTO), when all modules are merged into a single combined module for optimization.
Instructs the compiler to use both volatile and nonvolatile vector registers. Volatile vector registers are those whose value is not preserved across function calls or across save context, jump or switch context system library functions.
Generate output files in LLVM format, suitable for link time optimization. When used with -S this generates LLVM intermediate language assembly files, otherwise this generates LLVM bitcode format object files. The LLVM bitcode generated is suitable for Link Time Optimization (LTO), when all modules are merged into a single combined module for optimization.
Instructs the compiler that it must not assume that the aliasing requirements from the language standard specification are honored by the program.
This option instructs the linker to analyze the whole program to determine if the layout of data can be transformed to improve the cache utilization and memory bandwidth of the program. This option has four levels [0, 1, 2, 3]. This is effective only under -flto and must be specified on both the compilation and linking steps with same option level.
This option instructs the compiler to analyze the whole program to determine if the layout of data can be transformed to improve the cache utilization and m emory bandwidth of the program. This option has four levels [0, 1, 2, 3]. This is effective only under -flto and must be specified on both the compilation an d linking steps with same option level.
Enables aggressive heuristics to decide which frequently executed functions should be inlined.
Enables aggressive heuristics to decide which frequently executed functions should be inlined.
Instructs the compiler to enable the partial inlining optimization.
Instructs the linker to enable the partial inlining optimization.
Allow the compiler to vectorize simple search loops if they operate on contiguous arrays.
Allows the compiler to assume that function parameters of pointer type are restrict qualified.
Instructs the compiler to enable aggressive heuristics for loop vectorization.
Instructs the linker to enable aggressive heuristics for loop vectorization.
Allow the compiler to generate PPC hardware reduction instructions for reductions without proving signed overflow safety.
Instructs the compiler optimizer to use more aggressive heuristics for the loop unroll optimization when considering whether it is beneficial to fully unroll a loop.
Instructs the linker to use more aggressive heuristics for the loop unroll optimization when considering whether it is beneficial to fully unroll a loop.
Instructs the compiler optimizer to disable the loop unswitching transformation for complex loops.
Instructs the compiler optimizer to compress a local array of integers into a smaller integer type when it is legal to do so (i.e. when all possible values stored by the program into the array elements are representable by a smaller integer type).
Instructs the compiler optimizer to use an advanced value tracking analysis that leverages LLVM's "memory ssa" representation to track values stored into memory locations.
Allows certain math function calls (such as log, sqrt, pow, etc) to be replaced with an approximately equivalent set of instructions or alternative math function calls. For example, a pow(x, 0.25) may be replaced with sqrt(sqrt(x)), despite being an inexact result in cases where x is -0.0 or -inf. Defaults to -fno-approx-func.
Allows the Table of Contents to be larger than 64 Kb in size, allowing more addresses to be stored in the table.
Instructs the compiler to assume that the size of the TOC is larger than 64 Kb. When -qpic=large is in effect, the compiler generates two instructions for each TOC access to enlarge the accessing range. This helps avoid TOC overflow conditions when the Table of Contents is larger than 64 Kb.
Unroll loops with run-time trip counts. When set to false only unroll the loop if we are able to calculate the trip count at compile time.
Instructs the linker to unroll loops with run-time trip counts. When set to false only unroll the loop if we are able to calculate the trip count at compile time.
This turns off diagnostics of benchmark code that is treated as errors. Specifically, it turns these error off: 1. error: call to undeclared function A; ISO C99 and later do not support implicit function declarations 2. error: call to undeclared library function 'A' with type B; ISO C99 and later do not support implicit function declarations
Control how many loops get completely unrolled. For example, if unroll threshold is set to 500 then only loops with 500 or fewer instructions will be unrolled.
Control the amount of inlining to the value passed as the argument. The inline threshold is used in the inliner heuristics to decide which functions should be inlined.
This macro indicates that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide.
This macro indicates that the benchmark is being built on a PowerPC-based AIX system.
This macro is a SPEC provided portability flag.
Invoke the IBM Open XL C compiler.
ibm-clang_r is the thread-safe version of ibm-clang compiler.
Invoke the IBM Open XL C++ compiler.
ibm-clang++_r is the thread-safe version of ibm-clang++ compiler.
The xlf95_r invocation is thread-safe version of xlf95 compiler.