60 vand_m = (1 << vand ),
61 lqarx_m = (1 << lqarx ),
62 vcipher_m = (1 << vcipher),
63 vpmsumb_m = (1 << vpmsumb),
64 tcheck_m = (1 << tcheck ),
65 all_features_m = -1
66 };
67 static int _features;
68 static int _measured_cache_line_size;
69 static const char* _features_str;
70 static bool _is_determine_features_test_running;
71
72 static void print_features();
73 static void determine_features(); // also measures cache line size
74 static void config_dscr(); // Power 8: Configure Data Stream Control Register.
75 static void determine_section_size();
76 static void power6_micro_bench();
77 public:
78 // Initialization
79 static void initialize();
80
81 // Override Abstract_VM_Version implementation
82 static bool use_biased_locking();
83
84 static bool is_determine_features_test_running() { return _is_determine_features_test_running; }
85 // CPU instruction support
86 static bool has_fsqrt() { return (_features & fsqrt_m) != 0; }
87 static bool has_fsqrts() { return (_features & fsqrts_m) != 0; }
88 static bool has_isel() { return (_features & isel_m) != 0; }
89 static bool has_lxarxeh() { return (_features & lxarxeh_m) !=0; }
90 static bool has_cmpb() { return (_features & cmpb_m) != 0; }
91 static bool has_popcntb() { return (_features & popcntb_m) != 0; }
92 static bool has_popcntw() { return (_features & popcntw_m) != 0; }
93 static bool has_fcfids() { return (_features & fcfids_m) != 0; }
94 static bool has_vand() { return (_features & vand_m) != 0; }
95 static bool has_lqarx() { return (_features & lqarx_m) != 0; }
96 static bool has_vcipher() { return (_features & vcipher_m) != 0; }
97 static bool has_vpmsumb() { return (_features & vpmsumb_m) != 0; }
98 static bool has_tcheck() { return (_features & tcheck_m) != 0; }
99
|
60 vand_m = (1 << vand ),
61 lqarx_m = (1 << lqarx ),
62 vcipher_m = (1 << vcipher),
63 vpmsumb_m = (1 << vpmsumb),
64 tcheck_m = (1 << tcheck ),
65 all_features_m = -1
66 };
67 static int _features;
68 static int _measured_cache_line_size;
69 static const char* _features_str;
70 static bool _is_determine_features_test_running;
71
72 static void print_features();
73 static void determine_features(); // also measures cache line size
74 static void config_dscr(); // Power 8: Configure Data Stream Control Register.
75 static void determine_section_size();
76 static void power6_micro_bench();
77 public:
78 // Initialization
79 static void initialize();
80 static void vm_init_before_ergo() {}
81
82 // Override Abstract_VM_Version implementation
83 static bool use_biased_locking();
84
85 static bool is_determine_features_test_running() { return _is_determine_features_test_running; }
86 // CPU instruction support
87 static bool has_fsqrt() { return (_features & fsqrt_m) != 0; }
88 static bool has_fsqrts() { return (_features & fsqrts_m) != 0; }
89 static bool has_isel() { return (_features & isel_m) != 0; }
90 static bool has_lxarxeh() { return (_features & lxarxeh_m) !=0; }
91 static bool has_cmpb() { return (_features & cmpb_m) != 0; }
92 static bool has_popcntb() { return (_features & popcntb_m) != 0; }
93 static bool has_popcntw() { return (_features & popcntw_m) != 0; }
94 static bool has_fcfids() { return (_features & fcfids_m) != 0; }
95 static bool has_vand() { return (_features & vand_m) != 0; }
96 static bool has_lqarx() { return (_features & lqarx_m) != 0; }
97 static bool has_vcipher() { return (_features & vcipher_m) != 0; }
98 static bool has_vpmsumb() { return (_features & vpmsumb_m) != 0; }
99 static bool has_tcheck() { return (_features & tcheck_m) != 0; }
100
|