@@ -47,204 +47,8 @@ static const char *RISCVGImplications[] = {
47
47
" i" , " m" , " a" , " f" , " d" , " zicsr" , " zifencei"
48
48
};
49
49
50
- // NOTE: This table should be sorted alphabetically by extension name.
51
- static const RISCVSupportedExtension SupportedExtensions[] = {
52
- {" a" , {2 , 1 }},
53
- {" c" , {2 , 0 }},
54
- {" d" , {2 , 2 }},
55
- {" e" , {2 , 0 }},
56
- {" f" , {2 , 2 }},
57
- {" h" , {1 , 0 }},
58
- {" i" , {2 , 1 }},
59
- {" m" , {2 , 0 }},
60
-
61
- {" shcounterenw" , {1 , 0 }},
62
- {" shgatpa" , {1 , 0 }},
63
- {" shtvala" , {1 , 0 }},
64
- {" shvsatpa" , {1 , 0 }},
65
- {" shvstvala" , {1 , 0 }},
66
- {" shvstvecd" , {1 , 0 }},
67
- {" smaia" , {1 , 0 }},
68
- {" smepmp" , {1 , 0 }},
69
- {" ssaia" , {1 , 0 }},
70
- {" ssccptr" , {1 , 0 }},
71
- {" sscofpmf" , {1 , 0 }},
72
- {" sscounterenw" , {1 , 0 }},
73
- {" ssstateen" , {1 , 0 }},
74
- {" ssstrict" , {1 , 0 }},
75
- {" sstc" , {1 , 0 }},
76
- {" sstvala" , {1 , 0 }},
77
- {" sstvecd" , {1 , 0 }},
78
- {" ssu64xl" , {1 , 0 }},
79
- {" svade" , {1 , 0 }},
80
- {" svadu" , {1 , 0 }},
81
- {" svbare" , {1 , 0 }},
82
- {" svinval" , {1 , 0 }},
83
- {" svnapot" , {1 , 0 }},
84
- {" svpbmt" , {1 , 0 }},
85
-
86
- {" v" , {1 , 0 }},
87
-
88
- // vendor-defined ('X') extensions
89
- {" xcvalu" , {1 , 0 }},
90
- {" xcvbi" , {1 , 0 }},
91
- {" xcvbitmanip" , {1 , 0 }},
92
- {" xcvelw" , {1 , 0 }},
93
- {" xcvmac" , {1 , 0 }},
94
- {" xcvmem" , {1 , 0 }},
95
- {" xcvsimd" , {1 , 0 }},
96
- {" xsfcease" , {1 , 0 }},
97
- {" xsfvcp" , {1 , 0 }},
98
- {" xsfvfnrclipxfqf" , {1 , 0 }},
99
- {" xsfvfwmaccqqq" , {1 , 0 }},
100
- {" xsfvqmaccdod" , {1 , 0 }},
101
- {" xsfvqmaccqoq" , {1 , 0 }},
102
- {" xsifivecdiscarddlone" , {1 , 0 }},
103
- {" xsifivecflushdlone" , {1 , 0 }},
104
- {" xtheadba" , {1 , 0 }},
105
- {" xtheadbb" , {1 , 0 }},
106
- {" xtheadbs" , {1 , 0 }},
107
- {" xtheadcmo" , {1 , 0 }},
108
- {" xtheadcondmov" , {1 , 0 }},
109
- {" xtheadfmemidx" , {1 , 0 }},
110
- {" xtheadmac" , {1 , 0 }},
111
- {" xtheadmemidx" , {1 , 0 }},
112
- {" xtheadmempair" , {1 , 0 }},
113
- {" xtheadsync" , {1 , 0 }},
114
- {" xtheadvdot" , {1 , 0 }},
115
- {" xventanacondops" , {1 , 0 }},
116
-
117
- {" za128rs" , {1 , 0 }},
118
- {" za64rs" , {1 , 0 }},
119
- {" zacas" , {1 , 0 }},
120
- {" zama16b" , {1 , 0 }},
121
- {" zawrs" , {1 , 0 }},
122
-
123
- {" zba" , {1 , 0 }},
124
- {" zbb" , {1 , 0 }},
125
- {" zbc" , {1 , 0 }},
126
- {" zbkb" , {1 , 0 }},
127
- {" zbkc" , {1 , 0 }},
128
- {" zbkx" , {1 , 0 }},
129
- {" zbs" , {1 , 0 }},
130
-
131
- {" zca" , {1 , 0 }},
132
- {" zcb" , {1 , 0 }},
133
- {" zcd" , {1 , 0 }},
134
- {" zce" , {1 , 0 }},
135
- {" zcf" , {1 , 0 }},
136
- {" zcmop" , {1 , 0 }},
137
- {" zcmp" , {1 , 0 }},
138
- {" zcmt" , {1 , 0 }},
139
-
140
- {" zdinx" , {1 , 0 }},
141
-
142
- {" zfa" , {1 , 0 }},
143
- {" zfh" , {1 , 0 }},
144
- {" zfhmin" , {1 , 0 }},
145
- {" zfinx" , {1 , 0 }},
146
-
147
- {" zhinx" , {1 , 0 }},
148
- {" zhinxmin" , {1 , 0 }},
149
-
150
- {" zic64b" , {1 , 0 }},
151
- {" zicbom" , {1 , 0 }},
152
- {" zicbop" , {1 , 0 }},
153
- {" zicboz" , {1 , 0 }},
154
- {" ziccamoa" , {1 , 0 }},
155
- {" ziccif" , {1 , 0 }},
156
- {" zicclsm" , {1 , 0 }},
157
- {" ziccrse" , {1 , 0 }},
158
- {" zicntr" , {2 , 0 }},
159
- {" zicond" , {1 , 0 }},
160
- {" zicsr" , {2 , 0 }},
161
- {" zifencei" , {2 , 0 }},
162
- {" zihintntl" , {1 , 0 }},
163
- {" zihintpause" , {2 , 0 }},
164
- {" zihpm" , {2 , 0 }},
165
- {" zimop" , {1 , 0 }},
166
-
167
- {" zk" , {1 , 0 }},
168
- {" zkn" , {1 , 0 }},
169
- {" zknd" , {1 , 0 }},
170
- {" zkne" , {1 , 0 }},
171
- {" zknh" , {1 , 0 }},
172
- {" zkr" , {1 , 0 }},
173
- {" zks" , {1 , 0 }},
174
- {" zksed" , {1 , 0 }},
175
- {" zksh" , {1 , 0 }},
176
- {" zkt" , {1 , 0 }},
177
-
178
- {" zmmul" , {1 , 0 }},
179
-
180
- {" zvbb" , {1 , 0 }},
181
- {" zvbc" , {1 , 0 }},
182
-
183
- {" zve32f" , {1 , 0 }},
184
- {" zve32x" , {1 , 0 }},
185
- {" zve64d" , {1 , 0 }},
186
- {" zve64f" , {1 , 0 }},
187
- {" zve64x" , {1 , 0 }},
188
-
189
- {" zvfh" , {1 , 0 }},
190
- {" zvfhmin" , {1 , 0 }},
191
-
192
- // vector crypto
193
- {" zvkb" , {1 , 0 }},
194
- {" zvkg" , {1 , 0 }},
195
- {" zvkn" , {1 , 0 }},
196
- {" zvknc" , {1 , 0 }},
197
- {" zvkned" , {1 , 0 }},
198
- {" zvkng" , {1 , 0 }},
199
- {" zvknha" , {1 , 0 }},
200
- {" zvknhb" , {1 , 0 }},
201
- {" zvks" , {1 , 0 }},
202
- {" zvksc" , {1 , 0 }},
203
- {" zvksed" , {1 , 0 }},
204
- {" zvksg" , {1 , 0 }},
205
- {" zvksh" , {1 , 0 }},
206
- {" zvkt" , {1 , 0 }},
207
-
208
- {" zvl1024b" , {1 , 0 }},
209
- {" zvl128b" , {1 , 0 }},
210
- {" zvl16384b" , {1 , 0 }},
211
- {" zvl2048b" , {1 , 0 }},
212
- {" zvl256b" , {1 , 0 }},
213
- {" zvl32768b" , {1 , 0 }},
214
- {" zvl32b" , {1 , 0 }},
215
- {" zvl4096b" , {1 , 0 }},
216
- {" zvl512b" , {1 , 0 }},
217
- {" zvl64b" , {1 , 0 }},
218
- {" zvl65536b" , {1 , 0 }},
219
- {" zvl8192b" , {1 , 0 }},
220
- };
221
-
222
- // NOTE: This table should be sorted alphabetically by extension name.
223
- // clang-format off
224
- static const RISCVSupportedExtension SupportedExperimentalExtensions[] = {
225
- {" smmpm" , {0 , 8 }},
226
- {" smnpm" , {0 , 8 }},
227
- {" ssnpm" , {0 , 8 }},
228
- {" sspm" , {0 , 8 }},
229
- {" ssqosid" , {1 , 0 }},
230
- {" supm" , {0 , 8 }},
231
-
232
- {" zaamo" , {0 , 2 }},
233
- {" zabha" , {1 , 0 }},
234
- {" zalasr" , {0 , 1 }},
235
- {" zalrsc" , {0 , 2 }},
236
-
237
- {" zfbfmin" , {1 , 0 }},
238
-
239
- {" zicfilp" , {0 , 4 }},
240
- {" zicfiss" , {0 , 4 }},
241
-
242
- {" ztso" , {0 , 1 }},
243
-
244
- {" zvfbfmin" , {1 , 0 }},
245
- {" zvfbfwma" , {1 , 0 }},
246
- };
247
- // clang-format on
50
+ #define GET_SUPPORTED_EXTENSIONS
51
+ #include " llvm/TargetParser//RISCVTargetParserDef.inc"
248
52
249
53
static constexpr RISCVProfile SupportedProfiles[] = {
250
54
{" rvi20u32" , " rv32i" },
@@ -1041,66 +845,6 @@ Error RISCVISAInfo::checkDependency() {
1041
845
return Error::success ();
1042
846
}
1043
847
1044
- static const char *ImpliedExtsD[] = {" f" };
1045
- static const char *ImpliedExtsF[] = {" zicsr" };
1046
- static const char *ImpliedExtsV[] = {" zvl128b" , " zve64d" };
1047
- static const char *ImpliedExtsXSfvcp[] = {" zve32x" };
1048
- static const char *ImpliedExtsXSfvfnrclipxfqf[] = {" zve32f" };
1049
- static const char *ImpliedExtsXSfvfwmaccqqq[] = {" zvfbfmin" };
1050
- static const char *ImpliedExtsXSfvqmaccdod[] = {" zve32x" };
1051
- static const char *ImpliedExtsXSfvqmaccqoq[] = {" zve32x" };
1052
- static const char *ImpliedExtsXTHeadVdot[] = {" v" };
1053
- static const char *ImpliedExtsZcb[] = {" zca" };
1054
- static const char *ImpliedExtsZcd[] = {" d" , " zca" };
1055
- static const char *ImpliedExtsZce[] = {" zcb" , " zcmp" , " zcmt" };
1056
- static const char *ImpliedExtsZcf[] = {" f" , " zca" };
1057
- static const char *ImpliedExtsZcmop[] = {" zca" };
1058
- static const char *ImpliedExtsZcmp[] = {" zca" };
1059
- static const char *ImpliedExtsZcmt[] = {" zca" , " zicsr" };
1060
- static const char *ImpliedExtsZdinx[] = {" zfinx" };
1061
- static const char *ImpliedExtsZfa[] = {" f" };
1062
- static const char *ImpliedExtsZfbfmin[] = {" f" };
1063
- static const char *ImpliedExtsZfh[] = {" zfhmin" };
1064
- static const char *ImpliedExtsZfhmin[] = {" f" };
1065
- static const char *ImpliedExtsZfinx[] = {" zicsr" };
1066
- static const char *ImpliedExtsZhinx[] = {" zhinxmin" };
1067
- static const char *ImpliedExtsZhinxmin[] = {" zfinx" };
1068
- static const char *ImpliedExtsZicfiss[] = {" zicsr" , " zimop" };
1069
- static const char *ImpliedExtsZicntr[] = {" zicsr" };
1070
- static const char *ImpliedExtsZihpm[] = {" zicsr" };
1071
- static const char *ImpliedExtsZk[] = {" zkn" , " zkt" , " zkr" };
1072
- static const char *ImpliedExtsZkn[] = {" zbkb" , " zbkc" , " zbkx" ,
1073
- " zkne" , " zknd" , " zknh" };
1074
- static const char *ImpliedExtsZks[] = {" zbkb" , " zbkc" , " zbkx" , " zksed" , " zksh" };
1075
- static const char *ImpliedExtsZvbb[] = {" zvkb" };
1076
- static const char *ImpliedExtsZve32f[] = {" zve32x" , " f" };
1077
- static const char *ImpliedExtsZve32x[] = {" zvl32b" , " zicsr" };
1078
- static const char *ImpliedExtsZve64d[] = {" zve64f" , " d" };
1079
- static const char *ImpliedExtsZve64f[] = {" zve64x" , " zve32f" };
1080
- static const char *ImpliedExtsZve64x[] = {" zve32x" , " zvl64b" };
1081
- static const char *ImpliedExtsZvfbfmin[] = {" zve32f" };
1082
- static const char *ImpliedExtsZvfbfwma[] = {" zvfbfmin" , " zfbfmin" };
1083
- static const char *ImpliedExtsZvfh[] = {" zvfhmin" , " zfhmin" };
1084
- static const char *ImpliedExtsZvfhmin[] = {" zve32f" };
1085
- static const char *ImpliedExtsZvkn[] = {" zvkb" , " zvkned" , " zvknhb" , " zvkt" };
1086
- static const char *ImpliedExtsZvknc[] = {" zvbc" , " zvkn" };
1087
- static const char *ImpliedExtsZvkng[] = {" zvkg" , " zvkn" };
1088
- static const char *ImpliedExtsZvknhb[] = {" zve64x" };
1089
- static const char *ImpliedExtsZvks[] = {" zvkb" , " zvksed" , " zvksh" , " zvkt" };
1090
- static const char *ImpliedExtsZvksc[] = {" zvbc" , " zvks" };
1091
- static const char *ImpliedExtsZvksg[] = {" zvkg" , " zvks" };
1092
- static const char *ImpliedExtsZvl1024b[] = {" zvl512b" };
1093
- static const char *ImpliedExtsZvl128b[] = {" zvl64b" };
1094
- static const char *ImpliedExtsZvl16384b[] = {" zvl8192b" };
1095
- static const char *ImpliedExtsZvl2048b[] = {" zvl1024b" };
1096
- static const char *ImpliedExtsZvl256b[] = {" zvl128b" };
1097
- static const char *ImpliedExtsZvl32768b[] = {" zvl16384b" };
1098
- static const char *ImpliedExtsZvl4096b[] = {" zvl2048b" };
1099
- static const char *ImpliedExtsZvl512b[] = {" zvl256b" };
1100
- static const char *ImpliedExtsZvl64b[] = {" zvl32b" };
1101
- static const char *ImpliedExtsZvl65536b[] = {" zvl32768b" };
1102
- static const char *ImpliedExtsZvl8192b[] = {" zvl4096b" };
1103
-
1104
848
struct ImpliedExtsEntry {
1105
849
StringLiteral Name;
1106
850
ArrayRef<const char *> Exts;
@@ -1112,67 +856,8 @@ struct ImpliedExtsEntry {
1112
856
bool operator <(StringRef Other) const { return Name < Other; }
1113
857
};
1114
858
1115
- // Note: The table needs to be sorted by name.
1116
- static constexpr ImpliedExtsEntry ImpliedExts[] = {
1117
- {{" d" }, {ImpliedExtsD}},
1118
- {{" f" }, {ImpliedExtsF}},
1119
- {{" v" }, {ImpliedExtsV}},
1120
- {{" xsfvcp" }, {ImpliedExtsXSfvcp}},
1121
- {{" xsfvfnrclipxfqf" }, {ImpliedExtsXSfvfnrclipxfqf}},
1122
- {{" xsfvfwmaccqqq" }, {ImpliedExtsXSfvfwmaccqqq}},
1123
- {{" xsfvqmaccdod" }, {ImpliedExtsXSfvqmaccdod}},
1124
- {{" xsfvqmaccqoq" }, {ImpliedExtsXSfvqmaccqoq}},
1125
- {{" xtheadvdot" }, {ImpliedExtsXTHeadVdot}},
1126
- {{" zcb" }, {ImpliedExtsZcb}},
1127
- {{" zcd" }, {ImpliedExtsZcd}},
1128
- {{" zce" }, {ImpliedExtsZce}},
1129
- {{" zcf" }, {ImpliedExtsZcf}},
1130
- {{" zcmop" }, {ImpliedExtsZcmop}},
1131
- {{" zcmp" }, {ImpliedExtsZcmp}},
1132
- {{" zcmt" }, {ImpliedExtsZcmt}},
1133
- {{" zdinx" }, {ImpliedExtsZdinx}},
1134
- {{" zfa" }, {ImpliedExtsZfa}},
1135
- {{" zfbfmin" }, {ImpliedExtsZfbfmin}},
1136
- {{" zfh" }, {ImpliedExtsZfh}},
1137
- {{" zfhmin" }, {ImpliedExtsZfhmin}},
1138
- {{" zfinx" }, {ImpliedExtsZfinx}},
1139
- {{" zhinx" }, {ImpliedExtsZhinx}},
1140
- {{" zhinxmin" }, {ImpliedExtsZhinxmin}},
1141
- {{" zicfiss" }, {ImpliedExtsZicfiss}},
1142
- {{" zicntr" }, {ImpliedExtsZicntr}},
1143
- {{" zihpm" }, {ImpliedExtsZihpm}},
1144
- {{" zk" }, {ImpliedExtsZk}},
1145
- {{" zkn" }, {ImpliedExtsZkn}},
1146
- {{" zks" }, {ImpliedExtsZks}},
1147
- {{" zvbb" }, {ImpliedExtsZvbb}},
1148
- {{" zve32f" }, {ImpliedExtsZve32f}},
1149
- {{" zve32x" }, {ImpliedExtsZve32x}},
1150
- {{" zve64d" }, {ImpliedExtsZve64d}},
1151
- {{" zve64f" }, {ImpliedExtsZve64f}},
1152
- {{" zve64x" }, {ImpliedExtsZve64x}},
1153
- {{" zvfbfmin" }, {ImpliedExtsZvfbfmin}},
1154
- {{" zvfbfwma" }, {ImpliedExtsZvfbfwma}},
1155
- {{" zvfh" }, {ImpliedExtsZvfh}},
1156
- {{" zvfhmin" }, {ImpliedExtsZvfhmin}},
1157
- {{" zvkn" }, {ImpliedExtsZvkn}},
1158
- {{" zvknc" }, {ImpliedExtsZvknc}},
1159
- {{" zvkng" }, {ImpliedExtsZvkng}},
1160
- {{" zvknhb" }, {ImpliedExtsZvknhb}},
1161
- {{" zvks" }, {ImpliedExtsZvks}},
1162
- {{" zvksc" }, {ImpliedExtsZvksc}},
1163
- {{" zvksg" }, {ImpliedExtsZvksg}},
1164
- {{" zvl1024b" }, {ImpliedExtsZvl1024b}},
1165
- {{" zvl128b" }, {ImpliedExtsZvl128b}},
1166
- {{" zvl16384b" }, {ImpliedExtsZvl16384b}},
1167
- {{" zvl2048b" }, {ImpliedExtsZvl2048b}},
1168
- {{" zvl256b" }, {ImpliedExtsZvl256b}},
1169
- {{" zvl32768b" }, {ImpliedExtsZvl32768b}},
1170
- {{" zvl4096b" }, {ImpliedExtsZvl4096b}},
1171
- {{" zvl512b" }, {ImpliedExtsZvl512b}},
1172
- {{" zvl64b" }, {ImpliedExtsZvl64b}},
1173
- {{" zvl65536b" }, {ImpliedExtsZvl65536b}},
1174
- {{" zvl8192b" }, {ImpliedExtsZvl8192b}},
1175
- };
859
+ #define GET_IMPLIED_EXTENSIONS
860
+ #include " llvm/TargetParser/RISCVTargetParserDef.inc"
1176
861
1177
862
void RISCVISAInfo::updateImplication () {
1178
863
bool HasE = Exts.count (" e" ) != 0 ;
0 commit comments