from gbso.program.mutate import create_random_program from time import time from gbso.cpu.state import CPUState from gbso.program.test_case import TestCase from gbso.cpu.insn import * from gbso.cpu.regs import R8 from gbso.optimize import OptimizationParameters, cost, optimize from gbso.program.program import Program prgm = Program( insns=[ INC_R(R8.A), INC_R(R8.A), INC_R(R8.A), INC_R(R8.A), ], ) outputs = [R8.A] test_cases = [TestCase(), TestCase(state=CPUState(carry=1))] params = OptimizationParameters(max_size=4) print("Program to optimize:") prgm.display() print(f"Cost: 0.0") print(f"Cycles: {prgm.perf()}") start_time = time() optimized_prgm = optimize( prgm, test_cases, outputs, params, ) end_time = time() print("Optimized result:") optimized_prgm.display() optimized_cost = cost(prgm, test_cases, outputs, optimized_prgm) optimized_cycles = optimized_prgm.perf() print(f"Cost: {optimized_cost[0]}") print(f"Cycles: {optimized_cycles}") print(f"Took {round(end_time - start_time, 3)} seconds")