Example #1
0
        public void NoFold()
        {
            var builderPair  = GetSimpleAndConstantFoldingBuilder();
            var sfb          = builderPair.Item1;
            var cfb          = builderPair.Item2;
            var v0           = GetVarAndIdExpr("x", BasicType.GetBvType(8));
            var v1           = GetVarAndIdExpr("y", BasicType.GetBvType(8));
            var foldedResult = cfb.BVASHR(v0.Item2, v1.Item2);
            var simpleResult = sfb.BVASHR(v0.Item2, v1.Item2);

            CheckIsBvType(foldedResult, 8);
            CheckIsBvType(simpleResult, 8);
            Assert.IsNotNull(ExprUtil.AsBVASHR(foldedResult));
            Assert.AreEqual(simpleResult, foldedResult);
        }
Example #2
0
        public void OvershiftExpr(int bitWidth, int shiftWidth)
        {
            var builders     = GetSimpleAndConstantFoldingBuilder();
            var sb           = builders.Item1;
            var cfb          = builders.Item2;
            var id           = GetVarAndIdExpr("x", BasicType.GetBvType(bitWidth)).Item2;
            var result       = cfb.BVASHR(id, cfb.ConstantBV(shiftWidth, bitWidth));
            var simpleResult = sb.BVASHR(id, sb.ConstantBV(shiftWidth, bitWidth));

            CheckIsBvType(result, bitWidth);
            CheckIsBvType(simpleResult, bitWidth);
            Assert.IsFalse(ExprUtil.IsZero(result));
            Assert.IsNotNull(ExprUtil.AsBVASHR(result));
            Assert.IsNotNull(ExprUtil.AsBVASHR(simpleResult));
            Assert.AreEqual(simpleResult, result);
        }