| The Gaudi Framework v32r1 (f65d50dc)

Functions
instructionsetLevel.cpp File Reference
`#include <GaudiKernel/System.h>`
`#include <iostream>`
`#include <string>`
`#include <vector>`
Include dependency graph for instructionsetLevel.cpp:

Go to the source code of this file.

## Functions
int | main (int argc, char *argv[])

## Function Documentation

## ◆ main()

int main | ( | int | argc,
|  | char * | argv[]
| ) |  |

Definition at line 14 of file instructionsetLevel.cpp.

14 {
15
16 // These names are those reported in flags field of /proc/cpuinfo on Linux
17 // See arch/x86/include/asm/cpufeature.h
18 std::vector<std::string> sets{
19 // "80386",
20 "sse", "sse2",
21 "sse3", // FIXME: This is not reported by Linux (?)
22 "ssse3", "sse4_1", "sse4_2", "avx", "avx2",
23 "avx512f" // FIXME: This is not reported by Linux (?)
24 };
25
26 if ( argc == 1 ) {
27 size_t level = System::instructionsetLevel() - 1;
28 if ( level < sets.size() )
29 for ( int i = System::instructionsetLevel() - 1; i >= 0; --i ) { std::cout << sets[i] << std::endl; }
30 else {
31 std::cout << "unknown instruction set level: " << level << std::endl;
32 return 2;
33 }
34 } else if ( ( argc == 2 ) && ( std::string{"all"} == std::string{argv[1]} ) ) {
35 for ( auto& s : sets ) std::cout << s << std::endl;
36 } else {
37 std::cout << "Error: wrong arguments\nUsage:\n\t" << argv[0] << " [all]" << std::endl;
38 return 1;
39 }
40
41 return 0;
42 }
gaudirun.argv
list argv
Definition: gaudirun.py:298
System::instructionsetLevel
GAUDI_API int instructionsetLevel()
Instruction Set "Level".
Definition: System.cpp:326
std::endl
T endl(T... args)
std::string
STL class.
plotBacklogPyRoot.argc
argc
Definition: plotBacklogPyRoot.py:142
std::vector< std::string >
gaudirun.s
string s
Definition: gaudirun.py:316
gaudirun.level
level
Definition: gaudirun.py:334
std::cout