Skip to content

Commit

Permalink
RISC-V: Remove insn aliases
Browse files Browse the repository at this point in the history
Signed-Off-By: Patrick O'Neill <[email protected]>
  • Loading branch information
patrick-rivos committed Nov 16, 2024
1 parent ed129b7 commit 1cc34de
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 275 deletions.
19 changes: 18 additions & 1 deletion dev_tools/parsers/parse_binutils_riscv.py
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,17 @@ def parse_binutils():
split_lines, quotechar='"', quoting=csv.QUOTE_ALL, skipinitialspace=True
)
]
tags = [
row[-1]
for row in csv.reader(
split_lines, quotechar='"', quoting=csv.QUOTE_ALL, skipinitialspace=True
)
]

# Mark alias insns
for i, tag in enumerate(tags):
if "INSN_ALIAS" in tag:
formats[i] = formats[i] + "_alias"

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

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

print()
print("Formats missing pattern:", len(unimp_format))
print("Insns missing pattern:", len(unimp_insns))
print("Alias insns missing pattern:", len(unimp_alias_format))

unimp_format_counter = Counter(
[insn.format for insn in missing_pattern_insns if insn.name not in imp_insns]
Expand Down Expand Up @@ -456,7 +469,7 @@ def main():
if insn.ext in VECTOR_EXTS:
insn_name = f"{insn.name}_{'V1' if ('Vm' in fmt) else 'V0'}".upper()
else:
insn_name = f"{insn.name}_{fmt}"
insn_name = f"{insn.name}_V0".upper()

# TODO Memory operands
insn_names.append(insn_name)
Expand All @@ -471,6 +484,10 @@ def main():
}
)

insn_names = sorted(insn_names)

assert len(insn_names) == len(set(insn_names)), "Duplicate insn name detected!"

with open("gen/instruction.yaml", "w", encoding='UTF-8') as stream:
yaml.dump(instruction_list, stream, sort_keys=True)

Expand Down
Loading

0 comments on commit 1cc34de

Please sign in to comment.