From 0586c55d7688f492d5264cb9299cf00ff73d3df7 Mon Sep 17 00:00:00 2001 From: Jimmy Kwa Date: Thu, 28 Oct 2010 12:07:29 -0800 Subject: used p4 integrate to copy decuda_to_ptxplus into the distribtion folder. Edited baseline_ptxplus.config so the ptxplus regression runs properly. [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 7942] --- decuda_to_ptxplus/decudaInstList.h | 146 +++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 decuda_to_ptxplus/decudaInstList.h (limited to 'decuda_to_ptxplus/decudaInstList.h') diff --git a/decuda_to_ptxplus/decudaInstList.h b/decuda_to_ptxplus/decudaInstList.h new file mode 100644 index 0000000..649a5f5 --- /dev/null +++ b/decuda_to_ptxplus/decudaInstList.h @@ -0,0 +1,146 @@ +#include "decudaInst.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Used for entry specific constant memory segments (c1) +struct constMemory +{ + int index; + int entryIndex; + char* type; + std::list m_constMemory; +}; + +// Used for uninitialized constant memory (globally defined) +struct constMemoryPtr +{ + int bytes; + std::string name; + + std::string destination; + int offset; +}; + +// Used for global memory segments +struct globalMemory +{ + int offset; + int bytes; + std::string name; +}; + + + +struct decudaEntry +{ + //char* m_entryName; + std::string m_entryName; + std::list m_instList; // List of decuda instructions + + // Register list + int m_largestRegIndex; + int m_largestOfsRegIndex; + bool m_reg124; + bool m_oreg127; + + // Predicate list + int m_largestPredIndex; + + // Local memory size + int m_lMemSize; + + // Histogram for operation per cycle count + std::map m_opPerCycleHistogram; +}; + + + +class decudaInstList +{ + +private: + // List of decuda entries + std::list m_entryList; + + // Const memory list + std::list m_constMemoryList; + + // Const memory pointers list + std::list m_constMemoryPtrList; + + // Global memory list + std::list m_globalMemoryList; + + // Tex list + std::list m_realTexList; // Stores the real names of tex variables + + // Print register names + void printRegNames(decudaEntry entry); + void printOutOfBoundRegisters(decudaEntry entry); + + // Print predicate names + void printPredNames(decudaEntry entry); + + // Print const memory directives + void printMemory(); + + // Increment register or predicate offsets + std::string parseRegister(std::string reg, bool lo=false, int vectorFlag=0); + std::string parsePredicate(std::string pred); + +public: + //constructor + decudaInstList(); + + //accessors + decudaInst getListEnd(); + + //mutator + int addEntry(std::string entryName); // creates a new entry + void setLastEntryName(std::string entryName); // sets name of last entry + void setLastEntryLMemSize(int lMemSize); // sets the local memory size of last entry + bool findEntry(std::string entryName, decudaEntry& entry); // find and return entry + + + int add(decudaInst* newInst); //add DecudaInst to list + + void addRegister(std::string reg, bool lo=false); //add register + void addPredicate(std::string pred); //add predicate + void addDoublePredReg(std::string pred, std::string reg, bool lo=false); // add pred|reg double operand + + void addTex(std::string tex); // add tex operand + + void addVector(char* vector, int vectorSize); // add vector operand + + void addMemoryOperand(std::string mem, int memType); // add memory operand + + + // Parsing constant memory segments list + void addEntryConstMemory(int index); // add entry specific const memory + void addConstMemory(int index); // add global const memory + void setConstMemoryType(char* type); // set type of constant memory + void addConstMemoryValue(std::string constMemoryValue); // add const memory + + std::list getRealTexList(); // get the list of real tex names + void setRealTexList(std::list realTexList); // set the list of real tex names + + void readConstMemoryFromBinFile(std::string binString); // read in constant memory from bin file + void readGlobalMemoryFromBinFile(std::string binString); // read in global memory from bin file + + //print representation + void printHeaderInstList(); + void printDecudaInstList(); + void printNewPtxList(decudaInstList* headerInfo); + + + // debug helper methods + void printEntryNames(); + +}; -- cgit v1.3