From 5a65fb7a5f0cb1a8d7831bae33749e8bd15a947d Mon Sep 17 00:00:00 2001 From: "Andrew M. B. Boktor" Date: Wed, 18 Apr 2012 16:32:54 -0800 Subject: Merging //depot/gpgpu_sim_research/fermi-test/cuobjdump_to_ptxplus/... to //depot/gpgpu_sim_research/fermi/distribution/cuobjdump_to_ptxplus/... [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 12022] --- cuobjdump_to_ptxplus/cuobjdump.l | 96 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 cuobjdump_to_ptxplus/cuobjdump.l (limited to 'cuobjdump_to_ptxplus/cuobjdump.l') diff --git a/cuobjdump_to_ptxplus/cuobjdump.l b/cuobjdump_to_ptxplus/cuobjdump.l new file mode 100644 index 0000000..fcd43f8 --- /dev/null +++ b/cuobjdump_to_ptxplus/cuobjdump.l @@ -0,0 +1,96 @@ + /*Lex file for output of cuobjdump*/ +%{ +#include +#include +#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*/ +{notnewline}*{newline} yylval.string_value = strdup(yytext); return PTXLINE; + + /*ELF code tokens*/ +{whitespace}*"code for sm_"{numeric}+{newline} { + BEGIN(sasscode); + yylval.string_value = strdup(yytext); + return SASSLINE; +} +{notnewline}*{newline} yylval.string_value = strdup(yytext); return ELFLINE; + + /*SASS code tokens*/ +{notnewline}*{newline} yylval.string_value = strdup(yytext); return SASSLINE; + + /*Header tokens*/ +
[[:alnum:]_]+ yylval.string_value = strdup(yytext); return IDENTIFIER; +
"================" return H_SEPARATOR; +
"arch = " return H_ARCH; +
"code version = " return H_CODEVERSION; +
\[{numeric},{numeric}\] return CODEVERSION; +
"producer = " return H_PRODUCER; +
"host = " return H_HOST; +
"compile_size = " return H_COMPILESIZE; +
"identifier = " BEGIN(endheader); return H_IDENTIFIER; +
"has debug info"{newline} + + /* Looking for the identifier (filename) then the header is done */ +[[:alnum:]_\.]+{newline} yylval.string_value = strdup(yytext); yy_pop_state(); return FILENAME; + + +{newline} return NEWLINE; + + /*Reached end of file*/ +<> 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"); +} -- cgit v1.3