From 5a65fb7a5f0cb1a8d7831bae33749e8bd15a947d Mon Sep 17 00:00:00 2001 From: "Andrew M. B. Boktor" Date: Wed, 18 Apr 2012 16:32:54 -0800 Subject: Merging //depot/gpgpu_sim_research/fermi-test/cuobjdump_to_ptxplus/... to //depot/gpgpu_sim_research/fermi/distribution/cuobjdump_to_ptxplus/... [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 12022] --- cuobjdump_to_ptxplus/elf.y | 81 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 cuobjdump_to_ptxplus/elf.y (limited to 'cuobjdump_to_ptxplus/elf.y') diff --git a/cuobjdump_to_ptxplus/elf.y b/cuobjdump_to_ptxplus/elf.y new file mode 100644 index 0000000..8f5163e --- /dev/null +++ b/cuobjdump_to_ptxplus/elf.y @@ -0,0 +1,81 @@ + /*Yacc file for elf files output by cuobjdump*/ +%{ +#include +#include "cuobjdumpInstList.h" + +int yylex(void); +void yyerror(const char*); +//void addEntryConstMemory(int, int); +//void setConstMemoryType(const char*); +//void addConstMemoryValue(const char*); +extern cuobjdumpInstList *g_instList; +int cmemcount=1; +int lmemcount=1; +bool lastcmem = false;// false = constrant0, true = constant1 +%} +%union { + char* string_value; +} +%token C1BEGIN CMEMVAL SPACE2 C0BEGIN STBEGIN STHEADER +%token NUMBER HEXNUMBER IDENTIFIER LOCALMEM + +%% + +elffile : symtab program + ; + +symtab : STBEGIN STHEADER stcontent + ; + +stcontent : stcontent stline + | stline; + +stline : NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER IDENTIFIER { + if (strcmp($4, "11")==0) { + g_instList->addConstMemoryPtr($2, $3, $7); + } + } + | NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER {} + ; + +program : program cmemsection + | program localmemsection + | { + g_instList->setKernelCount(cmemcount-1); + //g_instList->reverseConstMemory(); + }; + +localmemsection : LOCALMEM { + printf("Found LocalMem section number %d\n", lmemcount); + g_instList->addEntryLocalMemory(0, lmemcount); + g_instList->setLocalMemoryMap($1, lmemcount); + lmemcount++; + }; + +cmemsection : C1BEGIN { + printf("Found ConstMem section number %d\n", cmemcount); + //g_instList->addEntryConstMemory(1, cmemcount); + g_instList->addEntryConstMemory2($1); + g_instList->setConstMemoryType2(".u32"); + //g_instList->setConstMemoryType(".u32"); + //g_instList->setConstMemoryMap($1,cmemcount); + cmemcount++; + lastcmem = true; + } cmemvals + | C0BEGIN { + printf("Found ConstMem c0 section\n"); + g_instList->addConstMemory(0); + g_instList->setConstMemoryType(".u32"); + lastcmem = false; + } cmemvals; + +cmemvals : cmemvals CMEMVAL SPACE2 { + //printf("Found ConstMem value\n"); + printf("addConstMemoryValue %s\n", $3); + if (lastcmem) + g_instList->addConstMemoryValue2($3); + else + g_instList->addConstMemoryValue($3); + } + | ; +%% -- cgit v1.3