equal
deleted
inserted
replaced
30 |
30 |
31 class VM_Version: public Abstract_VM_Version { |
31 class VM_Version: public Abstract_VM_Version { |
32 friend class JVMCIVMStructs; |
32 friend class JVMCIVMStructs; |
33 |
33 |
34 static bool _has_simd; |
34 static bool _has_simd; |
|
35 static bool _has_mp_ext; |
35 |
36 |
36 protected: |
37 protected: |
37 // Are we done with vm version initialization |
38 // Are we done with vm version initialization |
38 static bool _is_initialized; |
39 static bool _is_initialized; |
39 |
40 |
45 protected: |
46 protected: |
46 enum Feature_Flag { |
47 enum Feature_Flag { |
47 vfp = 0, |
48 vfp = 0, |
48 vfp3_32 = 1, |
49 vfp3_32 = 1, |
49 simd = 2, |
50 simd = 2, |
|
51 mp_ext = 3 |
50 }; |
52 }; |
51 |
53 |
52 enum Feature_Flag_Set { |
54 enum Feature_Flag_Set { |
53 unknown_m = 0, |
55 unknown_m = 0, |
54 all_features_m = -1, |
56 all_features_m = -1, |
55 |
57 |
56 vfp_m = 1 << vfp, |
58 vfp_m = 1 << vfp, |
57 vfp3_32_m = 1 << vfp3_32, |
59 vfp3_32_m = 1 << vfp3_32, |
58 simd_m = 1 << simd, |
60 simd_m = 1 << simd, |
|
61 mp_ext_m = 1 << mp_ext |
59 }; |
62 }; |
60 |
63 |
61 // The value stored by "STR PC, [addr]" instruction can be either |
64 // The value stored by "STR PC, [addr]" instruction can be either |
62 // (address of this instruction + 8) or (address of this instruction + 12) |
65 // (address of this instruction + 8) or (address of this instruction + 12) |
63 // depending on hardware implementation. |
66 // depending on hardware implementation. |
95 static bool use_biased_locking(); |
98 static bool use_biased_locking(); |
96 |
99 |
97 static bool has_vfp() { return (_features & vfp_m) != 0; } |
100 static bool has_vfp() { return (_features & vfp_m) != 0; } |
98 static bool has_vfp3_32() { return (_features & vfp3_32_m) != 0; } |
101 static bool has_vfp3_32() { return (_features & vfp3_32_m) != 0; } |
99 static bool has_simd() { return (_features & simd_m) != 0; } |
102 static bool has_simd() { return (_features & simd_m) != 0; } |
|
103 static bool has_multiprocessing_extensions() { return (_features & mp_ext_m) != 0; } |
100 |
104 |
101 static bool simd_math_is_compliant() { return false; } |
105 static bool simd_math_is_compliant() { return false; } |
102 |
106 |
103 static bool prefer_moves_over_load_literal() { return supports_movw(); } |
107 static bool prefer_moves_over_load_literal() { return supports_movw(); } |
104 |
108 |