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