summaryrefslogtreecommitdiff
path: root/src/cuda-sim/ptx_loader.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuda-sim/ptx_loader.cc')
-rw-r--r--src/cuda-sim/ptx_loader.cc29
1 files changed, 13 insertions, 16 deletions
diff --git a/src/cuda-sim/ptx_loader.cc b/src/cuda-sim/ptx_loader.cc
index 8c13f6d..fb4e8dd 100644
--- a/src/cuda-sim/ptx_loader.cc
+++ b/src/cuda-sim/ptx_loader.cc
@@ -65,6 +65,7 @@
#include "ptx_loader.h"
#include "ptx_ir.h"
#include "cuda-sim.h"
+#include "ptx_parser.h"
#include <dirent.h>
/// globals
@@ -211,7 +212,7 @@ void gpgpu_ptx_sim_load_gpu_kernels()
ptx_in = fopen( g_filename, "r" );
gpgpu_ptx_sim_init_memory();
if (ptx_in) {
- init_parser();
+ init_parser(g_filename);
ptx_parse();
ptxinfo_in = open_ptxinfo(g_filename);
ptxinfo_parse();
@@ -227,28 +228,25 @@ void gpgpu_ptx_sim_load_gpu_kernels()
load_constants(g_global_symbol_table,STATIC_ALLOC_LIMIT);
}
} else {
- g_filename = NULL;
+ const char *filename = NULL;
struct dirent **namelist;
- int n;
-
- n = scandir(".", &namelist, ptx_file_filter, alphasort);
+ int n = scandir(".", &namelist, ptx_file_filter, alphasort);
if (n < 0)
- perror("scandir");
+ perror("GPGPU-Sim PTX: no PTX files returned by scandir");
else {
while (n--) {
- if ( g_filename != NULL ) {
+ if ( filename != NULL ) {
printf("Loader error: support for multiple .ptx files not yet enabled\n");
abort();
}
- g_filename = strdup(namelist[n]->d_name);
- printf("Parsing %s..\n", g_filename);
- ptx_in = fopen( g_filename, "r" );
+ filename = namelist[n]->d_name;
+ printf("Parsing %s..\n", filename);
+ ptx_in = fopen( filename, "r" );
free(namelist[n]);
- init_parser();
+ init_parser(filename);
ptx_parse ();
- ptxinfo_in = open_ptxinfo(g_filename);
+ ptxinfo_in = open_ptxinfo(filename);
ptxinfo_parse();
- g_filename = NULL;
load_static_globals(g_global_symbol_table,STATIC_ALLOC_LIMIT,0xFFFFFFFF);
load_constants(g_global_symbol_table,STATIC_ALLOC_LIMIT);
}
@@ -267,11 +265,10 @@ void gpgpu_ptx_sim_load_gpu_kernels()
}
if ( g_error_detected ) {
- printf( "GPGPU-Sim PTX: Program parsing completed: Errors detected.\n" );
+ printf( "GPGPU-Sim PTX: PTX parsing errors detected -- exiting.\n" );
exit(1);
- } else {
- printf( "GPGPU-Sim PTX: Program parsing completed (max %u registers used per thread).\n", g_max_regs_per_thread );
}
+ printf( "GPGPU-Sim PTX: Program parsing completed\n" );
if ( g_kernel_name_to_function_lookup ) {
for ( std::map<std::string,function_info*>::iterator f=g_kernel_name_to_function_lookup->begin();