I don't get why the existance of a 64*64->128 multiply implies the need for a 128 bit number in MLton. I would just model the instruction as one whose type is Int64.int * Int64.int -> { high: Int64.int, low: Int64.int }