Exemple #1
0
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))
Exemple #2
0
    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