@@ -404,6 +404,7 @@ sBin op [Str x, Str y] = Just $ Str (op x y)
404sBin _ _ = Nothing
404sBin _ _ = Nothing
406bsrem :: IntTy -> [Const] -> Maybe Const
406bsrem :: IntTy -> [Const] -> Maybe Const
407+bsrem ITBig [BI x, BI y] = Just . BI $ x `rem` y
407bsrem (ITFixed IT8) [B8 x, B8 y]
408bsrem (ITFixed IT8) [B8 x, B8 y]
408 = Just $ B8 (fromIntegral (fromIntegral x `rem` fromIntegral y :: Int8))
409 = Just $ B8 (fromIntegral (fromIntegral x `rem` fromIntegral y :: Int8))
409bsrem (ITFixed IT16) [B16 x, B16 y]
410bsrem (ITFixed IT16) [B16 x, B16 y]
@@ -429,6 +430,7 @@ bsrem (ITVec IT64 _) [B64V x, B64V y]
429bsrem _ _ = Nothing
430bsrem _ _ = Nothing
431bsdiv :: IntTy -> [Const] -> Maybe Const
432bsdiv :: IntTy -> [Const] -> Maybe Const
433+bsdiv ITBig [BI x, BI y] = Just . BI $ x `div` y
432bsdiv (ITFixed IT8) [B8 x, B8 y]
434bsdiv (ITFixed IT8) [B8 x, B8 y]
433 = Just $ B8 (fromIntegral (fromIntegral x `div` fromIntegral y :: Int8))
435 = Just $ B8 (fromIntegral (fromIntegral x `div` fromIntegral y :: Int8))
434bsdiv (ITFixed IT16) [B16 x, B16 y]
436bsdiv (ITFixed IT16) [B16 x, B16 y]
@@ -454,6 +456,7 @@ bsdiv (ITVec IT64 _) [B64V x, B64V y]
454bsdiv _ _ = Nothing
456bsdiv _ _ = Nothing
456bashr :: IntTy -> [Const] -> Maybe Const
458bashr :: IntTy -> [Const] -> Maybe Const
459+bashr ITBig [BI x, BI y] = Just $ BI (x `shiftR` fromIntegral y)
457bashr (ITFixed IT8) [B8 x, B8 y]
460bashr (ITFixed IT8) [B8 x, B8 y]
458 = Just $ B8 (fromIntegral (fromIntegral x `shiftR` fromIntegral y :: Int8))
461 = Just $ B8 (fromIntegral (fromIntegral x `shiftR` fromIntegral y :: Int8))
459bashr (ITFixed IT16) [B16 x, B16 y]
462bashr (ITFixed IT16) [B16 x, B16 y]