comparison src/cpu/x86/vm/vm_version_x86.cpp @ 7482:989155e2d07a

Merge with hs25-b15.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Wed, 16 Jan 2013 01:34:24 +0100
parents 291ffc492eb6 00af3a3a8df4
children 3ac7d10a6572
comparison
equal deleted inserted replaced
7381:6761a8f854a4 7482:989155e2d07a
427 // HT processor could be installed on a system which doesn't support HT. 427 // HT processor could be installed on a system which doesn't support HT.
428 _cpuFeatures &= ~CPU_HT; 428 _cpuFeatures &= ~CPU_HT;
429 } 429 }
430 430
431 char buf[256]; 431 char buf[256];
432 jio_snprintf(buf, sizeof(buf), "(%u cores per cpu, %u threads per core) family %d model %d stepping %d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", 432 jio_snprintf(buf, sizeof(buf), "(%u cores per cpu, %u threads per core) family %d model %d stepping %d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
433 cores_per_cpu(), threads_per_core(), 433 cores_per_cpu(), threads_per_core(),
434 cpu_family(), _model, _stepping, 434 cpu_family(), _model, _stepping,
435 (supports_cmov() ? ", cmov" : ""), 435 (supports_cmov() ? ", cmov" : ""),
436 (supports_cmpxchg8() ? ", cx8" : ""), 436 (supports_cmpxchg8() ? ", cx8" : ""),
437 (supports_fxsr() ? ", fxsr" : ""), 437 (supports_fxsr() ? ", fxsr" : ""),
444 (supports_sse4_2() ? ", sse4.2" : ""), 444 (supports_sse4_2() ? ", sse4.2" : ""),
445 (supports_popcnt() ? ", popcnt" : ""), 445 (supports_popcnt() ? ", popcnt" : ""),
446 (supports_avx() ? ", avx" : ""), 446 (supports_avx() ? ", avx" : ""),
447 (supports_avx2() ? ", avx2" : ""), 447 (supports_avx2() ? ", avx2" : ""),
448 (supports_aes() ? ", aes" : ""), 448 (supports_aes() ? ", aes" : ""),
449 (supports_erms() ? ", erms" : ""),
449 (supports_mmx_ext() ? ", mmxext" : ""), 450 (supports_mmx_ext() ? ", mmxext" : ""),
450 (supports_3dnow_prefetch() ? ", 3dnowpref" : ""), 451 (supports_3dnow_prefetch() ? ", 3dnowpref" : ""),
451 (supports_lzcnt() ? ", lzcnt": ""), 452 (supports_lzcnt() ? ", lzcnt": ""),
452 (supports_sse4a() ? ", sse4a": ""), 453 (supports_sse4a() ? ", sse4a": ""),
453 (supports_ht() ? ", ht": ""), 454 (supports_ht() ? ", ht": ""),
487 warning("AES instructions not available on this CPU"); 488 warning("AES instructions not available on this CPU");
488 FLAG_SET_DEFAULT(UseAES, false); 489 FLAG_SET_DEFAULT(UseAES, false);
489 } 490 }
490 491
491 // The AES intrinsic stubs require AES instruction support (of course) 492 // The AES intrinsic stubs require AES instruction support (of course)
492 // but also require AVX and sse3 modes for instructions it use. 493 // but also require sse3 mode for instructions it use.
493 if (UseAES && (UseAVX > 0) && (UseSSE > 2)) { 494 if (UseAES && (UseSSE > 2)) {
494 if (FLAG_IS_DEFAULT(UseAESIntrinsics)) { 495 if (FLAG_IS_DEFAULT(UseAESIntrinsics)) {
495 UseAESIntrinsics = true; 496 UseAESIntrinsics = true;
496 } 497 }
497 } else if (UseAESIntrinsics) { 498 } else if (UseAESIntrinsics) {
498 if (!FLAG_IS_DEFAULT(UseAESIntrinsics)) 499 if (!FLAG_IS_DEFAULT(UseAESIntrinsics))
667 UsePopCountInstruction = true; 668 UsePopCountInstruction = true;
668 } 669 }
669 } else if (UsePopCountInstruction) { 670 } else if (UsePopCountInstruction) {
670 warning("POPCNT instruction is not available on this CPU"); 671 warning("POPCNT instruction is not available on this CPU");
671 FLAG_SET_DEFAULT(UsePopCountInstruction, false); 672 FLAG_SET_DEFAULT(UsePopCountInstruction, false);
673 }
674
675 // Use fast-string operations if available.
676 if (supports_erms()) {
677 if (FLAG_IS_DEFAULT(UseFastStosb)) {
678 UseFastStosb = true;
679 }
680 } else if (UseFastStosb) {
681 warning("fast-string operations are not available on this CPU");
682 FLAG_SET_DEFAULT(UseFastStosb, false);
672 } 683 }
673 684
674 #ifdef COMPILER2 685 #ifdef COMPILER2
675 if (FLAG_IS_DEFAULT(AlignVector)) { 686 if (FLAG_IS_DEFAULT(AlignVector)) {
676 // Modern processors allow misaligned memory operations for vectors. 687 // Modern processors allow misaligned memory operations for vectors.