summaryrefslogtreecommitdiff
path: root/ir_cudasuif.hh
blob: 834778eda5477f7c635d2794ddae7ed599877876 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#ifndef IR_CUDA_SUIF
#define IR_CUDA_SUIF

#include <code_gen/CG_suifRepr.h>
#include <code_gen/CG_suifBuilder.h>
#include "ir_suif.hh"
#include "loop.hh"
#include "loop_cuda.hh"
#include "ir_suif_utils.hh"



class IR_cudasuifCode : public IR_suifCode{
  
public:
  global_symtab *gsym_;
  std::vector<proc_sym*> write_procs;//procs to write  
  
  
  IR_cudasuifCode(const char *filename, int proc_num);
  IR_ArraySymbol *CreateArraySymbol(const IR_Symbol *sym, 
                                    std::vector<omega::CG_outputRepr *> &size,
                                    int sharedAnnotation = 1);
  omega::CG_outputRepr* init_code(){ return init_code_; }
  bool commit_loop(Loop *loop, int loop_num);
  std::vector<tree_for *> get_loops()
  {
    std::vector<tree_for *> loops = find_loops(psym_->block()->body());
    return loops;
  }
  ~IR_cudasuifCode();
  
};


#endif