+ maxDiff = None
+
+ def test_op_set_to_list(self):
+ ops = [] # list[Op]
+ op0 = OpFuncArg(FixedGPRRangeType(GPRRange(3)))
+ ops.append(op0)
+ op1 = OpCopy(op0.out, GPRType())
+ ops.append(op1)
+ arg = op1.dest
+ op2 = OpInputMem()
+ ops.append(op2)
+ mem = op2.out
+ op3 = OpLoad(arg, offset=0, mem=mem, length=32)
+ ops.append(op3)
+ a = op3.RT
+ op4 = OpLI(1)
+ ops.append(op4)
+ b_0 = op4.out
+ op5 = OpLI(0, length=31)
+ ops.append(op5)
+ b_rest = op5.out
+ op6 = OpConcat([b_0, b_rest])
+ ops.append(op6)
+ b = op6.dest
+ op7 = OpClearCY()
+ ops.append(op7)
+ cy = op7.out
+ op8 = OpAddSubE(a, b, cy, is_sub=False)
+ ops.append(op8)
+ s = op8.RT
+ op9 = OpStore(s, arg, offset=0, mem_in=mem)
+ ops.append(op9)
+ mem = op9.mem_out
+
+ expected_ops = [
+ op7, # OpClearCY()
+ op5, # OpLI(0, length=31)
+ op4, # OpLI(1)
+ op2, # OpInputMem()
+ op0, # OpFuncArg(FixedGPRRangeType(GPRRange(3)))
+ op6, # OpConcat([b_0, b_rest])
+ op1, # OpCopy(op0.out, GPRType())
+ op3, # OpLoad(arg, offset=0, mem=mem, length=32)
+ op8, # OpAddSubE(a, b, cy, is_sub=False)
+ op9, # OpStore(s, arg, offset=0, mem_in=mem)
+ ]
+
+ ops = op_set_to_list(reversed(ops))
+ if ops != expected_ops:
+ self.assertEqual(repr(ops), repr(expected_ops))