< prev index next >

src/cpu/ppc/vm/vm_version_ppc.cpp

Print this page
rev 8574 : 8131048: ppc: implement CRC32 intrinsic


 133     AllocatePrefetchStepSize = cache_line_size; // Need exact value.
 134     if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) AllocatePrefetchLines = 12; // Use larger blocks by default.
 135     if (AllocatePrefetchDistance < 0) AllocatePrefetchDistance = 2*cache_line_size; // Default is not defined?
 136   } else {
 137     if (cache_line_size > AllocatePrefetchStepSize) AllocatePrefetchStepSize = cache_line_size;
 138     if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) AllocatePrefetchLines = 3; // Optimistic value.
 139     if (AllocatePrefetchDistance < 0) AllocatePrefetchDistance = 3*cache_line_size; // Default is not defined?
 140   }
 141 
 142   assert(AllocatePrefetchLines > 0, "invalid value");
 143   if (AllocatePrefetchLines < 1) { // Set valid value in product VM.
 144     AllocatePrefetchLines = 1; // Conservative value.
 145   }
 146 
 147   if (AllocatePrefetchStyle == 3 && AllocatePrefetchDistance < cache_line_size) {
 148     AllocatePrefetchStyle = 1; // Fall back if inappropriate.
 149   }
 150 
 151   assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive");
 152 
 153   if (UseCRC32Intrinsics) {
 154     if (!FLAG_IS_DEFAULT(UseCRC32Intrinsics))
 155       warning("CRC32 intrinsics  are not available on this CPU");
 156     FLAG_SET_DEFAULT(UseCRC32Intrinsics, false);


 157   }
 158 
 159   // The AES intrinsic stubs require AES instruction support.
 160 #if defined(VM_LITTLE_ENDIAN)
 161   if (has_vcipher()) {
 162     if (FLAG_IS_DEFAULT(UseAES)) {
 163       UseAES = true;
 164     }
 165   } else if (UseAES) {
 166     if (!FLAG_IS_DEFAULT(UseAES))
 167       warning("AES instructions are not available on this CPU");
 168     FLAG_SET_DEFAULT(UseAES, false);
 169   }
 170 
 171   if (UseAES && has_vcipher()) {
 172     if (FLAG_IS_DEFAULT(UseAESIntrinsics)) {
 173       UseAESIntrinsics = true;
 174     }
 175   } else if (UseAESIntrinsics) {
 176     if (!FLAG_IS_DEFAULT(UseAESIntrinsics))




 133     AllocatePrefetchStepSize = cache_line_size; // Need exact value.
 134     if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) AllocatePrefetchLines = 12; // Use larger blocks by default.
 135     if (AllocatePrefetchDistance < 0) AllocatePrefetchDistance = 2*cache_line_size; // Default is not defined?
 136   } else {
 137     if (cache_line_size > AllocatePrefetchStepSize) AllocatePrefetchStepSize = cache_line_size;
 138     if (FLAG_IS_DEFAULT(AllocatePrefetchLines)) AllocatePrefetchLines = 3; // Optimistic value.
 139     if (AllocatePrefetchDistance < 0) AllocatePrefetchDistance = 3*cache_line_size; // Default is not defined?
 140   }
 141 
 142   assert(AllocatePrefetchLines > 0, "invalid value");
 143   if (AllocatePrefetchLines < 1) { // Set valid value in product VM.
 144     AllocatePrefetchLines = 1; // Conservative value.
 145   }
 146 
 147   if (AllocatePrefetchStyle == 3 && AllocatePrefetchDistance < cache_line_size) {
 148     AllocatePrefetchStyle = 1; // Fall back if inappropriate.
 149   }
 150 
 151   assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive");
 152 
 153   // Implementation does not use any of the vector instructions
 154   // available with Power8. Their exploitation is still pending.
 155   if (!UseCRC32Intrinsics) {
 156     if (FLAG_IS_DEFAULT(UseCRC32Intrinsics)) {
 157       FLAG_SET_DEFAULT(UseCRC32Intrinsics, true);
 158     }
 159   }
 160 
 161   // The AES intrinsic stubs require AES instruction support.
 162 #if defined(VM_LITTLE_ENDIAN)
 163   if (has_vcipher()) {
 164     if (FLAG_IS_DEFAULT(UseAES)) {
 165       UseAES = true;
 166     }
 167   } else if (UseAES) {
 168     if (!FLAG_IS_DEFAULT(UseAES))
 169       warning("AES instructions are not available on this CPU");
 170     FLAG_SET_DEFAULT(UseAES, false);
 171   }
 172 
 173   if (UseAES && has_vcipher()) {
 174     if (FLAG_IS_DEFAULT(UseAESIntrinsics)) {
 175       UseAESIntrinsics = true;
 176     }
 177   } else if (UseAESIntrinsics) {
 178     if (!FLAG_IS_DEFAULT(UseAESIntrinsics))


< prev index next >