9
9
10
10
VECTOR_EXTS = [
11
11
"INSN_CLASS_V" ,
12
+ "INSN_CLASS_ZVBB" ,
13
+ "INSN_CLASS_ZVBC" ,
14
+ "INSN_CLASS_ZVKNED" ,
15
+ "INSN_CLASS_ZVKN" ,
16
+ "INSN_CLASS_ZVKS" ,
17
+ "INSN_CLASS_ZVEF" ,
12
18
]
13
19
14
20
@@ -88,6 +94,25 @@ def get_pattern_info() -> Dict[str, PatternInfo]:
88
94
["funct10" , "vd" , "vrs2" , "rs1" , "opcode" ], "OPC vd, rs1, vrs2"
89
95
)
90
96
97
+ # Vec, Float -> Vec patterns
98
+ pattern_info_dict ["Vd,Vt,S" ] = PatternInfo (
99
+ ["funct10" , "vd" , "vrs2" , "frs1" , "opcode" ], "OPC vd, vrs2, frs1"
100
+ )
101
+ pattern_info_dict ["Vd,S,Vt" ] = PatternInfo (
102
+ ["funct10" , "vd" , "vrs2" , "frs1" , "opcode" ],
103
+ "OPC vd, frs1, vrs2" ,
104
+ )
105
+
106
+ # Float -> Vec patterns
107
+ pattern_info_dict ["Vd,S" ] = PatternInfo (
108
+ ["funct10" , "funct5" , "vd" , "frs1" , "opcode" ], "OPC vd, frs1"
109
+ )
110
+
111
+ # Vec -> Float patterns
112
+ pattern_info_dict ["D,Vt" ] = PatternInfo (
113
+ ["funct10" , "funct5" , "frd" , "vrs2" , "opcode" ], "OPC frd, vrs2"
114
+ )
115
+
91
116
# Vec -> Vec patterns
92
117
pattern_info_dict ["Vd,Vs" ] = PatternInfo (
93
118
["funct10" , "funct5" , "vd" , "vrs1" , "opcode" ], "OPC vd, vrs1"
@@ -103,10 +128,6 @@ def get_pattern_info() -> Dict[str, PatternInfo]:
103
128
["funct10" , "vd" , "vrs1" , "vrs2" , "opcode" ],
104
129
"OPC vd, vrs1, vrs2" ,
105
130
)
106
- pattern_info_dict ["Vd,S,Vt" ] = PatternInfo (
107
- ["funct10" , "vd" , "rs1" , "vrs2" , "opcode" ],
108
- "OPC vd, rs1, vrs2" ,
109
- )
110
131
pattern_info_dict ["Vd,Vt" ] = PatternInfo (
111
132
["funct10" , "funct5" , "vd" , "vrs2" , "opcode" ], "OPC vd, vrs2"
112
133
)
@@ -150,6 +171,32 @@ def get_pattern_info() -> Dict[str, PatternInfo]:
150
171
"OPC vd, vrs2, i_imm6" ,
151
172
)
152
173
174
+ pattern_info_dict ["Vd,Vt,Vs,V0" ] = PatternInfo (
175
+ ["funct5" , "vmd" , "vrs2" , "vrs1" , "vmask" , "opcode" ],
176
+ "OPC vmd, vrs1, vrs2, vmask" ,
177
+ )
178
+
179
+ pattern_info_dict ["Vd,Vt,s,V0" ] = PatternInfo (
180
+ ["funct5" , "vmd" , "vrs2" , "rs1" , "vmask" , "opcode" ],
181
+ "OPC vmd, vrs2, rs1, vmask" ,
182
+ )
183
+
184
+ # Float
185
+ pattern_info_dict ["Vd,Vt,S,V0" ] = PatternInfo (
186
+ ["funct5" , "vmd" , "vrs2" , "frs1" , "vmask" , "opcode" ],
187
+ "OPC vmd, vrs2, frs1, vmask" ,
188
+ )
189
+
190
+ pattern_info_dict ["d,Vt" ] = PatternInfo (
191
+ ["funct10" , "funct5" , "rd" , "vrs2" , "opcode" ],
192
+ "OPC rd, vrs2" ,
193
+ )
194
+
195
+ pattern_info_dict ["d,VtVm" ] = PatternInfo (
196
+ ["funct10" , "rd" , "vrs2" , "vmask" , "opcode" ],
197
+ "OPC rd, vrs2, vmask.t" ,
198
+ )
199
+
153
200
# Add masked variants
154
201
masked_patterns : Dict [str , PatternInfo ] = {}
155
202
for pattern , pattern_info in pattern_info_dict .items ():
@@ -210,26 +257,6 @@ def get_pattern_info() -> Dict[str, PatternInfo]:
210
257
211
258
pattern_info_dict |= widening_patterns
212
259
213
- pattern_info_dict ["Vd,Vt,Vs,V0" ] = PatternInfo (
214
- ["funct5" , "vmd" , "vrs2" , "vrs1" , "vmask" , "opcode" ],
215
- "OPC vmd, vrs1, vrs2, vmask" ,
216
- )
217
-
218
- pattern_info_dict ["Vd,Vt,s,V0" ] = PatternInfo (
219
- ["funct5" , "vmd" , "vrs2" , "rs1" , "vmask" , "opcode" ],
220
- "OPC vmd, vrs2, rs1, vmask" ,
221
- )
222
-
223
- pattern_info_dict ["d,Vt" ] = PatternInfo (
224
- ["funct10" , "funct5" , "rd" , "vrs2" , "opcode" ],
225
- "OPC rd, vrs2" ,
226
- )
227
-
228
- pattern_info_dict ["d,VtVm" ] = PatternInfo (
229
- ["funct10" , "rd" , "vrs2" , "vmask" , "opcode" ],
230
- "OPC rd, vrs2, vmask.t" ,
231
- )
232
-
233
260
return pattern_info_dict
234
261
235
262
0 commit comments