From da2f95861441209594e7f67268db8bd7463bc065 Mon Sep 17 00:00:00 2001 From: alex_s168 <63254202+alex-s168@users.noreply.github.com> Date: Wed, 25 Sep 2024 21:11:01 +0200 Subject: [PATCH] add x86 APX features (#1482) add apx features Update cpu_detect.c3 --- lib/std/core/private/cpu_detect.c3 | 4 +++- src/compiler/enums.h | 8 ++++++++ src/compiler/target.c | 18 +++++++++++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/lib/std/core/private/cpu_detect.c3 b/lib/std/core/private/cpu_detect.c3 index 3988d6fc1..ac6f9ebcf 100644 --- a/lib/std/core/private/cpu_detect.c3 +++ b/lib/std/core/private/cpu_detect.c3 @@ -30,6 +30,7 @@ enum X86Feature AMX_FP16, AMX_INT8, AMX_TILE, + APXF, AVX, AVX10_1_256, AVX10_1_512, @@ -156,6 +157,7 @@ fn void x86_initialize_cpu_features() add_feature_if_bit(AMX_FP16, leaf7s1.eax, 21); add_feature_if_bit(AMX_INT8, leaf7.edx, 25); add_feature_if_bit(AMX_TILE, leaf7.edx, 24); + add_feature_if_bit(APXF, leaf7s1.edx, 21); add_feature_if_bit(AVX, feat.ecx, 28); add_feature_if_bit(AVX10_1_256, leaf7s1.edx, 19); add_feature_if_bit(AVX10_1_512, leaf_24.ebx, 18); @@ -255,4 +257,4 @@ fn void x86_initialize_cpu_features() add_feature_if_bit(XSAVEOPT, leaf_d.eax, 0); add_feature_if_bit(XSAVES, leaf_d.eax, 3); -} \ No newline at end of file +} diff --git a/src/compiler/enums.h b/src/compiler/enums.h index 9df1c836d..6327cf612 100644 --- a/src/compiler/enums.h +++ b/src/compiler/enums.h @@ -1473,6 +1473,14 @@ typedef enum X86_FEAT_AMX_FP16, X86_FEAT_AMX_INT8, X86_FEAT_AMX_TILE, + X86_FEAT_APX_EGPR, + X86_FEAT_APX_PUSH2POP2, + X86_FEAT_APX_PPX, + X86_FEAT_APX_NDD, + X86_FEAT_APX_CCMP, + X86_FEAT_APX_NF, + X86_FEAT_APX_CF, + X86_FEAT_APX_ZU, X86_FEAT_AVX, X86_FEAT_AVX10_1_512, X86_FEAT_AVX10_1_256, diff --git a/src/compiler/target.c b/src/compiler/target.c index 836d6b1b1..d73a7304c 100644 --- a/src/compiler/target.c +++ b/src/compiler/target.c @@ -298,7 +298,15 @@ static char *x86_feature_name[] = { [X86_FEAT_SSSE3] = "ssse3", [X86_FEAT_SSE4_1] = "sse4.1", [X86_FEAT_SSE4_2] = "sse4.2", - [X86_FEAT_AVX] = "avx", + [X86_FEAT_APX_EGPR] = "egpr", + [X86_FEAT_APX_PUSH2POP2] = "push2pop2", + [X86_FEAT_APX_PPX] = "ppx", + [X86_FEAT_APX_NDD] = "ndd", + [X86_FEAT_APX_CCMP] = "ccmp", + [X86_FEAT_APX_NF] = "nf", + [X86_FEAT_APX_CF] = "cf", + [X86_FEAT_APX_ZU] = "zu", + [X86_FEAT_AVX] = "avx", [X86_FEAT_AVX2] = "avx2", [X86_FEAT_AVX10_1_512] = "avx10.1-512", [X86_FEAT_AVX10_1_256] = "avx10.1-256", @@ -667,6 +675,14 @@ static void x86_features_add_feature(X86Features *cpu_features, X86Feature featu case X86_FEAT_XSAVE: case X86_FEAT_EVEX512: case X86_FEAT_USERMSR: + case X86_FEAT_APX_EGPR: + case X86_FEAT_APX_PUSH2POP2: + case X86_FEAT_APX_PPX: + case X86_FEAT_APX_NDD: + case X86_FEAT_APX_CCMP: + case X86_FEAT_APX_NF: + case X86_FEAT_APX_CF: + case X86_FEAT_APX_ZU: return; case X86_FEAT_AVX10_1_512: x86_features_add_feature(cpu_features, X86_FEAT_AVX10_1_256);