summaryrefslogtreecommitdiff
path: root/src/cuda-sim
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuda-sim')
-rw-r--r--src/cuda-sim/ptx_loader.cc9
-rw-r--r--src/cuda-sim/ptx_parser.cc18
-rw-r--r--src/cuda-sim/ptx_parser.h1
3 files changed, 13 insertions, 15 deletions
diff --git a/src/cuda-sim/ptx_loader.cc b/src/cuda-sim/ptx_loader.cc
index 38597e0..921d1e6 100644
--- a/src/cuda-sim/ptx_loader.cc
+++ b/src/cuda-sim/ptx_loader.cc
@@ -170,10 +170,9 @@ symbol_table *gpgpu_context::gpgpu_ptx_sim_load_ptx_from_string( const char *p,
fclose(fp);
}
symbol_table *symtab=init_parser(buf);
- ptx_recognizer recognizer;
- ptx_lex_init(&(recognizer.scanner));
- ptx__scan_string(p, recognizer.scanner);
- int errors = ptx_parse (recognizer.scanner, &recognizer);
+ ptx_lex_init(&(ptx_parser->scanner));
+ ptx__scan_string(p, ptx_parser->scanner);
+ int errors = ptx_parse (ptx_parser->scanner, ptx_parser);
if ( errors ) {
char fname[1024];
snprintf(fname,1024,"_ptx_errors_XXXXXX");
@@ -186,7 +185,7 @@ symbol_table *gpgpu_context::gpgpu_ptx_sim_load_ptx_from_string( const char *p,
abort();
exit(40);
}
- ptx_lex_destroy(recognizer.scanner);
+ ptx_lex_destroy(ptx_parser->scanner);
if ( g_debug_execution >= 100 )
print_ptx_file(p,source_num,buf);
diff --git a/src/cuda-sim/ptx_parser.cc b/src/cuda-sim/ptx_parser.cc
index 897beaf..7080ee9 100644
--- a/src/cuda-sim/ptx_parser.cc
+++ b/src/cuda-sim/ptx_parser.cc
@@ -27,6 +27,7 @@
#include "ptx_parser.h"
#include "ptx_ir.h"
+#include "../../libcuda/gpgpu_context.h"
typedef void * yyscan_t;
#include "ptx.tab.h"
@@ -122,7 +123,7 @@ void ptx_recognizer::init_instruction_state()
init_directive_state();
}
-symbol_table *init_parser( const char *ptx_filename )
+symbol_table * gpgpu_context::init_parser( const char *ptx_filename )
{
g_filename = strdup(ptx_filename);
if (g_global_allfiles_symbol_table == NULL) {
@@ -151,17 +152,16 @@ symbol_table *init_parser( const char *ptx_filename )
g_ptx_token_decode[generic_space] = "generic_space";
g_ptx_token_decode[instruction_space] = "instruction_space";
- ptx_recognizer recognizer;
- ptx_lex_init(&(recognizer.scanner));
- recognizer.init_directive_state();
- recognizer.init_instruction_state();
+ ptx_lex_init(&(ptx_parser->scanner));
+ ptx_parser->init_directive_state();
+ ptx_parser->init_instruction_state();
FILE *ptx_in;
ptx_in = fopen(ptx_filename, "r");
- ptx_set_in(ptx_in, recognizer.scanner);
- ptx_parse(recognizer.scanner, &recognizer);
- ptx_in = ptx_get_in(recognizer.scanner);
- ptx_lex_destroy(recognizer.scanner);
+ ptx_set_in(ptx_in, ptx_parser->scanner);
+ ptx_parse(ptx_parser->scanner, ptx_parser);
+ ptx_in = ptx_get_in(ptx_parser->scanner);
+ ptx_lex_destroy(ptx_parser->scanner);
fclose(ptx_in);
return g_global_symbol_table;
}
diff --git a/src/cuda-sim/ptx_parser.h b/src/cuda-sim/ptx_parser.h
index c52fe20..5293c2e 100644
--- a/src/cuda-sim/ptx_parser.h
+++ b/src/cuda-sim/ptx_parser.h
@@ -34,7 +34,6 @@ extern const char *g_filename;
extern int g_error_detected;
#ifdef __cplusplus
-class symbol_table* init_parser(const char*);
const class ptx_instruction *ptx_instruction_lookup( const char *filename, unsigned linenumber );
#endif