Skip to content

Commit fcf14a9

Browse files
committed
Ensure that true/false are also XLEN bitvectors in default interpreter
1 parent 64ae41e commit fcf14a9

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

lib/LibRISCV/Effects/Expressions/Default/Interpreter.hs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ import Data.Word (Word8)
1616
import LibRISCV.Effects.Expressions.Expr (Expr (..))
1717
import LibRISCV.Effects.Expressions.Language (ExprEval (..))
1818

19+
trueConst :: BV
20+
trueConst = bitVec 32 (1 :: Int32)
21+
22+
falseConst :: BV
23+
falseConst = bitVec 32 (0 :: Int32)
24+
1925
-- | Evaluate an 'Expr' abstraction which encapsulates a concrete 'BV'.
2026
evalE :: Expr BV -> BV
2127
evalE (FromImm a) = a
@@ -27,11 +33,11 @@ evalE (Add e1 e2) = evalE e1 + evalE e2
2733
evalE (Sub e1 e2) =
2834
fromIntegral $
2935
(fromIntegral (evalE e1) :: Int32) - fromIntegral (evalE e2)
30-
evalE (Eq e1 e2) = bool 0 1 $ (fromIntegral (evalE e1) :: Int32) == fromIntegral (evalE e2)
31-
evalE (Slt e1 e2) = bool 0 1 $ (fromIntegral (evalE e1) :: Int32) < fromIntegral (evalE e2)
32-
evalE (Sge e1 e2) = bool 0 1 $ (fromIntegral (evalE e1) :: Int32) >= fromIntegral (evalE e2)
33-
evalE (Ult e1 e2) = bool 0 1 $ evalE e1 < evalE e2
34-
evalE (Uge e1 e2) = bool 0 1 $ evalE e1 >= evalE e2
36+
evalE (Eq e1 e2) = bool falseConst trueConst $ (fromIntegral (evalE e1) :: Int32) == fromIntegral (evalE e2)
37+
evalE (Slt e1 e2) = bool falseConst trueConst $ (fromIntegral (evalE e1) :: Int32) < fromIntegral (evalE e2)
38+
evalE (Sge e1 e2) = bool falseConst trueConst $ (fromIntegral (evalE e1) :: Int32) >= fromIntegral (evalE e2)
39+
evalE (Ult e1 e2) = bool falseConst trueConst $ evalE e1 < evalE e2
40+
evalE (Uge e1 e2) = bool falseConst trueConst $ evalE e1 >= evalE e2
3541
evalE (And e1 e2) = evalE e1 .&. evalE e2
3642
evalE (Or e1 e2) = evalE e1 .|. evalE e2
3743
evalE (Xor e1 e2) = evalE e1 `xor` evalE e2

0 commit comments

Comments
 (0)