AffineExprIRInterface.hpp
Go to the documentation of this file.00001 #ifndef AffineExprIRInterface_H
00002 #define AffineExprIRInterface_H
00003
00004 #include <OpenAnalysis/MemRefExpr/MemRefExpr.hpp>
00005 #include <OpenAnalysis/ExprTree/ExprTree.hpp>
00006 #include <OpenAnalysis/Location/Location.hpp>
00007
00008 namespace OA {
00009 namespace AffineExpr {
00010
00011 enum OpType {
00012 OP_ADD = 0,
00013 OP_SUBTRACT,
00014 OP_MULTIPLY,
00015 OP_DIVIDE,
00016 OP_MODULO,
00017 OP_SHIFT_LEFT,
00018 OP_SHIFT_RIGHT,
00019 OP_BIT_AND,
00020 OP_BIT_OR,
00021 OP_BIT_XOR,
00022 OP_OTHER
00023 };
00024
00025 class AffineExprIRInterface :
00026 public virtual IRHandlesIRInterface
00027 {
00028 public:
00029 AffineExprIRInterface() {}
00030 virtual ~AffineExprIRInterface() {}
00031
00032 virtual OA_ptr<Location::Location>
00033 getLocation(ProcHandle p, SymHandle s) = 0;
00034 virtual int constValIntVal(ConstValHandle h) = 0;
00035 virtual OpType getOpType(OpHandle h) = 0;
00036 virtual OA_ptr<ExprTree> getExprTree(ExprHandle h) = 0;
00037 virtual OA_ptr<MemRefExprIterator>
00038 getMemRefExprIterator(MemRefHandle h) = 0;
00039 virtual MemRefHandle getSymMemRefHandle(SymHandle h) = 0;
00040
00041
00042
00043
00044
00045
00046 };
00047
00048 } }
00049
00050 #endif