binary :: ArithTy -> Operand -> Operand
     -> (Operand -> Operand -> InstructionMetadata -> Instruction) -> Codegen Operand
binary ty x y instCon = do
  nx <- unbox (FArith ty) x
  ny <- unbox (FArith ty) y
  nr <- inst $ instCon nx ny []
  box (FArith ty) nr
binary :: ArithTy -> Operand -> Operand
     -> (Operand -> Operand -> InstructionMetadata -> Instruction) -> Codegen Operand
binary ty x y instCon = do
  nx <- unbox (FArith ty) x
  ny <- unbox (FArith ty) y
  nr <- inst $ instCon nx ny []
  box (FArith ty) nr
binary ty x y instCon = do
  nx <- unbox (FArith ty) x
  ny <- unbox (FArith ty) y
  nr <- inst $ instCon nx ny []
  box (FArith ty) nr