Ignore:
Timestamp:
Oct 3, 2014, 12:12:57 PM (5 years ago)
Author:
nmedfort
Message:

Minor changes; moved printers to re and pablo folders.

File:
1 moved

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/pablo/codegenstate.h

    r4206 r4207  
    88#define PS_PABLOS_H
    99
    10 #include <list>
     10#include <pablo/pe_pabloe.h>
     11#include <pablo/pe_advance.h>
     12#include <pablo/pe_all.h>
     13#include <pablo/pe_and.h>
     14#include <pablo/pe_call.h>
     15#include <pablo/pe_charclass.h>
     16#include <pablo/pe_matchstar.h>
     17#include <pablo/pe_not.h>
     18#include <pablo/pe_or.h>
     19#include <pablo/pe_pabloe.h>
     20#include <pablo/pe_scanthru.h>
     21#include <pablo/pe_sel.h>
     22#include <pablo/pe_var.h>
     23#include <pablo/pe_xor.h>
     24#include <pablo/ps_assign.h>
     25#include <pablo/ps_if.h>
     26#include <pablo/ps_while.h>
     27#include <unordered_map>
     28#include <vector>
    1129#include <string>
    1230
    1331namespace pablo {
    1432
    15 class PabloE;
     33struct CodeGenState{
    1634
    17 struct CodeGenState{
     35//    struct ExpressionTable {
     36//        inline PabloE * find(PabloE * inst) {
     37//            switch(inst->getClassTypeId()) {
     38//                // UNARY
     39//                case All:
     40//                case Advance:
     41//                case Call:
     42//                case Not:
     43//                case Var:
     44//                case Assign:
     45//                case CharClass: // ***
     46//                // BINARY
     47//                case And:
     48//                case Or:
     49//                case Xor:
     50
     51//                case MatchStar:
     52//                case ScanThru:
     53//                case If:
     54//                case While:
     55//                // TERNARY
     56//                case Sel:
     57//            }
     58
     59
     60//            switch (inst.getNumOperands()) {
     61//                case 1: return _unary.find(&inst, inst.getType(), inst.getOperand(0));
     62//                case 2: return _binary.find(&inst, inst.getOperand(0), inst.getOperand(1));
     63//                case 3: return _ternary.find(&inst, inst.getOperand(0), inst.getOperand(1), inst.getOperand(2));
     64//                default: return nullptr;
     65//            }
     66//        }
     67//    private:
     68//        template<typename... Args>
     69//        struct ExpressionMap {
     70//            typedef std::tuple<PabloE::ClassTypeId, Args...> Key;
     71//            inline Instruction * find(Instruction * inst, Args... args) {
     72//                auto key = std::make_tuple(inst->getOpcode(), args...);
     73//                auto itr = _map.find(key);
     74//                if (itr == _map.end()) {
     75//                    _map.insert(std::make_pair(std::move(key), inst));
     76//                    return nullptr;
     77//                }
     78//                return itr->second;
     79//            }
     80//        private:
     81//            std::map<Key, PabloE *>                                     _map;
     82//        };
     83//        ExpressionMap<const PabloE *>                                   _unary;
     84//        ExpressionMap<const PabloE *, const PabloE *>                   _binary;
     85//        ExpressionMap<const PabloE *, const PabloE *, const PabloE *>   _ternary;
     86//    };
     87
    1888    std::list<PabloE *>  stmtsl;
    1989    std::string          newsym;
Note: See TracChangeset for help on using the changeset viewer.