Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 16 additions & 22 deletions include/Token/Token.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
#define TOKEN_H

#include "string"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/IR/Argument.h"
#include "llvm/IR/Function.h"
Expand All @@ -11,19 +10,11 @@
#include "llvm/IR/Type.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/ADT/BitVector.h"

namespace spatial {

enum opTokenTy {
isArray,
isAlloca,
isOpBitcast,
isPhiGEPOpd,
isIcmpGEPOpd,
isOneGEPIndx,
isFunPtr,
isFunArg
};
enum opTokenTy {isArray, isAlloca, isOpBitcast, isPhiGEPOpd, isIcmpGEPOpd, isOneGEPIndx, isFunPtr, isFunArg, isRetGEP};

class Token {
private:
Expand All @@ -50,16 +41,17 @@ class Token {
llvm::BitVector opTokenTy;
unsigned int TyLength;


public:
void setIndex(llvm::GetElementPtrInst *GEPInst);
void setIndex(llvm::GEPOperator *GEPOp);
void setIndex(Token *, std::string);
void setIndex(Token *);
void setIndex(Token*, std::string);
void setIndex(Token*);
void resetIndex();
void resetIndexToZero();
void resetIndexToZero(std::string);
std::string getIndex(llvm::GEPOperator *GEPOp);

Token(llvm::Value *Val, std::string Index = "");
Token(llvm::GEPOperator *GOP, llvm::Function *Func, std::string Index = "");
Token(llvm::Argument *Arg, std::string Index = "");
Expand All @@ -73,7 +65,7 @@ class Token {
std::string getMemTypeName() const;
std::string getFunctionName() const;
std::string getFieldIndex() const;

friend std::ostream &operator<<(std::ostream &OS, const Token &A);

bool isMem() const;
Expand All @@ -93,10 +85,10 @@ class Token {
void setIsGlobal();
void setIsArray();
bool getIsArray();
void setIsAlloca();
void setIsAlloca();
bool getIsAlloca();
void setIsOpBitcast();
bool getIsOpBitcast();
bool getIsOpBitcast();
void setIsPhiGEPOpd();
bool getIsPhiGEPOpd();
void setIsIcmpGEPOpd();
Expand All @@ -107,16 +99,18 @@ class Token {
bool getIsFunPtr();
void setIsFunArg();
bool getIsFunArg();
void setIsRetGEP();
bool getIsRetGEP();

template <typename GOP> bool isGEPOperandArrayTy(GOP *, int);
template <typename GEP> std::vector<int> getGEPArrayIndex(GEP *);
template <typename GEP> std::vector<int> getGEPArrayIndex(GEP*);

bool isNullToken();
void setNullToken();
llvm::Type *getTy();
void setTy(llvm::Type *);
void setFunction(llvm::Function *);
llvm::Function *getFunction();
llvm::Type* getTy();
void setTy(llvm::Type*);
void setFunction(llvm::Function*);
llvm::Function* getFunction();
};
} // namespace spatial

Expand Down
Loading