From 08d1b28b3de1ba7fd15acbf4bc8feb094471a5e4 Mon Sep 17 00:00:00 2001 From: Tobias Grosser Date: Thu, 3 Aug 2017 12:43:44 +0200 Subject: [PATCH] cpp/python: export operators for isl_pw_aff This patch adds operators for: isl_pw_aff_neg isl_pw_aff_add isl_pw_aff_sub isl_pw_aff_mul isl_pw_aff_div We only export operators which have a direct mathematical counterpart and which consequently are unlikely to cause any confusion. Signed-off-by: Tobias Grosser --- include/isl/aff.h | 10 +++++----- interface/isl_test_cpp.cpp | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/include/isl/aff.h b/include/isl/aff.h index 395f58e8..03262ec2 100644 --- a/include/isl/aff.h +++ b/include/isl/aff.h @@ -251,19 +251,19 @@ __isl_give isl_pw_aff *isl_pw_aff_min(__isl_take isl_pw_aff *pwaff1, __isl_export __isl_give isl_pw_aff *isl_pw_aff_max(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2); -__isl_export +__isl_operator __isl_give isl_pw_aff *isl_pw_aff_mul(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2); -__isl_export +__isl_operator __isl_give isl_pw_aff *isl_pw_aff_div(__isl_take isl_pw_aff *pa1, __isl_take isl_pw_aff *pa2); -__isl_export +__isl_operator __isl_give isl_pw_aff *isl_pw_aff_add(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2); -__isl_export +__isl_operator __isl_give isl_pw_aff *isl_pw_aff_sub(__isl_take isl_pw_aff *pwaff1, __isl_take isl_pw_aff *pwaff2); -__isl_export +__isl_operator __isl_give isl_pw_aff *isl_pw_aff_neg(__isl_take isl_pw_aff *pwaff); __isl_export __isl_give isl_pw_aff *isl_pw_aff_ceil(__isl_take isl_pw_aff *pwaff); diff --git a/interface/isl_test_cpp.cpp b/interface/isl_test_cpp.cpp index d93f488f..8d8e4260 100644 --- a/interface/isl_test_cpp.cpp +++ b/interface/isl_test_cpp.cpp @@ -366,6 +366,31 @@ void test_operators_aff(isl::ctx ctx) assert((four / two).plain_is_equal(two)); } +/* Test C++ operators for isl_pw_aff + * + * This includes: + * + * # Arithmetic + * - negation + * - addition / subtraction + * - multiplication / division + */ +void test_operators_pw_aff(isl::ctx ctx) +{ + isl::pw_aff i(ctx, "{ [i] -> [i] }"); + isl::pw_aff zero(ctx, "{ [i] -> [0] }"); + isl::pw_aff one(ctx, "{ [i] -> [1] }"); + isl::pw_aff neg_one(ctx, "{ [i] -> [-1] }"); + isl::pw_aff two(ctx, "{ [i] -> [2] }"); + isl::pw_aff four(ctx, "{ [i] -> [4] }"); + + assert((-one).plain_is_equal(neg_one)); + assert((zero + one).plain_is_equal(one)); + assert((zero - one).plain_is_equal(neg_one)); + assert((zero * one).plain_is_equal(zero)); + assert((four / two).plain_is_equal(two)); +} + /* Test C++ operators for: * * - isl_val @@ -375,6 +400,7 @@ void test_operators(isl::ctx ctx) { test_operators_val(ctx); test_operators_aff(ctx); + test_operators_pw_aff(ctx); } /* Test the isl C++ interface