1 import argparse
as _argparse
2 import codecs
as _codecs
3 import pathlib
as _pathlib
7 from openpower
.decoder
.power_enums
import (
15 CROutSel
as _CROutSel
,
22 r
"(?P<opcode>(?:2#[01]+#)|(?:[0-9]+)|(?:[01-]+))",
26 rf
"(?P<ptype>{'|'.join(item.name for item in _SVPtype)})",
27 rf
"(?P<etype>{'|'.join(item.name for item in _SVEtype)})",
28 rf
"(?P<in1>{'|'.join(item.name for item in _In1Sel)})",
29 rf
"(?P<in2>{'|'.join(item.name for item in _In2Sel)})",
30 rf
"(?P<in3>{'|'.join(item.name for item in _In3Sel)})",
31 rf
"(?P<out>{'|'.join(item.name for item in _OutSel)})",
32 rf
"(?P<out2>{'|'.join(item.name for item in _OutSel)})",
33 rf
"(?P<cr_in>{'|'.join(item.name for item in _CRInSel)})",
34 rf
"(?P<cr_out>{'|'.join(item.name for item in _CROutSel)})",
35 rf
"(?P<sv_in1>{'|'.join(item.name for item in _SVEXTRA)})",
36 rf
"(?P<sv_in2>{'|'.join(item.name for item in _SVEXTRA)})",
37 rf
"(?P<sv_in3>{'|'.join(item.name for item in _SVEXTRA)})",
38 rf
"(?P<sv_out>{'|'.join(item.name for item in _SVEXTRA)})",
39 rf
"(?P<sv_out2>{'|'.join(item.name for item in _SVEXTRA)})",
40 rf
"(?P<sv_cr_in>{'|'.join(item.name for item in _SVEXTRA)})",
41 rf
"(?P<sv_cr_out>{'|'.join(item.name for item in _SVEXTRA)})",
46 r
"(?P<insn>[A-Za-z0-9_\./]+)",
49 REGEX
= _re
.compile(PATTERN
)
54 match
= REGEX
.match(line
)
56 yield match
.groupdict()
61 with _codecs
.open(vhdl
, "rb", "UTF-8") as stream
:
62 for insn
in parse(stream
):
65 print(f
"{len(insns)} instructions found")
68 if __name__
== "__main__":
69 parser
= _argparse
.ArgumentParser()
70 parser
.add_argument("vhdl", type=_pathlib
.Path
, help="sv_decode.vhdl path")
72 args
= vars(parser
.parse_args())