These are the flags that are universally supplied by the tools harness.
Selecting one of the following will take you directly to that section:
Definition of this macro indicates that compilation for parallel operation using OpenMP is disabled, and that any OpenMP directives or pragmas will not be visible to the compiler. This macro overrides the behavior of -DSPEC_OPENMP when they both appear in the list of compilation flags.
Definition of this macro indicates that compilation for parallel operation using C++ std::thread interfaces is disabled.
Definition of this macro indicates that compilation for parallel operation is enabled, and that any OpenMP directives or pragmas will be visible to the compiler. The behavior of this macro is overridden if -DSPEC_SUPPRESS_OPENMP also appears in the list of compilation flags.
This flag can be used to override the default spelling for the restrict keyword when SPEC_RESTRICT_POLICY is set to non-strict (2) or loose (3).
This flag can be used to override the default spelling for the inline/always_inline attribute used to replace inline keyword and always_inline attribute combinations when SPEC_INLINE_POLICY is set to loose (3).
This flag can be used to override the default spelling for the inline/always_inline attribute used to replace an always_inline attribute when no inline keyword is present. This only has an effect when when SPEC_INLINE_POLICY is set to loose (3).
This flag can be used to override the default spelling for the noinline attribute when SPEC_INLINE_POLICY is set to loose (3).
This option is used to indicate that the host system's integers, longs, and pointers are 32-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers and longs, are 32-bits wide, and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers are 32-bits wide, and longs and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This option is used to indicate that the host system's integers, longs, and pointers are 64-bits wide. Not all benchmarks recognize this macro, but the preferred practice for data model selection applies the flags to all benchmarks; this flag description is a placeholder for those benchmarks that do not recognize this macro.
This flag may be used when the byte order of the system being benchmarked differs from the byte order which with the tools were built.
In conjunction with SPEC_NO_AUTO_BYTEORDER, this flag may be used to specify the target system's byte order when other means are unavailable. It is not honored by all benchmarks.
The preprocessor macro SPEC is defined for all benchmarks compiled by the CPU 2026 tools harness.
The preprocessor macro SPEC_CPU was previously defined for all benchmarks compiled by the CPU 2026 tools harness. It no longer is, but this flag definition is left so that older results may be formatted without running into "unknown flags" errors.
The preprocessor macro NDEBUG is defined for all benchmarks compiled by the CPU 2026 tools harness. It is used to disable asserts() in codes that use them.
The preprocessor macro SPEC_WINDOWS is defined for all benchmarks compiled by the CPU 2026 tools harness on Microsoft Windows systems.
This flag is automatically provided by the tools for some benchmarks. It is used to communicate to the benchmark source code the byte order that was in effect when the tools were built. In cases when this byte order clue is incorrect for the target system, its action can be disabled by using -DSPEC_NO_AUTO_BYTEORDER.
This is a part of the default setting for OBJOPT for all platforms. It causes an object file to be generated from source.
This option is used to specify the name of the output file on non-Windows platforms.
This is the default setting for MATHLIBOPT on non-Windows platforms.
This option is used to specify the name of the output object file on Windows platforms.
This option is used to specify the name of the output executable on Windows platforms.
This flag indicates that the compiler should search the current directory for header files.
This flag specifies the directory that holds the header files for the SPEC in-memory I/O shim.
This flag indicates that the benchmark should use the SPEC in-memory I/O shim.
This flag specifies the directory that holds the header files for the getline() implementation used on Windows.
This flag specifies the directory that holds the header files for the getopt() implementation used on Windows.
This flag specifies the directory that holds the header files for the common qsort() implementation.
This flag specifies the directory that holds the header files for the common SHA-256 and SHA-512 hash implementation.
This flag specifies the directory that holds the header files for the common Mersenne-Twister and related random distributions implementations.
This flag specifies the directory that holds the header files for the common PNG library.
This flag specifies the directory that holds the header files for the common zlib library.
This flag specifies the directory that holds the header files for the common regex library.
This flag specifies the directory that holds the spec_restrict.h header files used to implement the cross-platform way to get restrict semantics for C and C++ codes. See XXX RULES REF HERE XXX for more information.
This flag specifies the directory that holds the spec_inline_control.h header files used to implement the cross-platform way to get "always inline" semantics for C and C++ codes. See XXX RULES REF HERE XXX for more information.
This flag enables word-boundaries in the specpp source preprocessor.
This flag selects the "literal" preprocessor module for the specpp source preprocessor. This module allows literal strings to pass through the preprocessor without any macros in the string being replaced.
This flag selects the "c-comment" preprocessor module for the specpp source preprocessor. This module allows C- and C++-style comments to be used in the Fortran sources by removing them from the code that is presented to the compiler.
This flag selects the "cnoslash-comment" preprocessor module for the specpp source preprocessor. This module removes some C- and C++-style comments from Fortran sources, but not comments that use '//', because '//' is the Fortran concatenate operator.
Definition of this macro indicates that compilation for parallel operation is disabled, that any OpenMP directives or pragmas will not be visible to the compiler, and that the C++ std::thread interfaces will not be used. This variant has the same behavior as SPEC_SUPPRESS_OPENMP and SPEC_SUPPRESS_CPP_STD_THREADS used together, and is only used by the benchmark harness. Users must use SPEC_SUPPRESS_OPENMP or SPEC_SUPPRESS_CPP_STD_THREADS.
It is forbidden to undefine this mandatory flag.
It is forbidden to undefine this mandatory flag.
Sets the policy in place for allowing replacement of SPEC_RESTRICT with various different spellings of restrict keywords. The default policy is to default to the C-standard spelling "restrict" for C codes and compiler-specific spelling (if any) for C++, and to allow users to override that spelling.
Sets the policy in place for allowing replacement of SPEC_FORCE_INLINE and SPEC_NO_INLINE with various different spellings of inline/noinline/always_inline keywords or attributes. The default policy is to default to the C/C++-standard spelling "inline" for SPEC_FORCE_INLINE and leave SPEC_NO_INLINE blank, as there is no language-standard way to inhibit inlining.
These flags are set implicitly by the compilation system and may not be set explicitly.
Definition of these macros indicates that compilation for parallel operation with possibly non-CPU target offload is enabled. This mode of operation may not be selected for reportable SPEC CPU runs.
This macro must be set by the compilation system when building benchmarks that use OpenMP for parallelization. It may not be set explicitly.
Definition of this macro indicates that compilation for parallel operation is enabled, and that any OpenACC directives or pragmas will be visible to the compiler. The behavior of this macro is overridden if -DSPEC_SUPPRESS_OPENACC also appears in the list of compilation flags. OpenACC is not supported in SPEC CPU and may not be enabled.
Definition of this macro indicates that compilation for parallel operation using OpenACC is disabled, and that any OpenACC directives or pragmas will not be visible to the compiler. This macro overrides the behavior of -DSPEC_OPENACC when they both appear in the list of compilation flags. OpenACC is not supported in SPEC CPU.
Definition of this macro indicates that compilation for parallel operation is enabled, and that any CUDA directives or pragmas will be visible to the compiler. The behavior of this macro is overridden if -DSPEC_SUPPRESS_CUDA also appears in the list of compilation flags. CUDA is not supported in SPEC CPU and may not be enabled.
Definition of this macro indicates that compilation for parallel operation using CUDA is disabled, and that any CUDA directives or pragmas will not be visible to the compiler. This macro overrides the behavior of -DSPEC_CUDA when they both appear in the list of compilation flags. CUDA is not supported in SPEC CPU.