summaryrefslogtreecommitdiff
path: root/handwritten_support/hgen/lexer.hgen
blob: 9009f333cb9d1d80d9cfc51ebe95e21498bc4200 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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 ()