-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathdef-riscv-insns.tex
151 lines (128 loc) · 8.52 KB
/
def-riscv-insns.tex
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
\ifcsname @def@riscv@insns@tex\endcsname
\ea\endinput
\fi
\ea\gdef\csname @def@riscv@insns@tex\endcsname{1}
\input{def-riscv-insns-macros}
\rvcherisubclass{top}{0}{Two Source \& Dest}
\rvcherisubclass{srcsrcdest}{7C}{Stores}
\rvcherisubclass{srcsrcdest}{7D}{Loads}
\rvcherisubclass{srcsrcdest}{7E}{Two Source}
\rvcherisubclass{srcsrcdest}{7F}{Source \& Dest}
\rvcherisubclass{srcsrc}{1F}{One Source}
\rvcherisubclass{srcdest}{1F}{Dest-Only}
\rvcherisrcdest[name=CGetPerm]{0}{rd}{cs1}
\rvcherisrcdest[name=CGetType]{1}{rd}{cs1}
\rvcherisrcdest[name=CGetBase]{2}{rd}{cs1}
\rvcherisrcdest[name=CGetLen]{3}{rd}{cs1}
\rvcherisrcdest[name=CGetTag]{4}{rd}{cs1}
\rvcherisrcdest[name=CGetSealed]{5}{rd}{cs1}
\rvcherisrcdest[name=CGetOffset]{6}{rd}{cs1}
\rvcherisrcdest[name=CGetFlags]{7}{rd}{cs1}
\rvcherisrcdest[name=CGetAddr,noref,tablesuffix=\rvcheriremovedfootnotemark]{F}{rd}{cs1}
\rvcherisrcdest[name=CGetTop]{18}{rd}{cs1}
\rvcherisrcdest[name=CGetHigh]{17}{rd}{cs1}
\rvcherisrcsrcdest[name=CSeal]{B}{cd}{cs1}{cs2}
\rvcherisrcsrcdest[name=CUnseal]{C}{cd}{cs1}{cs2}
\rvcherisrcsrcdest[name=CAndPerm]{D}{cd}{cs1}{rs2}
\rvcherisrcsrcdest[name=CSetFlags]{E}{cd}{cs1}{rs2}
\rvcherisrcsrcdest[name=CSetOffset]{F}{cd}{cs1}{rs2}
\rvcherisrcsrcdest[name=CSetAddr]{10}{cd}{cs1}{rs2}
\rvcherisrcsrcdest[name=CIncOffset]{11}{cd}{cs1}{rs2}
\rvcherisrcsrcdestimm[name=CIncOffsetImm]{1}{cd}{cs1}{imm}
\rvcherisrcsrcdest[name=CSetBounds]{8}{cd}{cs1}{rs2}
\rvcherisrcsrcdest[name=CSetBoundsExact]{9}{cd}{cs1}{rs2}
\rvcherisrcsrcdestimm[name=CSetBoundsImm]{2}{cd}{cs1}{uimm}
\rvcherisrcsrcdest[name=CSetHigh]{16}{cd}{cs1}{rs2}
\rvcherisrcdest[name=CClearTag]{B}{cd}{cs1}
\rvcherisrcsrcdest[name=CBuildCap]{1D}{cd}{cs1}{cs2}
\rvcherisrcsrcdest[name=CCopyType]{1E}{cd}{cs1}{cs2}
\rvcherisrcsrcdest[name=CCSeal]{1F}{cd}{cs1}{cs2}
\rvcherisrcdest[name=CSealEntry]{11}{cd}{cs1}
\rvcherisrcsrcdest[name=CRelocate,noref,tablesuffix=\rvcherireservedfootnotemark]{15}{cd}{cs1}{rs2}
\rvcherisrcsrcdest[name=CToPtr,tablesuffix=\rvcherideprecatedfootnotemark]{12}{rd}{cs1}{cs2}
\rvcherisrcsrcdest[name=CFromPtr,tablesuffix=\rvcherideprecatedfootnotemark]{13}{cd}{cs1}{rs2}
\rvcherisrcsrcdest[name=CSub,noref,tablesuffix=\rvcheriremovedfootnotemark]{14}{rd}{cs1}{cs2}
\rvcherisrcdest[name=CMove]{A}{cd}{cs1}
\rvcherisrcsrcdest[name=CTestSubset]{20}{rd}{cs1}{cs2}
\rvcherisrcsrcdest[name=CSetEqualExact,shortname=CSEQX]{21}{rd}{cs1}{cs2}
\rvcherisrcdest[name=JALR.CAP]{C}{cd}{cs1}
\rvcherisrcdest[name=JALR.PCC]{14}{rd}{rs1}
\rvcherisrcsrc[name=CInvoke]{1}{cs1}{cs2}
\rvcheriscr[name=CSpecialRW]{1}{cd}{scr}{cs1}
\rvchericlear[name=Clear,noref,tablesuffix=\rvcheriremovedfootnotemark]{D}
\rvchericlear[name=CClear]{E}
\rvchericlear[name=FPClear]{10}
\rvcherisrcdest[name=CRoundRepresentableLength,shortname=CRRL]{8}{rd}{rs1}
\rvcherisrcdest[name=CRepresentableAlignmentMask,shortname=CRAM]{9}{rd}{rs1}
\rvcherisrcdest[name=CLoadTags]{12}{rd}{cs1}
\rvcherisrc[name=CClearTags,noref,tablesuffix=\rvcherireservedfootnotemark]{0}{cs1}
\rvcherisrcdest[name=CGetVersion,noref,tablesuffix=\rvcherireservedfootnotemark]{13}{rd}{cs1}
\rvcherisrcsrcdest[name=CSetVersion,noref,tablesuffix=\rvcherireservedfootnotemark]{2}{cd}{cs1}{rs2}
\rvcheristorever[name=CStoreVersion,noref,tablesuffix=\rvcherireservedfootnotemark]{2}{rs2}{cs1}
\rvcherisrcdest[name=CLoadVersion,noref,tablesuffix=\rvcherireservedfootnotemark]{16}{rd}{cs1}
\rvcherisrcdest[name=CLoadVersions,noref,tablesuffix=\rvcherireservedfootnotemark]{15}{rd}{cs1}
\rvcherisrcsrcdest[name=CAmoCDecVersion,noref,tablesuffix=\rvcherireservedfootnotemark]{3}{rd}{cs2}{cs1}
\rvcheriexpload[name=LB.DDC]{00}{rd}{rs1}
\rvcheriexpload[name=LH.DDC]{01}{rd}{rs1}
\rvcheriexpload[name=LW.DDC]{02}{rd}{rs1}
\rvcheriexpload[name=LC.DDC,restriction=RV32,notable]{03}{cd}{rs1}
\rvcheriexpload[name=LD.DDC,restriction=RV64/128]{03}{rd}{rs1}
\rvcheriexpload[name=LC.DDC,restriction=RV64,notable]{17}{cd}{rs1}
\rvcheriexpload[name=LQ.DDC,restriction=RV128,noref]{17}{rd}{rs1}
\rvcheriexpload[name=LBU.DDC]{04}{rd}{rs1}
\rvcheriexpload[name=LHU.DDC]{05}{rd}{rs1}
\rvcheriexpload[name=LWU.DDC,restriction=RV64/128]{06}{rd}{rs1}
\rvcheriexpload[name=LDU.DDC,restriction=RV128,noref,tablesuffix=\rvcherildufootnotemark]{07}{rd}{rs1}
\rvcheriexpload[name=LB.CAP]{08}{rd}{cs1}
\rvcheriexpload[name=LH.CAP]{09}{rd}{cs1}
\rvcheriexpload[name=LW.CAP]{0A}{rd}{cs1}
\rvcheriexpload[name=LC.CAP,restriction=RV32,notable]{0B}{cd}{cs1}
\rvcheriexpload[name=LD.CAP,restriction=RV64/128]{0B}{rd}{cs1}
\rvcheriexpload[name=LC.CAP,restriction=RV64,notable]{1F}{cd}{cs1}
\rvcheriexpload[name=LQ.CAP,restriction=RV128,noref]{1F}{rd}{cs1}
\rvcheriexpload[name=LBU.CAP]{0C}{rd}{cs1}
\rvcheriexpload[name=LHU.CAP]{0D}{rd}{cs1}
\rvcheriexpload[name=LWU.CAP,restriction=RV64/128]{0E}{rd}{cs1}
\rvcheriexpload[name=LDU.CAP,restriction=RV128,noref,tablesuffix=\rvcherildufootnotemark]{0F}{rd}{cs1}
\rvcheriexploadres[name=LR.B.DDC,noref,tablesuffix=\rvcheriatomicfootnotemark]{10}{rd}{rs1}
\rvcheriexploadres[name=LR.H.DDC,noref,tablesuffix=\rvcheriatomicfootnotemark]{11}{rd}{rs1}
\rvcheriexploadres[name=LR.W.DDC,noref,tablesuffix=\rvcheriatomicfootnotemark]{12}{rd}{rs1}
\rvcheriexploadres[name=LR.C.DDC,restriction=RV32,noref,tablesuffix=\rvcheriatomicfootnotemark,notable]{13}{cd}{rs1}
\rvcheriexploadres[name=LR.D.DDC,restriction=RV64/128,noref,tablesuffix=\rvcheriatomicfootnotemark]{13}{rd}{rs1}
\rvcheriexploadres[name=LR.C.DDC,restriction=RV64,noref,tablesuffix=\rvcheriatomicfootnotemark,notable]{14}{cd}{rs1}
\rvcheriexploadres[name=LR.Q.DDC,restriction=RV128,noref,tablesuffix=\rvcheriatomicfootnotemark]{14}{rd}{rs1}
\rvcheriexploadres[name=LR.B.CAP,noref,tablesuffix=\rvcheriatomicfootnotemark]{18}{rd}{cs1}
\rvcheriexploadres[name=LR.H.CAP,noref,tablesuffix=\rvcheriatomicfootnotemark]{19}{rd}{cs1}
\rvcheriexploadres[name=LR.W.CAP,noref,tablesuffix=\rvcheriatomicfootnotemark]{1A}{rd}{cs1}
\rvcheriexploadres[name=LR.C.CAP,restriction=RV32,noref,tablesuffix=\rvcheriatomicfootnotemark,notable]{1B}{cd}{cs1}
\rvcheriexploadres[name=LR.D.CAP,restriction=RV64/128,noref,tablesuffix=\rvcheriatomicfootnotemark]{1B}{rd}{cs1}
\rvcheriexploadres[name=LR.C.CAP,restriction=RV64,noref,tablesuffix=\rvcheriatomicfootnotemark,notable]{1C}{cd}{cs1}
\rvcheriexploadres[name=LR.Q.CAP,restriction=RV128,noref,tablesuffix=\rvcheriatomicfootnotemark]{1C}{rd}{cs1}
\rvcheriexpstore[name=SB.DDC]{00}{rs2}{rs1}
\rvcheriexpstore[name=SH.DDC]{01}{rs2}{rs1}
\rvcheriexpstore[name=SW.DDC]{02}{rs2}{rs1}
\rvcheriexpstore[name=SC.DDC,restriction=RV32,notable]{03}{cs2}{rs1}
\rvcheriexpstore[name=SD.DDC,restriction=RV64/128]{03}{rs2}{rs1}
\rvcheriexpstore[name=SC.DDC,restriction=RV64,notable]{04}{cs2}{rs1}
\rvcheriexpstore[name=SQ.DDC,restriction=RV128,noref]{04}{rs2}{rs1}
\rvcheriexpstore[name=SB.CAP]{08}{rs2}{cs1}
\rvcheriexpstore[name=SH.CAP]{09}{rs2}{cs1}
\rvcheriexpstore[name=SW.CAP]{0A}{rs2}{cs1}
\rvcheriexpstore[name=SC.CAP,restriction=RV32,notable]{0B}{cs2}{cs1}
\rvcheriexpstore[name=SD.CAP,restriction=RV64/128]{0B}{rs2}{cs1}
\rvcheriexpstore[name=SC.CAP,restriction=RV64,notable]{0C}{cs2}{cs1}
\rvcheriexpstore[name=SQ.CAP,restriction=RV128,noref]{0C}{rs2}{cs1}
\rvcheriexpstorecond[name=SC.B.DDC,noref,tablesuffix=\rvcheriatomicfootnotemark]{10}{rd}{rs2}{rs1}
\rvcheriexpstorecond[name=SC.H.DDC,noref,tablesuffix=\rvcheriatomicfootnotemark]{11}{rd}{rs2}{rs1}
\rvcheriexpstorecond[name=SC.W.DDC,noref,tablesuffix=\rvcheriatomicfootnotemark]{12}{rd}{rs2}{rs1}
\rvcheriexpstorecond[name=SC.C.DDC,restriction=RV32,noref,tablesuffix=\rvcheriatomicfootnotemark,notable]{13}{cd}{cs2}{rs1}
\rvcheriexpstorecond[name=SC.D.DDC,restriction=RV64/128,noref,tablesuffix=\rvcheriatomicfootnotemark]{13}{rd}{rs2}{rs1}
\rvcheriexpstorecond[name=SC.C.DDC,restriction=RV64,noref,tablesuffix=\rvcheriatomicfootnotemark,notable]{14}{cd}{cs2}{rs1}
\rvcheriexpstorecond[name=SC.Q.DDC,restriction=RV128,noref,tablesuffix=\rvcheriatomicfootnotemark]{14}{rd}{rs2}{rs1}
\rvcheriexpstorecond[name=SC.B.CAP,noref,tablesuffix=\rvcheriatomicfootnotemark]{18}{rd}{rs2}{cs1}
\rvcheriexpstorecond[name=SC.H.CAP,noref,tablesuffix=\rvcheriatomicfootnotemark]{19}{rd}{rs2}{cs1}
\rvcheriexpstorecond[name=SC.W.CAP,noref,tablesuffix=\rvcheriatomicfootnotemark]{1A}{rd}{rs2}{cs1}
\rvcheriexpstorecond[name=SC.C.CAP,restriction=RV32,noref,tablesuffix=\rvcheriatomicfootnotemark,notable]{1B}{cd}{cs2}{cs1}
\rvcheriexpstorecond[name=SC.D.CAP,restriction=RV64/128,noref,tablesuffix=\rvcheriatomicfootnotemark]{1B}{rd}{rs2}{cs1}
\rvcheriexpstorecond[name=SC.C.CAP,restriction=RV64,noref,tablesuffix=\rvcheriatomicfootnotemark,notable]{1C}{cd}{cs2}{cs1}
\rvcheriexpstorecond[name=SC.Q.CAP,restriction=RV128,noref,tablesuffix=\rvcheriatomicfootnotemark]{1C}{rd}{rs2}{cs1}