hotspot/src/cpu/sparc/vm/vm_version_sparc.cpp
changeset 10519 fb373fa38321
parent 10512 935fc9d89f08
child 10977 4726185d3e93
equal deleted inserted replaced
10499:71714e44d255 10519:fb373fa38321
    73   if (AllocatePrefetchStyle == 3 && !has_blk_init()) {
    73   if (AllocatePrefetchStyle == 3 && !has_blk_init()) {
    74     warning("BIS instructions are not available on this CPU");
    74     warning("BIS instructions are not available on this CPU");
    75     FLAG_SET_DEFAULT(AllocatePrefetchStyle, 1);
    75     FLAG_SET_DEFAULT(AllocatePrefetchStyle, 1);
    76   }
    76   }
    77 
    77 
       
    78   if (has_v9()) {
       
    79     assert(ArraycopySrcPrefetchDistance < 4096, "invalid value");
       
    80     if (ArraycopySrcPrefetchDistance >= 4096)
       
    81       ArraycopySrcPrefetchDistance = 4064;
       
    82     assert(ArraycopyDstPrefetchDistance < 4096, "invalid value");
       
    83     if (ArraycopyDstPrefetchDistance >= 4096)
       
    84       ArraycopyDstPrefetchDistance = 4064;
       
    85   } else {
       
    86     if (ArraycopySrcPrefetchDistance > 0) {
       
    87       warning("prefetch instructions are not available on this CPU");
       
    88       FLAG_SET_DEFAULT(ArraycopySrcPrefetchDistance, 0);
       
    89     }
       
    90     if (ArraycopyDstPrefetchDistance > 0) {
       
    91       warning("prefetch instructions are not available on this CPU");
       
    92       FLAG_SET_DEFAULT(ArraycopyDstPrefetchDistance, 0);
       
    93     }
       
    94   }
       
    95 
    78   UseSSE = 0; // Only on x86 and x64
    96   UseSSE = 0; // Only on x86 and x64
    79 
    97 
    80   _supports_cx8 = has_v9();
    98   _supports_cx8 = has_v9();
    81 
    99 
    82   if (is_niagara()) {
   100   if (is_niagara()) {
   166       FLAG_SET_DEFAULT(UseCBCond, true);
   184       FLAG_SET_DEFAULT(UseCBCond, true);
   167     }
   185     }
   168   } else if (UseCBCond) {
   186   } else if (UseCBCond) {
   169     warning("CBCOND instruction is not available on this CPU");
   187     warning("CBCOND instruction is not available on this CPU");
   170     FLAG_SET_DEFAULT(UseCBCond, false);
   188     FLAG_SET_DEFAULT(UseCBCond, false);
       
   189   }
       
   190 
       
   191   assert(BlockZeroingLowLimit > 0, "invalid value");
       
   192   if (has_block_zeroing()) {
       
   193     if (FLAG_IS_DEFAULT(UseBlockZeroing)) {
       
   194       FLAG_SET_DEFAULT(UseBlockZeroing, true);
       
   195     }
       
   196   } else if (UseBlockZeroing) {
       
   197     warning("BIS zeroing instructions are not available on this CPU");
       
   198     FLAG_SET_DEFAULT(UseBlockZeroing, false);
       
   199   }
       
   200 
       
   201   assert(BlockCopyLowLimit > 0, "invalid value");
       
   202   if (has_block_zeroing()) { // has_blk_init() && is_T4(): core's local L2 cache
       
   203     if (FLAG_IS_DEFAULT(UseBlockCopy)) {
       
   204       FLAG_SET_DEFAULT(UseBlockCopy, true);
       
   205     }
       
   206   } else if (UseBlockCopy) {
       
   207     warning("BIS instructions are not available or expensive on this CPU");
       
   208     FLAG_SET_DEFAULT(UseBlockCopy, false);
   171   }
   209   }
   172 
   210 
   173 #ifdef COMPILER2
   211 #ifdef COMPILER2
   174   // T4 and newer Sparc cpus have fast RDPC.
   212   // T4 and newer Sparc cpus have fast RDPC.
   175   if (has_fast_rdpc() && FLAG_IS_DEFAULT(UseRDPCForConstantTableBase)) {
   213   if (has_fast_rdpc() && FLAG_IS_DEFAULT(UseRDPCForConstantTableBase)) {