diff options
Diffstat (limited to 'mips/hgen/parser.hgen')
| -rw-r--r-- | mips/hgen/parser.hgen | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/mips/hgen/parser.hgen b/mips/hgen/parser.hgen new file mode 100644 index 00000000..bf15ab1e --- /dev/null +++ b/mips/hgen/parser.hgen @@ -0,0 +1,26 @@ +| RTYPE ARCH_REG COMMA ARCH_REG COMMA ARCH_REG + { `MIPSRType ($1.op, $2, $4, $6) } +| ITYPE ARCH_REG COMMA ARCH_REG COMMA NUM + { `MIPSIType ($1.op, $2, $4, $6) } +| SHIFTI ARCH_REG COMMA ARCH_REG COMMA NUM + { `MIPSShiftI ($1.op, $2, $4, $6) } +| SHIFTV ARCH_REG COMMA ARCH_REG COMMA ARCH_REG + { `MIPSShiftV ($1.op, $2, $4, $6) } +| MULDIV ARCH_REG COMMA ARCH_REG + { `MIPSMulDiv ($1.op, $2, $4) } +| MFHILO ARCH_REG + { `MIPSMFHiLo ($1.op, $2) } +| LUI ARCH_REG COMMA NUM + { `MIPSLUI ($2, $4) } +| LOAD ARCH_REG COMMA NUM LPAR ARCH_REG RPAR + { `MIPSLoad ($1.width, $1.signed, $1.linked, $6, $2, $4) } +| STORE ARCH_REG COMMA NUM LPAR ARCH_REG RPAR + { `MIPSStore ($1.width, $1.conditional, $6, $2, $4) } +| LSLR ARCH_REG COMMA NUM LPAR ARCH_REG RPAR + { `MIPSLSLR ($1.store, $1.double, $1.left, $6, $2, $4) } +| SYNC + { `MIPSSYNC } +| BEQ ARCH_REG COMMA ARCH_REG COMMA NUM + { `MIPSBEQ ( $2, $4, $6, $1.ne, $1.likely) } +| BCMPZ ARCH_REG COMMA NUM + { `MIPSBCMPZ ( $2, $4, $1.cmp, $1.link, $1.likely) } |
