-
Notifications
You must be signed in to change notification settings - Fork 29
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
instruction_check:Add instruction check tests
1. Implemented processor instruction set support detection by invoking the cpuid_check tool with the Avocado testing framework. Signed-off-by: Haoliang Zhu<[email protected]>
- Loading branch information
1 parent
ef69935
commit 621b980
Showing
4 changed files
with
116 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# Instruction Check | ||
|
||
This README provides information about the `instruction-check` project, which focuses on the CPUID instruction in computer processors. The CPUID instruction allows software programs to query and retrieve detailed information about the processor, including the manufacturer, model, features, and other characteristics. | ||
|
||
## CPUID Check Tool | ||
|
||
In the `LKVS/tools` directory, you can find a pre-existing tool for checking CPUID information. This tool supports six parameters, for example: `cpuid_check 1 0 0 0 c 25`. The first four parameters represent the input values for the EAX, EBX, ECX, and EDX registers, while `c` indicates checking the output of the ECX register, and `25` represents checking the 25th bit. | ||
|
||
## Preparation | ||
|
||
### 1. Install the Avocado Test Framework | ||
The Instruction Check project utilizes the Avocado Test Framework, so it needs to be installed first. You can install the Avocado test framework using either of the following methods: | ||
|
||
1. Source code installation: | ||
``` | ||
git clone git://github.com/avocado-framework/avocado.git | ||
cd avocado | ||
pip install . | ||
``` | ||
2. Installation via pip: | ||
``` | ||
pip3 install --user avocado-framework | ||
``` | ||
|
||
### 2. Install the HTML plugin | ||
After installing the framework, you also need to install the HTML plugin for generating test results in HTML format. You can do this by running the following command: | ||
``pip install avocado-framework-plugin-result-html`` | ||
|
||
## Usage | ||
|
||
### 1. ompile the cpuid_check tool | ||
Run the command: | ||
``./setuo.sh`` | ||
|
||
### 2. Execute instruction_check.py | ||
Run the command: | ||
``./ininstruction_check.py`` or ``python instruction_check.py`` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
cpuid_info = { | ||
"AESNI": ['1', '0', '0', '0', 'c', '25'], | ||
"XSAVE": ['1', '0', '0', '0', 'c', '26'], | ||
"FSGSBASE": ['7', '0', '0', '0', 'b', '0'], | ||
"SMEP": ['7', '0', '0', '0', 'b', '7'], | ||
"RDT_A": ['7', '0', '0', '0', 'b', '15'], | ||
"AVX512_IFMA": ['7', '0', '0', '0', 'b', '21'], | ||
"SHA_NI": ['7', '0', '0', '0', 'b', '29'], | ||
"AVX512_VBMI": ['7', '0', '0', '0', 'c', '1'], | ||
"UMIP": ['7', '0', '0', '0', 'c', '2'], | ||
"WAITPKG": ['7', '0', '0', '0', 'c', '5'], | ||
"AVX512_VBMI2": ['7', '0', '0', '0', 'c', '6'], | ||
"CET_SS": ['7', '0', '0', '0', 'c', '7'], | ||
"GFNI": ['7', '0', '0', '0', 'c', '8'], | ||
"VAES": ['7', '0', '0', '0', 'c', '9'], | ||
"AVX512_VNNI": ['7', '0', '0', '0', 'c', '11'], | ||
"AVX512_BITALG": ['7', '0', '0', '0', 'c', '12'], | ||
"RDPID": ['7', '0', '0', '0', 'c', '22'], | ||
"KL": ['7', '0', '0', '0', 'c', '23'], | ||
"CLDEMOTE": ['7', '0', '0', '0', 'c', '25'], | ||
"MOVDIRI": ['7', '0', '0', '0', 'c', '27'], | ||
"MOVDIR64B": ['7', '0', '0', '0', 'c', '28'], | ||
"PKS": ['7', '0', '0', '0', 'c', '31'], | ||
"UINTR": ['7', '0', '0', '0', 'd', '5'], | ||
"AVX512_VP2INTERSECT": ['7', '0', '0', '0', 'd', '8'], | ||
"SERIALIZE": ['7', '0', '0', '0', 'd', '14'], | ||
"TSXLDTRK": ['7', '0', '0', '0', 'd', '16'], | ||
"CET_IBT": ['7', '0', '0', '0', 'd', '20'], | ||
"AMX_BF16": ['7', '0', '0', '0', 'd', '22'], | ||
"AVX512_FP16": ['7', '0', '0', '0', 'd', '23'], | ||
"AMX_TILE": ['7', '0', '0', '0', 'd', '24'], | ||
"AMX_INT8": ['7', '0', '0', '0', 'd', '25'], | ||
"AVX_VNNI": ['7', '0', '1', '0', 'a', '4'], | ||
"FRED": ['7', '0', '1', '0', 'a', '17'], | ||
"WRMSRNS": ['7', '0', '1', '0', 'a', '19'], | ||
"AMX_FP16": ['7', '0', '1', '0', 'a', '21'], | ||
"AVX_IFMA": ['7', '0', '1', '0', 'a', '23'], | ||
"AVX_VNNI_INT8": ['7', '0', '1', '0', 'd', '4'], | ||
"AVX_NE_CONVERT": ['7', '0', '1', '0', 'd', '5'], | ||
"XFD": ['d', '0', '1', '0', 'a', '4'], | ||
"KL_BITMAP0": ['19', '0', '0', '0', 'a', '0'], | ||
"KL_BITMAP1": ['19', '0', '0', '0', 'a', '1'], | ||
"KL_BITMAP2": ['19', '0', '0', '0', 'a', '2'], | ||
"AESKLE": ['19', '0', '0', '0', 'b', '0'], | ||
"AES_WIDE": ['19', '0', '0', '0', 'b', '2'], | ||
"KL_IWKEYBACKUP": ['19', '0', '0', '0', 'b', '4'], | ||
"KL_RANDOM_IWKEY": ['19', '0', '0', '0', 'c', '1'] | ||
# Add more cpuid_info here | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
#!/usr/bin/python | ||
|
||
import sys | ||
from avocado.core.job import Job | ||
from avocado.core.nrunner.runnable import Runnable | ||
from avocado.core.suite import TestSuite | ||
from feature_list import cpuid_info | ||
|
||
def main(): | ||
feature_name_list = cpuid_info.keys() | ||
|
||
suites = [] | ||
|
||
for feature_name in feature_name_list: | ||
args = cpuid_info[feature_name] | ||
runnable = Runnable("exec-test", "../tools/cpuid_check/cpuid_check", *args) | ||
suite = TestSuite(name=feature_name, tests=[runnable]) | ||
suites.append(suite) | ||
|
||
# Run the test suites | ||
with Job(test_suites=suites) as j: | ||
sys.exit(j.run()) | ||
|
||
if __name__=="__main__": | ||
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
#!/bin/bash | ||
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" | ||
PARENT_DIR="$(dirname "$SCRIPT_DIR")" | ||
cd "$PARENT_DIR/tools" || exit 1 | ||
make |