Remove outermost loop parameter.
[official-gcc/graphite-test-results.git] / libpcp / pcp_scalar_order.h
blob8bf16b1e389c4a1ba5b84d8bc146a02dc1743551
1 // Copyright (C) 2009 Free Software Foundation, Inc.
2 // Contributed by Jan Sjodin <jan.sjodin@amd.com>.
4 // This file is part of the Polyhedral Compilation Package Library (libpcp).
6 // Libpcp is free software; you can redistribute it and/or modify it
7 // under the terms of the GNU Lesser General Public License as published by
8 // the Free Software Foundation; either version 2.1 of the License, or
9 // (at your option) any later version.
11 // Libpcp is distributed in the hope that it will be useful, but WITHOUT ANY
12 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
14 // more details.
16 // You should have received a copy of the GNU Lesser General Public License
17 // along with libpcp; see the file COPYING.LIB. If not, write to the
18 // Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 // MA 02110-1301, USA.
21 // As a special exception, if you link this library with other files, some
22 // of which are compiled with GCC, to produce an executable, this library
23 // does not by itself cause the resulting executable to be covered by the
24 // GNU General Public License. This exception does not however invalidate
25 // any other reasons why the executable file might be covered by the GNU
26 // General Public License.
28 #ifndef _PCP_SCALAR_ORDER_
29 #define _PCP_SCALAR_ORDER_
30 #include "pcp.h"
31 #include "pcp_map.h"
32 #include "pcp_visitor.h"
34 class PcpScalarOrder
36 protected:
37 PcpMap<PcpExpr*, int>* orderMap;
39 void setOrderMap(PcpMap<PcpExpr*, int>* orderMap);
40 PcpMap<PcpExpr*, int>* getOrderMap();
43 class Visitor : public PcpVisitor
45 protected:
46 int ivCount;
47 int parameterCount;
48 PcpMap<PcpExpr*, int>* orderMap;
50 void setIvCount(int ivCount);
51 int getIvCount();
52 void incrementIvCount();
53 void decrementIvCount();
55 void setParameterCount(int parameterCount);
56 int getParameterCount();
57 void incrementParameterCount();
58 void decrementParameterCount();
60 void setOrderMap(PcpMap<PcpExpr*, int>* orderMap);
61 PcpMap<PcpExpr*, int>* getOrderMap();
63 public:
64 virtual void visit(PcpScop* scop);
65 virtual void visit(PcpLoop* loop);
66 virtual void visit(PcpSequence* sequence);
67 virtual void visit(PcpGuard* guard);
68 virtual void visit(PcpIv* iv);
69 virtual void visit(PcpParameter* parameter);
71 Visitor(PcpMap<PcpExpr*, int>* orderMap);
74 public:
75 bool equal(PcpExpr* expr1, PcpExpr* expr2);
76 bool less(PcpExpr* expr1, PcpExpr* expr2);
78 PcpScalarOrder(PcpScop* scop);
81 #endif // _PCP_SCALAR_ORDER_