aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPan Li <pan2.li@intel.com>2023-12-18 20:45:53 +0800
committerChristoph Müllner <christophm30@gmail.com>2023-12-19 09:16:42 +0100
commitbe49d9a9a82ad506d0cedca34bbdac3777777ae9 (patch)
tree9f190b05452bcf29294670f6ba9fccc6fe838a6b
parent99e2d2bac5144f5152ba6d3fbf04bdd9b9ba4381 (diff)
downloadriscv-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-xscripts/march-to-cpu-opt12
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):