@@ -335,6 +335,17 @@ def parse_binutils():
335
335
split_lines , quotechar = '"' , quoting = csv .QUOTE_ALL , skipinitialspace = True
336
336
)
337
337
]
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"
338
349
339
350
# Generate unmasked variants for all masked vector insns
340
351
unmasked_insns : List [str ] = []
@@ -390,10 +401,12 @@ def print_filter_stats(
390
401
391
402
unimp_insns = {insn .name for insn in missing_pattern_insns }
392
403
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 ]) }
393
405
394
406
print ()
395
407
print ("Formats missing pattern:" , len (unimp_format ))
396
408
print ("Insns missing pattern:" , len (unimp_insns ))
409
+ print ("Alias insns missing pattern:" , len (unimp_alias_format ))
397
410
398
411
unimp_format_counter = Counter (
399
412
[insn .format for insn in missing_pattern_insns if insn .name not in imp_insns ]
@@ -456,7 +469,7 @@ def main():
456
469
if insn .ext in VECTOR_EXTS :
457
470
insn_name = f"{ insn .name } _{ 'V1' if ('Vm' in fmt ) else 'V0' } " .upper ()
458
471
else :
459
- insn_name = f"{ insn .name } _ { fmt } "
472
+ insn_name = f"{ insn .name } _V0" . upper ()
460
473
461
474
# TODO Memory operands
462
475
insn_names .append (insn_name )
@@ -471,6 +484,10 @@ def main():
471
484
}
472
485
)
473
486
487
+ insn_names = sorted (insn_names )
488
+
489
+ assert len (insn_names ) == len (set (insn_names )), "Duplicate insn name detected!"
490
+
474
491
with open ("gen/instruction.yaml" , "w" , encoding = 'UTF-8' ) as stream :
475
492
yaml .dump (instruction_list , stream , sort_keys = True )
476
493
0 commit comments