575 static ByteSize ymm_save_offset() { return byte_offset_of(CpuidInfo, ymm_save); }
576 static ByteSize zmm_save_offset() { return byte_offset_of(CpuidInfo, zmm_save); }
577
578 // The value used to check ymm register after signal handle
579 static int ymm_test_value() { return 0xCAFEBABE; }
580
581 static void get_cpu_info_wrapper();
582 static void set_cpuinfo_segv_addr(address pc) { _cpuinfo_segv_addr = pc; }
583 static bool is_cpuinfo_segv_addr(address pc) { return _cpuinfo_segv_addr == pc; }
584 static void set_cpuinfo_cont_addr(address pc) { _cpuinfo_cont_addr = pc; }
585 static address cpuinfo_cont_addr() { return _cpuinfo_cont_addr; }
586
587 static void clean_cpuFeatures() { _cpuFeatures = 0; }
588 static void set_avx_cpuFeatures() { _cpuFeatures = (CPU_SSE | CPU_SSE2 | CPU_AVX); }
589 static void set_evex_cpuFeatures() { _cpuFeatures = (CPU_AVX512F | CPU_SSE | CPU_SSE2 ); }
590
591
592 // Initialization
593 static void initialize();
594
595 // Override Abstract_VM_Version implementation
596 static bool use_biased_locking();
597
598 // Asserts
599 static void assert_is_initialized() {
600 assert(_cpuid_info.std_cpuid1_eax.bits.family != 0, "VM_Version not initialized");
601 }
602
603 //
604 // Processor family:
605 // 3 - 386
606 // 4 - 486
607 // 5 - Pentium
608 // 6 - PentiumPro, Pentium II, Celeron, Xeon, Pentium III, Athlon,
609 // Pentium M, Core Solo, Core Duo, Core2 Duo
610 // family 6 model: 9, 13, 14, 15
611 // 0x0f - Pentium 4, Opteron
612 //
613 // Note: The cpu family should be used to select between
614 // instruction sequences which are valid on all Intel
|
575 static ByteSize ymm_save_offset() { return byte_offset_of(CpuidInfo, ymm_save); }
576 static ByteSize zmm_save_offset() { return byte_offset_of(CpuidInfo, zmm_save); }
577
578 // The value used to check ymm register after signal handle
579 static int ymm_test_value() { return 0xCAFEBABE; }
580
581 static void get_cpu_info_wrapper();
582 static void set_cpuinfo_segv_addr(address pc) { _cpuinfo_segv_addr = pc; }
583 static bool is_cpuinfo_segv_addr(address pc) { return _cpuinfo_segv_addr == pc; }
584 static void set_cpuinfo_cont_addr(address pc) { _cpuinfo_cont_addr = pc; }
585 static address cpuinfo_cont_addr() { return _cpuinfo_cont_addr; }
586
587 static void clean_cpuFeatures() { _cpuFeatures = 0; }
588 static void set_avx_cpuFeatures() { _cpuFeatures = (CPU_SSE | CPU_SSE2 | CPU_AVX); }
589 static void set_evex_cpuFeatures() { _cpuFeatures = (CPU_AVX512F | CPU_SSE | CPU_SSE2 ); }
590
591
592 // Initialization
593 static void initialize();
594
595 static void vm_init_before_ergo() {}
596
597 // Override Abstract_VM_Version implementation
598 static bool use_biased_locking();
599
600 // Asserts
601 static void assert_is_initialized() {
602 assert(_cpuid_info.std_cpuid1_eax.bits.family != 0, "VM_Version not initialized");
603 }
604
605 //
606 // Processor family:
607 // 3 - 386
608 // 4 - 486
609 // 5 - Pentium
610 // 6 - PentiumPro, Pentium II, Celeron, Xeon, Pentium III, Athlon,
611 // Pentium M, Core Solo, Core Duo, Core2 Duo
612 // family 6 model: 9, 13, 14, 15
613 // 0x0f - Pentium 4, Opteron
614 //
615 // Note: The cpu family should be used to select between
616 // instruction sequences which are valid on all Intel
|