isl_pw_templ.c: extract out isl_pw_scale_templ.c
authorSven Verdoolaege <sven@cerebras.net>
Tue, 9 Aug 2022 08:48:22 +0000 (9 10:48 +0200)
committerSven Verdoolaege <sven@cerebras.net>
Tue, 1 Nov 2022 13:55:23 +0000 (1 14:55 +0100)
This makes the definition of isl_pw_*_scale optional,
allowing some instances to be removed in the next commit.

Signed-off-by: Sven Verdoolaege <sven@cerebras.net>
Makefile.am
isl_aff.c
isl_fold.c
isl_polynomial.c
isl_pw_scale_templ.c [new file with mode: 0644]
isl_pw_templ.c

index f449a84..926b194 100644 (file)
@@ -614,6 +614,7 @@ EXTRA_DIST = \
        isl_pw_opt_templ.c \
        isl_pw_pullback_templ.c \
        isl_pw_range_tuple_id_templ.c \
+       isl_pw_scale_templ.c \
        isl_pw_sub_templ.c \
        isl_pw_un_op_templ.c \
        isl_pw_union_opt.c \
index 6f3e7d7..8b2ae03 100644 (file)
--- a/isl_aff.c
+++ b/isl_aff.c
@@ -2801,6 +2801,7 @@ static __isl_give isl_aff *isl_aff_zero_in_space(__isl_take isl_space *space)
 #include <isl_pw_move_dims_templ.c>
 #include <isl_pw_neg_templ.c>
 #include <isl_pw_pullback_templ.c>
+#include <isl_pw_scale_templ.c>
 #include <isl_pw_sub_templ.c>
 #include <isl_pw_union_opt.c>
 
@@ -4606,6 +4607,7 @@ __isl_give isl_set *isl_multi_aff_lex_gt_set(__isl_take isl_multi_aff *ma1,
 #include <isl_pw_neg_templ.c>
 #include <isl_pw_pullback_templ.c>
 #include <isl_pw_range_tuple_id_templ.c>
+#include <isl_pw_scale_templ.c>
 #include <isl_pw_union_opt.c>
 
 #undef BASE
index 2d7f85c..cba2fce 100644 (file)
@@ -957,6 +957,7 @@ static __isl_give isl_qpolynomial_fold *isl_qpolynomial_fold_zero_in_space(
 #include <isl_pw_morph_templ.c>
 #include <isl_pw_move_dims_templ.c>
 #include <isl_pw_opt_templ.c>
+#include <isl_pw_scale_templ.c>
 
 #undef BASE
 #define BASE pw_qpolynomial_fold
index 45c598f..038937c 100644 (file)
@@ -3116,6 +3116,7 @@ static __isl_give isl_qpolynomial *isl_qpolynomial_zero_in_space(
 #include <isl_pw_move_dims_templ.c>
 #include <isl_pw_neg_templ.c>
 #include <isl_pw_opt_templ.c>
+#include <isl_pw_scale_templ.c>
 #include <isl_pw_sub_templ.c>
 
 #undef BASE
diff --git a/isl_pw_scale_templ.c b/isl_pw_scale_templ.c
new file mode 100644 (file)
index 0000000..81c8495
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2010      INRIA Saclay
+ *
+ * Use of this software is governed by the MIT license
+ *
+ * Written by Sven Verdoolaege, INRIA Saclay - Ile-de-France,
+ * Parc Club Orsay Universite, ZAC des vignes, 4 rue Jacques Monod,
+ * 91893 Orsay, France
+ */
+
+#include <isl_pw_macro.h>
+
+__isl_give PW *FN(PW,scale)(__isl_take PW *pw, isl_int v)
+{
+       int i;
+       isl_size n;
+
+       if (isl_int_is_one(v))
+               return pw;
+       if (pw && DEFAULT_IS_ZERO && isl_int_is_zero(v)) {
+               PW *zero;
+               isl_space *space = FN(PW,get_space)(pw);
+               zero = FN(PW,ZERO)(space OPT_TYPE_ARG(pw->));
+               FN(PW,free)(pw);
+               return zero;
+       }
+       if (isl_int_is_neg(v))
+               pw = FN(PW,negate_type)(pw);
+
+       n = FN(PW,n_piece)(pw);
+       if (n < 0)
+               return FN(PW,free)(pw);
+       for (i = 0; i < n; ++i) {
+               EL *el;
+
+               el = FN(PW,take_base_at)(pw, i);
+               el = FN(EL,scale)(el, v);
+               pw = FN(PW,restore_base_at)(pw, i, el);
+       }
+
+       return pw;
+}
index 1d53f50..284caa9 100644 (file)
@@ -1901,37 +1901,6 @@ static __isl_give PW *FN(PW,negate_type)(__isl_take PW *pw)
 }
 #endif
 
-__isl_give PW *FN(PW,scale)(__isl_take PW *pw, isl_int v)
-{
-       int i;
-       isl_size n;
-
-       if (isl_int_is_one(v))
-               return pw;
-       if (pw && DEFAULT_IS_ZERO && isl_int_is_zero(v)) {
-               PW *zero;
-               isl_space *space = FN(PW,get_space)(pw);
-               zero = FN(PW,ZERO)(space OPT_TYPE_ARG(pw->));
-               FN(PW,free)(pw);
-               return zero;
-       }
-       if (isl_int_is_neg(v))
-               pw = FN(PW,negate_type)(pw);
-
-       n = FN(PW,n_piece)(pw);
-       if (n < 0)
-               return FN(PW,free)(pw);
-       for (i = 0; i < n; ++i) {
-               EL *el;
-
-               el = FN(PW,take_base_at)(pw, i);
-               el = FN(EL,scale)(el, v);
-               pw = FN(PW,restore_base_at)(pw, i, el);
-       }
-
-       return pw;
-}
-
 /* Multiply the pieces of "pw" by "v" and return the result.
  */
 __isl_give PW *FN(PW,scale_val)(__isl_take PW *pw, __isl_take isl_val *v)