klass.cpp File Reference

#include <stdio.h>
#include <iostream>
#include <sstream>
#include <string>
#include <list>
#include <map>
#include "floats.hh"
#include "smartpointer.hh"
#include "klass.hh"
#include "uitree.hh"
#include "Text.hh"
#include "signals.hh"
Include dependency graph for klass.cpp:

Go to the source code of this file.

Defines

#define WORK_STEALING_INDEX   0
#define LAST_TASK_INDEX   1
#define START_TASK_INDEX   LAST_TASK_INDEX + 1
#define START_TASK_MAX   2

Functions

void tab (int n, ostream &fout)
void printlines (int n, list< string > &lines, ostream &fout)
 Print a list of lines.
void printdecllist (int n, const string &decl, list< string > &content, ostream &fout)
 Print a list of elements (e1, e2,.
bool isElement (const set< Loop * > &S, Loop *l)
static void computeUseCount (Loop *l)
 Compute how many time each loop is used in a DAG.
static void groupSeqLoops (Loop *l)
 Group together sequences of loops.
static bool nonRecursiveLevel (const lset &L)
 returns true if all the loops are non recursive
static void merge (set< string > &dst, set< string > &src)

Variables

bool gVectorSwitch
bool gDeepFirstSwitch
bool gOpenMPSwitch
bool gSchedulerSwitch
int gVecSize
bool gUIMacroSwitch
int gVectorLoopVariant
bool gGroupTaskSwitch
map< Tree, set< Tree > > gMetaDataSet
static int gTaskCount = 0

Define Documentation

#define LAST_TASK_INDEX   1

Definition at line 280 of file klass.cpp.

Referenced by Klass::buildTasksList().

#define START_TASK_INDEX   LAST_TASK_INDEX + 1

Definition at line 281 of file klass.cpp.

Referenced by Klass::buildTasksList(), and Klass::printComputeMethodScheduler().

#define START_TASK_MAX   2

Definition at line 283 of file klass.cpp.

Referenced by Klass::buildTasksList().

#define WORK_STEALING_INDEX   0

Definition at line 279 of file klass.cpp.


Function Documentation

static void computeUseCount ( Loop l  )  [static]

Compute how many time each loop is used in a DAG.

Definition at line 245 of file klass.cpp.

References Loop::fBackwardLoopDependencies, and Loop::fUseCount.

Referenced by Klass::buildTasksList(), Klass::printLoopGraphOpenMP(), Klass::printLoopGraphScheduler(), and Klass::printLoopGraphVector().

00246 {
00247     l->fUseCount++;
00248     if (l->fUseCount == 1) {
00249         for (lset::iterator p =l->fBackwardLoopDependencies.begin(); p!=l->fBackwardLoopDependencies.end(); p++) {
00250             computeUseCount(*p);
00251         }
00252     }
00253 }

Here is the caller graph for this function:

static void groupSeqLoops ( Loop l  )  [static]

Group together sequences of loops.

Definition at line 258 of file klass.cpp.

References Loop::concat(), Loop::fBackwardLoopDependencies, and Loop::fUseCount.

Referenced by Klass::buildTasksList(), Klass::printLoopGraphOpenMP(), Klass::printLoopGraphScheduler(), and Klass::printLoopGraphVector().

00259 {
00260     int n = l->fBackwardLoopDependencies.size();
00261     if (n==0) {
00262         return;
00263     } else if (n==1) {
00264         Loop* f = *(l->fBackwardLoopDependencies.begin());
00265         if (f->fUseCount ==  1) {
00266             l->concat(f);
00267             groupSeqLoops(l);
00268         } else {
00269             groupSeqLoops(f);
00270         }
00271         return;
00272     } else if (n > 1) {
00273         for (lset::iterator p =l->fBackwardLoopDependencies.begin(); p!=l->fBackwardLoopDependencies.end(); p++) {
00274             groupSeqLoops(*p);
00275         }
00276     }
00277 }

Here is the call graph for this function:

Here is the caller graph for this function:

bool isElement ( const set< Loop * > &  S,
Loop l 
) [inline]

Definition at line 216 of file klass.cpp.

Referenced by Klass::printLoopDeepFirst(), and ppsig::printrec().

00217 {
00218     return S.find(l)!= S.end();
00219 }

Here is the caller graph for this function:

static void merge ( set< string > &  dst,
set< string > &  src 
) [static]

Definition at line 1105 of file klass.cpp.

Referenced by Klass::collectIncludeFile(), and Klass::collectLibrary().

01106 {
01107     set<string>::iterator i;
01108     for (i = src.begin(); i != src.end(); i++)  dst.insert(*i);
01109 }

Here is the caller graph for this function:

static bool nonRecursiveLevel ( const lset L  )  [static]

returns true if all the loops are non recursive

Definition at line 498 of file klass.cpp.

Referenced by Klass::printLastLoopLevelScheduler(), Klass::printLoopLevelOpenMP(), and Klass::printLoopLevelScheduler().

00499 {
00500     for (lset::const_iterator p =L.begin(); p!=L.end(); p++) {
00501         if ((*p)->fIsRecursive) return false;
00502     }
00503     return true;
00504 }

Here is the caller graph for this function:

void printdecllist ( int  n,
const string &  decl,
list< string > &  content,
ostream &  fout 
)

Print a list of elements (e1, e2,.

..)

Definition at line 142 of file klass.cpp.

References tab().

Referenced by Klass::printComputeMethodOpenMP().

00143 {
00144     if (!content.empty()) {
00145         list<string>::iterator s;
00146         fout << "\\";
00147         tab(n, fout); fout << decl;
00148         string sep = "(";
00149         for (s = content.begin(); s != content.end(); s++) {
00150             fout << sep << *s;
00151             sep = ", ";
00152         }
00153         fout << ')';
00154     }
00155 }

Here is the call graph for this function:

Here is the caller graph for this function:

void printlines ( int  n,
list< string > &  lines,
ostream &  fout 
)

Print a list of lines.

Definition at line 131 of file klass.cpp.

References tab().

Referenced by Klass::printComputeMethodOpenMP(), Klass::printComputeMethodScalar(), Klass::printComputeMethodScheduler(), Klass::printComputeMethodVectorFaster(), Klass::printComputeMethodVectorSimple(), Loop::println(), SigFloatGenKlass::println(), SigIntGenKlass::println(), Klass::println(), and Loop::printoneln().

00132 {
00133     list<string>::iterator s;
00134     for (s = lines.begin(); s != lines.end(); s++) {
00135         tab(n, fout); fout << *s;
00136     }
00137 }

Here is the call graph for this function:

Here is the caller graph for this function:

void tab ( int  n,
ostream &  fout 
)

Variable Documentation

Definition at line 132 of file main.cpp.

Referenced by Klass::printLoopGraphVector(), and process_cmdline().

map<Tree, set<Tree> > gMetaDataSet

Definition at line 87 of file main.cpp.

Definition at line 136 of file main.cpp.

Referenced by Klass::printComputeMethod(), Klass::printIncludeFile(), and process_cmdline().

Definition at line 137 of file main.cpp.

int gTaskCount = 0 [static]

Definition at line 140 of file main.cpp.

Referenced by Klass::println(), and process_cmdline().

int gVecSize

Definition at line 133 of file main.cpp.

Definition at line 134 of file main.cpp.

Referenced by Klass::printComputeMethod(), and process_cmdline().

Generated on Wed Apr 28 23:45:50 2010 for FAUST compiler by  doxygen 1.6.3