diff --git a/BM/instruction-check/feature_list.py b/BM/instruction-check/feature_list.py index c023b2da..ee784bd9 100755 --- a/BM/instruction-check/feature_list.py +++ b/BM/instruction-check/feature_list.py @@ -1,11 +1,12 @@ import subprocess cpu_family_mapping = { - "SPR" : {0x8F, 143}, - "EMR" : {0xCF, 207}, - "GNR" : {0xAD, 173}, - "SRF" : {0xAF, 175}, - "CWF" : {0xDD, 221} + "SPR": (6, 143), + "EMR": (6, 207), + "GNR": (6, 173), + "SRF": (6, 175), + "CWF": (6, 221), + "DMR": (19, 1) } feature_list = { @@ -213,6 +214,10 @@ "cpuid": ['7', '0', '1', '0', 'a', '26'], "platforms": {"SRF", "CWF"} }, + "MOVRS": { + "cpuid": ['7', '0', '1', '0', 'a', '31'], + "platforms": {"DMR"} + }, "AVX_VNNI_INT8": { "cpuid": ['7', '0', '1', '0', 'd', '4'], "platforms": {"SRF", "CWF"} @@ -241,9 +246,13 @@ "cpuid": ['7', '0', '1', '0', 'd', '14'], "platforms": {"GNR"} }, - "AVX10_1": { + "AVX10": { "cpuid": ['7', '0', '1', '0', 'd', '19'], - "platforms": {"GNR"} + "platforms": {"GNR", "DMR"} + }, + "APX": { + "cpuid": ['7', '0', '1', '0', 'd', '21'], + "platforms": {"DMR"} }, "XFD": { "cpuid": ['d', '0', '1', '0', 'a', '4'], @@ -276,6 +285,26 @@ "KL_RANDOM_IWKEY": { "cpuid": ['19', '0', '0', '0', 'c', '1'], "platforms": {} + }, + "AMX_COMPLEX": { + "cpuid": ['1E', '0', '1', '0', 'a', '2'], + "platforms": {"DMR"} + }, + "AMX_FP8": { + "cpuid": ['1E', '0', '1', '0', 'a', '4'], + "platforms": {"DMR"} + }, + "AMX_TF32": { + "cpuid": ['1E', '0', '1', '0', 'a', '6'], + "platforms": {"DMR"} + }, + "AMX_AVX512": { + "cpuid": ['1E', '0', '1', '0', 'a', '7'], + "platforms": {"DMR"} + }, + "AMX_MOVRS": { + "cpuid": ['1E', '0', '1', '0', 'a', '8'], + "platforms": {"DMR"} } # Add more feature_info here } @@ -289,16 +318,19 @@ def get_cpu_family_id(): # Find the line containing "Model:" and extract the family ID for line in output_lines: + if "CPU family:" in line: + # Assuming the family ID follows 'CPU family:' and is separated by spaces + family_id = line.split(':')[1].strip() if "Model:" in line: # Assuming the family ID follows 'Model:' and is separated by spaces - family_id = line.split(':')[1].strip() - return int(family_id) + model_id = line.split(':')[1].strip() + return int(family_id), int(model_id) def get_platform(): cpu_family_id = get_cpu_family_id() platform = None for key, values in cpu_family_mapping.items(): - if cpu_family_id in values: + if cpu_family_id == values: platform = key break return platform