summaryrefslogtreecommitdiff
path: root/libcuda/cuobjdump.l
diff options
context:
space:
mode:
authorgpgpu-sim <[email protected]>2016-05-16 14:49:52 -0700
committergpgpu-sim <[email protected]>2016-05-16 14:49:52 -0700
commit42115fbcbc6acd8c2faeb375d936c8a903889aaa (patch)
tree00b76420080ff4688f7ffbf04cb83634abf1026f /libcuda/cuobjdump.l
parentc6a19233a5cbf3ee2f89fbd54a0a2eb9375d4ca0 (diff)
parenta625477b025d21332368a5c31a9b779c6bb0351f (diff)
Merge pull request #17 from ElTantawy/dev
Initial support for 7.5 - tested on simple sdk benchmaks (e.g., template, vectorAdd, ...)
Diffstat (limited to 'libcuda/cuobjdump.l')
-rw-r--r--libcuda/cuobjdump.l66
1 files changed, 51 insertions, 15 deletions
diff --git a/libcuda/cuobjdump.l b/libcuda/cuobjdump.l
index d7086ad..f63ee73 100644
--- a/libcuda/cuobjdump.l
+++ b/libcuda/cuobjdump.l
@@ -52,8 +52,12 @@ void cuobjdump_error(const char*);
%s ptxcode
%s sasscode
%s elfcode
-%s header
+%s elfheader
+%s ptxheader
%s endheader
+%x identifier
+%x conidentifier
+%s endidentifier
alpha [a-zA-Z]
numeric [0-9]
@@ -67,16 +71,20 @@ newlines {newline}+
"ptxasOptions"{notnewline}*{newline}
[1-9]{numeric}* yylval.string_value = strdup(yytext); return DECIMAL;
+"has debug info"{newline}
+
"Fatbin ptx code:"{newline} {
yy_push_state(ptxcode);
- yy_push_state(header);
+ yy_push_state(identifier);
+ yy_push_state(ptxheader);
yylval.string_value = strdup(yytext);
return PTXHEADER;
}
"Fatbin elf code:"{newline} {
yy_push_state(elfcode);
- yy_push_state(header);
+ yy_push_state(identifier);
+ yy_push_state(elfheader);
yylval.string_value = strdup(yytext);
return ELFHEADER;
}
@@ -94,22 +102,50 @@ newlines {newline}+
/*SASS code tokens*/
<sasscode>{notnewline}*{newline} yylval.string_value = strdup(yytext); return SASSLINE;
+<identifier>{newline}"compressed"{newline} BEGIN(conidentifier); return H_COMPRESSED;
+<identifier>{newline}"identifier = " BEGIN(endidentifier); return H_IDENTIFIER;
+<identifier>{newline}{newline} yy_pop_state();
+
+
+<conidentifier>"identifier = " BEGIN(endidentifier); return H_IDENTIFIER;
+<conidentifier>{newline} yy_pop_state();
+
+
+<endidentifier>{notnewline}+ yylval.string_value = strdup(yytext); yy_pop_state(); return FILENAME;
+
+
+
/*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>"compressed"{newline}
-<header>"identifier = " BEGIN(endheader); return H_IDENTIFIER;
-<header>"has debug info"{newline}
+<elfheader>[[:alnum:]_]+ yylval.string_value = strdup(yytext); return IDENTIFIER;
+<elfheader>"================" return H_SEPARATOR;
+<elfheader>"arch = " return H_ARCH;
+<elfheader>"code version = " return H_CODEVERSION;
+<elfheader>\[{numeric},{numeric}\] return CODEVERSION;
+<elfheader>"producer = " return H_PRODUCER;
+<elfheader>"<unknown>" return H_UNKNOWN;
+<elfheader>"host = " return H_HOST;
+<elfheader>"compile_size = " BEGIN(endheader); return H_COMPILESIZE;
+
+
+ /*Header tokens*/
+<ptxheader>[[:alnum:]_]+ yylval.string_value = strdup(yytext); return IDENTIFIER;
+<ptxheader>"================" return H_SEPARATOR;
+<ptxheader>"arch = " return H_ARCH;
+<ptxheader>"code version = " return H_CODEVERSION;
+<ptxheader>\[{numeric},{numeric}\] return CODEVERSION;
+<ptxheader>"producer = " return H_PRODUCER;
+<ptxheader>"host = " return H_HOST;
+<ptxheader>"compile_size = " BEGIN(endheader); return H_COMPILESIZE;
+
+
+
+
+
/* Looking for the identifier (filename) then the header is done */
/* <endheader>[[:alnum:]_\./]+ yylval.string_value = strdup(yytext); yy_pop_state(); return FILENAME; */
-<endheader>{notnewline}+ yylval.string_value = strdup(yytext); yy_pop_state(); return FILENAME;
+<endheader>{notnewline}+ yylval.string_value = strdup(yytext); yy_pop_state(); return IDENTIFIER;
+
{newline} return NEWLINE;