diff --git a/onnxruntime/core/common/cpuid_info.cc b/onnxruntime/core/common/cpuid_info.cc index dab771b9bc..c0946b88f4 100644 --- a/onnxruntime/core/common/cpuid_info.cc +++ b/onnxruntime/core/common/cpuid_info.cc @@ -56,6 +56,7 @@ CPUIDInfo::CPUIDInfo() noexcept { int value = XGETBV(); bool has_avx = (data[2] & (1 << 28)) && ((value & AVX_MASK) == AVX_MASK); bool has_avx512 = (value & AVX512_MASK) == AVX512_MASK; + has_f16c_ = has_avx && (data[2] & (1 << 29)) && (data[3] & (1 << 26)); if (num_IDs >= 7) { GetCPUID(7, data); diff --git a/onnxruntime/core/common/cpuid_info.h b/onnxruntime/core/common/cpuid_info.h index 2a1b89d9e7..de6c57431a 100644 --- a/onnxruntime/core/common/cpuid_info.h +++ b/onnxruntime/core/common/cpuid_info.h @@ -14,11 +14,13 @@ public: bool HasAVX2() const { return has_avx2_; } bool HasAVX512f() const { return has_avx512f_; } + bool HasF16C() const { return has_f16c_; } private: CPUIDInfo() noexcept; bool has_avx2_{false}; bool has_avx512f_{false}; + bool has_f16c_{false}; }; }