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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
"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};
"slli", SHIFTIOP{op=RISCVSLLI};
"srli", SHIFTIOP{op=RISCVSRLI};
"srai", SHIFTIOP{op=RISCVSRAI};
"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};
"lb", LOAD{unsigned=false; width=RISCVBYTE; aq=false};
"lbu", LOAD{unsigned=true; width=RISCVBYTE; aq=false};
"lh", LOAD{unsigned=false; width=RISCVHALF; aq=false};
"lhu", LOAD{unsigned=true; width=RISCVHALF; aq=false};
"lw", LOAD{unsigned=false; width=RISCVWORD; aq=false};
"lwu", LOAD{unsigned=true; width=RISCVWORD; aq=false};
"ld", LOAD{unsigned=false; width=RISCVDOUBLE; aq=false};
"lb.aq", LOAD{unsigned=false; width=RISCVBYTE; aq=true};
"lbu.aq", LOAD{unsigned=true; width=RISCVBYTE; aq=true};
"lh.aq", LOAD{unsigned=false; width=RISCVHALF; aq=true};
"lhu.aq", LOAD{unsigned=true; width=RISCVHALF; aq=true};
"lw.aq", LOAD{unsigned=false; width=RISCVWORD; aq=true};
"lwu.aq", LOAD{unsigned=true; width=RISCVWORD; aq=true};
"ld.aq", LOAD{unsigned=false; width=RISCVDOUBLE; aq=true};
"sb", STORE{width=RISCVBYTE; rl=false};
"sh", STORE{width=RISCVHALF; rl=false};
"sw", STORE{width=RISCVWORD; rl=false};
"sd", STORE{width=RISCVDOUBLE; rl=false};
"sb.rl", STORE{width=RISCVBYTE; rl=true};
"sh.rl", STORE{width=RISCVHALF; rl=true};
"sw.rl", STORE{width=RISCVWORD; rl=true};
"sd.rl", STORE{width=RISCVDOUBLE; rl=true};
"addiw", ADDIW ();
"slliw", SHIFTW{op=RISCVSLLI};
"srliw", SHIFTW{op=RISCVSRLI};
"sraiw", SHIFTW{op=RISCVSRAI};
"addw", RTYPEW{op=RISCVADDW};
"subw", RTYPEW{op=RISCVSUBW};
"sslw", RTYPEW{op=RISCVSLLW};
"srlw", RTYPEW{op=RISCVSRLW};
"sraw", RTYPEW{op=RISCVSRAW};
"fence", FENCE ();
"r", FENCEOPTION Fence_R;
"w", FENCEOPTION Fence_W;
"rw", FENCEOPTION Fence_RW;
"lr.w", LOADRES {width=RISCVWORD; aq=false; rl=false};
"lr.w.aq", LOADRES {width=RISCVWORD; aq=true; rl=false};
"lr.d", LOADRES {width=RISCVDOUBLE; aq=false; rl=false};
"lr.d.aq", LOADRES {width=RISCVDOUBLE; aq=true; rl=false};
"sc.w", STORECON {width=RISCVWORD; aq=false; rl=false};
"sc.w.rl", STORECON {width=RISCVWORD; aq=false; rl=true};
"sc.d", STORECON {width=RISCVDOUBLE; aq=false; rl=false};
"sc.d.rl", STORECON {width=RISCVDOUBLE; aq=false; rl=true};
|