diff options
author | Pan Li <pan2.li@intel.com> | 2023-12-18 20:45:53 +0800 |
---|---|---|
committer | Christoph Müllner <christophm30@gmail.com> | 2023-12-19 09:16:42 +0100 |
commit | be49d9a9a82ad506d0cedca34bbdac3777777ae9 (patch) | |
tree | 9f190b05452bcf29294670f6ba9fccc6fe838a6b | |
parent | 99e2d2bac5144f5152ba6d3fbf04bdd9b9ba4381 (diff) | |
download | riscv-gnu-toolchain-be49d9a9a82ad506d0cedca34bbdac3777777ae9.zip riscv-gnu-toolchain-be49d9a9a82ad506d0cedca34bbdac3777777ae9.tar.gz riscv-gnu-toolchain-be49d9a9a82ad506d0cedca34bbdac3777777ae9.tar.bz2 |
Fix one bug of spike varch elen
According to the ISA, the zve32/zve64 xdf decides the elen of the
RVV. Thus we should pick up extension instead of xlen for spike
varch generation.
Signed-off-by: Pan Li <pan2.li@intel.com>
-rwxr-xr-x | scripts/march-to-cpu-opt | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/scripts/march-to-cpu-opt b/scripts/march-to-cpu-opt index f6777f4..653dc49 100755 --- a/scripts/march-to-cpu-opt +++ b/scripts/march-to-cpu-opt @@ -41,6 +41,7 @@ SPIKE_EXT_NOT_ALLOWED = [ CPU_OPTIONS = { "xlen": "", "vlen": "", + "elen": "", "extensions": [], } @@ -146,6 +147,14 @@ def get_vlen(ext_dict): vlen = max(vlen, zvelen) return vlen +def get_elen(ext_dict): + elen = 32 + + if "zve64x" in ext_dict or "zve64f" in ext_dict or "zve64d" in ext_dict: + elen = 64 + + return elen + def print_qemu_cpu(): cpu_options = [] cpu_options.append("rv{0}".format(CPU_OPTIONS['xlen'])) @@ -186,7 +195,7 @@ def print_spike_varch(): if not CPU_OPTIONS['vlen']: return "" - return "vlen:{0},elen:{1}".format(CPU_OPTIONS['vlen'], CPU_OPTIONS['xlen']) + return "vlen:{0},elen:{1}".format(CPU_OPTIONS['vlen'], CPU_OPTIONS['elen']) class TestArchStringParse(unittest.TestCase): def _test(self, arch, expected_arch_list, expected_vlen=0): @@ -256,6 +265,7 @@ def parse_elf_file(elf_file_path): CPU_OPTIONS["extensions"] = extensions CPU_OPTIONS["vlen"] = get_vlen(extension_dict) + CPU_OPTIONS["elen"] = get_elen(extension_dict) CPU_OPTIONS["xlen"] = get_xlen(elf_file_path) def main(argv): |