diff --git a/osaca/parser/parser_AArch64.py b/osaca/parser/parser_AArch64.py index 012a6f7..f32619a 100755 --- a/osaca/parser/parser_AArch64.py +++ b/osaca/parser/parser_AArch64.py @@ -123,10 +123,12 @@ class ParserAArch64(BaseParser): vector = ( pp.oneOf('v z', caseless=True).setResultsName('prefix') + pp.Word(pp.nums).setResultsName('name') - + pp.Literal('.') - + pp.Optional(pp.Word('12468')).setResultsName('lanes') - + pp.Word(pp.alphas, exact=1).setResultsName('shape') - + pp.Optional(index) + + pp.Optional( + pp.Literal('.') + + pp.Optional(pp.Word('12468')).setResultsName('lanes') + + pp.Word(pp.alphas, exact=1).setResultsName('shape') + + pp.Optional(index) + ) ) predicate = ( pp.CaselessLiteral('p').setResultsName('prefix') diff --git a/osaca/semantics/hw_model.py b/osaca/semantics/hw_model.py index 9968e43..7e5ca3c 100755 --- a/osaca/semantics/hw_model.py +++ b/osaca/semantics/hw_model.py @@ -574,7 +574,10 @@ class MachineModel(object): if reg['prefix'] != i_reg['prefix']: return False if 'shape' in reg: - if 'shape' in i_reg and reg['shape'] == i_reg['shape']: + if 'shape' in i_reg and ( + reg['shape'] == i_reg['shape'] + or self.WILDCARD in (reg['shape'] + i_reg['shape']) + ): return True return False return True