+ # setting both fast and slow SPRs from test data
+
+ fregs = core.regs.fast
+ sregs = core.regs.spr
+ for sprname, val in test.sprs.items():
+ if isinstance(val, SelectableInt):
+ val = val.value
+ if isinstance(sprname, int):
+ sprname = spr_dict[sprname].SPR
+ if sprname == 'XER':
+ continue
+ fast = spr_to_fast_reg(sprname)
+ if fast is None:
+ # match behaviour of SPRMap in power_decoder2.py
+ for i, x in enumerate(SPR):
+ if sprname == x.name:
+ yield sregs[i].reg.eq(val)
+ print("setting slow SPR %d (%s) to %x" %
+ (i, sprname, val))
+ else:
+ yield fregs.regs[fast].reg.eq(val)
+ print("setting fast reg %d (%s) to %x" %
+ (fast, sprname, val))
+
+ # allow changes to settle before reporting on XER
+ yield Settle()
+