summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cuobjdump_to_ptxplus/Makefile136
-rw-r--r--cuobjdump_to_ptxplus/cuobjdumpInst.cc20
-rw-r--r--cuobjdump_to_ptxplus/cuobjdumpInstList.cc12
-rw-r--r--cuobjdump_to_ptxplus/cuobjdump_to_ptxplus.cc62
-rw-r--r--cuobjdump_to_ptxplus/elf.l2
-rw-r--r--cuobjdump_to_ptxplus/header.l1
-rw-r--r--cuobjdump_to_ptxplus/ptx_parser.h83
-rw-r--r--cuobjdump_to_ptxplus/sass.l1
-rw-r--r--cuobjdump_to_ptxplus/sass.y2
-rw-r--r--libcuda/cuobjdump.l4
-rw-r--r--src/abstract_hardware_model.h2
-rw-r--r--src/cuda-sim/ptx.l1
12 files changed, 192 insertions, 134 deletions
diff --git a/cuobjdump_to_ptxplus/Makefile b/cuobjdump_to_ptxplus/Makefile
index 03e63c0..fc43027 100644
--- a/cuobjdump_to_ptxplus/Makefile
+++ b/cuobjdump_to_ptxplus/Makefile
@@ -3,7 +3,7 @@ LEXFLAGS = -B
YACC = bison
YFLAGS = -t -d -v --report=all
CC = gcc
-CCFLAGS = -ggdb -fPIC
+CCFLAGS = -ggdb -fPIC -Wall
CXX = g++
CXXFLAGS = ${CCFLAGS}
LD = g++
@@ -87,10 +87,9 @@ cuobjdumpInst.o: /usr/include/bits/typesizes.h /usr/include/libio.h
cuobjdumpInst.o: /usr/include/_G_config.h /usr/include/wchar.h
cuobjdumpInst.o: /usr/include/bits/stdio_lim.h
cuobjdumpInst.o: /usr/include/bits/sys_errlist.h /usr/include/stdlib.h
-cuobjdumpInst.o: /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h
+cuobjdumpInst.o: /usr/include/sys/types.h /usr/include/time.h
cuobjdumpInst.o: /usr/include/endian.h /usr/include/bits/endian.h
-cuobjdumpInst.o: /usr/include/bits/byteswap.h /usr/include/sys/types.h
-cuobjdumpInst.o: /usr/include/time.h /usr/include/sys/select.h
+cuobjdumpInst.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
cuobjdumpInst.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
cuobjdumpInst.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
cuobjdumpInst.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
@@ -104,13 +103,11 @@ cuobjdumpInstList.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
cuobjdumpInstList.o: /usr/include/libio.h /usr/include/_G_config.h
cuobjdumpInstList.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h
cuobjdumpInstList.o: /usr/include/bits/sys_errlist.h /usr/include/stdlib.h
-cuobjdumpInstList.o: /usr/include/bits/waitflags.h
-cuobjdumpInstList.o: /usr/include/bits/waitstatus.h /usr/include/endian.h
-cuobjdumpInstList.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
cuobjdumpInstList.o: /usr/include/sys/types.h /usr/include/time.h
-cuobjdumpInstList.o: /usr/include/sys/select.h /usr/include/bits/select.h
-cuobjdumpInstList.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
-cuobjdumpInstList.o: /usr/include/sys/sysmacros.h
+cuobjdumpInstList.o: /usr/include/endian.h /usr/include/bits/endian.h
+cuobjdumpInstList.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
+cuobjdumpInstList.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+cuobjdumpInstList.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
cuobjdumpInstList.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
cuobjdumpInstList.o: stringList.h
cuobjdump_to_ptxplus.o: /usr/include/stdio.h /usr/include/features.h
@@ -123,15 +120,120 @@ cuobjdump_to_ptxplus.o: /usr/include/bits/stdio_lim.h
cuobjdump_to_ptxplus.o: /usr/include/bits/sys_errlist.h cuobjdumpInstList.h
cuobjdump_to_ptxplus.o: cuobjdumpInst.h /usr/include/string.h
cuobjdump_to_ptxplus.o: /usr/include/xlocale.h /usr/include/stdlib.h
-cuobjdump_to_ptxplus.o: /usr/include/bits/waitflags.h
-cuobjdump_to_ptxplus.o: /usr/include/bits/waitstatus.h /usr/include/endian.h
-cuobjdump_to_ptxplus.o: /usr/include/bits/endian.h
-cuobjdump_to_ptxplus.o: /usr/include/bits/byteswap.h /usr/include/sys/types.h
-cuobjdump_to_ptxplus.o: /usr/include/time.h /usr/include/sys/select.h
-cuobjdump_to_ptxplus.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
-cuobjdump_to_ptxplus.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+cuobjdump_to_ptxplus.o: /usr/include/sys/types.h /usr/include/time.h
+cuobjdump_to_ptxplus.o: /usr/include/endian.h /usr/include/bits/endian.h
+cuobjdump_to_ptxplus.o: /usr/include/bits/byteswap.h
+cuobjdump_to_ptxplus.o: /usr/include/sys/select.h /usr/include/bits/select.h
+cuobjdump_to_ptxplus.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
+cuobjdump_to_ptxplus.o: /usr/include/sys/sysmacros.h
cuobjdump_to_ptxplus.o: /usr/include/bits/pthreadtypes.h
cuobjdump_to_ptxplus.o: /usr/include/alloca.h stringList.h
+elf_lexer.o: /usr/include/stdio.h /usr/include/features.h
+elf_lexer.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+elf_lexer.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
+elf_lexer.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
+elf_lexer.o: /usr/include/libio.h /usr/include/_G_config.h
+elf_lexer.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h
+elf_lexer.o: /usr/include/bits/sys_errlist.h /usr/include/string.h
+elf_lexer.o: /usr/include/xlocale.h /usr/include/errno.h
+elf_lexer.o: /usr/include/bits/errno.h /usr/include/linux/errno.h
+elf_lexer.o: /usr/include/asm/errno.h /usr/include/asm-generic/errno.h
+elf_lexer.o: /usr/include/asm-generic/errno-base.h /usr/include/stdlib.h
+elf_lexer.o: /usr/include/sys/types.h /usr/include/time.h
+elf_lexer.o: /usr/include/endian.h /usr/include/bits/endian.h
+elf_lexer.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
+elf_lexer.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+elf_lexer.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+elf_lexer.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
+elf_lexer.o: elf_parser.hh /usr/include/unistd.h
+elf_lexer.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
+elf_lexer.o: /usr/include/getopt.h
+elf_parser.o: /usr/include/stdio.h /usr/include/features.h
+elf_parser.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+elf_parser.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
+elf_parser.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
+elf_parser.o: /usr/include/libio.h /usr/include/_G_config.h
+elf_parser.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h
+elf_parser.o: /usr/include/bits/sys_errlist.h cuobjdumpInstList.h
+elf_parser.o: cuobjdumpInst.h /usr/include/string.h /usr/include/xlocale.h
+elf_parser.o: /usr/include/stdlib.h /usr/include/sys/types.h
+elf_parser.o: /usr/include/time.h /usr/include/endian.h
+elf_parser.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
+elf_parser.o: /usr/include/sys/select.h /usr/include/bits/select.h
+elf_parser.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
+elf_parser.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
+elf_parser.o: /usr/include/alloca.h stringList.h
+header_lexer.o: /usr/include/stdio.h /usr/include/features.h
+header_lexer.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+header_lexer.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
+header_lexer.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
+header_lexer.o: /usr/include/libio.h /usr/include/_G_config.h
+header_lexer.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h
+header_lexer.o: /usr/include/bits/sys_errlist.h /usr/include/string.h
+header_lexer.o: /usr/include/xlocale.h /usr/include/errno.h
+header_lexer.o: /usr/include/bits/errno.h /usr/include/linux/errno.h
+header_lexer.o: /usr/include/asm/errno.h /usr/include/asm-generic/errno.h
+header_lexer.o: /usr/include/asm-generic/errno-base.h /usr/include/stdlib.h
+header_lexer.o: /usr/include/sys/types.h /usr/include/time.h
+header_lexer.o: /usr/include/endian.h /usr/include/bits/endian.h
+header_lexer.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
+header_lexer.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+header_lexer.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+header_lexer.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
+header_lexer.o: header_parser.hh /usr/include/unistd.h
+header_lexer.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
+header_lexer.o: /usr/include/getopt.h
+header_parser.o: cuobjdumpInstList.h cuobjdumpInst.h /usr/include/string.h
+header_parser.o: /usr/include/features.h /usr/include/sys/cdefs.h
+header_parser.o: /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h
+header_parser.o: /usr/include/gnu/stubs-64.h /usr/include/xlocale.h
+header_parser.o: /usr/include/stdio.h /usr/include/bits/types.h
+header_parser.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+header_parser.o: /usr/include/_G_config.h /usr/include/wchar.h
+header_parser.o: /usr/include/bits/stdio_lim.h
+header_parser.o: /usr/include/bits/sys_errlist.h /usr/include/stdlib.h
+header_parser.o: /usr/include/sys/types.h /usr/include/time.h
+header_parser.o: /usr/include/endian.h /usr/include/bits/endian.h
+header_parser.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
+header_parser.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+header_parser.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+header_parser.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
+header_parser.o: stringList.h
+sass_lexer.o: /usr/include/stdio.h /usr/include/features.h
+sass_lexer.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+sass_lexer.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
+sass_lexer.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
+sass_lexer.o: /usr/include/libio.h /usr/include/_G_config.h
+sass_lexer.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h
+sass_lexer.o: /usr/include/bits/sys_errlist.h /usr/include/string.h
+sass_lexer.o: /usr/include/xlocale.h /usr/include/errno.h
+sass_lexer.o: /usr/include/bits/errno.h /usr/include/linux/errno.h
+sass_lexer.o: /usr/include/asm/errno.h /usr/include/asm-generic/errno.h
+sass_lexer.o: /usr/include/asm-generic/errno-base.h /usr/include/stdlib.h
+sass_lexer.o: /usr/include/sys/types.h /usr/include/time.h
+sass_lexer.o: /usr/include/endian.h /usr/include/bits/endian.h
+sass_lexer.o: /usr/include/bits/byteswap.h /usr/include/sys/select.h
+sass_lexer.o: /usr/include/bits/select.h /usr/include/bits/sigset.h
+sass_lexer.o: /usr/include/bits/time.h /usr/include/sys/sysmacros.h
+sass_lexer.o: /usr/include/bits/pthreadtypes.h /usr/include/alloca.h
+sass_lexer.o: sass_parser.hh /usr/include/unistd.h
+sass_lexer.o: /usr/include/bits/posix_opt.h /usr/include/bits/confname.h
+sass_lexer.o: /usr/include/getopt.h
+sass_parser.o: /usr/include/stdio.h /usr/include/features.h
+sass_parser.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
+sass_parser.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
+sass_parser.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
+sass_parser.o: /usr/include/libio.h /usr/include/_G_config.h
+sass_parser.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h
+sass_parser.o: /usr/include/bits/sys_errlist.h cuobjdumpInstList.h
+sass_parser.o: cuobjdumpInst.h /usr/include/string.h /usr/include/xlocale.h
+sass_parser.o: /usr/include/stdlib.h /usr/include/sys/types.h
+sass_parser.o: /usr/include/time.h /usr/include/endian.h
+sass_parser.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
+sass_parser.o: /usr/include/sys/select.h /usr/include/bits/select.h
+sass_parser.o: /usr/include/bits/sigset.h /usr/include/bits/time.h
+sass_parser.o: /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h
+sass_parser.o: /usr/include/alloca.h stringList.h
stringList.o: stringList.h /usr/include/stdio.h /usr/include/features.h
stringList.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
stringList.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
diff --git a/cuobjdump_to_ptxplus/cuobjdumpInst.cc b/cuobjdump_to_ptxplus/cuobjdumpInst.cc
index e10acef..6ad3e0c 100644
--- a/cuobjdump_to_ptxplus/cuobjdumpInst.cc
+++ b/cuobjdump_to_ptxplus/cuobjdumpInst.cc
@@ -269,7 +269,7 @@ void cuobjdumpInst::printCuobjdumpPredicate()
const char* modString2 = currentPiece2->stringText;
char* modString3 = new char[strlen(currentPiece2->stringText)+1];
- for(int i=0; i<strlen(modString2); i++)
+ for(unsigned i=0; i<strlen(modString2); i++)
{
if(modString2[i] >= 'A' && modString2[i] <= 'Z')
modString3[i] = modString2[i] + 32;
@@ -437,7 +437,7 @@ void cuobjdumpInst::printCuobjdumpBaseModifiers()
output(".");
std::string modstr = modString;
modstr = modstr.substr(1);
- for (int i=0; i<modstr.length(); i++){
+ for (unsigned i=0; i<modstr.length(); i++){
modstr[i] = tolower(modstr[i]);
}
output(modstr.c_str());
@@ -485,7 +485,7 @@ void cuobjdumpInst::printCuobjdumpOperand(stringListPiece* currentPiece, std::st
mod = currp.substr(1);
if(mod.substr(0,2) == "0x") {
- unsigned int immValue;
+ unsigned immValue;
std::stringstream hexStringConvert2;
hexStringConvert2 << std::hex << mod;
hexStringConvert2 >> immValue;
@@ -499,7 +499,7 @@ void cuobjdumpInst::printCuobjdumpOperand(stringListPiece* currentPiece, std::st
std::string outputhex;
outputhex = outputhexstream.str();
output("0x");
- for(int i=8; i > outputhex.length(); i--)
+ for(unsigned i=8; i > outputhex.length(); i--)
{
output("0");
}
@@ -516,7 +516,7 @@ void cuobjdumpInst::printCuobjdumpOperand(stringListPiece* currentPiece, std::st
// Make it lower case
if(mod.substr(0,9)!= "constant1")
- for(int i=0; i<mod.length(); i++)
+ for(unsigned i=0; i<mod.length(); i++)
{
mod[i] = tolower(mod[i]);
}
@@ -668,7 +668,7 @@ void cuobjdumpInst::printCuobjdumpOperand(stringListPiece* currentPiece, std::st
std::stringstream outputhex;
outputhex << std::hex << addrValue;
output("0x");
- for(int i=4; i > outputhex.str().length(); i--)
+ for(unsigned i=4; i > outputhex.str().length(); i--)
{
output("0");
}
@@ -699,7 +699,7 @@ void cuobjdumpInst::printCuobjdumpOperand(stringListPiece* currentPiece, std::st
std::stringstream outputhex;
outputhex << std::hex << addrValue;
output("0x");
- for(int i=4; i > outputhex.str().length(); i--) {
+ for(unsigned i=4; i > outputhex.str().length(); i--) {
output("0");
}
output(outputhex.str().c_str());
@@ -711,7 +711,7 @@ void cuobjdumpInst::printCuobjdumpOperand(stringListPiece* currentPiece, std::st
std::string outputhex;
outputhex = mod.substr(2);
- for(int i=8; i > outputhex.length(); i--) {
+ for(unsigned i=8; i > outputhex.length(); i--) {
output("0");
}
output(outputhex.c_str());
@@ -746,8 +746,6 @@ std::string breaktarget;
void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std::list<std::string> texList)
{
- stringListPiece* currentPiece;
-
printCuobjdumpLabel(labelList);
if(strcmp(m_base, "")==0)
@@ -1923,7 +1921,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
ss << std::hex << tex_id;
ss >> tex_id_int;
std::list<std::string>::iterator texIter = texList.begin();
- for (int i=0; i<tex_id_int; i++) {
+ for (unsigned i=0; i<tex_id_int; i++) {
assert (texIter!=texList.end());
texIter++;
}
diff --git a/cuobjdump_to_ptxplus/cuobjdumpInstList.cc b/cuobjdump_to_ptxplus/cuobjdumpInstList.cc
index e9b5365..b850298 100644
--- a/cuobjdump_to_ptxplus/cuobjdumpInstList.cc
+++ b/cuobjdump_to_ptxplus/cuobjdumpInstList.cc
@@ -57,14 +57,14 @@ void cuobjdumpInstList::addTex(std::string tex)
// If $tex# tex from cuobjdump, then use index to get real tex name
if(tex.substr(0, 4) == "$tex") {
tex = tex.substr(4, tex.size()-4);
- int texNum = atoi(tex.c_str());
+ unsigned texNum = atoi(tex.c_str());
if(texNum >= m_realTexList.size()) {
output("ERROR: tex does not exist in real tex list from ptx.\n.");
assert(0);
}
std::list<std::string>::iterator itex = m_realTexList.begin();
- for(int i=0; i<texNum; i++) itex++;
+ for(unsigned i=0; i<texNum; i++) itex++;
origTex = *itex;
}
// Otherwise, tex from original ptx
@@ -261,9 +261,9 @@ void cuobjdumpInstList::printMemory()
// Global or entry specific
if(i->entryIndex == 0)
- sprintf(line, ".const %s constant0[%d] = {", i->type, i->m_constMemory.size());
+ sprintf(line, ".const %s constant0[%d] = {", i->type, (int)i->m_constMemory.size());
else
- sprintf(line, ".const %s ce%dc%d[%d] = {", i->type, i->entryIndex, i->index, i->m_constMemory.size());
+ sprintf(line, ".const %s ce%dc%d[%d] = {", i->type, i->entryIndex, i->index, (int)i->m_constMemory.size());
output(line);
@@ -283,7 +283,7 @@ void cuobjdumpInstList::printMemory()
char line[1024];
// Global or entry specific
- sprintf(line, ".const %s constant1%s[%d] = {", i->type, i->kernel, i->m_constMemory.size());
+ sprintf(line, ".const %s constant1%s[%d] = {", i->type, i->kernel, (int)i->m_constMemory.size());
output(line);
@@ -368,7 +368,7 @@ void cuobjdumpInstList::addCuobjdumpRegister(std::string reg, bool lo)
// add memory operand
// memType: 0=constant, 1=shared, 2=global, 3=local
-int currconstmem =1;
+unsigned currconstmem =1;
void cuobjdumpInstList::addCuobjdumpMemoryOperand(std::string mem, int memType) {
std::string origMem = mem;
bool neg = false;
diff --git a/cuobjdump_to_ptxplus/cuobjdump_to_ptxplus.cc b/cuobjdump_to_ptxplus/cuobjdump_to_ptxplus.cc
index 570ebf5..d7436e4 100644
--- a/cuobjdump_to_ptxplus/cuobjdump_to_ptxplus.cc
+++ b/cuobjdump_to_ptxplus/cuobjdump_to_ptxplus.cc
@@ -75,60 +75,20 @@ std::string extractFilename( const std::string& path )
{
return path.substr( path.find_last_of( '/' ) +1 );
}
+
int main(int argc, char* argv[])
{
- //TODO: Output to file not yet supported.
if(argc != 5)
{
- cout << "Usage: cuobjdump_to_ptxplus ptxfile sassfile elffile ptxplusfile(output)\n";
+ cout << "Usage: " << argv[0] << " ptxfile sassfile elffile ptxplusfile(output)\n";
return 0;
}
- int result;
+
string ptxfile = argv[1];
string sassfile = argv[2];
string elffile = argv[3];
string ptxplusfile = argv[4];
- /*
- char commandline[1024];
-
- snprintf(commandline,1024,"cuobjdump -ptx %s > %s.ptx", exefile.c_str(), basefilename.c_str());
- fflush(stdout);
- result = system(commandline);
- if (result) {printf("ERROR: could not execute %s\n", commandline); exit(1);}
-
-
- snprintf(commandline,1024,"sed '/arch\\ =\\ sm_20/,/1a$/d' %s.ptx > %s.stripped2.ptx", basefilename.c_str(), basefilename.c_str());
- fflush(stdout);
- result = system(commandline);
- if (result) {printf("ERROR: could not execute %s\n", commandline); exit(1);}
-
- snprintf(commandline,1024,"grep -v \"^arch\\ =\\|Fatbin\\ \\|^code\\ version\\|===========\\|producer\\ =\\|host\\ =\\|compile_size\\ =\\|identifier\\ =\" %s.stripped2.ptx > %s.stripped.ptx", basefilename.c_str(), basefilename.c_str());
- fflush(stdout);
- result = system(commandline);
- if (result) {printf("ERROR: could not execute %s\n", commandline); exit(1);}
-
- snprintf(commandline,1024,"cuobjdump -sass %s > %s.sass", exefile.c_str(), basefilename.c_str());
- fflush(stdout);
- result = system(commandline);
- if (result) {printf("ERROR: could not execute %s\n", commandline); exit(1);}
-
- snprintf(commandline,1024,"sed '/arch\\ =\\ sm_20/,/1a$/d' %s.sass > %s.stripped.sass", basefilename.c_str(), basefilename.c_str());
- fflush(stdout);
- result = system(commandline);
- if (result) {printf("ERROR: could not execute %s\n", commandline); exit(1);}
-
- snprintf(commandline,1024,"cuobjdump -elf %s > %s.elf", exefile.c_str(), basefilename.c_str());
- fflush(stdout);
- result = system(commandline);
- if (result) {printf("ERROR: could not execute %s\n", commandline); exit(1);}
-
- snprintf(commandline,1024,"sed '/arch\\ =\\ sm_20/,/1a$/d' %s.elf > %s.stripped.elf", basefilename.c_str(), basefilename.c_str());
- fflush(stdout);
- result = system(commandline);
- if (result) {printf("ERROR: could not execute %s\n", commandline); exit(1);}
- */
-
sass_in = fopen(sassfile.c_str(), "r" );
ptx_in = fopen(ptxfile.c_str(), "r" );
elf_in = fopen(elffile.c_str(), "r");
@@ -154,9 +114,6 @@ int main(int argc, char* argv[])
// Copy real tex list from ptx to ptxplus instruction list
g_instList->setRealTexList(g_headerList->getRealTexList());
- // Insert constant memory from bin file
-// g_instList->readConstMemoryFromElfFile(elf);
-// g_instList->readOtherConstMemoryFromBinFile(fileToString(binFilename));
// Insert global memory from bin file
// g_instList->readGlobalMemoryFromBinFile(fileToString(binFilename));
@@ -165,14 +122,7 @@ int main(int argc, char* argv[])
printf("Parsing .sass file %s\n", sassfile.c_str());
sass_parse();
printf("Finished parsing .sass file %s\n", sassfile.c_str());
- /*
- printf("################################################## Instruction List dump\n");
- g_instList->printCuobjdumpInstList();
- printf("################################################## END Instruction List dump\n");
- printf("################################################## Header Instructions Dump\n");
- g_headerList->printCuobjdumpInstList();
- printf("################################################## END Header Instructions Dump\n");
- */
+
// Print ptxplus
output("//HEADER\n");
g_headerList->printHeaderInstList();
@@ -180,12 +130,10 @@ int main(int argc, char* argv[])
output("//INSTRUCTIONS\n");
g_instList->printCuobjdumpPtxPlusList(g_headerList);
output("//END INSTRUCTIONS\n");
- // TODO: remove this. Prints recorded cuobjdump output.
-// g_instList->printCuobjdumpInstList();
fclose(sass_in);
fclose(ptx_in);
-// fclose(bin_in);
+
fclose(ptxplus_out);
printf("DONE. \n");
diff --git a/cuobjdump_to_ptxplus/elf.l b/cuobjdump_to_ptxplus/elf.l
index 267bb6b..28c9752 100644
--- a/cuobjdump_to_ptxplus/elf.l
+++ b/cuobjdump_to_ptxplus/elf.l
@@ -37,9 +37,9 @@
void elf_error(const char*);
%}
-%option stack
%option noyywrap
%option yylineno
+%option nounput
%x cmem
%x symtab
diff --git a/cuobjdump_to_ptxplus/header.l b/cuobjdump_to_ptxplus/header.l
index 170ecf7..83cede7 100644
--- a/cuobjdump_to_ptxplus/header.l
+++ b/cuobjdump_to_ptxplus/header.l
@@ -30,6 +30,7 @@
%option noyywrap
%option yylineno
%option prefix="header_"
+%option nounput
%{
#include <iostream>
#include "header_parser.hh"
diff --git a/cuobjdump_to_ptxplus/ptx_parser.h b/cuobjdump_to_ptxplus/ptx_parser.h
index 590b4b2..6d855f6 100644
--- a/cuobjdump_to_ptxplus/ptx_parser.h
+++ b/cuobjdump_to_ptxplus/ptx_parser.h
@@ -73,40 +73,40 @@ int g_error_detected;
const char *g_filename = "";
int g_func_decl;
-void set_symtab( void* a ) {DPRINTF("");}
-void end_function() {DPRINTF("");}
-void add_directive() {DPRINTF("");}
-void add_function_arg() {DPRINTF("");}
-void add_instruction() {DPRINTF("");}
-void add_file( unsigned a, const char *b ) {DPRINTF("");}
-void add_variables() {DPRINTF("");}
-void set_variable_type() {DPRINTF("");}
-void add_option(int a ) {DPRINTF("");}
-void add_array_initializer() {DPRINTF("");}
-void add_label( const char *a ) {DPRINTF("");}
-void set_return() {DPRINTF("");}
-void add_opcode( int a ) {DPRINTF("");}
-void add_pred( const char *a, int b, int c ) {DPRINTF("");}
+void set_symtab( void* a ) {DPRINTF(" ");}
+void end_function() {DPRINTF(" ");}
+void add_directive() {DPRINTF(" ");}
+void add_function_arg() {DPRINTF(" ");}
+void add_instruction() {DPRINTF(" ");}
+void add_file( unsigned a, const char *b ) {DPRINTF(" ");}
+void add_variables() {DPRINTF(" ");}
+void set_variable_type() {DPRINTF(" ");}
+void add_option(int a ) {DPRINTF(" ");}
+void add_array_initializer() {DPRINTF(" ");}
+void add_label( const char *a ) {DPRINTF(" ");}
+void set_return() {DPRINTF(" ");}
+void add_opcode( int a ) {DPRINTF(" ");}
+void add_pred( const char *a, int b, int c ) {DPRINTF(" ");}
void add_scalar_operand( const char *a ) {DPRINTF("%s", a);}
-void add_neg_pred_operand( const char *a ) {DPRINTF("");}
+void add_neg_pred_operand( const char *a ) {DPRINTF(" ");}
void add_address_operand( const char *a, int b ) {DPRINTF("%s", a);}
-void change_operand_lohi( int a ) {DPRINTF("");}
-void change_double_operand_type( int a ) {DPRINTF("");}
-void change_operand_neg( ) {DPRINTF("");}
-void add_double_operand( const char *a, const char *b ) {DPRINTF("");}
-void add_2vector_operand( const char *a, const char *b ) {DPRINTF("");}
-void add_3vector_operand( const char *a, const char *b, const char *c ) {DPRINTF("");}
-void add_4vector_operand( const char *a, const char *b, const char *c, const char *d ) {DPRINTF("");}
-void add_builtin_operand( int a, int b ) {DPRINTF("");}
-void add_memory_operand() {DPRINTF("");}
-void change_memory_addr_space( const char *a ) {DPRINTF("");}
-void add_literal_int( int a ) {DPRINTF("");}
-void add_literal_float( float a ) {DPRINTF("");}
-void add_literal_double( double a ) {DPRINTF("");}
-void add_extern_spec() {DPRINTF("");}
-void add_alignment_spec( int ) {DPRINTF("");}
-void add_pragma( const char *a ) {DPRINTF("");}
-void add_constptr(const char* identifier1, const char* identifier2, int offset) {DPRINTF("");}
+void change_operand_lohi( int a ) {DPRINTF(" ");}
+void change_double_operand_type( int a ) {DPRINTF(" ");}
+void change_operand_neg( ) {DPRINTF(" ");}
+void add_double_operand( const char *a, const char *b ) {DPRINTF(" ");}
+void add_2vector_operand( const char *a, const char *b ) {DPRINTF(" ");}
+void add_3vector_operand( const char *a, const char *b, const char *c ) {DPRINTF(" ");}
+void add_4vector_operand( const char *a, const char *b, const char *c, const char *d ) {DPRINTF(" ");}
+void add_builtin_operand( int a, int b ) {DPRINTF(" ");}
+void add_memory_operand() {DPRINTF(" ");}
+void change_memory_addr_space( const char *a ) {DPRINTF(" ");}
+void add_literal_int( int a ) {DPRINTF(" ");}
+void add_literal_float( float a ) {DPRINTF(" ");}
+void add_literal_double( double a ) {DPRINTF(" ");}
+void add_extern_spec() {DPRINTF(" ");}
+void add_alignment_spec( int ) {DPRINTF(" ");}
+void add_pragma( const char *a ) {DPRINTF(" ");}
+void add_constptr(const char* identifier1, const char* identifier2, int offset) {DPRINTF(" ");}
/*non-dummy stuff below this point*/
@@ -148,7 +148,7 @@ void add_space_spec( enum _memory_space_t spec, int value )
{
DPRINTF("spec=%u", spec);
cuobjdumpInst *instEntry;
- static int constmemindex=1;
+ //static int constmemindex=1;
switch(spec)
{
case param_space_unclassified:
@@ -177,13 +177,15 @@ void add_space_spec( enum _memory_space_t spec, int value )
//g_headerList->addConstMemory(constmemindex++);
}
break;
+ default:
+ break;
}
}
void add_scalar_type_spec( int headerInput )
{
- DPRINTF("");
- const char* compareString = g_headerList->getListEnd().getBase();
+ DPRINTF(" ");
+ //const char* compareString = g_headerList->getListEnd().getBase();
if( (inEntryDirective && inParamDirective) || inTexDirective || inConstDirective)
{
@@ -247,7 +249,7 @@ void add_scalar_type_spec( int headerInput )
//void version_header(double versionNumber)
void add_version_info( float versionNumber, unsigned ext)
{
- DPRINTF("");
+ DPRINTF(" ");
cuobjdumpInst *instEntry = new cuobjdumpInst();
instEntry->setBase(".version");
g_headerList->add(instEntry);
@@ -300,16 +302,15 @@ void target_header3(char* firstTarget, char* secondTarget, char* thirdTarget)
void start_function( int a )
{
- DPRINTF("");
+ DPRINTF(" ");
inEntryDirective = true;
}
void* reset_symtab()
{
- DPRINTF("");
+ DPRINTF(" ");
inEntryDirective = false;
- void* a;
- return a;
+ return (void*) NULL;
}
void func_header(const char* headerBase)
@@ -329,7 +330,7 @@ void func_header(const char* headerBase)
void func_header_info(const char* headerInfo)
{
DPRINTF("%s", headerInfo);
- const char* compareString = g_headerList->getListEnd().getBase();
+ //const char* compareString = g_headerList->getListEnd().getBase();
if(inEntryDirective && !inTexDirective) {
g_headerList->getListEnd().addOperand(headerInfo);
diff --git a/cuobjdump_to_ptxplus/sass.l b/cuobjdump_to_ptxplus/sass.l
index bcbb6b8..ebe4897 100644
--- a/cuobjdump_to_ptxplus/sass.l
+++ b/cuobjdump_to_ptxplus/sass.l
@@ -41,6 +41,7 @@ void sass_error(const char*);
%}
%option noyywrap
%option yylineno
+%option nounput
/*Regular expresions go here*/
alpha [a-zA-Z]
diff --git a/cuobjdump_to_ptxplus/sass.y b/cuobjdump_to_ptxplus/sass.y
index 96c86ff..1c67aaf 100644
--- a/cuobjdump_to_ptxplus/sass.y
+++ b/cuobjdump_to_ptxplus/sass.y
@@ -354,7 +354,7 @@ memorylocation : SMEMLOCATION { printf($1); g_instList->addCuobjdumpMemoryOperan
char* input = $1;
char* temp = new char[99];
temp[0] = input[1];
- int i=1;
+ unsigned i=1;
while (i < strlen(input)-2) {
temp[i] = input[i+2];
i++;
diff --git a/libcuda/cuobjdump.l b/libcuda/cuobjdump.l
index fbcb33c..fb9a60a 100644
--- a/libcuda/cuobjdump.l
+++ b/libcuda/cuobjdump.l
@@ -33,6 +33,8 @@
#include "cuobjdump_parser.h"
#define YY_NEVER_INTERACTIVE 1
+#define YY_NO_INPUT
+#define YY_NO_TOP_STATE
#define YYDEBUG 1
@@ -44,6 +46,8 @@ void cuobjdump_error(const char*);
%option stack
%option noyywrap
%option yylineno
+%option nounput
+
%s ptxcode
%s sasscode
diff --git a/src/abstract_hardware_model.h b/src/abstract_hardware_model.h
index f70058e..a2d144f 100644
--- a/src/abstract_hardware_model.h
+++ b/src/abstract_hardware_model.h
@@ -684,6 +684,8 @@ public:
m_mem_accesses_created=false;
m_cache_hit=false;
}
+ virtual ~warp_inst_t(){
+ }
// modifiers
void do_atomic(bool forceDo=false);
diff --git a/src/cuda-sim/ptx.l b/src/cuda-sim/ptx.l
index 01b479f..648de30 100644
--- a/src/cuda-sim/ptx.l
+++ b/src/cuda-sim/ptx.l
@@ -27,6 +27,7 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+%option nounput
%option noyywrap
%option yylineno
%option prefix="ptx_"