[meta] Use the Rust crate for opcodes/inst_builder code generation;

This commit is contained in:
Benjamin Bouvier
2019-03-11 19:50:31 +01:00
parent b5595aadd2
commit 9b156fd9bb
4 changed files with 44 additions and 817 deletions

View File

@@ -5,13 +5,32 @@
from __future__ import absolute_import
import argparse
import isa
import gen_instr
import gen_settings
import gen_build_deps
import gen_encoding
import gen_legalizer
import gen_binemit
try:
from typing import List, Set # noqa
from cdsl.isa import TargetISA # noqa
from cdsl.instructions import InstructionGroup # noqa
except ImportError:
pass
def number_all_instructions(isas):
# type: (List[TargetISA]) -> None
seen = set() # type: Set[InstructionGroup]
num_inst = 1
for target_isa in isas:
for g in target_isa.instruction_groups:
if g not in seen:
for i in g.instructions:
i.number = num_inst
num_inst += 1
seen.add(g)
def main():
# type: () -> None
@@ -23,8 +42,8 @@ def main():
out_dir = args.out_dir
isas = isa.all_isas()
number_all_instructions(isas)
gen_instr.generate(isas, out_dir)
gen_settings.generate(isas, out_dir)
gen_encoding.generate(isas, out_dir)
gen_legalizer.generate(isas, out_dir)