143 assert(AllocatePrefetchLines > 0, "invalid value"); 144 if (AllocatePrefetchLines < 1) { // Set valid value in product VM. 145 AllocatePrefetchLines = 1; // Conservative value. 146 } 147 148 if (AllocatePrefetchStyle == 3 && AllocatePrefetchDistance < cache_line_size) { 149 AllocatePrefetchStyle = 1; // Fall back if inappropriate. 150 } 151 152 assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive"); 153 154 // Implementation does not use any of the vector instructions 155 // available with Power8. Their exploitation is still pending. 156 if (!UseCRC32Intrinsics) { 157 if (FLAG_IS_DEFAULT(UseCRC32Intrinsics)) { 158 FLAG_SET_DEFAULT(UseCRC32Intrinsics, true); 159 } 160 } 161 162 // The AES intrinsic stubs require AES instruction support. 163 #if defined(VM_LITTLE_ENDIAN) 164 if (has_vcipher()) { 165 if (FLAG_IS_DEFAULT(UseAES)) { 166 UseAES = true; 167 } 168 } else if (UseAES) { 169 if (!FLAG_IS_DEFAULT(UseAES)) 170 warning("AES instructions are not available on this CPU"); 171 FLAG_SET_DEFAULT(UseAES, false); 172 } 173 174 if (UseAES && has_vcipher()) { 175 if (FLAG_IS_DEFAULT(UseAESIntrinsics)) { 176 UseAESIntrinsics = true; 177 } 178 } else if (UseAESIntrinsics) { 179 if (!FLAG_IS_DEFAULT(UseAESIntrinsics)) 180 warning("AES intrinsics are not available on this CPU"); 181 FLAG_SET_DEFAULT(UseAESIntrinsics, false); 182 } 183 184 #else 185 if (UseAES) { 186 warning("AES instructions are not available on this CPU"); 187 FLAG_SET_DEFAULT(UseAES, false); 188 } 189 if (UseAESIntrinsics) { 190 if (!FLAG_IS_DEFAULT(UseAESIntrinsics)) 191 warning("AES intrinsics are not available on this CPU"); 192 FLAG_SET_DEFAULT(UseAESIntrinsics, false); 193 } 194 #endif 195 196 if (UseSHA) { 197 warning("SHA instructions are not available on this CPU"); 198 FLAG_SET_DEFAULT(UseSHA, false); 199 } 200 if (UseSHA1Intrinsics || UseSHA256Intrinsics || UseSHA512Intrinsics) { 201 warning("SHA intrinsics are not available on this CPU"); 202 FLAG_SET_DEFAULT(UseSHA1Intrinsics, false); 203 FLAG_SET_DEFAULT(UseSHA256Intrinsics, false); 204 FLAG_SET_DEFAULT(UseSHA512Intrinsics, false); 205 } 206 207 if (FLAG_IS_DEFAULT(UseMontgomeryMultiplyIntrinsic)) { 208 UseMontgomeryMultiplyIntrinsic = true; 209 } 210 if (FLAG_IS_DEFAULT(UseMontgomerySquareIntrinsic)) { 211 UseMontgomerySquareIntrinsic = true; 212 } 213 } 214 | 143 assert(AllocatePrefetchLines > 0, "invalid value"); 144 if (AllocatePrefetchLines < 1) { // Set valid value in product VM. 145 AllocatePrefetchLines = 1; // Conservative value. 146 } 147 148 if (AllocatePrefetchStyle == 3 && AllocatePrefetchDistance < cache_line_size) { 149 AllocatePrefetchStyle = 1; // Fall back if inappropriate. 150 } 151 152 assert(AllocatePrefetchStyle >= 0, "AllocatePrefetchStyle should be positive"); 153 154 // Implementation does not use any of the vector instructions 155 // available with Power8. Their exploitation is still pending. 156 if (!UseCRC32Intrinsics) { 157 if (FLAG_IS_DEFAULT(UseCRC32Intrinsics)) { 158 FLAG_SET_DEFAULT(UseCRC32Intrinsics, true); 159 } 160 } 161 162 // The AES intrinsic stubs require AES instruction support. 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)) 179 warning("AES intrinsics are not available on this CPU"); 180 FLAG_SET_DEFAULT(UseAESIntrinsics, false); 181 } 182 183 if (UseSHA) { 184 warning("SHA instructions are not available on this CPU"); 185 FLAG_SET_DEFAULT(UseSHA, false); 186 } 187 if (UseSHA1Intrinsics || UseSHA256Intrinsics || UseSHA512Intrinsics) { 188 warning("SHA intrinsics are not available on this CPU"); 189 FLAG_SET_DEFAULT(UseSHA1Intrinsics, false); 190 FLAG_SET_DEFAULT(UseSHA256Intrinsics, false); 191 FLAG_SET_DEFAULT(UseSHA512Intrinsics, false); 192 } 193 194 if (FLAG_IS_DEFAULT(UseMontgomeryMultiplyIntrinsic)) { 195 UseMontgomeryMultiplyIntrinsic = true; 196 } 197 if (FLAG_IS_DEFAULT(UseMontgomerySquareIntrinsic)) { 198 UseMontgomerySquareIntrinsic = true; 199 } 200 } 201 |