@@ -857,6 +857,20 @@ cgOp (LOr ITBig) [x,y] = mpzBin "ior" x y
857cgOp (LXOr ITBig) [x,y] = mpzBin "xor" x y
857cgOp (LXOr ITBig) [x,y] = mpzBin "xor" x y
858cgOp (LCompl ITBig) [x] = mpzUn "com" x
858cgOp (LCompl ITBig) [x] = mpzUn "com" x
860+cgOp (LTrunc ITNative (ITFixed to)) [x]
861+ | 32 >= nativeTyWidth to = iCoerce Trunc IT32 to x
862+cgOp (LZExt ITNative (ITFixed to)) [x]
863+ | 32 <= nativeTyWidth to = iCoerce ZExt IT32 to x
864+cgOp (LSExt ITNative (ITFixed to)) [x]
865+ | 32 <= nativeTyWidth to = iCoerce SExt IT32 to x
867+cgOp (LTrunc (ITFixed from) ITNative) [x]
868+ | nativeTyWidth from >= 32 = iCoerce Trunc from IT32 x
869+cgOp (LZExt (ITFixed from) ITNative) [x]
870+ | nativeTyWidth from <= 32 = iCoerce ZExt from IT32 x
871+cgOp (LSExt (ITFixed from) ITNative) [x]
872+ | nativeTyWidth from <= 32 = iCoerce SExt from IT32 x
860cgOp (LTrunc (ITFixed from) (ITFixed to)) [x]
874cgOp (LTrunc (ITFixed from) (ITFixed to)) [x]
861 | nativeTyWidth from > nativeTyWidth to = iCoerce Trunc from to x
875 | nativeTyWidth from > nativeTyWidth to = iCoerce Trunc from to x
862cgOp (LZExt (ITFixed from) (ITFixed to)) [x]
876cgOp (LZExt (ITFixed from) (ITFixed to)) [x]