diff options
| -rw-r--r-- | Makefile | 5 | ||||
| -rw-r--r-- | cuobjdump_to_ptxplus/cuobjdumpInst.cc | 4 | ||||
| -rw-r--r-- | cuobjdump_to_ptxplus/elf.l | 6 | ||||
| -rw-r--r-- | cuobjdump_to_ptxplus/sass.l | 4 | ||||
| -rw-r--r-- | cuobjdump_to_ptxplus/sass.y | 158 | ||||
| -rw-r--r-- | setup_environment | 2 | ||||
| -rw-r--r-- | src/cuda-sim/cuda-math.h | 14 | ||||
| -rw-r--r-- | src/tr1_hash_map.h | 4 | ||||
| -rw-r--r-- | version_detection.mk | 3 |
9 files changed, 102 insertions, 98 deletions
@@ -31,11 +31,6 @@ include version_detection.mk -ifeq ($(shell uname), Darwin) - # Note: MacOX support not working for this version - export MACOSX_BUILD_FLAGS=-m32 -endif - ifeq ($(GPGPUSIM_CONFIG), debug) export DEBUG=1 else diff --git a/cuobjdump_to_ptxplus/cuobjdumpInst.cc b/cuobjdump_to_ptxplus/cuobjdumpInst.cc index b276c04..dd9bb99 100644 --- a/cuobjdump_to_ptxplus/cuobjdumpInst.cc +++ b/cuobjdump_to_ptxplus/cuobjdumpInst.cc @@ -327,7 +327,7 @@ void cuobjdumpInst::printCuobjdumpTypeModifiers() else { printf("Unknown Type: "); - printf((*typemod).c_str()); + printf("%s",(*typemod).c_str()); printf("\n"); output("Unknown Type: "); output(*typemod); @@ -428,7 +428,7 @@ void cuobjdumpInst::printCuobjdumpBaseModifiers() else { printf("Unknown Base Mod: "); - printf((*basemod).c_str()); + printf("%s",(*basemod).c_str()); printf("\n"); output("Unknown Base Mod: "); output(*basemod); diff --git a/cuobjdump_to_ptxplus/elf.l b/cuobjdump_to_ptxplus/elf.l index 28c9752..61c4d02 100644 --- a/cuobjdump_to_ptxplus/elf.l +++ b/cuobjdump_to_ptxplus/elf.l @@ -129,14 +129,14 @@ hexdigit [[:digit:]abcdef] void elf_error(const char* message) { printf(" "); - printf(message); + printf("%s",message); printf(" near \""); - printf(yytext); + printf("%s",yytext); printf("\""); printf(" on line "); char line[5]; sprintf(line, "%i", yylineno); - printf(line); + printf("%s",line); printf("\n"); abort(); } diff --git a/cuobjdump_to_ptxplus/sass.l b/cuobjdump_to_ptxplus/sass.l index ebe4897..b5b0532 100644 --- a/cuobjdump_to_ptxplus/sass.l +++ b/cuobjdump_to_ptxplus/sass.l @@ -357,9 +357,9 @@ C{numeric} yylval.string_value = strdup(yytext); return PREDREGISTER3; void sass_error(const char* message) { - printf(" "); printf(message); printf(" near \""); printf(yytext); printf("\""); + printf(" "); printf("%s",message); printf(" near \""); printf("%s",yytext); printf("\""); printf(" on line "); - char line[5]; sprintf(line, "%i", yylineno); printf(line); + char line[5]; sprintf(line, "%i", yylineno); printf("%s",line); printf("\n"); exit(1); } diff --git a/cuobjdump_to_ptxplus/sass.y b/cuobjdump_to_ptxplus/sass.y index 3009aa1..3706ad8 100644 --- a/cuobjdump_to_ptxplus/sass.y +++ b/cuobjdump_to_ptxplus/sass.y @@ -31,6 +31,7 @@ int yylex(void); void yyerror(const char*); +void debug_print( const char *s ); extern cuobjdumpInstList *g_instList; @@ -93,8 +94,8 @@ cuobjdumpInst *instEntry; program : program sassCode | sassCode; -sassCode : VERSIONHEADER IDENTIFIER NEWLINE functionList { printf($1); printf($2); printf(" No parsing errors\n\n"); } - | NEWLINE VERSIONHEADER IDENTIFIER NEWLINE functionList { printf($2); printf($3); printf(" No parsing errors\n\n"); } +sassCode : VERSIONHEADER IDENTIFIER NEWLINE functionList { debug_print($1); debug_print($2); debug_print(" No parsing errors\n\n"); } + | NEWLINE VERSIONHEADER IDENTIFIER NEWLINE functionList { debug_print($2); debug_print($3); debug_print(" No parsing errors\n\n"); } | VERSIONHEADER IDENTIFIER NEWLINE; functionList : functionList function @@ -102,9 +103,9 @@ functionList : functionList function ; function : FUNCTIONHEADER IDENTIFIER { - printf($1); - printf($2); - printf("\n"); + debug_print($1); + debug_print($2); + debug_print("\n"); g_instList->addEntry($2); instEntry = new cuobjdumpInst(); instEntry->setBase(".entry"); @@ -113,10 +114,10 @@ function : FUNCTIONHEADER IDENTIFIER { ; -statementList : statementList statement NEWLINE { printf("\n"); } - | statementList statement SEMICOLON NEWLINE { printf(";\n"); } - | statement NEWLINE { printf("\n"); } - | statement SEMICOLON NEWLINE { printf(";\n"); } +statementList : statementList statement NEWLINE { debug_print("\n"); } + | statementList statement SEMICOLON NEWLINE { debug_print(";\n"); } + | statement NEWLINE { debug_print("\n"); } + | statement SEMICOLON NEWLINE { debug_print(";\n"); } | NEWLINE {} ; @@ -149,10 +150,10 @@ assemblyInstruction : baseInstruction modifierList operandList { } /*| baseInstruction { }*/ ; -baseInstruction : simpleInstructions { printf($1); instEntry->setBase($1); g_instList->add(instEntry);} +baseInstruction : simpleInstructions { debug_print($1); instEntry->setBase($1); g_instList->add(instEntry);} | branchInstructions - | GRED DOT simpleInstructions { printf($1); instEntry->setBase($1); g_instList->add(instEntry); g_instList->getListEnd().addBaseModifier($3);} - | GATOM DOT simpleInstructions { printf($1); instEntry->setBase($1); g_instList->add(instEntry); g_instList->getListEnd().addBaseModifier($3);} + | GRED DOT simpleInstructions { debug_print($1); instEntry->setBase($1); g_instList->add(instEntry); g_instList->getListEnd().addBaseModifier($3);} + | GATOM DOT simpleInstructions { debug_print($1); instEntry->setBase($1); g_instList->add(instEntry); g_instList->getListEnd().addBaseModifier($3);} | pbkInstruction ; @@ -170,7 +171,7 @@ simpleInstructions : ADA | AND | ANDS | COS | DADD | DMIN | DMAX | DFMA | DMUL | ; pbkInstruction : PBK { - printf($1); instEntry->setBase($1); g_instList->add(instEntry); + debug_print($1); instEntry->setBase($1); g_instList->add(instEntry); } HEXLITERAL { char* tempInput = $3; char* tempLabel = new char[12]; @@ -191,8 +192,8 @@ pbkInstruction : PBK { } ; -branchInstructions : BRA {printf($1); instEntry->setBase($1); g_instList->add(instEntry);} instructionPredicate HEXLITERAL - { printf($4); +branchInstructions : BRA {debug_print($1); instEntry->setBase($1); g_instList->add(instEntry);} instructionPredicate HEXLITERAL + { debug_print($4); char* tempInput = $4; char* tempLabel = new char[12]; tempLabel[0] = 'l'; @@ -209,8 +210,8 @@ branchInstructions : BRA {printf($1); instEntry->setBase($1); g_instList->add(in tempLabel[11] = '\0'; g_instList->getListEnd().addOperand(tempLabel); g_instList->addCubojdumpLabel(tempLabel);} - | BRA {printf($1); instEntry->setBase($1); g_instList->add(instEntry);} HEXLITERAL - { printf($3); + | BRA {debug_print($1); instEntry->setBase($1); g_instList->add(instEntry);} HEXLITERAL + { debug_print($3); char* tempInput = $3; char* tempLabel = new char[12]; tempLabel[0] = 'l'; @@ -227,8 +228,8 @@ branchInstructions : BRA {printf($1); instEntry->setBase($1); g_instList->add(in tempLabel[11] = '\0'; g_instList->getListEnd().addOperand(tempLabel); g_instList->addCubojdumpLabel(tempLabel);} - | CAL {printf($1); instEntry->setBase($1); g_instList->add(instEntry);} HEXLITERAL - { printf($3); + | CAL {debug_print($1); instEntry->setBase($1); g_instList->add(instEntry);} HEXLITERAL + { debug_print($3); char* tempInput = $3; char* tempLabel = new char[12]; tempLabel[0] = 'l'; @@ -246,8 +247,8 @@ branchInstructions : BRA {printf($1); instEntry->setBase($1); g_instList->add(in g_instList->getListEnd().addOperand(tempLabel); g_instList->addCubojdumpLabel(tempLabel);} - | CAL {printf($1); instEntry->setBase($1); g_instList->add(instEntry);} DOTNOINC HEXLITERAL - { printf($4); + | CAL {debug_print($1); instEntry->setBase($1); g_instList->add(instEntry);} DOTNOINC HEXLITERAL + { debug_print($4); char* tempInput = $4; char* tempLabel = new char[12]; tempLabel[0] = 'l'; @@ -272,7 +273,7 @@ modifierList : modifier modifierList | ; -modifier : opTypes { printf($1); g_instList->getListEnd().addTypeModifier($1);} +modifier : opTypes { debug_print($1); g_instList->getListEnd().addTypeModifier($1);} | DOTBEXT { g_instList->getListEnd().addBaseModifier(".bext"); } | DOTS { g_instList->getListEnd().addBaseModifier(".s"); } | DOTSFU { g_instList->getListEnd().addBaseModifier(".sfu"); } @@ -290,24 +291,24 @@ modifier : opTypes { printf($1); g_instList->getListEnd().addTypeModifier($1);} | DOTALL { g_instList->getListEnd().addBaseModifier(".all"); } ; -opTypes : DOTF16 //{ printf($1); g_instList->getListEnd().addTypeModifier($1);} - | DOTF32 //{ printf($1); g_instList->getListEnd().addTypeModifier($1);} - | DOTF64 //{ printf($1); g_instList->getListEnd().addTypeModifier($1);} - | DOTS8 //{ printf($1); g_instList->getListEnd().addTypeModifier($1);} - | DOTS16 //{ printf($1); g_instList->getListEnd().addTypeModifier($1);} - | DOTS32 //{ printf($1); g_instList->getListEnd().addTypeModifier($1);} - | DOTS64 //{ printf($1); g_instList->getListEnd().addTypeModifier($1);} - | DOTS128 //{ printf($1); g_instList->getListEnd().addTypeModifier($1);} - | DOTU8 //{ printf($1); g_instList->getListEnd().addTypeModifier($1);} - | DOTU16 //{ printf($1); g_instList->getListEnd().addTypeModifier($1);} - | DOTU32 //{ printf($1); g_instList->getListEnd().addTypeModifier($1);} - | DOTU24 //{ printf($1); g_instList->getListEnd().addTypeModifier($1);} - | DOTU64 //{ printf($1); g_instList->getListEnd().addTypeModifier($1);} - | DOTHI //{ printf($1); g_instList->getListEnd().addTypeModifier($1);} +opTypes : DOTF16 //{ debug_print($1); g_instList->getListEnd().addTypeModifier($1);} + | DOTF32 //{ debug_print($1); g_instList->getListEnd().addTypeModifier($1);} + | DOTF64 //{ debug_print($1); g_instList->getListEnd().addTypeModifier($1);} + | DOTS8 //{ debug_print($1); g_instList->getListEnd().addTypeModifier($1);} + | DOTS16 //{ debug_print($1); g_instList->getListEnd().addTypeModifier($1);} + | DOTS32 //{ debug_print($1); g_instList->getListEnd().addTypeModifier($1);} + | DOTS64 //{ debug_print($1); g_instList->getListEnd().addTypeModifier($1);} + | DOTS128 //{ debug_print($1); g_instList->getListEnd().addTypeModifier($1);} + | DOTU8 //{ debug_print($1); g_instList->getListEnd().addTypeModifier($1);} + | DOTU16 //{ debug_print($1); g_instList->getListEnd().addTypeModifier($1);} + | DOTU32 //{ debug_print($1); g_instList->getListEnd().addTypeModifier($1);} + | DOTU24 //{ debug_print($1); g_instList->getListEnd().addTypeModifier($1);} + | DOTU64 //{ debug_print($1); g_instList->getListEnd().addTypeModifier($1);} + | DOTHI //{ debug_print($1); g_instList->getListEnd().addTypeModifier($1);} ; -operandList : operandList { printf(" "); } /*COMMA*/ operand {} - /*| { printf(" "); } operand {}*/ +operandList : operandList { debug_print(" "); } /*COMMA*/ operand {} + /*| { debug_print(" "); } operand {}*/ | ; @@ -315,7 +316,7 @@ operand : registerlocation | PIPE registerlocation PIPE { g_instList->getListEnd().addBaseModifier(".abs"); } | TILDE registerlocation | LEFTBRACKET instructionPredicate RIGHTBRACKET - | memorylocation opTypes { printf($2); g_instList->getListEnd().addTypeModifier($2);} + | memorylocation opTypes { debug_print($2); g_instList->getListEnd().addTypeModifier($2);} | memorylocation | immediateValue | extraModifier @@ -324,15 +325,15 @@ operand : registerlocation ; /* Register of the format [R0] will be converted to R0 */ /* regMod will be also ignored */ -registerlocation : REGISTER regMod { printf($1); g_instList->addCuobjdumpRegister($1);} - | OSQBRACKET REGISTER CSQBRACKET { printf($1); printf($2); printf($3); g_instList->addCuobjdumpRegister($2);} - | REGISTERLO { printf($1); g_instList->addCuobjdumpRegister($1,true);} - | REGISTERHI { printf($1); g_instList->addCuobjdumpRegister($1,true);} - | SREGISTER { printf($1); g_instList->addCuobjdumpRegister($1,false);} - | OFFSETREGISTER { printf($1); g_instList->addCuobjdumpRegister($1);} - | PREDREGISTER PREDREGISTER2 { printf($1); printf(" "); printf($2); g_instList->addCuobjdumpDoublePredReg($1, $2);} - | PREDREGISTER REGISTER { printf($1); printf(" "); printf($2); g_instList->addCuobjdumpDoublePredReg($1, $2);} - /*| REGISTER PREDREGISTER3 { printf($1); printf(" "); printf($2); g_instList->addCuobjdumpRegister($1); printf("WEIRD CASE\n");}*/ +registerlocation : REGISTER regMod { debug_print($1); g_instList->addCuobjdumpRegister($1);} + | OSQBRACKET REGISTER CSQBRACKET { debug_print($1); debug_print($2); debug_print($3); g_instList->addCuobjdumpRegister($2);} + | REGISTERLO { debug_print($1); g_instList->addCuobjdumpRegister($1,true);} + | REGISTERHI { debug_print($1); g_instList->addCuobjdumpRegister($1,true);} + | SREGISTER { debug_print($1); g_instList->addCuobjdumpRegister($1,false);} + | OFFSETREGISTER { debug_print($1); g_instList->addCuobjdumpRegister($1);} + | PREDREGISTER PREDREGISTER2 { debug_print($1); debug_print(" "); debug_print($2); g_instList->addCuobjdumpDoublePredReg($1, $2);} + | PREDREGISTER REGISTER { debug_print($1); debug_print(" "); debug_print($2); g_instList->addCuobjdumpDoublePredReg($1, $2);} + /*| REGISTER PREDREGISTER3 { debug_print($1); debug_print(" "); debug_print($2); g_instList->addCuobjdumpRegister($1); debug_print("WEIRD CASE\n");}*/ ; regMod : DOTCC @@ -340,9 +341,9 @@ regMod : DOTCC ; -memorylocation : SMEMLOCATION { printf($1); g_instList->addCuobjdumpMemoryOperand($1,1);} +memorylocation : SMEMLOCATION { debug_print($1); g_instList->addCuobjdumpMemoryOperand($1,1);} | ABSSMEMLOCATION { - printf($1); + debug_print($1); char* input = $1; char* temp = new char[99]; temp[0] = input[1]; @@ -354,54 +355,54 @@ memorylocation : SMEMLOCATION { printf($1); g_instList->addCuobjdumpMemoryOperan g_instList->addCuobjdumpMemoryOperand(temp,1); g_instList->getListEnd().addBaseModifier(".abs"); } - | GMEMLOCATION { printf($1); g_instList->addCuobjdumpMemoryOperand($1,2);} - | CMEMLOCATION { printf($1); g_instList->addCuobjdumpMemoryOperand($1,0);} - | LMEMLOCATION { printf($1); g_instList->addCuobjdumpMemoryOperand($1,3);} + | GMEMLOCATION { debug_print($1); g_instList->addCuobjdumpMemoryOperand($1,2);} + | CMEMLOCATION { debug_print($1); g_instList->addCuobjdumpMemoryOperand($1,0);} + | LMEMLOCATION { debug_print($1); g_instList->addCuobjdumpMemoryOperand($1,3);} ; -immediateValue : IDENTIFIER { printf($1); g_instList->getListEnd().addOperand($1);} - | HEXLITERAL { printf($1); g_instList->getListEnd().addOperand($1);} +immediateValue : IDENTIFIER { debug_print($1); g_instList->getListEnd().addOperand($1);} + | HEXLITERAL { debug_print($1); g_instList->getListEnd().addOperand($1);} ; -extraModifier : EQ { printf($1); g_instList->getListEnd().addBaseModifier($1);} - | EQU { printf($1); g_instList->getListEnd().addBaseModifier($1);} - | GE { printf($1); g_instList->getListEnd().addBaseModifier($1);} - | GEU { printf($1); g_instList->getListEnd().addBaseModifier($1);} - | GT { printf($1); g_instList->getListEnd().addBaseModifier($1);} - | GTU { printf($1); g_instList->getListEnd().addBaseModifier($1);} - | LE { printf($1); g_instList->getListEnd().addBaseModifier($1);} - | LEU { printf($1); g_instList->getListEnd().addBaseModifier($1);} - | LT { printf($1); g_instList->getListEnd().addBaseModifier($1);} - | LTU { printf($1); g_instList->getListEnd().addBaseModifier($1);} - | NE { printf($1); g_instList->getListEnd().addBaseModifier($1);} - | NEU { printf($1); g_instList->getListEnd().addBaseModifier($1);} +extraModifier : EQ { debug_print($1); g_instList->getListEnd().addBaseModifier($1);} + | EQU { debug_print($1); g_instList->getListEnd().addBaseModifier($1);} + | GE { debug_print($1); g_instList->getListEnd().addBaseModifier($1);} + | GEU { debug_print($1); g_instList->getListEnd().addBaseModifier($1);} + | GT { debug_print($1); g_instList->getListEnd().addBaseModifier($1);} + | GTU { debug_print($1); g_instList->getListEnd().addBaseModifier($1);} + | LE { debug_print($1); g_instList->getListEnd().addBaseModifier($1);} + | LEU { debug_print($1); g_instList->getListEnd().addBaseModifier($1);} + | LT { debug_print($1); g_instList->getListEnd().addBaseModifier($1);} + | LTU { debug_print($1); g_instList->getListEnd().addBaseModifier($1);} + | NE { debug_print($1); g_instList->getListEnd().addBaseModifier($1);} + | NEU { debug_print($1); g_instList->getListEnd().addBaseModifier($1);} ; -instructionPredicate : PREDREGISTER3 predicateModifier {printf($1); printf($2); +instructionPredicate : PREDREGISTER3 predicateModifier {debug_print($1); debug_print($2); g_instList->getListEnd().setPredicate($1); g_instList->getListEnd().addPredicateModifier($2);} - | PREDREGISTER3 {printf($1); g_instList->getListEnd().setPredicate($1);} + | PREDREGISTER3 {debug_print($1); g_instList->getListEnd().setPredicate($1);} ; operandPredicate : PREDREGISTER3 predicateModifier { - printf($1); - printf($2); + debug_print($1); + debug_print($2); //g_instList->getListEnd().addOperand($1); g_instList->getListEnd().setPredicate($1); g_instList->getListEnd().addPredicateModifier($2); /*May be the modifier needs to be added too*/ } | PREDREGISTER3 { - printf("HELLO: "); - printf($1); + debug_print("HELLO: "); + debug_print($1); g_instList->getListEnd().addOperand($1); } ; -preOperand : EX2 { printf($1); g_instList->getListEnd().addBaseModifier("ex2");} - | SIN { printf($1); g_instList->getListEnd().addBaseModifier("sin");} - | COS { printf($1); g_instList->getListEnd().addBaseModifier("cos");} +preOperand : EX2 { debug_print($1); g_instList->getListEnd().addBaseModifier("ex2");} + | SIN { debug_print($1); g_instList->getListEnd().addBaseModifier("sin");} + | COS { debug_print($1); g_instList->getListEnd().addBaseModifier("cos");} ; predicateModifier : DOTEQ { } @@ -425,3 +426,8 @@ predicateModifier : DOTEQ { } /*support c++ functions go here*/ +void debug_print( const char *s ) +{ + // uncomment to debug + // printf("%s",s); +} diff --git a/setup_environment b/setup_environment index f20118e..94f313f 100644 --- a/setup_environment +++ b/setup_environment @@ -16,7 +16,7 @@ if [ ! -d "$CUDA_INSTALL_PATH" ]; then return; fi -if [ ! `uname` = "Linux" ]; then +if [ ! `uname` = "Linux" -a ! `uname` = "Darwin" ]; then echo "ERROR ** Unsupported platform: GPGPU-Sim $GPGPUSIM_VERSION_STRING developed and tested on Linux." return; fi diff --git a/src/cuda-sim/cuda-math.h b/src/cuda-sim/cuda-math.h index b4502a1..4721e8a 100644 --- a/src/cuda-sim/cuda-math.h +++ b/src/cuda-sim/cuda-math.h @@ -336,11 +336,6 @@ float __powf(float a, float b) // math functions missing in Mac OSX GCC #ifdef __APPLE__ -int isnanf(float a) -{ - return (isnan(a)); -} - int __signbitd(double d) { unsigned long long int u = *((unsigned long long int*)&d); @@ -353,8 +348,17 @@ int __signbitd(double d) #include <math_functions.h> #undef __CUDA_INTERNAL_COMPILATION__ #undef __attribute__ + #endif } +// math functions missing in Mac OSX GCC +#ifdef __APPLE__ +int isnanf(float a) +{ + return (isnan(a)); +} +#endif + #endif diff --git a/src/tr1_hash_map.h b/src/tr1_hash_map.h index a2d3334..8c7513e 100644 --- a/src/tr1_hash_map.h +++ b/src/tr1_hash_map.h @@ -47,8 +47,4 @@ #define tr1_hash_map_ismap 1 #endif - #if tr1_hash_map_ismap == 1 - #warning "Pre-C++11 GCC version detected. Downgrading all use of <unordered_map> to <map>. Please upgrade to GCC 4.3 or later for faster simulation." - #endif - #endif diff --git a/version_detection.mk b/version_detection.mk index eac96e0..245f46f 100644 --- a/version_detection.mk +++ b/version_detection.mk @@ -27,8 +27,11 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Detect GPGPU-Sim Version +ifeq ($(GPGPUSIM_ROOT),) +else GPGPUSIM_VERSION=$(shell cat $(GPGPUSIM_ROOT)/version | awk '/Version/ {print $$8}' ) GPGPUSIM_BUILD=$(shell cat $(GPGPUSIM_ROOT)/version | awk '/Change/ {print $$6}' ) +endif # Detect CUDA Runtime Version CUDA_VERSION_STRING:=$(shell $(CUDA_INSTALL_PATH)/bin/nvcc --version | awk '/release/ {print $$5;}' | sed 's/,//') |
