+ # 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()
+
+ # XER
+ pdecode2 = core.pdecode2
+ so = yield xregs.regs[xregs.SO].reg
+ ov = yield xregs.regs[xregs.OV].reg
+ ca = yield xregs.regs[xregs.CA].reg
+ oe = yield pdecode2.e.do.oe.oe
+ oe_ok = yield pdecode2.e.do.oe.oe_ok
+
+ print("before: so/ov-32/ca-32", so, bin(ov), bin(ca))
+ print("oe:", oe, oe_ok)
+