diff options
Diffstat (limited to 'handwritten_support/hgen/lexer.hgen')
| -rw-r--r-- | handwritten_support/hgen/lexer.hgen | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/handwritten_support/hgen/lexer.hgen b/handwritten_support/hgen/lexer.hgen new file mode 100644 index 0000000..9009f33 --- /dev/null +++ b/handwritten_support/hgen/lexer.hgen @@ -0,0 +1,63 @@ +(** RV32I (and RV64I) ***********************************************) +"lui" , UTYPE { op=RISCVLUI }; +"auipc" , UTYPE { op=RISCVAUIPC }; + +"jal", JAL (); +"jalr", JALR (); + +"beq", BTYPE {op=RISCVBEQ}; +"bne", BTYPE {op=RISCVBNE}; +"blt", BTYPE {op=RISCVBLT}; +"bge", BTYPE {op=RISCVBGE}; +"bltu", BTYPE {op=RISCVBLTU}; +"bgeu", BTYPE {op=RISCVBGEU}; + +"addi", ITYPE {op=RISCVADDI}; +"stli", ITYPE {op=RISCVSLTI}; +"sltiu", ITYPE {op=RISCVSLTIU}; +"xori", ITYPE {op=RISCVXORI}; +"ori", ITYPE {op=RISCVORI}; +"andi", ITYPE {op=RISCVANDI}; + +"add", RTYPE {op=RISCVADD}; +"sub", RTYPE {op=RISCVSUB}; +"sll", RTYPE {op=RISCVSLL}; +"slt", RTYPE {op=RISCVSLT}; +"sltu", RTYPE {op=RISCVSLT}; +"xor", RTYPE {op=RISCVXOR}; +"srl", RTYPE {op=RISCVSRL}; +"sra", RTYPE {op=RISCVSRA}; +"or", RTYPE {op=RISCVOR}; +"and", RTYPE {op=RISCVAND}; + +"fence", FENCE (); +"fence.tso", FENCETSO (); +"fence.i", FENCEI (); + +(** RV64I (in addition to RV32I) ************************************) + +"addiw", ADDIW (); + +"addw", RTYPEW {op=RISCVADDW}; +"subw", RTYPEW {op=RISCVSUBW}; +"sllw", RTYPEW {op=RISCVSLLW}; +"srlw", RTYPEW {op=RISCVSRLW}; +"sraw", RTYPEW {op=RISCVSRAW}; + +"slli", SHIFTIOP {op=RISCVSLLI}; +"srli", SHIFTIOP {op=RISCVSRLI}; +"srai", SHIFTIOP {op=RISCVSRAI}; + +"slliw", SHIFTW {op=RISCVSLLI}; +"srliw", SHIFTW {op=RISCVSRLI}; +"sraiw", SHIFTW {op=RISCVSRAI}; + +(** RV32A (and RV64A) ***********************************************) + +"r", FENCEOPTION Fence_R; +"w", FENCEOPTION Fence_W; +"rw", FENCEOPTION Fence_RW; + +(** pseudo instructions *********************************************) + +"li", LI () |
