summaryrefslogtreecommitdiff
path: root/cuobjdump_to_ptxplus
diff options
context:
space:
mode:
Diffstat (limited to 'cuobjdump_to_ptxplus')
-rw-r--r--cuobjdump_to_ptxplus/Makefile21
-rw-r--r--cuobjdump_to_ptxplus/cuobjdump.l96
-rw-r--r--cuobjdump_to_ptxplus/cuobjdump.y83
3 files changed, 19 insertions, 181 deletions
diff --git a/cuobjdump_to_ptxplus/Makefile b/cuobjdump_to_ptxplus/Makefile
index f58a0fd..2f3c202 100644
--- a/cuobjdump_to_ptxplus/Makefile
+++ b/cuobjdump_to_ptxplus/Makefile
@@ -12,7 +12,6 @@ LD = g++
LDFLAGS = ${CCFLAGS}
-CUOBJDUMP_PARSER_OBJECTS = cuobjdump_parser.o cuobjdump_lexer.o
SASS_PARSER_OBJECTS = sass_lexer.o sass_parser.o
ELF_PARSER_OBJECTS = elf_lexer.o elf_parser.o
HEADER_PARSER_OBJECTS = headerParser.o headerLexer.o
@@ -20,7 +19,7 @@ PTX_PARSER_OBJECTS = ptx.tab.o lex.ptx_.o
all: cuobjdump_to_ptxplus
-cuobjdump_to_ptxplus: stringList.o decudaInst.o decudaInstList.o cuobjdumpInst.o cuobjdumpInstList.o cuobjdump_to_ptxplus.o $(PTX_PARSER_OBJECTS) $(SASS_PARSER_OBJECTS) $(ELF_PARSER_OBJECTS) $(HEADER_PARSER_OBJECTS) $(CUOBJDUMP_PARSER_OBJECTS)
+cuobjdump_to_ptxplus: stringList.o decudaInst.o decudaInstList.o cuobjdumpInst.o cuobjdumpInstList.o cuobjdump_to_ptxplus.o $(PTX_PARSER_OBJECTS) $(SASS_PARSER_OBJECTS) $(ELF_PARSER_OBJECTS) $(HEADER_PARSER_OBJECTS)
${LD} ${LDFLAGS} -ocuobjdump_to_ptxplus stringList.o decudaInst.o decudaInstList.o headerParser.o headerLexer.o cuobjdumpInst.o cuobjdumpInstList.o cuobjdump_to_ptxplus.o lex.ptx_.o ptx.tab.o $(SASS_PARSER_OBJECTS) $(ELF_PARSER_OBJECTS)
stringList.o: ../decuda_to_ptxplus/stringList.cc ../decuda_to_ptxplus/stringList.h
@@ -129,6 +128,11 @@ cuobjdump_lexer.o: cuobjdump_lexer.c
%.o: %.cpp
$(CXX) ${CXXFLAGS} -c -o $@ $<
+SRCS = $(shell ls *.cc)
+
+depend:
+ makedepend $(SRCS) 2> /dev/null
+
clean:
rm -f ./opcodes.def ./opcodes.h
rm -f ./lex.ptx_.c ./ptx.tab.c ./ptx.tab.h ./lex.ptx_.o ./ptx.tab.o ptx.output
@@ -143,3 +147,16 @@ clean:
rm -f ./cuobjdump_parser.o ./cuobjdump_parser.c ./cuobjdump_parser.output ./cuobjdump_parser.h
rm -f ./cuobjdump_lexer.o ./cuobjdump_lexer.c
rm -f ./elf_lexer.o ./elf_parser.o ./elf_lexer.cpp ./elf_parser.cpp ./elf_parser.hpp ./elf_parser.output
+# DO NOT DELETE
+
+cuobjdumpInst.o: cuobjdumpInst.h
+cuobjdumpInstList.o: cuobjdumpInstList.h cuobjdumpInst.h
+cuobjdump_to_ptxplus.o: cuobjdumpInstList.h cuobjdumpInst.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
+cuobjdump_to_ptxplus.o: /usr/include/bits/types.h
+cuobjdump_to_ptxplus.o: /usr/include/bits/typesizes.h /usr/include/libio.h
+cuobjdump_to_ptxplus.o: /usr/include/_G_config.h /usr/include/wchar.h
+cuobjdump_to_ptxplus.o: /usr/include/bits/stdio_lim.h
+cuobjdump_to_ptxplus.o: /usr/include/bits/sys_errlist.h
diff --git a/cuobjdump_to_ptxplus/cuobjdump.l b/cuobjdump_to_ptxplus/cuobjdump.l
deleted file mode 100644
index fcd43f8..0000000
--- a/cuobjdump_to_ptxplus/cuobjdump.l
+++ /dev/null
@@ -1,96 +0,0 @@
- /*Lex file for output of cuobjdump*/
-%{
-#include <stdio.h>
-#include <string.h>
-#include "cuobjdump_parser.h"
-
-#define YY_NEVER_INTERACTIVE 1
-
-#define YYDEBUG 1
-
-#define yylval cuobjdump_lval
-
-void cuobjdump_error(const char*);
-%}
-
-%option stack
-%option noyywrap
-%option yylineno
-
-%s ptxcode
-%s sasscode
-%s elfcode
-%s header
-%s endheader
-
-alpha [a-zA-Z]
-numeric [0-9]
-whitespace [ \t]
-newline [\n]
-notnewline [^\n]
-newlines {newline}+
-%%
-
-
-"ptxasOptions"{notnewline}*{newline}
-[1-9]{numeric}* yylval.string_value = strdup(yytext); return DECIMAL;
-
-
-"Fatbin ptx code:"{newline} {
- yy_push_state(ptxcode);
- yy_push_state(header);
- yylval.string_value = strdup(yytext);
- return PTXHEADER;
-}
-"Fatbin elf code:"{newline} {
- yy_push_state(elfcode);
- yy_push_state(header);
- yylval.string_value = strdup(yytext);
- return ELFHEADER;
-}
- /*PTX code tokens*/
-<ptxcode>{notnewline}*{newline} yylval.string_value = strdup(yytext); return PTXLINE;
-
- /*ELF code tokens*/
-<elfcode>{whitespace}*"code for sm_"{numeric}+{newline} {
- BEGIN(sasscode);
- yylval.string_value = strdup(yytext);
- return SASSLINE;
-}
-<elfcode>{notnewline}*{newline} yylval.string_value = strdup(yytext); return ELFLINE;
-
- /*SASS code tokens*/
-<sasscode>{notnewline}*{newline} yylval.string_value = strdup(yytext); return SASSLINE;
-
- /*Header tokens*/
-<header>[[:alnum:]_]+ yylval.string_value = strdup(yytext); return IDENTIFIER;
-<header>"================" return H_SEPARATOR;
-<header>"arch = " return H_ARCH;
-<header>"code version = " return H_CODEVERSION;
-<header>\[{numeric},{numeric}\] return CODEVERSION;
-<header>"producer = " return H_PRODUCER;
-<header>"host = " return H_HOST;
-<header>"compile_size = " return H_COMPILESIZE;
-<header>"identifier = " BEGIN(endheader); return H_IDENTIFIER;
-<header>"has debug info"{newline}
-
- /* Looking for the identifier (filename) then the header is done */
-<endheader>[[:alnum:]_\.]+{newline} yylval.string_value = strdup(yytext); yy_pop_state(); return FILENAME;
-
-
-{newline} return NEWLINE;
-
- /*Reached end of file*/
-<<EOF>> return 0;
-
- /*No other rule matched. Throw an error*/
-. cuobjdump_error("Invalid token");
-
-%%
-void cuobjdump_error(const char* message)
-{
- printf(" "); printf(message); printf(" near \""); printf(yytext); printf("\"");
- printf(" on line ");
- char line[5]; sprintf(line, "%i", yylineno); printf(line);
- printf("\n");
-}
diff --git a/cuobjdump_to_ptxplus/cuobjdump.y b/cuobjdump_to_ptxplus/cuobjdump.y
deleted file mode 100644
index 0b20a83..0000000
--- a/cuobjdump_to_ptxplus/cuobjdump.y
+++ /dev/null
@@ -1,83 +0,0 @@
- /*Yacc file for output of cuobjdump*/
-%{
-#include <stdio.h>
-
-int yylex(void);
-void yyerror(const char*);
-extern void addCuobjdumpSection(int sectiontype);
-void setCuobjdumparch(const char* arch);
-void setCuobjdumpidentifier(const char* identifier);
-void setCuobjdumpptxfilename(const char* filename);
-void setCuobjdumpelffilename(const char* filename);
-void setCuobjdumpsassfilename(const char* filename);
-int elfserial = 1;
-int ptxserial = 1;
-FILE *ptxfile;
-FILE *elffile;
-FILE *sassfile;
-char filename [1024];
-%}
-%union {
- char* string_value;
-}
-%token <string_value> H_SEPARATOR H_ARCH H_CODEVERSION H_PRODUCER H_HOST H_COMPILESIZE H_IDENTIFIER
-%token <string_value> CODEVERSION
-%token <string_value> STRING
-%token <string_value> FILENAME
-%token <string_value> DECIMAL
-%token <string_value> PTXHEADER ELFHEADER
-%token <string_value> PTXLINE
-%token <string_value> ELFLINE
-%token <string_value> SASSLINE
-%token <string_value> IDENTIFIER
-%token <string_value> NEWLINE
-
-%%
-
-program : emptylines section
- | program section;
-
-emptylines : emptylines NEWLINE
- | ;
-
-section : PTXHEADER {
- addCuobjdumpSection(0);
- snprintf(filename, 1024, "_cuobjdump_%d.ptx", ptxserial++);
- ptxfile = fopen(filename, "w");
- setCuobjdumpptxfilename(filename);
- } headerinfo ptxcode {
- fclose(ptxfile);
- }
- | ELFHEADER {
- addCuobjdumpSection(1);
- snprintf(filename, 1024, "_cuobjdump_%d.elf", elfserial);
- elffile = fopen(filename, "w");
- setCuobjdumpelffilename(filename);
- } headerinfo elfcode {
- fclose(elffile);
- snprintf(filename, 1024, "_cuobjdump_%d.sass", elfserial++);
- sassfile = fopen(filename, "w");
- setCuobjdumpsassfilename(filename);
- } sasscode {
- fclose(sassfile);
- };
-
-headerinfo : H_SEPARATOR NEWLINE
- H_ARCH IDENTIFIER NEWLINE
- H_CODEVERSION CODEVERSION NEWLINE
- H_PRODUCER IDENTIFIER NEWLINE
- H_HOST IDENTIFIER NEWLINE
- H_COMPILESIZE IDENTIFIER NEWLINE
- H_IDENTIFIER FILENAME {setCuobjdumparch($4); setCuobjdumpidentifier($19);};
-
-ptxcode : ptxcode PTXLINE {fprintf(ptxfile, "%s", $2);}
- | ;
-
-elfcode : elfcode ELFLINE {fprintf(elffile, "%s", $2);}
- | ;
-
-sasscode : sasscode SASSLINE {fprintf(sassfile, "%s", $2)}
- | ;
-
-
-%%