From 8de5c3faffd2c92cb223745252e601da06b83080 Mon Sep 17 00:00:00 2001 From: anthony cantor Date: Tue, 3 Sep 2013 18:09:59 -0600 Subject: [PATCH] added some methods to llvm.mc.Operand methods that describe what type of operand it is --- llvm/mc/__init__.py | 45 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/llvm/mc/__init__.py b/llvm/mc/__init__.py index c35d7d7..58dd4b2 100644 --- a/llvm/mc/__init__.py +++ b/llvm/mc/__init__.py @@ -26,15 +26,15 @@ class Operand(object): def __str__(self): s = "invalid" - if self.op.isReg(): + if self.is_reg(): s = "reg(%s)" % (self.reg_name()) - elif self.op.isImm(): + elif self.is_imm(): s = "imm(0x%02x)" % (self.op.getImm()) - elif self.op.isFPImm(): + elif self.is_fp_imm(): s = "imm(%r)" % (self.op.getFPImm()) - elif self.op.isExpr(): + elif self.is_expr(): s = "expr(%r)" % (self.op.getExpr().getKind()) - elif self.op.isInst(): + elif self.is_inst(): s = repr(Instr(self.op.getInst())) return s @@ -43,7 +43,7 @@ class Operand(object): return str(self) def reg_name(self): - if self.op.isReg(): + if self.is_reg(): s = self.tm.reg_info.getName(self.op.getReg()) if s.strip() == "": return "?" @@ -52,6 +52,39 @@ class Operand(object): else: return "" + def is_reg(self): + return self.op.isReg() + + def is_imm(self): + return self.op.isImm() + + def is_fp_imm(self): + return self.op.isFPImm() + + def is_expr(self): + return self.op.isExpr() + + def is_inst(self): + return self.op.isInst() + + def get_imm(self): + if self.is_imm(): + return self.op.getImm() + else: + return None + + def get_fp_imm(self): + if self.is_fp_imm(): + return self.op.getFPImm() + else: + return None + + def get_inst(self): + if self.is_inst(): + return Instr(self.op.getInst()) + else: + return None + class Instr(object): def __init__(self, mcinst, target_machine):