src/hotspot/cpu/arm/vm_version_arm.hpp
changeset 54915 278600885731
parent 53244 9807daeb47c4
child 59122 5d73255c2d52
equal deleted inserted replaced
54914:9feb4852536f 54915:278600885731
    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