inline std::string to_str() const;
inline void dump() const;
- inline val two_exp() const;
inline val abs() const;
inline boolean abs_eq(const val &v2) const;
inline val add(val v2) const;
static inline val neginfty(ctx ctx);
static inline val negone(ctx ctx);
static inline val one(ctx ctx);
+ inline val pow2() const;
inline val set_si(long i) const;
inline int sgn() const;
inline val sub(val v2) const;
} fn_data = { &fn };
auto fn_lambda = [](isl_schedule_node *arg_0, void *arg_1) -> isl_stat {
auto *data = static_cast<struct fn_data *>(arg_1);
- stat ret = (*data->func)(manage(arg_0));
+ stat ret = (*data->func)(manage_copy(arg_0));
return ret.release();
};
auto res = isl_schedule_node_foreach_ancestor_top_down(get(), fn_lambda, &fn_data);
}
-val val::two_exp() const
-{
- auto res = isl_val_2exp(copy());
- return manage(res);
-}
-
val val::abs() const
{
auto res = isl_val_abs(copy());
return manage(res);
}
+val val::pow2() const
+{
+ auto res = isl_val_pow2(copy());
+ return manage(res);
+}
+
val val::set_si(long i) const
{
auto res = isl_val_set_si(copy(), i);
{
APInt APNOne(32, (1ull << 32) - 1, false);
auto IslNOne = valFromAPInt(IslCtx, APNOne, false);
- auto IslRef = isl::val(IslCtx, 32).two_exp().sub_ui(1);
+ auto IslRef = isl::val(IslCtx, 32).pow2().sub_ui(1);
EXPECT_EQ(IslNOne, IslRef);
}
APLarge = APLarge.shl(70);
auto IslLarge = valFromAPInt(IslCtx, APLarge, false);
auto IslRef = isl::val(IslCtx, 71);
- IslRef = IslRef.two_exp();
+ IslRef = IslRef.pow2();
EXPECT_EQ(IslLarge, IslRef);
}
}
{
- auto IslNOne = isl::val(IslCtx, 32).two_exp().sub_ui(1);
+ auto IslNOne = isl::val(IslCtx, 32).pow2().sub_ui(1);
auto APNOne = APIntFromVal(IslNOne);
EXPECT_EQ((1ull << 32) - 1, APNOne);
EXPECT_EQ(33u, APNOne.getBitWidth());
{
auto IslLargeNum = isl::val(IslCtx, 60);
- IslLargeNum = IslLargeNum.two_exp();
+ IslLargeNum = IslLargeNum.pow2();
IslLargeNum = IslLargeNum.sub_ui(1);
auto APLargeNum = APIntFromVal(IslLargeNum);
EXPECT_EQ((1ull << 60) - 1, APLargeNum);
{
auto IslExp = isl::val(IslCtx, 500);
- auto IslLargePow2 = IslExp.two_exp();
+ auto IslLargePow2 = IslExp.pow2();
auto APLargePow2 = APIntFromVal(IslLargePow2);
EXPECT_TRUE(APLargePow2.isPowerOf2());
EXPECT_EQ(502u, APLargePow2.getBitWidth());
{
auto IslExp = isl::val(IslCtx, 500);
- auto IslLargeNPow2 = IslExp.two_exp().neg();
+ auto IslLargeNPow2 = IslExp.pow2().neg();
auto APLargeNPow2 = APIntFromVal(IslLargeNPow2);
EXPECT_EQ(501u, APLargeNPow2.getBitWidth());
EXPECT_EQ(501u, APLargeNPow2.getMinSignedBits());
{
auto IslExp = isl::val(IslCtx, 512);
- auto IslLargePow2 = IslExp.two_exp();
+ auto IslLargePow2 = IslExp.pow2();
auto APLargePow2 = APIntFromVal(IslLargePow2);
EXPECT_TRUE(APLargePow2.isPowerOf2());
EXPECT_EQ(514u, APLargePow2.getBitWidth());
{
auto IslExp = isl::val(IslCtx, 512);
- auto IslLargeNPow2 = IslExp.two_exp().neg();
+ auto IslLargeNPow2 = IslExp.pow2().neg();
auto APLargeNPow2 = APIntFromVal(IslLargeNPow2);
EXPECT_EQ(513u, APLargeNPow2.getBitWidth());
EXPECT_EQ(513u, APLargeNPow2.getMinSignedBits());