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); }
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); }