summaryrefslogtreecommitdiff
path: root/decuda_to_ptxplus/ptx_parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'decuda_to_ptxplus/ptx_parser.h')
-rw-r--r--decuda_to_ptxplus/ptx_parser.h22
1 files changed, 20 insertions, 2 deletions
diff --git a/decuda_to_ptxplus/ptx_parser.h b/decuda_to_ptxplus/ptx_parser.h
index c429ead..bed82bb 100644
--- a/decuda_to_ptxplus/ptx_parser.h
+++ b/decuda_to_ptxplus/ptx_parser.h
@@ -37,6 +37,14 @@
#define NON_ARRAY_IDENTIFIER 1
#define ARRAY_IDENTIFIER_NO_DIM 2
#define ARRAY_IDENTIFIER 3
+#define P_DEBUG 1
+#define DPRINTF(...) \
+ if(P_DEBUG) { \
+ printf("(%s:%u) ", __FILE__, __LINE__); \
+ printf(__VA_ARGS__); \
+ printf("\n"); \
+ fflush(stdout); \
+ }
enum _memory_space_t {
@@ -128,21 +136,30 @@ void add_function_name( const char *headerInput )
//void add_space_spec(int headerInput)
void add_space_spec( enum _memory_space_t spec, int value )
{
+ DPRINTF("add_space_spec: spec=%u", spec);
+ decudaInst *instEntry;
switch(spec)
{
case param_space_unclassified:
if(inEntryDirective && inParamDirective) {
- decudaInst *instEntry = new decudaInst();
+ instEntry = new decudaInst();
instEntry->setBase(".param");
g_headerList->add(instEntry);
}
break;
case tex_space:
inTexDirective = true;
- decudaInst *instEntry = new decudaInst();
+ instEntry = new decudaInst();
instEntry->setBase(".tex");
g_headerList->add(instEntry);
break;
+ case const_space:
+ if(inEntryDirective) {
+ instEntry = new decudaInst();
+ instEntry->setBase(".const");
+ g_headerList->add(instEntry);
+ }
+ break;
}
}
@@ -277,6 +294,7 @@ void func_header(const char* headerBase)
// If start of an entry
if((strcmp(headerBase, ".entry")==0)||(strcmp(headerBase, ".func")==0)) {
+ inEntryDirective = true;
g_headerList->addEntry("");
decudaInst *instEntry = new decudaInst();