def decodeDependencySet(text): if not text: return DependencySet() r, w = text.split("->") reads = set(x.strip() for x in r.split(",")) writes = set(x.strip() for x in w.split(",")) return DependencySet(splitRegisters(reads), splitRegisters(writes))
def splitToSimple(self): if 'sideeffects' in self._writes: return [self] writes = set(self._writes) - set(['mem']) out = [] for w in self._loads: name = w[0] value = w[1] target = parse(name) writes -= splitRegisters(target.getDependencies()) instr = LoadInstruction('LD_'+self.name, target, value, self.addr) out.append(instr) for w in writes: value = ComplexValue(self.name, self.getDependencySet().reads) target = parse(w) instr = LoadInstruction('LD_'+self.name, target, value, self.addr) out.append(instr) return out