< prev index next >

src/hotspot/cpu/x86/vm_version_x86.hpp

Print this page

  1 /*
  2  * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved.
  3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4  *
  5  * This code is free software; you can redistribute it and/or modify it
  6  * under the terms of the GNU General Public License version 2 only, as
  7  * published by the Free Software Foundation.
  8  *
  9  * This code is distributed in the hope that it will be useful, but WITHOUT
 10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 12  * version 2 for more details (a copy is included in the LICENSE file that
 13  * accompanied this code).
 14  *
 15  * You should have received a copy of the GNU General Public License version
 16  * 2 along with this work; if not, write to the Free Software Foundation,
 17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 18  *
 19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 20  * or visit www.oracle.com if you need additional information or have any
 21  * questions.
 22  *

749                                            supports_sse3() && _model != 0x1C; }
750 
751   static bool supports_compare_and_exchange() { return true; }
752 
753   static intx allocate_prefetch_distance(bool use_watermark_prefetch);
754 
755   // SSE2 and later processors implement a 'pause' instruction
756   // that can be used for efficient implementation of
757   // the intrinsic for java.lang.Thread.onSpinWait()
758   static bool supports_on_spin_wait() { return supports_sse2(); }
759 
760   // x86_64 supports fast class initialization checks for static methods.
761   static bool supports_fast_class_init_checks() {
762     return LP64_ONLY(true) NOT_LP64(false); // not implemented on x86_32
763   }
764 
765   constexpr static bool supports_stack_watermark_barrier() {
766     return true;
767   }
768 




769   // For AVX CPUs only. f16c support is disabled if UseAVX == 0.
770   static bool supports_float16() {
771     return supports_f16c() || supports_avx512vl();
772   }
773 
774   // Check intrinsic support
775   static bool is_intrinsic_supported(vmIntrinsicID id);
776 
777   // there are several insns to force cache line sync to memory which
778   // we can use to ensure mapped non-volatile memory is up to date with
779   // pending in-cache changes.
780   //
781   // 64 bit cpus always support clflush which writes back and evicts
782   // on 32 bit cpus support is recorded via a feature flag
783   //
784   // clflushopt is optional and acts like clflush except it does
785   // not synchronize with other memory ops. it needs a preceding
786   // and trailing StoreStore fence
787   //
788   // clwb is an optional intel-specific instruction which

  1 /*
  2  * Copyright (c) 1997, 2024, Oracle and/or its affiliates. All rights reserved.
  3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4  *
  5  * This code is free software; you can redistribute it and/or modify it
  6  * under the terms of the GNU General Public License version 2 only, as
  7  * published by the Free Software Foundation.
  8  *
  9  * This code is distributed in the hope that it will be useful, but WITHOUT
 10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 12  * version 2 for more details (a copy is included in the LICENSE file that
 13  * accompanied this code).
 14  *
 15  * You should have received a copy of the GNU General Public License version
 16  * 2 along with this work; if not, write to the Free Software Foundation,
 17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 18  *
 19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 20  * or visit www.oracle.com if you need additional information or have any
 21  * questions.
 22  *

749                                            supports_sse3() && _model != 0x1C; }
750 
751   static bool supports_compare_and_exchange() { return true; }
752 
753   static intx allocate_prefetch_distance(bool use_watermark_prefetch);
754 
755   // SSE2 and later processors implement a 'pause' instruction
756   // that can be used for efficient implementation of
757   // the intrinsic for java.lang.Thread.onSpinWait()
758   static bool supports_on_spin_wait() { return supports_sse2(); }
759 
760   // x86_64 supports fast class initialization checks for static methods.
761   static bool supports_fast_class_init_checks() {
762     return LP64_ONLY(true) NOT_LP64(false); // not implemented on x86_32
763   }
764 
765   constexpr static bool supports_stack_watermark_barrier() {
766     return true;
767   }
768 
769   constexpr static bool supports_recursive_lightweight_locking() {
770     return true;
771   }
772 
773   // For AVX CPUs only. f16c support is disabled if UseAVX == 0.
774   static bool supports_float16() {
775     return supports_f16c() || supports_avx512vl();
776   }
777 
778   // Check intrinsic support
779   static bool is_intrinsic_supported(vmIntrinsicID id);
780 
781   // there are several insns to force cache line sync to memory which
782   // we can use to ensure mapped non-volatile memory is up to date with
783   // pending in-cache changes.
784   //
785   // 64 bit cpus always support clflush which writes back and evicts
786   // on 32 bit cpus support is recorded via a feature flag
787   //
788   // clflushopt is optional and acts like clflush except it does
789   // not synchronize with other memory ops. it needs a preceding
790   // and trailing StoreStore fence
791   //
792   // clwb is an optional intel-specific instruction which
< prev index next >