From 46045592211f1999983755726263c60267f8ef2f Mon Sep 17 00:00:00 2001 From: Jimmy Kwa Date: Thu, 6 Sep 2012 13:53:41 -0800 Subject: Several changes to ptxplus towards getting the sphyraena benchmark to work. Add .false modifier to cuobjdump_to_ptxplus. It isn't supported in gpgpusim yet since we don't know what it does. Fixed most of the issues with global (const14) variable not being declared properly. Added "BRX" instruction to cuobjdump_to_ptxplus and some support for it in gpgpusim. There are other issues with it that still need to be worked out. Added support for translating IADD.CARRY sass instruction into ptxplus addp instructions. Fixed a bug with generating ".half" modifiers on instructions so the ptxplus instruction addresses should match sass addresses now. Separated ssy instructions from nop. However, they are still simulated as nop in gpgpusim. Sometime cuobjdump generate a blank link that takes up an address slot. This was changed to a nop. [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 14001] --- cuobjdump_to_ptxplus/sass.y | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'cuobjdump_to_ptxplus/sass.y') diff --git a/cuobjdump_to_ptxplus/sass.y b/cuobjdump_to_ptxplus/sass.y index 3706ad8..1cb6388 100644 --- a/cuobjdump_to_ptxplus/sass.y +++ b/cuobjdump_to_ptxplus/sass.y @@ -48,10 +48,10 @@ cuobjdumpInst *instEntry; } %token BAR -%token ADA AND ANDS BRA CAL COS DADD DMIN DMAX DFMA DMUL EX2 F2F F2I FADD +%token ADA AND ANDS BRA BRX CAL COS DADD DMIN DMAX DFMA DMUL EX2 F2F F2I FADD %token FADD32 FADD32I FMAD FMAD32I FMUL FMUL32 FMUL32I FSET DSET G2R %token GLD GST I2F I2I IADD IADD32 IADD32I IMAD ISAD IMAD24 IMAD32I IMAD32 IADDCARRY -%token IMUL IMUL24 IMULS24 IMUL32 IMUL32S24 IMUL32U24 IMUL32I IMUL32I24 IMUL32IS24 +%token IMUL IMUL24 IMUL24H IMULS24 IMUL32 IMUL32S24 IMUL32U24 IMUL32I IMUL32I24 IMUL32IS24 %token ISET LG2 LLD LST MOV MOV32 MVC MVI NOP NOT NOTS OR ORS %token R2A R2G R2GU16U8 RCP RCP32 RET RRO RSQ SIN SHL SHR SSY XOR XORS %token S2R SASS_LD STS LDS SASS_ST IMIN IMAX A2R FMAX FMIN TEX TEX32 C2R EXIT @@ -62,7 +62,7 @@ cuobjdumpInst *instEntry; %token DOTTRUNC DOTCEIL DOTFLOOR DOTIR DOTUN DOTNODEP DOTSAT DOTANY DOTALL %token DOTF16 DOTF32 DOTF64 DOTS8 DOTS16 DOTS32 DOTS64 DOTS128 DOTU8 DOTU16 DOTU32 DOTU24 DOTU64 %token DOTHI DOTNOINC -%token DOTEQ DOTEQU DOTGE DOTGEU DOTGT DOTGTU DOTLE DOTLEU DOTLT DOTLTU DOTNE DOTNEU DOTNSF DOTSF DOTCARRY +%token DOTEQ DOTEQU DOTFALSE DOTGE DOTGEU DOTGT DOTGTU DOTLE DOTLEU DOTLT DOTLTU DOTNE DOTNEU DOTNSF DOTSF DOTCARRY %token DOTCC DOTX DOTE DOTRED DOTPOPC %token REGISTER REGISTERLO REGISTERHI OFFSETREGISTER %token PREDREGISTER PREDREGISTER2 PREDREGISTER3 SREGISTER @@ -121,9 +121,13 @@ statementList : statementList statement NEWLINE { debug_print("\n"); } | NEWLINE {} ; -statement : { instEntry = new cuobjdumpInst(); } instructionLabel instructionHex assemblyInstruction +statement : { instEntry = new cuobjdumpInst(); } instructionLabel statementend ; +statementend : instructionHex assemblyInstruction + | /*blank*/ {instEntry->setBase("NOP"); g_instList->add(instEntry); debug_print("NOP");} + ; + instructionHex : INSTHEX ; @@ -157,11 +161,11 @@ baseInstruction : simpleInstructions { debug_print($1); instEntry->setBase($1); | pbkInstruction ; -simpleInstructions : ADA | AND | ANDS | COS | DADD | DMIN | DMAX | DFMA | DMUL | EX2 | F2F +simpleInstructions : ADA | AND | ANDS | BRX | COS | DADD | DMIN | DMAX | DFMA | DMUL | EX2 | F2F | F2I | FADD | FADD32 | FADD32I | FMAD | FMAD32I | FMUL | FMUL32 | FMUL32I | FSET | DSET | G2R | GLD | GST | I2F | I2I | IADD | IADD32 | IADD32I | IMAD | ISAD | IMAD24 | IMAD32I | IMAD32 | IMUL - | IMUL24 | IMULS24 | IMUL32 | IMUL32S24 | IMUL32I | IMUL32I24 | IMUL32IS24 + | IMUL24 | IMUL24H | IMULS24 | IMUL32 | IMUL32S24 | IMUL32I | IMUL32I24 | IMUL32IS24 | IMUL32U24 | ISET | LG2 | LLD | LST | MOV | MOV32 | MVC | MVI | NOP | NOT | NOTS | OR | ORS | R2A | R2G | R2GU16U8 | RCP | RCP32 | RET | RRO @@ -407,6 +411,7 @@ preOperand : EX2 { debug_print($1); g_instList->getListEnd().addBaseModifier("ex predicateModifier : DOTEQ { } | DOTEQU { } + | DOTFALSE { } | DOTGE { } | DOTGEU { } | DOTGT { } -- cgit v1.3