def filled(self, params, ctx): reads = set() writes = set() values = dict() loads = [] for x in self.reads: if x.startswith("#"): assert(len(x) == 2) value = params[x[1]] operand = placeholders.get(x[1], value) # XXX: solution here: just add operand.getDependencies() if hasattr(operand, 'target'): reads.add('mem') reads |= splitRegister('HL') # TODO: XXX: bad else: reads |= splitRegister(operand.name) else: reads |= splitRegister(x) for x in self.writes: if x.startswith("#"): assert(len(x) == 2) value = params[x[1]] operand = placeholders.get(x[1], value) if hasattr(operand, 'target'): name = '['+operand.target.name+']' writes.add('mem') reads |= splitRegister('HL') # TODO: XXX: bad else: name = operand.name writes |= splitRegister(name) if x in self.values: e = parse(self.values[x]) values[name] = e.optimizedWithContext(ctx) loads.append((name, values[name])) else: writes |= splitRegister(x) if x in self.values: e = parse(self.values[x]) values[x] = e.optimizedWithContext(ctx) loads.append((x, values[x])) #values = dict() # TODO: XXX: #loads = [] return reads, writes, values, loads
def filled(self, params, ctx): reads = set() writes = set() values = dict() loads = [] for x in self.reads: if x.startswith("#"): assert (len(x) == 2) value = params[x[1]] operand = placeholders.get(x[1], value) # XXX: solution here: just add operand.getDependencies() if hasattr(operand, 'target'): reads.add('mem') reads |= splitRegister('HL') # TODO: XXX: bad else: reads |= splitRegister(operand.name) else: reads |= splitRegister(x) for x in self.writes: if x.startswith("#"): assert (len(x) == 2) value = params[x[1]] operand = placeholders.get(x[1], value) if hasattr(operand, 'target'): name = '[' + operand.target.name + ']' writes.add('mem') reads |= splitRegister('HL') # TODO: XXX: bad else: name = operand.name writes |= splitRegister(name) if x in self.values: e = parse(self.values[x]) values[name] = e.optimizedWithContext(ctx) loads.append((name, values[name])) else: writes |= splitRegister(x) if x in self.values: e = parse(self.values[x]) values[x] = e.optimizedWithContext(ctx) loads.append((x, values[x])) #values = dict() # TODO: XXX: #loads = [] return reads, writes, values, loads
def getDependencies(self): return splitRegister(self.name)
def getDependencySet(self): reads = set(self.target_depset.reads) for r in joinRegisters(reads): if r in self.constant_params: reads -= splitRegister(r) return DependencySet(reads, self.target_depset.writes)