PIPS
ss.h
Go to the documentation of this file.
1 /*
2 
3  $Id: ss.h 23065 2016-03-02 09:05:50Z coelho $
4 
5  Copyright 1989-2016 MINES ParisTech
6 
7  This file is part of PIPS.
8 
9  PIPS is free software: you can redistribute it and/or modify it
10  under the terms of the GNU General Public License as published by
11  the Free Software Foundation, either version 3 of the License, or
12  any later version.
13 
14  PIPS is distributed in the hope that it will be useful, but WITHOUT ANY
15  WARRANTY; without even the implied warranty of MERCHANTABILITY or
16  FITNESS FOR A PARTICULAR PURPOSE.
17 
18  See the GNU General Public License for more details.
19 
20  You should have received a copy of the GNU General Public License
21  along with PIPS. If not, see <http://www.gnu.org/licenses/>.
22 
23 */
24 /*{{{ File banner*/
25 /*
26  * Project : Research
27  * Author : Manjunathaiah
28  * University of Southampton
29  *
30  * Title : routines for complementary sections computation
31  * System : PIPS compiler
32  *Filename : ss.h
33  * Version : 1
34  * Date : 18/4/96
35  */
36 /*}}}*/
37 
38 #ifndef _DAD
39 #define _DAD
40 
41 #include "all.h"
42 
43 /*{{{ defines*/
44 /* classifying subscript types for reference template
45  * done in newgen now
46  */
47 #define LIN_INVARIANT 2
48 #define LIN_VARIANT 1
49 #define NON_LINEAR -1
50 
51 /* accessing DAD components */
52 #define LSEC(x,i) GetBoundary(x,i,1)
53 #define USEC(x,i) GetBoundary(x,i,0)
54 
55 
56 /*}}}*/
57 
59 enum RefType {READ, WRITE};
61 
62 /* used for merging linear expressions */
63 typedef enum { PLUS, MINUS} OpFlag;
64 
65 /* only used for in print routines. The analysis does not
66  * pose any limit on the number of array dimensions
67  */
68 #define MAX_RANK 8
69 
70 /*{{{ Dad definition*/
71  /* data structures for data access descriptor */
72 
73  /* Reference Template part of DAD, an array of integers allocated dynamically */
74  typedef unsigned int tRT;
75 
76  /* A linear expression in Pips ; Pvecteur is a pointer */
77  typedef Svecteur *LinExpr;
78 
79  /* bounds are retained as high level tree structures to accommodate symbolic
80  information in boundary expressions. When all the symbolic information
81  gets resolved then the tree nodes are collapsed into a single instruction
82  holding the constant value
83  */
84 
85  typedef struct sSimpBound
86  {
87  LinExpr lb; /* lower bound */
88  LinExpr ub; /* upper bound */
89  } tSS;
90 
91  /* Simple Section part of DAD
92  An array of type SimpBound struct allocated
93  dynamically based on rank of array
94  */
95 
96  typedef struct DadComponent
97  {
98  tRT *RefTemp;
99  tSS *SimpSec;
101 
102 
103 /*}}}*/
104 /*{{{ Data structures required for computing Dads*/
105 
106 /*{{{ structures for TranslateToLoop*/
107 /* structure to hold both Old and New variants */
108 typedef struct Variants {
109  list Old;
110  list New;
112 
113 /*}}}*/
114 
115 /*}}}*/
116 
118 
119 #endif
120 
unsigned int tRT
{{ Dad definition
BoundType
}}
@ SINGLE
Definition: ss.h:60
@ MULTI
Definition: ss.h:60
@ ZERO
Definition: ss.h:60
unsigned int tRT
{{ Dad definition
Definition: ss.h:74
struct Variants tVariants
}}
@ WRITE
Definition: ss.h:59
@ READ
Definition: ss.h:59
Svecteur * LinExpr
A linear expression in Pips ; Pvecteur is a pointer.
Definition: ss.h:77
@ LOWER
Definition: ss.h:58
@ UPPER
Definition: ss.h:58
simple_section tDad
}}
Definition: ss.h:117
struct DadComponent DadComp
Simple Section part of DAD An array of type SimpBound struct allocated dynamically based on rank of a...
struct sSimpBound tSS
bounds are retained as high level tree structures to accommodate symbolic information in boundary exp...
OpFlag
used for merging linear expressions
Definition: ss.h:63
@ PLUS
Definition: ss.h:63
@ MINUS
Definition: ss.h:63
Simple Section part of DAD An array of type SimpBound struct allocated dynamically based on rank of a...
le type des coefficients dans les vecteurs: Value est defini dans le package arithmetique
Definition: vecteur-local.h:89
The structure used to build lists in NewGen.
Definition: newgen_list.h:41
bounds are retained as high level tree structures to accommodate symbolic information in boundary exp...
LinExpr ub
lower bound