@@ -354,17 +354,17 @@ doOp v (LTrunc ITBig to) [x] = v ++ "idris_b" ++ show (intTyWidth to) ++ "const(
354doOp v (LTrunc from to) [x]
354doOp v (LTrunc from to) [x]
355 | intTyWidth from > intTyWidth to = bitCoerce v "T" from to x
355 | intTyWidth from > intTyWidth to = bitCoerce v "T" from to x
357−doOp v LFExp [x] = v ++ "MKFLOAT(exp(GETFLOAT(" ++ creg x ++ ")))"
357+doOp v LFExp [x] = v ++ flUnOp "exp" (creg x)
358−doOp v LFLog [x] = v ++ "MKFLOAT(log(GETFLOAT(" ++ creg x ++ ")))"
358+doOp v LFLog [x] = v ++ flUnOp "log" (creg x)
359−doOp v LFSin [x] = v ++ "MKFLOAT(sin(GETFLOAT(" ++ creg x ++ ")))"
359+doOp v LFSin [x] = v ++ flUnOp "sin" (creg x)
360−doOp v LFCos [x] = v ++ "MKFLOAT(cos(GETFLOAT(" ++ creg x ++ ")))"
360+doOp v LFCos [x] = v ++ flUnOp "cos" (creg x)
361−doOp v LFTan [x] = v ++ "MKFLOAT(tan(GETFLOAT(" ++ creg x ++ ")))"
361+doOp v LFTan [x] = v ++ flUnOp "tan" (creg x)
362−doOp v LFASin [x] = v ++ "MKFLOAT(asin(GETFLOAT(" ++ creg x ++ ")))"
362+doOp v LFASin [x] = v ++ flUnOp "asin" (creg x)
363−doOp v LFACos [x] = v ++ "MKFLOAT(acos(GETFLOAT(" ++ creg x ++ ")))"
363+doOp v LFACos [x] = v ++ flUnOp "acos" (creg x)
364−doOp v LFATan [x] = v ++ "MKFLOAT(atan(GETFLOAT(" ++ creg x ++ ")))"
364+doOp v LFATan [x] = v ++ flUnOp "atan" (creg x)
365−doOp v LFSqrt [x] = v ++ "MKFLOAT(floor(GETFLOAT(" ++ creg x ++ ")))"
365+doOp v LFSqrt [x] = v ++ flUnOp "sqrt" (creg x)
366−doOp v LFFloor [x] = v ++ "MKFLOAT(ceil(GETFLOAT(" ++ creg x ++ ")))"
366+doOp v LFFloor [x] = v ++ flUnOp "floor" (creg x)
367−doOp v LFCeil [x] = v ++ "MKFLOAT(sqrt(GETFLOAT(" ++ creg x ++ ")))"
367+doOp v LFCeil [x] = v ++ flUnOp "ceil" (creg x)
369doOp v LStrHead [x] = v ++ "idris_strHead(vm, " ++ creg x ++ ")"
369doOp v LStrHead [x] = v ++ "idris_strHead(vm, " ++ creg x ++ ")"
370doOp v LStrTail [x] = v ++ "idris_strTail(vm, " ++ creg x ++ ")"
370doOp v LStrTail [x] = v ++ "idris_strTail(vm, " ++ creg x ++ ")"
@@ -383,3 +383,6 @@ doOp v (LChInt ITNative) args = v ++ creg (last args)
383doOp v (LIntCh ITNative) args = v ++ creg (last args)
383doOp v (LIntCh ITNative) args = v ++ creg (last args)
384doOp v LNoOp args = v ++ creg (last args)
384doOp v LNoOp args = v ++ creg (last args)
385doOp _ op _ = "FAIL /* " ++ show op ++ " */"
385doOp _ op _ = "FAIL /* " ++ show op ++ " */"
387+flUnOp :: String -> String -> String
388+flUnOp name val = "MKFLOAT(vm, " ++ name ++ "(GETFLOAT(" ++ val ++ ")))"