diff options
| author | Andrew M. B. Boktor <[email protected]> | 2012-05-14 15:04:10 -0800 |
|---|---|---|
| committer | Andrew Boktor <[email protected]> | 2014-08-14 13:47:30 -0700 |
| commit | 80aabc75ad4c5c98d342deaf010820a9bf7253bc (patch) | |
| tree | d91004b7830a5db003e584f0b276474537cbe75c /cuobjdump_to_ptxplus/header.y | |
| parent | 5e96de01f52b5ea1d32f105dc9b9cee0012c7fdc (diff) | |
Merging decuda_to_ptxplus with cuobjdump_to_ptxplus
Major rework for the Makefile
Deleting decuda_to_ptxplus
Removing all dependencies on boost and removing it from the dependencies of the simulator
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 12545]
Diffstat (limited to 'cuobjdump_to_ptxplus/header.y')
| -rw-r--r-- | cuobjdump_to_ptxplus/header.y | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/cuobjdump_to_ptxplus/header.y b/cuobjdump_to_ptxplus/header.y new file mode 100644 index 0000000..1bf62ef --- /dev/null +++ b/cuobjdump_to_ptxplus/header.y @@ -0,0 +1,116 @@ +// Copyright (c) 2009-2011, Jimmy Kwa, +// The University of British Columbia +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// Redistributions in binary form must reproduce the above copyright notice, this +// list of conditions and the following disclaimer in the documentation and/or +// other materials provided with the distribution. +// Neither the name of The University of British Columbia nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +%{ +#include <iostream> +#include "cuobjdumpInstList.h" + +int yylex(void); +void yyerror(const char*); + +extern cuobjdumpInstList *g_headerList; +extern void output(const char * text); +%} + + +%union { + double double_value; + float float_value; + int int_value; + char * string_value; + void * ptr_value; +} + +%token DOTVERSION +%token DOTTARGET +%token DOTENTRY + +%token DOTPARAM + +%token DOTU64 +%token DOTU32 +%token DOTU16 +%token DOTB32 +%token DOTF32 + +%token <string_value> IDENTIFER + + /*change these 4 to int later?*/ +%token <string_value> DECLITERAL + +%token LEFTPAREN +%token RIGHTPAREN + + +%% + + /*translation rules*/ +program : statementList { output("No parsing errors\n"); } + ; + +statementList : statementList statement { output("\n"); } + | statement { output("\n"); } + ; + +statement : compilerDirective literal literal {} + | compilerDirective identifierList {} + | compilerDirective identifierList LEFTPAREN parameterList RIGHTPAREN {} + ; + +compilerDirective : DOTVERSION { output(".version"); cuobjdumpInst *instEntry = new cuobjdumpInst(); instEntry->setBase(".version"); g_headerList->add(instEntry);} + | DOTTARGET { output(".target"); cuobjdumpInst *instEntry = new cuobjdumpInst(); instEntry->setBase(".target"); g_headerList->add(instEntry);} + | DOTENTRY { output(".entry"); cuobjdumpInst *instEntry = new cuobjdumpInst(); instEntry->setBase(".entry"); g_headerList->add(instEntry);} + ; + +identifierList : identifierList IDENTIFER { output(" "); output($2); g_headerList->getListEnd().addOperand($2); } + | IDENTIFER { output(" "); output($1); g_headerList->getListEnd().addOperand($1); } + ; + +parameterList : parameterList parameter + | parameter + ; + +parameter : stateSpace opTypes IDENTIFER { output(" "); output($3); g_headerList->getListEnd().addOperand($3);} + ; + +stateSpace : DOTPARAM { output("\n.param"); cuobjdumpInst *instEntry = new cuobjdumpInst(); instEntry->setBase(".param"); g_headerList->add(instEntry); } + ; + +opTypes : DOTU64 { output(".u64"); g_headerList->getListEnd().addTypeModifier(".u64");} + | DOTU32 { output(".u32"); g_headerList->getListEnd().addTypeModifier(".u32");} + | DOTU16 { output(".u16"); g_headerList->getListEnd().addTypeModifier(".u16");} + | DOTB32 { output(".b32"); g_headerList->getListEnd().addTypeModifier(".b32");} + | DOTF32 { output(".f32"); g_headerList->getListEnd().addTypeModifier(".f32");} + ; + +literal : DECLITERAL { output(" "); output($1); g_headerList->getListEnd().addOperand($1); } + ; + +%% + +/*support c++ functions go here*/ |
