| The Gaudi Framework v30r0 (c919700c)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

instructionsetLevel.cpp
Go to the documentation of this file.
1 /*
2 * instructionsetLevel.cpp
3 *
4 * Created on: Feb 3, 2015
5 * Author: Marco Clemencic
6 */
7
8 #include <GaudiKernel/System.h>
9
10 #include <iostream>
11 #include <string>
12 #include <vector>
13
14 int main( int argc, char* argv[] )
15 {
16
17 // These names are those reported in flags field of /proc/cpuinfo on Linux
18 // See arch/x86/include/asm/cpufeature.h
19 std::vector<std::string> sets{
20 // "80386",
21 "sse", "sse2",
22 "sse3", // FIXME: This is not reported by Linux (?)
23 "ssse3", "sse4_1", "sse4_2", "avx", "avx2",
24 "avx512f" // FIXME: This is not reported by Linux (?)
25 };
26
27 if ( argc == 1 ) {
28 size_t level = System::instructionsetLevel() - 1;
29 if ( level < sets.size() )
30 for ( int i = System::instructionsetLevel() - 1; i >= 0; --i ) {
31 std::cout << sets[i] << std::endl;
32 }
33 else {
34 std::cout << "unknown instruction set level: " << level << std::endl;
35 return 2;
36 }
37 } else if ( ( argc == 2 ) && ( std::string{"all"} == std::string{argv[1]} ) ) {
38 for ( auto& s : sets ) std::cout << s << std::endl;
39 } else {
40 std::cout << "Error: wrong arguments\nUsage:\n\t" << argv[0] << " [all]" << std::endl;
41 return 1;
42 }
43
44 return 0;
45 }
System.h
gaudirun.argv
list argv
Definition: gaudirun.py:235
System::instructionsetLevel
GAUDI_API int instructionsetLevel()
Instruction Set "Level".
Definition: System.cpp:368
std::endl
T endl(T...args)
std::string
STL class.
plotBacklogPyRoot.argc
argc
Definition: plotBacklogPyRoot.py:138
main
int main(int argc, char *argv[])
Definition: instructionsetLevel.cpp:14
std::vector< std::string >
gaudirun.s
string s
Definition: gaudirun.py:253
gaudirun.level
level
Definition: gaudirun.py:271
std::cout