summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew M. B. Boktor <[email protected]>2012-05-27 23:43:22 -0800
committerAndrew Boktor <[email protected]>2014-08-14 13:47:32 -0700
commit7d029b6129048cddbb0895565befcc452ef0aa5b (patch)
tree7923cf7144b83725d95256922b15cc4b9573dd62
parentdb7a2172c8d483436c66ff0dc38ca4f0b935b270 (diff)
Removing stringList and replacing it with std::list
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 12799]
-rw-r--r--cuobjdump_to_ptxplus/Makefile91
-rw-r--r--cuobjdump_to_ptxplus/cuobjdumpInst.cc575
-rw-r--r--cuobjdump_to_ptxplus/cuobjdumpInst.h18
-rw-r--r--cuobjdump_to_ptxplus/cuobjdumpInstList.cc8
-rw-r--r--cuobjdump_to_ptxplus/stringList.cc128
-rw-r--r--cuobjdump_to_ptxplus/stringList.h64
6 files changed, 343 insertions, 541 deletions
diff --git a/cuobjdump_to_ptxplus/Makefile b/cuobjdump_to_ptxplus/Makefile
index 2bdca27..f9c7386 100644
--- a/cuobjdump_to_ptxplus/Makefile
+++ b/cuobjdump_to_ptxplus/Makefile
@@ -1,7 +1,7 @@
LEX = flex
LEXFLAGS = -B
YACC = bison
-YFLAGS = -t -d -v --report=all
+YFLAGS = -t -d --report=all --verbose
CC = gcc
CCFLAGS = -ggdb -fPIC -Wall -Wno-unused-function -Wno-sign-compare
CXX = g++
@@ -22,8 +22,8 @@ MAKEFLAGS += --no-builtin-rules
.SUFFIXES:
.SECONDARY:
-cuobjdump_to_ptxplus: stringList.o cuobjdumpInst.o cuobjdumpInstList.o cuobjdump_to_ptxplus.o $(PTX_PARSER_OBJECTS) $(SASS_PARSER_OBJECTS) $(ELF_PARSER_OBJECTS) $(HEADER_PARSER_OBJECTS)
- ${LD} ${LDFLAGS} -o $@ stringList.o cuobjdumpInst.o cuobjdumpInstList.o cuobjdump_to_ptxplus.o $(PTX_PARSER_OBJECTS) $(SASS_PARSER_OBJECTS) $(ELF_PARSER_OBJECTS) $(HEADER_PARSER_OBJECTS)
+cuobjdump_to_ptxplus: cuobjdumpInst.o cuobjdumpInstList.o cuobjdump_to_ptxplus.o $(PTX_PARSER_OBJECTS) $(SASS_PARSER_OBJECTS) $(ELF_PARSER_OBJECTS) $(HEADER_PARSER_OBJECTS)
+ ${LD} ${LDFLAGS} -o $@ cuobjdumpInst.o cuobjdumpInstList.o cuobjdump_to_ptxplus.o $(PTX_PARSER_OBJECTS) $(SASS_PARSER_OBJECTS) $(ELF_PARSER_OBJECTS) $(HEADER_PARSER_OBJECTS)
lex.ptx_.c : ../src/cuda-sim/ptx.l
${LEX} ${LEXFLAGS} ../src/cuda-sim/ptx.l
@@ -87,13 +87,13 @@ 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/sys/types.h /usr/include/time.h
+cuobjdumpInst.o: /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h
cuobjdumpInst.o: /usr/include/endian.h /usr/include/bits/endian.h
-cuobjdumpInst.o: /usr/include/bits/byteswap.h /usr/include/sys/select.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/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
-cuobjdumpInst.o: stringList.h
cuobjdumpInstList.o: cuobjdumpInstList.h cuobjdumpInst.h
cuobjdumpInstList.o: /usr/include/string.h /usr/include/features.h
cuobjdumpInstList.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
@@ -103,13 +103,14 @@ 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/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/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/bits/pthreadtypes.h /usr/include/alloca.h
-cuobjdumpInstList.o: stringList.h
cuobjdump_to_ptxplus.o: /usr/include/stdio.h /usr/include/features.h
cuobjdump_to_ptxplus.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h
cuobjdump_to_ptxplus.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h
@@ -120,14 +121,15 @@ 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/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/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/bits/pthreadtypes.h
-cuobjdump_to_ptxplus.o: /usr/include/alloca.h stringList.h
+cuobjdump_to_ptxplus.o: /usr/include/alloca.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
@@ -139,15 +141,16 @@ 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/bits/waitflags.h /usr/include/bits/waitstatus.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/byteswap.h /usr/include/sys/types.h
+elf_lexer.o: /usr/include/time.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_lexer.o: /usr/include/bits/posix_opt.h /usr/include/bits/environments.h
+elf_lexer.o: /usr/include/bits/confname.h /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
@@ -156,13 +159,14 @@ 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/stdlib.h /usr/include/bits/waitflags.h
+elf_parser.o: /usr/include/bits/waitstatus.h /usr/include/endian.h
elf_parser.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
+elf_parser.o: /usr/include/sys/types.h /usr/include/time.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
+elf_parser.o: /usr/include/alloca.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
@@ -174,14 +178,16 @@ 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/bits/waitflags.h /usr/include/bits/waitstatus.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/byteswap.h /usr/include/sys/types.h
+header_lexer.o: /usr/include/time.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/bits/posix_opt.h
+header_lexer.o: /usr/include/bits/environments.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
@@ -192,13 +198,13 @@ 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/bits/waitflags.h /usr/include/bits/waitstatus.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/byteswap.h /usr/include/sys/types.h
+header_parser.o: /usr/include/time.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
@@ -210,15 +216,16 @@ 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/bits/waitflags.h /usr/include/bits/waitstatus.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/byteswap.h /usr/include/sys/types.h
+sass_lexer.o: /usr/include/time.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_lexer.o: /usr/include/bits/posix_opt.h /usr/include/bits/environments.h
+sass_lexer.o: /usr/include/bits/confname.h /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
@@ -227,17 +234,11 @@ 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/stdlib.h /usr/include/bits/waitflags.h
+sass_parser.o: /usr/include/bits/waitstatus.h /usr/include/endian.h
sass_parser.o: /usr/include/bits/endian.h /usr/include/bits/byteswap.h
+sass_parser.o: /usr/include/sys/types.h /usr/include/time.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
-stringList.o: /usr/include/bits/types.h /usr/include/bits/typesizes.h
-stringList.o: /usr/include/libio.h /usr/include/_G_config.h
-stringList.o: /usr/include/wchar.h /usr/include/bits/stdio_lim.h
-stringList.o: /usr/include/bits/sys_errlist.h
+sass_parser.o: /usr/include/alloca.h
diff --git a/cuobjdump_to_ptxplus/cuobjdumpInst.cc b/cuobjdump_to_ptxplus/cuobjdumpInst.cc
index dde6f8a..06a4f3e 100644
--- a/cuobjdump_to_ptxplus/cuobjdumpInst.cc
+++ b/cuobjdump_to_ptxplus/cuobjdumpInst.cc
@@ -38,16 +38,25 @@ extern void output(const char * text);
extern void output(const std::string text);
//Constructor
-cuobjdumpInst::cuobjdumpInst()
-{
+cuobjdumpInst::cuobjdumpInst() {
//initilize everything to empty
m_label = "";
- m_predicate = new stringList();
+ m_predicate = new std::list<std::string>();
m_base = "";
- m_baseModifiers = new stringList();
- m_typeModifiers = new stringList();
- m_operands = new stringList();
- m_predicateModifiers = new stringList();
+ m_baseModifiers = new std::list<std::string>();
+ m_typeModifiers = new std::list<std::string>();
+ m_operands = new std::list<std::string>();
+ m_predicateModifiers = new std::list<std::string>();
+}
+
+cuobjdumpInst::~cuobjdumpInst() {
+ /*
+ delete m_predicate;
+ delete m_baseModifiers;
+ delete m_typeModifiers;
+ delete m_operands;
+ delete m_predicateModifiers;
+ */
}
void cuobjdumpInst::printCuobjdumpInst()
@@ -69,33 +78,40 @@ void cuobjdumpInst::printCuobjdumpInst()
std::cout << "\n\n";*/
std::cout << m_base << " ";
- m_baseModifiers->printStringList();
+ cuobjdumpInst::printStringList(m_baseModifiers);
std::cout << " ";
- m_typeModifiers->printStringList();
+ cuobjdumpInst::printStringList(m_typeModifiers);
std::cout << " ";
- m_operands->printStringList();
+ cuobjdumpInst::printStringList(m_operands);
std::cout << "\n";
}
+//static
+void cuobjdumpInst::printStringList(std::list<std::string>* strlist) {
+ for ( std::list<std::string>::iterator iter = strlist->begin();
+ iter != strlist->end();
+ iter++) {
+ std::cout << *iter << " ";
+ }
+}
+
// Just prints the base and operands
void cuobjdumpInst::printHeaderPtx()
{
- output(m_base); output(" ");
-
- stringListPiece* currentPiece;
-
- currentPiece = m_baseModifiers->getListStart();
- for(int i=0; (i<m_baseModifiers->getSize())&&(currentPiece!=NULL); i++)
- {
- output(" "); output(currentPiece->stringText);
- currentPiece = currentPiece->nextString;
+ output(m_base);
+ output(" ");
+ for ( std::list<std::string>::iterator basemod = m_baseModifiers->begin();
+ basemod != m_baseModifiers->end();
+ basemod++) {
+ output(" ");
+ output(*basemod);
}
- currentPiece = m_operands->getListStart();
- for(int i=0; (i<m_operands->getSize())&&(currentPiece!=NULL); i++)
- {
- output(" "); output(currentPiece->stringText);
- currentPiece = currentPiece->nextString;
+ for ( std::list<std::string>::iterator operand = m_operands->begin();
+ operand != m_operands->end();
+ operand++) {
+ output(" ");
+ output(*operand);
}
}
@@ -105,9 +121,9 @@ const char* cuobjdumpInst::getBase()
return m_base;
}
-stringList* cuobjdumpInst::getTypeModifiers()
+std::list<std::string>* cuobjdumpInst::getTypeModifiers()
{
- return m_typeModifiers;
+ return m_typeModifiers;
}
//print out .version and .target header lines
@@ -115,31 +131,33 @@ bool cuobjdumpInst::printHeaderInst()
{
if(strcmp(m_base, ".version")==0)
{
- output(m_base); output(" ");
+ output(m_base);
+ output(" ");
- stringListPiece* currentPiece = m_operands->getListStart();
- output(currentPiece->stringText);
- currentPiece = currentPiece->nextString;
+ std::list<std::string>::iterator operand = m_operands->begin();
+ output(*operand);
+ operand ++;
- if(currentPiece!=NULL)
- {
- output("."); output(currentPiece->stringText);
+ if(operand != m_operands->end()) {
+ output(".");
+ output(*operand);
}
output("+");
output("\n");
}
else if(strcmp(m_base, ".target")==0)
{
- output(m_base); output(" ");
+ output(m_base);
+ output(" ");
- stringListPiece* currentPiece = m_operands->getListStart();
- output(currentPiece->stringText);
- currentPiece = currentPiece->nextString;
+ std::list<std::string>::iterator operand = m_operands->begin();
+ output(*operand);
+ operand ++;
- while(currentPiece!=NULL)
- {
- output(", "); output(currentPiece->stringText);
- currentPiece = currentPiece->nextString;
+ while(operand != m_operands->end()) {
+ output(", ");
+ output(*operand);
+ operand++;
}
output("\n");
}
@@ -147,27 +165,25 @@ bool cuobjdumpInst::printHeaderInst()
{
output(m_base); output(" ");
- stringListPiece* currentPiece;
-
-
- currentPiece = m_baseModifiers->getListStart();
- output(currentPiece->stringText); output(" ");
- currentPiece = currentPiece->nextString;
+ std::list<std::string>::iterator curr = m_baseModifiers->begin();
+ output(*curr);
+ output(" ");
+ curr++;
- while(currentPiece!=NULL)
+ while(curr != m_baseModifiers->end())
{
- output(" "); output(currentPiece->stringText);
- currentPiece = currentPiece->nextString;
+ output(" ");
+ output(*curr);
}
- currentPiece = m_operands->getListStart();
- output(currentPiece->stringText);
- currentPiece = currentPiece->nextString;
+ std::list<std::string>::iterator operand = m_operands->begin();
+ output(*operand);
+ operand++;
- while(currentPiece!=NULL)
- {
- output(" "); output(currentPiece->stringText);
- currentPiece = currentPiece->nextString;
+ while(operand != m_operands->end()) {
+ output(", ");
+ output(*operand);
+ operand++;
}
output(";\n");
}
@@ -185,47 +201,32 @@ void cuobjdumpInst::setBase(const char* setBaseValue)
void cuobjdumpInst::addBaseModifier(const char* addBaseMod)
{
- stringListPiece* tempPiece = new stringListPiece;
- tempPiece->stringText = addBaseMod;
-
- m_baseModifiers->add(tempPiece);
+ m_baseModifiers->push_back(addBaseMod);
}
void cuobjdumpInst::addTypeModifier(const char* addTypeMod)
{
//We cannot have more than two modifiers, replace the last
//This will be the case if we have memory operand modifiers
- if (m_typeModifiers->getSize() == 2) {
- m_typeModifiers->getListEnd()->stringText = addTypeMod;
- }else {
- stringListPiece* tempPiece = new stringListPiece;
- tempPiece->stringText = addTypeMod;
- m_typeModifiers->add(tempPiece);
+ if (m_typeModifiers->size() == 2){
+ m_typeModifiers->pop_back();
}
+ m_typeModifiers->push_back(addTypeMod);
}
void cuobjdumpInst::addOperand(const char* addOp)
{
- stringListPiece* tempPiece = new stringListPiece;
- tempPiece->stringText = addOp;
-
- m_operands->add(tempPiece);
+ m_operands->push_back(addOp);
}
void cuobjdumpInst::setPredicate(const char* setPredicateValue)
{
- stringListPiece* tempPiece = new stringListPiece;
- tempPiece->stringText = setPredicateValue;
-
- m_predicate->add(tempPiece);
+ m_predicate->push_back(setPredicateValue);
}
void cuobjdumpInst::addPredicateModifier(const char* addPredicateMod)
{
- stringListPiece* tempPiece = new stringListPiece;
- tempPiece->stringText = addPredicateMod;
-
- m_predicateModifiers->add(tempPiece);
+ m_predicateModifiers->push_back(addPredicateMod);
}
void cuobjdumpInst::setLabel(const char* setLabelValue)
@@ -259,18 +260,15 @@ void cuobjdumpInst::printCuobjdumpLabel(std::list<std::string> labelList)
void cuobjdumpInst::printCuobjdumpPredicate()
{
- stringListPiece* currentPiece = m_predicate->getListStart();
- if(currentPiece!=NULL)
+ std::list<std::string>::iterator pred = m_predicate->begin();
+ if(pred != m_predicate->end())
{
output("@$p");
- char modString[2];
- modString[0]=currentPiece->stringText[1];
- modString[1]='\0';
- output(modString);
- stringListPiece* currentPiece2 = m_predicateModifiers->getListStart();
- for(int i=0; (i<m_predicateModifiers->getSize())&&(currentPiece2!=NULL); i++)
- {
- std::string modString3 = currentPiece2->stringText;
+ output((*pred).substr(1,1));
+ for ( std::list<std::string>::iterator predmod = m_predicateModifiers->begin();
+ predmod != m_predicateModifiers->end();
+ predmod++) {
+ std::string modString3 = *predmod;
for(unsigned i=0; i<modString3.length(); i++)
{
@@ -285,7 +283,6 @@ void cuobjdumpInst::printCuobjdumpPredicate()
} else {
output(modString3);
}
- currentPiece = currentPiece2->nextString;
}
output(" ");
}
@@ -293,143 +290,135 @@ void cuobjdumpInst::printCuobjdumpPredicate()
void cuobjdumpInst::printCuobjdumpTypeModifiers()
{
- stringListPiece* currentPiece = m_typeModifiers->getListStart();
- for(int i=0; (i<m_typeModifiers->getSize())&&(currentPiece!=NULL); i++)
- {
- const char* modString = currentPiece->stringText;
- if( strcmp(modString, ".F16")==0 )
+ for ( std::list<std::string>::iterator typemod = m_typeModifiers->begin();
+ typemod != m_typeModifiers->end();
+ typemod++) {
+ if (*typemod == ".F16")
output(".f16");
- else if( strcmp(modString, ".F32")==0 )
+ else if(*typemod == ".F32")
output(".f32");
- else if( strcmp(modString, ".F64")==0 ){
+ else if(*typemod == ".F64"){
if( strcmp(m_base, "F2I") == 0||
strcmp(m_base, "F2F") == 0)
output(".f64");
else
output(".ff64");
}
- else if( strcmp(modString, ".S8")==0 )
+ else if(*typemod == ".S8")
output(".s8");
- else if( strcmp(modString, ".S16")==0 )
+ else if(*typemod == ".S16")
output(".s16");
- else if( strcmp(modString, ".S32")==0 )
+ else if(*typemod == ".S32")
output(".s32");
- else if( strcmp(modString, ".S64")==0 )
+ else if(*typemod == ".S64")
output(".bb64"); //TODO: might have to change to .ss64 in the future.
- else if( strcmp(modString, ".S128")==0 )
+ else if(*typemod == ".S128")
output(".bb128"); //TODO: might have to change to .ss64 in the future.
- else if( strcmp(modString, ".U8")==0 )
+ else if(*typemod == ".U8")
output(".u8");
- else if( strcmp(modString, ".U16")==0 )
+ else if(*typemod == ".U16")
output(".u16");
- else if( strcmp(modString, ".U32")==0 )
+ else if(*typemod == ".U32")
output(".u32");
- else if( strcmp(modString, ".U64")==0 )
+ else if(*typemod == ".U64")
output(".bb64"); //TODO: might have to change to .ss64 in the future.
- else if( strcmp(modString, ".HI")==0 )
+ else if(*typemod == ".HI")
output(".hi");
else
{
printf("Unknown Type: ");
- printf(modString);
+ printf((*typemod).c_str());
printf("\n");
- output("Unknown Type: "); output(modString);
+ output("Unknown Type: ");
+ output(*typemod);
assert(0);
}
-
- currentPiece = currentPiece->nextString;
}
}
void cuobjdumpInst::printCuobjdumpBaseModifiers()
{
- stringListPiece* currentPiece = m_baseModifiers->getListStart();
- for(int i=0; (i<m_baseModifiers->getSize())&&(currentPiece!=NULL); i++)
+ for ( std::list<std::string>::iterator basemod = m_baseModifiers->begin();
+ basemod != m_baseModifiers->end();
+ basemod++)
{
- const char* modString = currentPiece->stringText;
- if( strcmp(modString, "EQ")==0 )
+ if( *basemod == "EQ")
output(".eq");
- else if( strcmp(modString, "EQU")==0 )
+ else if( *basemod == "EQU")
output(".equ");
- else if( strcmp(modString, "GE")==0 )
+ else if( *basemod == "GE")
output(".ge");
- else if( strcmp(modString, "GEU")==0 )
+ else if( *basemod == "GEU")
output(".geu");
- else if( strcmp(modString, "GT")==0 )
+ else if( *basemod == "GT")
output(".gt");
- else if( strcmp(modString, "GTU")==0 )
+ else if( *basemod == "GTU")
output(".gtu");
- else if( strcmp(modString, "LE")==0 )
+ else if( *basemod == "LE")
output(".le");
- else if( strcmp(modString, "LEU")==0 )
+ else if( *basemod == "LEU")
output(".leu");
- else if( strcmp(modString, "LT")==0 )
+ else if( *basemod == "LT")
output(".lt");
- else if( strcmp(modString, "LTU")==0 )
+ else if( *basemod == "LTU")
output(".ltu");
- else if( strcmp(modString, "NE")==0 )
+ else if( *basemod == "NE")
output(".ne");
- else if( strcmp(modString, "NEU")==0 )
+ else if( *basemod == "NEU")
output(".neu");
- else if( strcmp(modString, ".abs")==0 )
+ else if( *basemod == ".abs")
{
if((strcmp(m_base, "F2F")!=0) && (strcmp(m_base, "I2I")!=0))
{
- output(modString);
+ output(*basemod);
}
}
- else if( strcmp(modString, "ex2")==0 ||
- strcmp(modString, ".exit")==0 ||
- strcmp(modString, "sin")==0 ||
- strcmp(modString, "cos")==0 ||
- strcmp(modString, ".rz")==0 ||
- strcmp(modString, ".rp")==0 ||
- strcmp(modString, ".rm")==0 ||
- strcmp(modString, ".any")==0 ||
- strcmp(modString, ".all")==0 )
- output(modString);
- else if( strcmp(modString, ".bext")==0 )
+ else if( (*basemod == "ex2") ||
+ (*basemod == ".exit") ||
+ (*basemod == "sin") ||
+ (*basemod == "cos") ||
+ (*basemod == ".rz") ||
+ (*basemod == ".rp") ||
+ (*basemod == ".rm") ||
+ (*basemod == ".any") ||
+ (*basemod == ".all") )
+ output(*basemod);
+ else if( *basemod == ".bext")
{
//".bext" is a modifier that indicated u8 to u16 type conversion, I think
}
- else if( strcmp(modString, ".s")==0 )
+ else if( *basemod == ".s")
{
//".s" is the same as ".join" in cuobjdump.
}
- else if( strcmp(modString, ".sfu")==0 )
+ else if( *basemod == ".sfu")
{
//".sfu" is an unknown base modifier, TODO: find out what it is
}
- else if( strcmp(modString, ".x")==0 )
+ else if( *basemod == ".x")
{
//".x" is an unknown base modifier, TODO: find out what it is
- output(modString);
+ output(*basemod);
}
- else if( strcmp(modString, ".e")==0 )
+ else if( *basemod == ".e")
{
//".e" is an unknown base modifier, TODO: find out what it is
- output(modString);
+ output(*basemod);
}
- else if( strcmp(modString, ".ir")==0 )
+ else if( *basemod == ".ir")
{
//".ir" is an unknown base modifier, TODO: find out what it is
- output(modString);
+ output(*basemod);
}
- else if(strcmp(modString, "IADD")==0 ||
- strcmp(modString, "IMIN")==0 ||
- strcmp(modString, "IMAX")==0
- //strcmp(modString, "INC")==0 ||
- //strcmp(modString, "DEC")==0 ||
- //strcmp(modString, "IAND")==0 ||
- //strcmp(modString, "IOR")==0 ||
- //strcmp(modString, "IXOR")==0
- )
+ else if((*basemod == "IADD") ||
+ (*basemod == "IMIN") ||
+ (*basemod == "IMAX"))
{
/*
* This is the case of a GRED or GATOM operation
*/
output(".");
- std::string modstr = modString;
+ std::string modstr = *basemod;
modstr = modstr.substr(1);
for (unsigned i=0; i<modstr.length(); i++){
modstr[i] = tolower(modstr[i]);
@@ -439,14 +428,12 @@ void cuobjdumpInst::printCuobjdumpBaseModifiers()
else
{
printf("Unknown Base Mod: ");
- printf(modString);
+ printf((*basemod).c_str());
printf("\n");
output("Unknown Base Mod: ");
- output(modString);
+ output(*basemod);
assert(0);
}
-
- currentPiece = currentPiece->nextString;
}
}
@@ -465,14 +452,14 @@ void cuobjdumpInst::printCuobjdumpOperandlohi(std::string op) {
}
}
-void cuobjdumpInst::printCuobjdumpOperand(stringListPiece* currentPiece, std::string operandDelimiter, const char* base)
+void cuobjdumpInst::printCuobjdumpOperand(std::string currentPiece, std::string operandDelimiter, const char* base)
{
- output(operandDelimiter.c_str());
+ output(operandDelimiter);
output(" ");
//Current piece
- std::string currp = currentPiece->stringText;
+ std::string currp = currentPiece;
std::string mod;
if(currp[0] == '-') {
@@ -546,8 +533,8 @@ void cuobjdumpInst::printCuobjdumpOperand(stringListPiece* currentPiece, std::st
if( (strcmp(m_base, "DADD")==0) ||
(strcmp(m_base, "DMUL")==0) ||
(strcmp(m_base, "DFMA")==0) ||
- ( (m_typeModifiers->getSize()==1) &&
- (strcmp((m_typeModifiers->getListStart()->stringText), ".S64")==0) &&
+ ( (m_typeModifiers->size()==1) &&
+ (m_typeModifiers->front() == ".S64") &&
( (strcmp(m_base, "G2R")==0) ||
(strcmp(m_base, "R2G")==0) ||
(strcmp(m_base, "GLD")==0) ||
@@ -558,8 +545,8 @@ void cuobjdumpInst::printCuobjdumpOperand(stringListPiece* currentPiece, std::st
std::stringstream temp;
temp << "{$r" << (regNumInt) << ",$r"<< (regNumInt+1) << "}";
output(temp.str().c_str());
- } else if( (m_typeModifiers->getSize()==1) &&
- (strcmp((m_typeModifiers->getListStart()->stringText), ".S128")==0)) {
+ } else if( (m_typeModifiers->size()==1) &&
+ (m_typeModifiers->front() == ".S128")) {
std::string modsub = mod.substr(1);
int regNumInt = atoi(modsub.c_str());
std::stringstream temp;
@@ -650,12 +637,12 @@ void cuobjdumpInst::printCuobjdumpOperand(stringListPiece* currentPiece, std::st
hexStringConvert << std::hex << modsub2;
hexStringConvert >> addrValue;
unsigned chunksize = 4;
- if ( this->m_typeModifiers->getSize()>0 &&
- ( strcmp((m_typeModifiers->getListEnd()->stringText), ".S16")==0 ||
- strcmp((m_typeModifiers->getListEnd()->stringText), ".U16")==0 )) chunksize = 2;
- if ( this->m_typeModifiers->getSize()>0 &&
- ( strcmp((m_typeModifiers->getListEnd()->stringText), ".U8")==0 ||
- strcmp((m_typeModifiers->getListEnd()->stringText), ".S8")==0 )) chunksize = 1;
+ if ( this->m_typeModifiers->size()>0 &&
+ ( m_typeModifiers->back() == ".S16" ||
+ m_typeModifiers->back() == ".U16")) chunksize = 2;
+ if ( this->m_typeModifiers->size()>0 &&
+ ( m_typeModifiers->back() == ".U8" ||
+ m_typeModifiers->back() == ".S8")) chunksize = 1;
addrValue = addrValue*chunksize;
char outputHex[10];
sprintf(outputHex, "%x", addrValue);
@@ -685,12 +672,12 @@ void cuobjdumpInst::printCuobjdumpOperand(stringListPiece* currentPiece, std::st
if(localFlag == 0)
{
unsigned chunksize = 4;
- if ( m_typeModifiers->getSize()>0 &&
- ( strcmp((m_typeModifiers->getListEnd()->stringText), ".S16")==0 ||
- strcmp((m_typeModifiers->getListEnd()->stringText), ".U16")==0 )) chunksize = 2;
- if ( this->m_typeModifiers->getSize()>0 &&
- ( strcmp((m_typeModifiers->getListEnd()->stringText), ".U8")==0 ||
- strcmp((m_typeModifiers->getListEnd()->stringText), ".S8")==0 )) chunksize = 1;
+ if ( m_typeModifiers->size()>0 &&
+ ( m_typeModifiers->back() == ".S16" ||
+ m_typeModifiers->back() == ".U16")) chunksize = 2;
+ if ( this->m_typeModifiers->size()>0 &&
+ ( m_typeModifiers->back() == ".U8" ||
+ m_typeModifiers->back() == ".S8")) chunksize = 1;
addrValue = addrValue*chunksize;
}
std::stringstream outputhex;
@@ -721,17 +708,15 @@ void cuobjdumpInst::printCuobjdumpOperand(stringListPiece* currentPiece, std::st
void cuobjdumpInst::printCuobjdumpOperands()
{
- stringListPiece* currentPiece = m_operands->getListStart();
std::string delimiter = "";
- for(int i=0; (i<m_operands->getSize())&&(currentPiece!=NULL); i++)
- {
- if((strcmp(m_base, "LOP.PASS_B")==0 || strcmp(m_base, "LOP.S.PASS_B")==0) && (i==1))
- {
- currentPiece = currentPiece->nextString;
+ unsigned i=0;
+ for ( std::list<std::string>::iterator operand = m_operands->begin();
+ operand != m_operands->end();
+ operand++, i++) {
+ if((strcmp(m_base, "LOP.PASS_B")==0 || strcmp(m_base, "LOP.S.PASS_B")==0) && (i==1)) {
continue;
}
- printCuobjdumpOperand(currentPiece, delimiter, m_base);
- currentPiece = currentPiece->nextString;
+ printCuobjdumpOperand(*operand, delimiter, m_base);
delimiter = ",";
}
}
@@ -763,7 +748,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("add");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(int_default_mod()); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -796,7 +781,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
//output(" //cos");
output("cos");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -809,7 +794,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("add");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".ff64"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -823,7 +808,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("min");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f64"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -837,7 +822,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("max");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f64"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -854,7 +839,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mad");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".ff64"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -869,7 +854,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mul");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".ff64"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -885,7 +870,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("ex2");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -898,17 +883,16 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
printCuobjdumpPredicate();
int absFlag = 0;
- stringListPiece* currentPiece = m_baseModifiers->getListStart();
- while(currentPiece != NULL)
- {
- if(strcmp(currentPiece->stringText, ".abs")==0)
+ for ( std::list<std::string>::iterator basemod = m_baseModifiers->begin();
+ basemod != m_baseModifiers->end();
+ basemod++){
+ if( *basemod == ".abs")
{
output("abs");
absFlag = 1;
break;
}
- currentPiece = currentPiece->nextString;
}
if(absFlag == 0)
{
@@ -945,7 +929,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("add");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -959,7 +943,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("add.half");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -973,7 +957,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mad");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -987,7 +971,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mul");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1001,7 +985,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mul.half");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1015,7 +999,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("set");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
{
output(".f32.f32");
}
@@ -1031,7 +1015,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("set");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
{
output(".f64.f64");
}
@@ -1047,12 +1031,13 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mov");
printCuobjdumpBaseModifiers();
- if( m_typeModifiers->getSize() == 2 ) {
+ if( m_typeModifiers->size() == 2 ) {
std::string type1, type2, type;
int type1Size, type2Size;
- stringListPiece* currentPiece = m_typeModifiers->getListStart();
- type1 = currentPiece->stringText;
- type2 = currentPiece->nextString->stringText;
+ std::list<std::string>::iterator curr = m_typeModifiers->begin();
+ type1 = (*curr).c_str();
+ curr++;
+ type2 = (*curr).c_str();
type1Size = atoi(type1.substr(2, type1.size()-2).c_str());
type2Size = atoi(type2.substr(2, type2.size()-2).c_str());
@@ -1084,7 +1069,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output(".bb64");
else
output(type.c_str());
- } else if( m_typeModifiers->getSize() == 1 ) {
+ } else if( m_typeModifiers->size() == 1 ) {
printCuobjdumpTypeModifiers();
} else {
output("Error: unsupported number of type modifiers. ");
@@ -1098,9 +1083,9 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
//output("mov");
output("ld.global");
printCuobjdumpBaseModifiers();
- if (strcmp(m_typeModifiers->getListStart()->stringText, ".S128")==0) {
+ if (m_typeModifiers->front() == ".S128") {
output(".v4.u32");
- } else if (strcmp(m_typeModifiers->getListStart()->stringText, ".S64")==0) {
+ } else if (m_typeModifiers->front() == ".S64") {
output(".v2.u32");
} else {
printCuobjdumpTypeModifiers();
@@ -1114,9 +1099,9 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
//output("mov");
output("st.global");
printCuobjdumpBaseModifiers();
- if (strcmp(m_typeModifiers->getListStart()->stringText, ".S128")==0) {
+ if (m_typeModifiers->front() == ".S128") {
output(".v4.u32");
- } else if (strcmp(m_typeModifiers->getListStart()->stringText, ".S64")==0) {
+ } else if (m_typeModifiers->front() == ".S64") {
output(".v2.u32");
} else {
printCuobjdumpTypeModifiers();
@@ -1138,17 +1123,16 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
printCuobjdumpPredicate();
int absFlag = 0;
- stringListPiece* currentPiece = m_baseModifiers->getListStart();
- while(currentPiece != NULL)
- {
- if(strcmp(currentPiece->stringText, ".abs")==0)
+ for ( std::list<std::string>::iterator basemod = m_baseModifiers->begin();
+ basemod != m_baseModifiers->end();
+ basemod++) {
+ if(*basemod == ".abs")
{
output("abs");
absFlag = 1;
break;
}
- currentPiece = currentPiece->nextString;
}
if(absFlag == 0)
{
@@ -1158,7 +1142,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0 || absFlag)
+ if(m_typeModifiers->size() == 0 || absFlag)
output(int_default_mod()); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1175,7 +1159,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("addp");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(int_default_mod()); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1189,7 +1173,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("add");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(int_default_mod()); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1203,7 +1187,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("add.half");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".u32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1216,7 +1200,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mad.lo");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(int_default_mod()); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1230,7 +1214,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mad.wide");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(int_default_mod()); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1244,7 +1228,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("sad");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(int_default_mod()); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1259,7 +1243,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mad24.lo");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".u32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1272,7 +1256,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mad24.lo");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".s32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1290,19 +1274,20 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mul24.lo");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
{
output(".u32"); //TODO: setting default type modifier but I'm not sure if this is right.
}
- else if(m_typeModifiers->getSize() == 2)
+ else if(m_typeModifiers->size() == 2)
{
std::string type1, type2, type;
int type1Size, type2Size;
- stringListPiece* currentPiece = m_typeModifiers->getListStart();
char tempString[5];
- type1 = currentPiece->stringText;
- type2 = currentPiece->nextString->stringText;
+ std::list<std::string>::iterator curr = m_typeModifiers->begin();
+ type1 = (*curr).c_str();
+ curr++;
+ type2 = (*curr).c_str();
type1Size = atoi(type1.substr(2, type1.size()-2).c_str());
type2Size = atoi(type2.substr(2, type2.size()-2).c_str());
@@ -1327,19 +1312,22 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mul.lo");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
{
output(int_default_mod()); //TODO: setting default type modifier but I'm not sure if this is right.
}
- else if(m_typeModifiers->getSize() == 2)
+ else if(m_typeModifiers->size() == 2)
{
std::string type1, type2, type;
int type1Size, type2Size;
- stringListPiece* currentPiece = m_typeModifiers->getListStart();
+
char tempString[5];
- type1 = currentPiece->stringText;
- type2 = currentPiece->nextString->stringText;
+ std::list<std::string>::iterator curr = m_typeModifiers->begin();
+ type1 = (*curr).c_str();
+ curr++;
+ type2 = (*curr).c_str();
+
type1Size = atoi(type1.substr(2, type1.size()-2).c_str());
type2Size = atoi(type2.substr(2, type2.size()-2).c_str());
@@ -1364,15 +1352,16 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mul.half.lo");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 2)
+ if(m_typeModifiers->size() == 2)
{
std::string type1, type2, type;
int type1Size, type2Size;
- stringListPiece* currentPiece = m_typeModifiers->getListStart();
char tempString[5];
- type1 = currentPiece->stringText;
- type2 = currentPiece->nextString->stringText;
+ std::list<std::string>::iterator curr = m_typeModifiers->begin();
+ type1 = (*curr).c_str();
+ curr++;
+ type2 = (*curr).c_str();
type1Size = atoi(type1.substr(2, type1.size()-2).c_str());
type2Size = atoi(type2.substr(2, type2.size()-2).c_str());
@@ -1397,19 +1386,20 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mul24.half.lo");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
{
output(".u32"); //TODO: setting default type modifier but I'm not sure if this is right.
}
- else if(m_typeModifiers->getSize() == 2)
+ else if(m_typeModifiers->size() == 2)
{
std::string type1, type2, type;
int type1Size, type2Size;
- stringListPiece* currentPiece = m_typeModifiers->getListStart();
char tempString[5];
- type1 = currentPiece->stringText;
- type2 = currentPiece->nextString->stringText;
+ std::list<std::string>::iterator curr = m_typeModifiers->begin();
+ type1 = (*curr).c_str();
+ curr++;
+ type2 = (*curr).c_str();
type1Size = atoi(type1.substr(2, type1.size()-2).c_str());
type2Size = atoi(type2.substr(2, type2.size()-2).c_str());
@@ -1434,9 +1424,9 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("set");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".u32.u32"); //TODO: setting default type modifier but I'm not sure if this is right.
- else if(m_typeModifiers->getSize() == 1)
+ else if(m_typeModifiers->size() == 1)
{
printCuobjdumpTypeModifiers(); printCuobjdumpTypeModifiers();
}
@@ -1451,7 +1441,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("lg2");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1471,14 +1461,14 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
else if(strcmp(m_base, "MVC")==0){
printCuobjdumpPredicate();
//Use cvt if there is conversion involved (2 modifiers) otherwise mov
- if(m_typeModifiers->getSize() < 2)
+ if(m_typeModifiers->size() < 2)
output("mov");
else
output("cvt");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(int_default_mod()); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1491,7 +1481,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mov");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(int_default_mod()); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1504,7 +1494,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mov.half");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".u32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1533,7 +1523,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("and");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".b32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1547,7 +1537,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("or");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".b32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1561,7 +1551,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("not");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".b32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1575,7 +1565,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("xor");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".b32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1589,12 +1579,12 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("shl");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".b32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
printCuobjdumpOperands();
- if(m_operands->getSize() == 2)
+ if(m_operands->size() == 2)
output(", 0x0");
output(";");
}
@@ -1604,11 +1594,12 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
*/
printCuobjdumpPredicate();
output("mov.u8");
- stringListPiece* currentPiece = m_operands->getListStart();
+ std::list<std::string>::iterator operand = m_operands->begin();
std::string delimiter = "";
- printCuobjdumpOperand(currentPiece, delimiter, m_base);
+ printCuobjdumpOperand(*operand, delimiter, m_base);
+ operand++;
output(", ");
- std::string curr = currentPiece->nextString->stringText;
+ std::string curr = *operand;
curr = curr.substr(1);
int regnum;
std::istringstream(curr)>>regnum;
@@ -1625,12 +1616,14 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("mov");
printCuobjdumpBaseModifiers();
- if( m_typeModifiers->getSize() == 2 ) {
+ if( m_typeModifiers->size() == 2 ) {
std::string type1, type2, type;
int type1Size, type2Size;
- stringListPiece* currentPiece = m_typeModifiers->getListStart();
- type1 = currentPiece->stringText;
- type2 = currentPiece->nextString->stringText;
+ std::list<std::string>::iterator curr = m_typeModifiers->begin();
+ type1 = (*curr).c_str();
+ curr++;
+ type2 = (*curr).c_str();
+
type1Size = atoi(type1.substr(2, type1.size()-2).c_str());
type2Size = atoi(type2.substr(2, type2.size()-2).c_str());
@@ -1662,7 +1655,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output(".bb64");
else
output(type.c_str());
- } else if( m_typeModifiers->getSize() == 1 ) {
+ } else if( m_typeModifiers->size() == 1 ) {
printCuobjdumpTypeModifiers();
} else {
output("Error: unsupported number of type modifiers. ");
@@ -1677,7 +1670,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("rcp");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1691,7 +1684,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("rcp.half");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f32");
else
printCuobjdumpTypeModifiers();
@@ -1709,7 +1702,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
printCuobjdumpPredicate();
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1723,7 +1716,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("rsqrt");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1737,7 +1730,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("shl");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(int_default_mod()); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1751,7 +1744,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("shr");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(int_default_mod()); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1765,7 +1758,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
output("sin");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1828,7 +1821,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
printCuobjdumpPredicate();
output("min");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".s32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1838,7 +1831,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
printCuobjdumpPredicate();
output("max");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".s32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1848,7 +1841,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
printCuobjdumpPredicate();
output("min");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1859,7 +1852,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
printCuobjdumpPredicate();
output("max");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(".f32"); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1870,7 +1863,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
printCuobjdumpPredicate();
output("mov");
printCuobjdumpBaseModifiers();
- if(m_typeModifiers->getSize() == 0)
+ if(m_typeModifiers->size() == 0)
output(int_default_mod()); //TODO: setting default type modifier but I'm not sure if this is right.
else
printCuobjdumpTypeModifiers();
@@ -1881,16 +1874,14 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
(strcmp(m_base, "TEX32")==0)) {
printCuobjdumpPredicate();
output("tex.1d.v4.f32.s32 ");
- stringListPiece *currPiece;
- stringListPiece reg;
std::string addrReg, tex_id;
- currPiece = m_operands->getListStart();
+ std::list<std::string>::iterator operand = m_operands->begin();
output("{");
- printCuobjdumpOperand(currPiece, "", "");
+ printCuobjdumpOperand(*operand, "", "");
output(",_,_,_} , ");
- reg = *currPiece;
- currPiece = currPiece->nextString;
- tex_id = currPiece->stringText;
+ std::string reg = *operand;
+ operand++;
+ tex_id = *operand;
unsigned int tex_id_int;
std::stringstream ss;
ss << std::hex << tex_id;
@@ -1902,7 +1893,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
}
output((*texIter).c_str());
output(",{");
- printCuobjdumpOperand(&reg, "", "");
+ printCuobjdumpOperand(reg, "", "");
output(",_,_,_};");
}
else if(strcmp(m_base, "EXIT")==0) {
@@ -1931,7 +1922,7 @@ void cuobjdumpInst::printCuobjdumpPtxPlus(std::list<std::string> labelList, std:
//PKB specifies the target of later BRK (break) instructions
// Here we convert it to nop and store the target
output("nop;");
- breaktarget = m_operands->getListStart()->stringText;
+ breaktarget = m_operands->front();
} else if(strcmp(m_base, "BRK")==0) {
printCuobjdumpPredicate();
/*
diff --git a/cuobjdump_to_ptxplus/cuobjdumpInst.h b/cuobjdump_to_ptxplus/cuobjdumpInst.h
index 75053f2..d8f75ab 100644
--- a/cuobjdump_to_ptxplus/cuobjdumpInst.h
+++ b/cuobjdump_to_ptxplus/cuobjdumpInst.h
@@ -36,27 +36,27 @@
// Local includes
//#include "cuobjdumpInstList.h"
-#include "stringList.h"
class cuobjdumpInst
{
protected:
//instruction data
const char* m_label; //instruction label
- stringList* m_predicate; //instruction predicate
+ std::list<std::string>* m_predicate; //instruction predicate
const char* m_base; //instruction mnemonic
- stringList* m_baseModifiers; //base modifiers
- stringList* m_typeModifiers; //operand types
- stringList* m_operands; //operands
- stringList* m_predicateModifiers; //predicate modifiers
+ std::list<std::string>* m_baseModifiers; //base modifiers
+ std::list<std::string>* m_typeModifiers; //operand types
+ std::list<std::string>* m_operands; //operands
+ std::list<std::string>* m_predicateModifiers; //predicate modifiers
public:
//Constructor
cuobjdumpInst();
+ ~cuobjdumpInst();
//accessors
const char* getBase();
- stringList* getTypeModifiers();
+ std::list<std::string>* getTypeModifiers();
//Mutators
void setLabel(const char* setLabelValue);
@@ -73,7 +73,7 @@ public:
void printCuobjdumpPredicate();
void printCuobjdumpTypeModifiers();
void printCuobjdumpBaseModifiers();
- void printCuobjdumpOperand(stringListPiece* currentPiece, std::string operandDelimiter, const char* base);
+ void printCuobjdumpOperand(std::string currentPiece, std::string operandDelimiter, const char* base);
void printCuobjdumpOperandlohi(std::string op);
void printCuobjdumpOperands();
@@ -83,6 +83,8 @@ public:
bool printHeaderInst();
void printCuobjdumpInst();
void printHeaderPtx();
+
+ static void printStringList(std::list<std::string>* strlist);
};
#endif //_CUOBJDUMPINST_H_
diff --git a/cuobjdump_to_ptxplus/cuobjdumpInstList.cc b/cuobjdump_to_ptxplus/cuobjdumpInstList.cc
index 1197b51..a996667 100644
--- a/cuobjdump_to_ptxplus/cuobjdumpInstList.cc
+++ b/cuobjdump_to_ptxplus/cuobjdumpInstList.cc
@@ -340,20 +340,20 @@ void cuobjdumpInstList::addCuobjdumpRegister(std::string reg, bool lo)
char * regString;
regString = new char [reg.size()+1];
- stringList* typeModifiers = getListEnd().getTypeModifiers();
+ std::list<std::string>* typeModifiers = getListEnd().getTypeModifiers();
const char* baseInst = getListEnd().getBase();
//TODO: support for 64bit vectors and 128bit vectors
if((strcmp(baseInst, "DADD")==0) || (strcmp(baseInst, "DMUL")==0) || (strcmp(baseInst, "DFMA")==0) ||
- ((typeModifiers->getSize()==1) &&
- (strcmp((typeModifiers->getListStart()->stringText), ".S64")==0) &&
+ ((typeModifiers->size()==1) &&
+ (typeModifiers->front() == ".S64") &&
((strcmp(baseInst, "G2R")==0)||(strcmp(baseInst, "R2G")==0)||
(strcmp(baseInst, "GLD")==0)||(strcmp(baseInst, "GST")==0)||
(strcmp(baseInst, "LST")==0))))
{
vectorFlag = 64;
}
- else if((typeModifiers->getSize()==1) && (strcmp((typeModifiers->getListStart()->stringText), ".S128")==0))
+ else if((typeModifiers->size()==1) && (typeModifiers->front() == ".S128"))
{
vectorFlag = 128;
}
diff --git a/cuobjdump_to_ptxplus/stringList.cc b/cuobjdump_to_ptxplus/stringList.cc
deleted file mode 100644
index 8d1ae42..0000000
--- a/cuobjdump_to_ptxplus/stringList.cc
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright (c) 2009-2011, Jimmy Kwa,
-// The University of British Columbia
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// Redistributions of source code must retain the above copyright notice, this
-// list of conditions and the following disclaimer.
-// Redistributions in binary form must reproduce the above copyright notice, this
-// list of conditions and the following disclaimer in the documentation and/or
-// other materials provided with the distribution.
-// Neither the name of The University of British Columbia nor the names of its
-// contributors may be used to endorse or promote products derived from this
-// software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-// 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.
-
-
-#include "stringList.h"
-#include <stdio.h>
-#include <iostream>
-
-//Constructor
-stringList::stringList()
-{
- //initilize everything to empty
- m_size = 0;
- m_listStart = NULL;
- m_listEnd = NULL;
-}
-
-//retrieve list size
-int stringList::getSize()
-{
- return m_size;
-}
-
-//retrieve pointer to list start
-stringListPiece* stringList::getListStart()
-{
- return m_listStart;
-}
-
-//retrieve point to list end
-stringListPiece* stringList::getListEnd()
-{
- return m_listEnd;
-}
-
-//add string to end of the list
-//initilize list starting point if this is the first entry
-//increment list size count
-int stringList::add(stringListPiece* newString)
-{
-
- if(m_listStart==NULL)
- m_listStart=newString;
- else
- m_listEnd->nextString = newString;
-
- m_listEnd = newString;
- m_listEnd->nextString = NULL;
-
- return m_size++;
-}
-
-bool stringList::remove(int index)
-{
- if(index >= m_size ) return false;
-
- stringListPiece* m_remove;
- stringListPiece* currentPiece;
-
- if(m_size == 1) {
- m_remove = m_listStart;
- m_listStart = NULL;
- m_listEnd = NULL;
- } else {
-
- if(index == 0) {
- m_remove = m_listStart;
- m_listStart = m_remove->nextString;
- } else if(index == m_size - 1) {
- m_remove = m_listEnd;
- currentPiece = m_listStart;
- for(int i=1; i<m_size-1; i++)
- {
- currentPiece = currentPiece->nextString;
- }
- currentPiece->nextString = NULL;
- m_listEnd = currentPiece;
- } else {
- currentPiece = m_listStart;
- for(int i=1; i<=index-1; i++)
- {
- currentPiece = currentPiece->nextString;
- }
- m_remove = currentPiece->nextString;
- currentPiece->nextString = m_remove->nextString;
- }
- }
-
- delete m_remove;
- m_size -= 1;
- return true;
-}
-
-//print out all the cuobjdump Instructions in the list
-void stringList::printStringList()
-{
- stringListPiece* currentPiece = m_listStart;
-
- for(int i=0; (i<m_size)&&(currentPiece!=NULL); i++)
- {
- std::cout << currentPiece->stringText << " ";
- currentPiece = currentPiece->nextString;
- }
-}
diff --git a/cuobjdump_to_ptxplus/stringList.h b/cuobjdump_to_ptxplus/stringList.h
deleted file mode 100644
index fe0139e..0000000
--- a/cuobjdump_to_ptxplus/stringList.h
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2009-2011, Jimmy Kwa,
-// The University of British Columbia
-// All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// Redistributions of source code must retain the above copyright notice, this
-// list of conditions and the following disclaimer.
-// Redistributions in binary form must reproduce the above copyright notice, this
-// list of conditions and the following disclaimer in the documentation and/or
-// other materials provided with the distribution.
-// Neither the name of The University of British Columbia nor the names of its
-// contributors may be used to endorse or promote products derived from this
-// software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-// 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.
-
-#ifndef _STRINGLIST_H_
-#define _STRINGLIST_H_
-struct stringListPiece
-{
- const char* stringText;
-
- stringListPiece* nextString;
-};
-
-
-class stringList
-{
-
-private:
- //List size
- int m_size;
-
- //Start is the first entry, end is the last entry
- stringListPiece* m_listStart;
- stringListPiece* m_listEnd;
-public:
- //constructor
- stringList();
-
- //accessors
- int getSize();
- stringListPiece* getListStart();
- stringListPiece* getListEnd();
-
- //mutator
- int add(stringListPiece* newString); //add String to list
- bool remove(int index); //remove string at index
-
- //print representation
- void printStringList();
-};
-#endif //_STRINGLIST_H_