diff options
| author | gpgpu-sim <[email protected]> | 2016-05-16 14:49:52 -0700 |
|---|---|---|
| committer | gpgpu-sim <[email protected]> | 2016-05-16 14:49:52 -0700 |
| commit | 42115fbcbc6acd8c2faeb375d936c8a903889aaa (patch) | |
| tree | 00b76420080ff4688f7ffbf04cb83634abf1026f /libcuda/cuobjdump.l | |
| parent | c6a19233a5cbf3ee2f89fbd54a0a2eb9375d4ca0 (diff) | |
| parent | a625477b025d21332368a5c31a9b779c6bb0351f (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.l | 66 |
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; |
