From 23623ca18af3bce686c0d60ee9cd6de30a469135 Mon Sep 17 00:00:00 2001 From: JanLJL Date: Mon, 7 Dec 2020 00:51:15 +0100 Subject: [PATCH] enhancements for lookup and parsing AArch64 instrs --- osaca/parser/parser_AArch64.py | 10 ++++++---- osaca/semantics/hw_model.py | 5 ++++- 2 files changed, 10 insertions(+), 5 deletions(-) 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