@@ -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