From 2dec80044b903675b126cc1248d6b76c6bf65baf Mon Sep 17 00:00:00 2001 From: Abhishek Gola Date: Tue, 17 Mar 2026 18:58:03 +0530 Subject: [PATCH] moved AVXVNNI function to core --- modules/core/include/opencv2/core/cvdef.h | 2 ++ modules/core/src/system.cpp | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/modules/core/include/opencv2/core/cvdef.h b/modules/core/include/opencv2/core/cvdef.h index 9fd8c43f97..890dedd2eb 100644 --- a/modules/core/include/opencv2/core/cvdef.h +++ b/modules/core/include/opencv2/core/cvdef.h @@ -274,6 +274,7 @@ namespace cv { #define CV_CPU_AVX_512VPOPCNTDQ 25 #define CV_CPU_AVX_5124VNNIW 26 #define CV_CPU_AVX_5124FMAPS 27 +#define CV_CPU_AVX_VNNI 28 #define CV_CPU_NEON 100 #define CV_CPU_NEON_DOTPROD 101 @@ -338,6 +339,7 @@ enum CpuFeatures { CPU_AVX_512VPOPCNTDQ= 25, CPU_AVX_5124VNNIW = 26, CPU_AVX_5124FMAPS = 27, + CPU_AVX_VNNI = 28, CPU_NEON = 100, CPU_NEON_DOTPROD = 101, diff --git a/modules/core/src/system.cpp b/modules/core/src/system.cpp index 88d9af12e8..a52946b46a 100644 --- a/modules/core/src/system.cpp +++ b/modules/core/src/system.cpp @@ -474,6 +474,7 @@ struct HWFeatures g_hwFeatureNames[CPU_AVX_512VPOPCNTDQ] = "AVX512VPOPCNTDQ"; g_hwFeatureNames[CPU_AVX_5124VNNIW] = "AVX5124VNNIW"; g_hwFeatureNames[CPU_AVX_5124FMAPS] = "AVX5124FMAPS"; + g_hwFeatureNames[CPU_AVX_VNNI] = "AVX_VNNI"; g_hwFeatureNames[CPU_NEON] = "NEON"; g_hwFeatureNames[CPU_NEON_DOTPROD] = "NEON_DOTPROD"; @@ -555,6 +556,11 @@ struct HWFeatures have[CV_CPU_AVX_5124VNNIW] = (cpuid_data_ex[3] & (1<<2)) != 0; have[CV_CPU_AVX_5124FMAPS] = (cpuid_data_ex[3] & (1<<3)) != 0; + // CPUID leaf 7, subleaf 1 for AVX-VNNI + int cpuid_data_ex1[4] = { 0, 0, 0, 0 }; + CV_CPUID_X86(cpuid_data_ex1, 7, 1); + have[CV_CPU_AVX_VNNI] = (cpuid_data_ex1[0] & (1<<4)) != 0; + bool have_AVX_OS_support = true; bool have_AVX512_OS_support = true; if (!(cpuid_data[2] & (1<<27))) @@ -579,6 +585,7 @@ struct HWFeatures have[CV_CPU_FP16] = false; have[CV_CPU_AVX2] = false; have[CV_CPU_FMA3] = false; + have[CV_CPU_AVX_VNNI] = false; } if (!have_AVX_OS_support || !have_AVX512_OS_support) {