summaryrefslogtreecommitdiff
path: root/cuobjdump_to_ptxplus/cuobjdumpInstList.h
blob: 1bc8f106eabca90aae3c88240f9450e6e83a0504 (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
37
38
39
40
41
42
43
44
45
46
47
#include "cuobjdumpInst.h"

// Used for local memory segments
struct localMemory
{
	int value;
	int entryIndex;
};

class cuobjdumpInstList: public decudaInstList
{
protected:
	std::string parseCuobjdumpPredicate(std::string pred);
	int m_kernelCount;
	std::map<std::string,int>kernelcmemmap;
	std::map<std::string,int>kernellmemmap;
	std::list<localMemory> m_localMemoryList;

public:
	//Constructor
	cuobjdumpInstList();

	void setKernelCount(int k);
	void readConstMemoryFromElfFile(std::string elf);

	void addCuobjdumpRegister(std::string reg, bool lo=false); //add register
	void addCuobjdumpMemoryOperand(std::string mem, int memType);
	std::string parseCuobjdumpRegister(std::string reg, bool lo, int vectorFlag);
	void addCuobjdumpDoublePredReg(std::string pred, std::string reg, bool lo=false);

	void addCubojdumpLabel(std::string label);

	void addEntryConstMemory(int index, int entryIndex);
	void addEntryConstMemory2(char* kernel);
	void addConstMemoryPtr(const char* bytes, const char* offset, const char* name);
	void setConstMemoryMap(const char* kernelname, int index);
	void setLocalMemoryMap(const char* kernelname, int index);
	void reverseConstMemory();
	void addEntryLocalMemory(int value, int entryIndex);
	void readOtherConstMemoryFromBinFile(std::string binString); // read in constant memory from bin file

	void printCuobjdumpLocalMemory();

	void printCuobjdumpInstList();
	void printCuobjdumpPtxPlusList(cuobjdumpInstList* headerInfo);
};