197 198 if (FLAG_IS_DEFAULT(UseCRC32Intrinsics)) { 199 UseCRC32Intrinsics = true; 200 } 201 202 if (UseCRC32CIntrinsics) { 203 if (!FLAG_IS_DEFAULT(UseCRC32CIntrinsics)) 204 warning("CRC32C intrinsics are not available on this CPU"); 205 FLAG_SET_DEFAULT(UseCRC32CIntrinsics, false); 206 } 207 208 if (auxv & (HWCAP_SHA1 | HWCAP_SHA2)) { 209 if (FLAG_IS_DEFAULT(UseSHA)) { 210 FLAG_SET_DEFAULT(UseSHA, true); 211 } 212 } else if (UseSHA) { 213 warning("SHA instructions are not available on this CPU"); 214 FLAG_SET_DEFAULT(UseSHA, false); 215 } 216 217 if (!UseSHA) { 218 FLAG_SET_DEFAULT(UseSHA1Intrinsics, false); 219 FLAG_SET_DEFAULT(UseSHA256Intrinsics, false); 220 FLAG_SET_DEFAULT(UseSHA512Intrinsics, false); 221 } else { 222 if (auxv & HWCAP_SHA1) { 223 if (FLAG_IS_DEFAULT(UseSHA1Intrinsics)) { 224 FLAG_SET_DEFAULT(UseSHA1Intrinsics, true); 225 } 226 } else if (UseSHA1Intrinsics) { 227 warning("SHA1 instruction is not available on this CPU."); 228 FLAG_SET_DEFAULT(UseSHA1Intrinsics, false); 229 } 230 if (auxv & HWCAP_SHA2) { 231 if (FLAG_IS_DEFAULT(UseSHA256Intrinsics)) { 232 FLAG_SET_DEFAULT(UseSHA256Intrinsics, true); 233 } 234 } else if (UseSHA256Intrinsics) { 235 warning("SHA256 instruction (for SHA-224 and SHA-256) is not available on this CPU."); 236 FLAG_SET_DEFAULT(UseSHA256Intrinsics, false); 237 } 238 if (UseSHA512Intrinsics) { 239 warning("SHA512 instruction (for SHA-384 and SHA-512) is not available on this CPU."); 240 FLAG_SET_DEFAULT(UseSHA512Intrinsics, false); 241 } 242 if (!(UseSHA1Intrinsics || UseSHA256Intrinsics || UseSHA512Intrinsics)) { 243 FLAG_SET_DEFAULT(UseSHA, false); 244 } 245 } 246 247 // This machine allows unaligned memory accesses 248 if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) { 249 FLAG_SET_DEFAULT(UseUnalignedAccesses, true); 250 } 251 252 if (FLAG_IS_DEFAULT(UseMultiplyToLenIntrinsic)) { 253 UseMultiplyToLenIntrinsic = true; 254 } 255 256 if (FLAG_IS_DEFAULT(UseBarriersForVolatile)) { 257 UseBarriersForVolatile = (_cpuFeatures & CPU_DMB_ATOMICS) != 0; 258 } 259 260 if (FLAG_IS_DEFAULT(UsePopCountInstruction)) { 261 UsePopCountInstruction = true; 262 } 263 264 #ifdef COMPILER2 | 197 198 if (FLAG_IS_DEFAULT(UseCRC32Intrinsics)) { 199 UseCRC32Intrinsics = true; 200 } 201 202 if (UseCRC32CIntrinsics) { 203 if (!FLAG_IS_DEFAULT(UseCRC32CIntrinsics)) 204 warning("CRC32C intrinsics are not available on this CPU"); 205 FLAG_SET_DEFAULT(UseCRC32CIntrinsics, false); 206 } 207 208 if (auxv & (HWCAP_SHA1 | HWCAP_SHA2)) { 209 if (FLAG_IS_DEFAULT(UseSHA)) { 210 FLAG_SET_DEFAULT(UseSHA, true); 211 } 212 } else if (UseSHA) { 213 warning("SHA instructions are not available on this CPU"); 214 FLAG_SET_DEFAULT(UseSHA, false); 215 } 216 217 if (UseSHA && (auxv & HWCAP_SHA1)) { 218 if (FLAG_IS_DEFAULT(UseSHA1Intrinsics)) { 219 FLAG_SET_DEFAULT(UseSHA1Intrinsics, true); 220 } 221 } else if (UseSHA1Intrinsics) { 222 warning("Intrinsics for SHA-1 crypto hash functions not available."); 223 FLAG_SET_DEFAULT(UseSHA1Intrinsics, false); 224 } 225 226 if (UseSHA && (auxv & HWCAP_SHA2)) { 227 if (FLAG_IS_DEFAULT(UseSHA256Intrinsics)) { 228 FLAG_SET_DEFAULT(UseSHA256Intrinsics, true); 229 } 230 } else if (UseSHA256Intrinsics) { 231 warning("Intrinsics for SHA-224 and SHA-256 crypto hash functions not available."); 232 FLAG_SET_DEFAULT(UseSHA1Intrinsics, false); 233 } 234 235 if (UseSHA512Intrinsics) { 236 warning("Intrinsics for SHA-384 and SHA-512 crypto hash functions not available."); 237 FLAG_SET_DEFAULT(UseSHA512Intrinsics, false); 238 } 239 240 if (!(UseSHA1Intrinsics || UseSHA256Intrinsics || UseSHA512Intrinsics)) { 241 FLAG_SET_DEFAULT(UseSHA, false); 242 } 243 244 // This machine allows unaligned memory accesses 245 if (FLAG_IS_DEFAULT(UseUnalignedAccesses)) { 246 FLAG_SET_DEFAULT(UseUnalignedAccesses, true); 247 } 248 249 if (FLAG_IS_DEFAULT(UseMultiplyToLenIntrinsic)) { 250 UseMultiplyToLenIntrinsic = true; 251 } 252 253 if (FLAG_IS_DEFAULT(UseBarriersForVolatile)) { 254 UseBarriersForVolatile = (_cpuFeatures & CPU_DMB_ATOMICS) != 0; 255 } 256 257 if (FLAG_IS_DEFAULT(UsePopCountInstruction)) { 258 UsePopCountInstruction = true; 259 } 260 261 #ifdef COMPILER2 |