summaryrefslogtreecommitdiff
path: root/cuobjdump_to_ptxplus/sass.y
diff options
context:
space:
mode:
authorJimmy Kwa <[email protected]>2012-09-06 13:53:41 -0800
committerAndrew Boktor <[email protected]>2014-08-14 13:48:55 -0700
commit46045592211f1999983755726263c60267f8ef2f (patch)
treedd85fc576f40a731b32b76d84b8dcc264a628871 /cuobjdump_to_ptxplus/sass.y
parent99ff7de8db264b902f0eaa5828c0a508e3986b56 (diff)
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]
Diffstat (limited to 'cuobjdump_to_ptxplus/sass.y')
-rw-r--r--cuobjdump_to_ptxplus/sass.y17
1 files changed, 11 insertions, 6 deletions
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 <string_value> BAR
-%token <string_value> ADA AND ANDS BRA CAL COS DADD DMIN DMAX DFMA DMUL EX2 F2F F2I FADD
+%token <string_value> ADA AND ANDS BRA BRX CAL COS DADD DMIN DMAX DFMA DMUL EX2 F2F F2I FADD
%token <string_value> FADD32 FADD32I FMAD FMAD32I FMUL FMUL32 FMUL32I FSET DSET G2R
%token <string_value> GLD GST I2F I2I IADD IADD32 IADD32I IMAD ISAD IMAD24 IMAD32I IMAD32 IADDCARRY
-%token <string_value> IMUL IMUL24 IMULS24 IMUL32 IMUL32S24 IMUL32U24 IMUL32I IMUL32I24 IMUL32IS24
+%token <string_value> IMUL IMUL24 IMUL24H IMULS24 IMUL32 IMUL32S24 IMUL32U24 IMUL32I IMUL32I24 IMUL32IS24
%token <string_value> ISET LG2 LLD LST MOV MOV32 MVC MVI NOP NOT NOTS OR ORS
%token <string_value> R2A R2G R2GU16U8 RCP RCP32 RET RRO RSQ SIN SHL SHR SSY XOR XORS
%token <string_value> S2R SASS_LD STS LDS SASS_ST IMIN IMAX A2R FMAX FMIN TEX TEX32 C2R EXIT
@@ -62,7 +62,7 @@ cuobjdumpInst *instEntry;
%token <string_value> DOTTRUNC DOTCEIL DOTFLOOR DOTIR DOTUN DOTNODEP DOTSAT DOTANY DOTALL
%token <string_value> DOTF16 DOTF32 DOTF64 DOTS8 DOTS16 DOTS32 DOTS64 DOTS128 DOTU8 DOTU16 DOTU32 DOTU24 DOTU64
%token <string_value> DOTHI DOTNOINC
-%token <string_value> DOTEQ DOTEQU DOTGE DOTGEU DOTGT DOTGTU DOTLE DOTLEU DOTLT DOTLTU DOTNE DOTNEU DOTNSF DOTSF DOTCARRY
+%token <string_value> DOTEQ DOTEQU DOTFALSE DOTGE DOTGEU DOTGT DOTGTU DOTLE DOTLEU DOTLT DOTLTU DOTNE DOTNEU DOTNSF DOTSF DOTCARRY
%token <string_value> DOTCC DOTX DOTE DOTRED DOTPOPC
%token <string_value> REGISTER REGISTERLO REGISTERHI OFFSETREGISTER
%token <string_value> 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 { }