From fc25f0a8e42a134774d21a7bf4e71be4a16a0736 Mon Sep 17 00:00:00 2001 From: Dmitry Selyutin Date: Thu, 7 Sep 2023 22:40:37 +0300 Subject: [PATCH] libsvp64: support CR operands --- src/libsvp64/codegen.py | 8 ++++++++ src/libsvp64/svp64.h | 2 ++ 2 files changed, 10 insertions(+) diff --git a/src/libsvp64/codegen.py b/src/libsvp64/codegen.py index 4e06e0ad..c916ff3a 100644 --- a/src/libsvp64/codegen.py +++ b/src/libsvp64/codegen.py @@ -313,12 +313,20 @@ class DisGenSource(Source): else: yield from generic_handler(span, "(SVP64_OPERAND_FPR | SVP64_OPERAND_PAIR)") + def cr3_handler(span): + yield from generic_handler(span, "SVP64_OPERAND_CR3") + + def cr5_handler(span): + yield from generic_handler(span, "SVP64_OPERAND_CR5") + handlers = { insndb.SignedOperand: signed_handler, insndb.GPROperand: gpr_handler, insndb.FPROperand: fpr_handler, insndb.GPRPairOperand: lambda span: gpr_handler(span, True), insndb.FPRPairOperand: lambda span: fpr_handler(span, True), + insndb.CR3Operand: cr3_handler, + insndb.CR5Operand: cr5_handler, } self.emit(f"case 0x{(path + 1):02x}: /* {', '.join(node.names)} */") with self: diff --git a/src/libsvp64/svp64.h b/src/libsvp64/svp64.h index f377c97a..c45a7e54 100644 --- a/src/libsvp64/svp64.h +++ b/src/libsvp64/svp64.h @@ -36,6 +36,8 @@ struct svp64_operand { #define SVP64_OPERAND_GPR (UINT32_C(1) << UINT32_C(1)) #define SVP64_OPERAND_FPR (UINT32_C(1) << UINT32_C(2)) #define SVP64_OPERAND_PAIR (UINT32_C(1) << UINT32_C(3)) +#define SVP64_OPERAND_CR3 (UINT32_C(1) << UINT32_C(4)) +#define SVP64_OPERAND_CR5 (UINT32_C(1) << UINT32_C(5)) struct svp64_ctx { struct svp64_record const *record; -- 2.30.2