Skip to content

Commit ba37044

Browse files
committed
RISC-V: Remove insn aliases
Signed-Off-By: Patrick O'Neill <[email protected]>
1 parent cc7e23b commit ba37044

File tree

3 files changed

+18
-275
lines changed

3 files changed

+18
-275
lines changed

dev_tools/parsers/parse_binutils_riscv.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,17 @@ def parse_binutils():
335335
split_lines, quotechar='"', quoting=csv.QUOTE_ALL, skipinitialspace=True
336336
)
337337
]
338+
tags = [
339+
row[-1]
340+
for row in csv.reader(
341+
split_lines, quotechar='"', quoting=csv.QUOTE_ALL, skipinitialspace=True
342+
)
343+
]
344+
345+
# Mark alias insns
346+
for i, tag in enumerate(tags):
347+
if "INSN_ALIAS" in tag:
348+
formats[i] = formats[i] + "_alias"
338349

339350
# Generate unmasked variants for all masked vector insns
340351
unmasked_insns: List[str] = []
@@ -390,10 +401,12 @@ def print_filter_stats(
390401

391402
unimp_insns = {insn.name for insn in missing_pattern_insns}
392403
unimp_format = {insn.format[0] for insn in missing_pattern_insns}
404+
unimp_alias_format = {insn.format[0] for insn in missing_pattern_insns if any(["_alias" in fmt for fmt in insn.format]) }
393405

394406
print()
395407
print("Formats missing pattern:", len(unimp_format))
396408
print("Insns missing pattern:", len(unimp_insns))
409+
print("Alias insns missing pattern:", len(unimp_alias_format))
397410

398411
unimp_format_counter = Counter(
399412
[insn.format for insn in missing_pattern_insns if insn.name not in imp_insns]
@@ -456,7 +469,7 @@ def main():
456469
if insn.ext in VECTOR_EXTS:
457470
insn_name = f"{insn.name}_{'V1' if ('Vm' in fmt) else 'V0'}".upper()
458471
else:
459-
insn_name = f"{insn.name}_{fmt}"
472+
insn_name = f"{insn.name}_V0".upper()
460473

461474
# TODO Memory operands
462475
insn_names.append(insn_name)
@@ -471,6 +484,10 @@ def main():
471484
}
472485
)
473486

487+
insn_names = sorted(insn_names)
488+
489+
assert len(insn_names) == len(set(insn_names)), "Duplicate insn name detected!"
490+
474491
with open("gen/instruction.yaml", "w", encoding='UTF-8') as stream:
475492
yaml.dump(instruction_list, stream, sort_keys=True)
476493

0 commit comments

Comments
 (0)