Skip to content

Commit

Permalink
model: extend Seal5Register and Seal5RegisterGroup classes 2
Browse files Browse the repository at this point in the history
  • Loading branch information
PhilippvK committed Aug 16, 2024
1 parent 6ccf3f2 commit c92ddd1
Showing 1 changed file with 19 additions and 6 deletions.
25 changes: 19 additions & 6 deletions seal5/transform/detect_registers.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,15 @@ def detect_registers(set_def: seal5_model.Seal5InstructionSet):
continue
assert mem_name not in set_def.registers, "Registers already added to set."
name = mem_name
size = mem.size
width = None
# print("name", name)
size = mem.data_range.length
# print("size", size)
width = mem.size
# print("width", width)
# TODO: implement memory dtype in m2isar
# assert mem.data_type in [arch.DataType.S, arch.DataType.U], f"Unsupported dtype {mem.data_type} for memory {mem_name}"
# signed = mem.data_type == arch.DataType.S
signed = False
reg_class = seal5_model.Seal5RegisterClass.CUSTOM
if name == "X":
reg_class = seal5_model.Seal5RegisterClass.GPR
Expand All @@ -42,13 +49,16 @@ def detect_registers(set_def: seal5_model.Seal5InstructionSet):
if size is None:
raise NotImplementedError(f"Register with unknown size: {name}")
if size > 1: # TODO: check this!
names = [f"{name}{i}" for i in range(size)]
group = seal5_model.Seal5RegisterGroup(names, size, width, reg_class)
names = [f"{name}{i}" for i in range(mem.data_range.lower, mem.data_range.upper + 1)]
# print("names", names)
group = seal5_model.Seal5RegisterGroup(names, size, width, signed, reg_class)
# print("group", group)
set_def.register_groups[name] = group
for reg in group.registers:
set_def.registers[name] = reg
set_def.registers[reg.name] = reg
else:
reg = seal5_model.Seal5Register(name, size, width, reg_class)
reg = seal5_model.Seal5Register(name, size, width, signed, reg_class)
# print("reg", reg)
set_def.registers[name] = reg


Expand Down Expand Up @@ -87,6 +97,9 @@ def run(args):
continue
logger.info("processing set %s", set_name)
detect_registers(set_def)
print("set_def.register", set_def.registers)
print("set_def.register_groups", set_def.register_groups)
# input("@")

logger.info("dumping model")
with open(model_path, "wb") as f:
Expand Down

0 comments on commit c92ddd1

Please sign in to comment.