def maddu(rn, rm): """MADDU - Unsigned 32-bit multiplication, adding results to HI & LO registers""" # HI||LO <- HI||LO + Rn*Rm (Unsigned) result = (HI << i32(32)).zeroExtend(64) + LO.zeroExtend(64) + rn.zeroExtend(64) * rm.zeroExtend(64) # expand registers size HI = result[32:64] LO = result[:32]
def maddr(rn, rm): """MADDR - Signed 32-bit multiplication, adding results to HI & LO registers & storing LO in Rn""" # HI||LO <- HI||LO + Rn*Rm; Rn <- LO (Signed) result = (HI << i32(32)).signExtend(64) + LO.signExtend(64) + rn.signExtend(64) * rm.signExtend(64) # expand registers size HI = result[32:64] LO = result[:32] rn = result[:32]