on master help sign in
All primitives through equality
commita2ba53274b54d0f011b346d6a98ea95c5fec43c5 authorDavid Christiansen <david@davidchristiansen.dk> dateFri 21 Jun 2013, 14:35 (13 years ago) parent5fc4278
1 file changed+37
src/Core/Execute.hs+37
src/Core/Execute.hs+37
@@ -331,16 +331,53 @@ execApp' env ctxt f@(EP _ n _) args =
331331 primRes BI (i1 .&. i2)
332332 getOp (UN "prim__andInt") [EConstant (I i1), EConstant (I i2)] =
333333 primRes I (i1 .&. i2)
334+ getOp (UN "prim__ashrB16") [EConstant (B16 i1), EConstant (B16 i2)] =
335+ primRes B16 (shiftR i1 (fromIntegral i2))
336+ getOp (UN "prim__ashrB32") [EConstant (B32 i1), EConstant (B32 i2)] =
337+ primRes B32 (shiftR i1 (fromIntegral i2))
338+ getOp (UN "prim__ashrB64") [EConstant (B64 i1), EConstant (B64 i2)] =
339+ primRes B64 (shiftR i1 (fromIntegral i2))
340+ getOp (UN "prim__ashrB8") [EConstant (B8 i1), EConstant (B8 i2)] =
341+ primRes B8 (shiftR i1 (fromIntegral i2))
342+ getOp (UN "prim__ashrBigInt") [EConstant (BI i1), EConstant (BI i2)] =
343+ primRes BI (shiftR i1 (fromIntegral i2))
344+ getOp (UN "prim__ashrInt") [EConstant (I i1), EConstant (I i2)] =
345+ primRes I (shiftR i1 i2)
346+ getOp (UN "prim__believe_me") [_, _, arg] = Just (return arg)
334347 getOp (UN "prim__charToInt") [EConstant (Ch c)] =
335348 primRes I (fromEnum c)
349+ getOp (UN "prim__complB16") [EConstant (B16 i)] =
350+ primRes B16 (complement i)
351+ getOp (UN "prim__complB32") [EConstant (B32 i)] =
352+ primRes B32 (complement i)
353+ getOp (UN "prim__complB64") [EConstant (B64 i)] =
354+ primRes B64 (complement i)
355+ getOp (UN "prim__complB8") [EConstant (B8 i)] =
356+ primRes B8 (complement i)
357+ getOp (UN "prim__complBigInt") [EConstant (BI i)] =
358+ primRes BI (complement i)
336359 getOp (UN "prim__complInt") [EConstant (I i)] =
337360 primRes I (complement i)
338361 getOp (UN "prim__concat") [EConstant (Str s1), EConstant (Str s2)] =
339362 primRes Str (s1 ++ s2)
363+ getOp (UN "prim__divFloat") [EConstant (Fl f1), EConstant (Fl f2)] =
364+ primRes Fl (f1 / f2)
340365 getOp (UN "prim__divInt") [EConstant (I i1), EConstant (I i2)] =
341366 primRes I (i1 `div` i2)
367+ getOp (UN "prim__eqB16") [EConstant (B16 i1), EConstant (B16 i2)] =
368+ primResBool (i1 == i2)
369+ getOp (UN "prim__eqB32") [EConstant (B32 i1), EConstant (B32 i2)] =
370+ primResBool (i1 == i2)
371+ getOp (UN "prim__eqB64") [EConstant (B64 i1), EConstant (B64 i2)] =
372+ primResBool (i1 == i2)
373+ getOp (UN "prim__eqB8") [EConstant (B8 i1), EConstant (B8 i2)] =
374+ primResBool (i1 == i2)
375+ getOp (UN "prim__eqBigInt") [EConstant (BI i1), EConstant (BI i2)] =
376+ primResBool (i1 == i2)
342377 getOp (UN "prim__eqChar") [EConstant (Ch c1), EConstant (Ch c2)] =
343378 primResBool (c1 == c2)
379+ getOp (UN "prim__eqFloat") [EConstant (Fl i1), EConstant (Fl i2)] =
380+ primResBool (i1 == i2)
344381 getOp (UN "prim__eqInt") [EConstant (I i1), EConstant (I i2)] =
345382 primResBool (i1 == i2)
346383 getOp (UN "prim__eqString") [EConstant (Str s1), EConstant (Str s2)] =