yield "flags = SVP64_OPERAND_SIGNED;"
self.emit("break;")
- def gpr_handler(span):
- yield from generic_handler(span, "SVP64_OPERAND_GPR")
-
- def fpr_handler(span):
- yield from generic_handler(span, "SVP64_OPERAND_FPR")
+ def gpr_handler(span, pair=False):
+ if not pair:
+ yield from generic_handler(span, "SVP64_OPERAND_GPR")
+ else:
+ yield from generic_handler(span, "(SVP64_OPERAND_GPR | SVP64_OPERAND_PAIR)")
+
+ def fpr_handler(span, pair=False):
+ if not pair:
+ yield from generic_handler(span, "SVP64_OPERAND_FPR")
+ else:
+ yield from generic_handler(span, "(SVP64_OPERAND_FPR | SVP64_OPERAND_PAIR)")
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),
}
self.emit(f"case 0x{(path + 1):02x}: /* {', '.join(node.names)} */")
with self:
#define SVP64_OPERAND_SIGNED (UINT32_C(1) << UINT32_C(0))
#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))
struct svp64_ctx {
struct svp64_record const *record;