src/cpu/sparc/vm/vm_version_sparc.hpp

changeset 2269
ae065c367d93
parent 1907
c18cbe5936b8
child 2314
f95d63e2154a
     1.1 --- a/src/cpu/sparc/vm/vm_version_sparc.hpp	Sat Oct 30 13:08:23 2010 -0700
     1.2 +++ b/src/cpu/sparc/vm/vm_version_sparc.hpp	Tue Nov 02 09:00:37 2010 -0700
     1.3 @@ -1,5 +1,5 @@
     1.4  /*
     1.5 - * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved.
     1.6 + * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
     1.7   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     1.8   *
     1.9   * This code is free software; you can redistribute it and/or modify it
    1.10 @@ -33,7 +33,9 @@
    1.11      v9_instructions    = 5,
    1.12      vis1_instructions  = 6,
    1.13      vis2_instructions  = 7,
    1.14 -    sun4v_instructions = 8
    1.15 +    sun4v_instructions = 8,
    1.16 +    blk_init_instructions = 9,
    1.17 +    fmaf_instructions  = 10
    1.18    };
    1.19  
    1.20    enum Feature_Flag_Set {
    1.21 @@ -49,6 +51,8 @@
    1.22      vis1_instructions_m = 1 << vis1_instructions,
    1.23      vis2_instructions_m = 1 << vis2_instructions,
    1.24      sun4v_m             = 1 << sun4v_instructions,
    1.25 +    blk_init_instructions_m = 1 << blk_init_instructions,
    1.26 +    fmaf_instructions_m = 1 << fmaf_instructions,
    1.27  
    1.28      generic_v8_m        = v8_instructions_m | hardware_mul32_m | hardware_div32_m | hardware_fsmuld_m,
    1.29      generic_v9_m        = generic_v8_m | v9_instructions_m,
    1.30 @@ -67,6 +71,7 @@
    1.31    static int  platform_features(int features);
    1.32  
    1.33    static bool is_niagara1(int features) { return (features & sun4v_m) != 0; }
    1.34 +  static bool  is_sparc64(int features) { return (features & fmaf_instructions_m) != 0; }
    1.35  
    1.36    static int maximum_niagara1_processor_count() { return 32; }
    1.37    // Returns true if the platform is in the niagara line and
    1.38 @@ -86,6 +91,7 @@
    1.39    static bool has_hardware_popc()       { return (_features & hardware_popc_m) != 0; }
    1.40    static bool has_vis1()                { return (_features & vis1_instructions_m) != 0; }
    1.41    static bool has_vis2()                { return (_features & vis2_instructions_m) != 0; }
    1.42 +  static bool has_blk_init()            { return (_features & blk_init_instructions_m) != 0; }
    1.43  
    1.44    static bool supports_compare_and_exchange()
    1.45                                          { return has_v9(); }
    1.46 @@ -93,8 +99,10 @@
    1.47    static bool is_ultra3()               { return (_features & ultra3_m) == ultra3_m; }
    1.48    static bool is_sun4v()                { return (_features & sun4v_m) != 0; }
    1.49    static bool is_niagara1()             { return is_niagara1(_features); }
    1.50 +  static bool is_sparc64()              { return is_sparc64(_features); }
    1.51  
    1.52    static bool has_fast_fxtof()          { return has_v9() && !is_ultra3(); }
    1.53 +  static bool has_fast_idiv()           { return is_niagara1_plus() || is_sparc64(); }
    1.54  
    1.55    static const char* cpu_features()     { return _features_str; }
    1.56  

mercurial