GPUOcelot

SSAGraph.h

Go to the documentation of this file.
00001 
00007 #ifndef SSA_GRAPH_H_INCLUDED
00008 #define SSA_GRAPH_H_INCLUDED
00009 
00010 // Ocelot Includes
00011 #include <ocelot/analysis/interface/DataflowGraph.h>
00012 
00013 namespace analysis
00014 {
00015 
00018 class SSAGraph
00019 {
00020 private:
00021   typedef std::unordered_map< DataflowGraph::Register, 
00022     DataflowGraph::Register > RegisterMap;
00023 
00024   class Block
00025   {
00026   public:
00027     RegisterMap regs;
00028     RegisterMap aliveInMap;
00029   };
00030 
00031   typedef std::unordered_map< DataflowGraph::iterator, 
00032     Block > BlockMap;
00033 
00034 private:
00035   DataflowGraph& _graph;
00036   BlockMap _blocks;
00037 
00038   void _initialize( Block& b, DataflowGraph::iterator it, 
00039     DataflowGraph::RegisterId& current );   
00040   void _insertPhis();
00041   void _updateIn();
00042   void _updateOut();
00043   
00044 public:
00045   SSAGraph( DataflowGraph& graph );
00046   void toSsa();
00047   void fromSsa();
00048 };
00049 
00050 }
00051 
00052 #endif
00053 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines