1//=- LoongArchLASXInstrInfo.td - LoongArch LASX instructions -*- tablegen -*-=//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file describes the Advanced SIMD extension instructions.
10//
11//===----------------------------------------------------------------------===//
12
13//===----------------------------------------------------------------------===//
14// Instruction class templates
15//===----------------------------------------------------------------------===//
16
17class LASX1RI13_XI<bits<32> op, Operand ImmOpnd = simm13>
18    : Fmt1RI13_XI<op, (outs LASX256:$xd), (ins ImmOpnd:$imm13), "$xd, $imm13">;
19
20class LASX2R_XX<bits<32> op>
21    : Fmt2R_XX<op, (outs LASX256:$xd), (ins LASX256:$xj), "$xd, $xj">;
22
23class LASX2R_XR<bits<32> op>
24    : Fmt2R_XR<op, (outs LASX256:$xd), (ins GPR:$rj), "$xd, $rj">;
25
26class LASX2R_CX<bits<32> op>
27    : Fmt2R_CX<op, (outs CFR:$cd), (ins LASX256:$xj), "$cd, $xj">;
28
29class LASX2RI1_XXI<bits<32> op, Operand ImmOpnd = uimm1>
30    : Fmt2RI1_XXI<op, (outs LASX256:$xd), (ins LASX256:$xj, ImmOpnd:$imm1),
31                  "$xd, $xj, $imm1">;
32
33class LASX2RI2_XXI<bits<32> op, Operand ImmOpnd = uimm2>
34    : Fmt2RI2_XXI<op, (outs LASX256:$xd), (ins LASX256:$xj, ImmOpnd:$imm2),
35                  "$xd, $xj, $imm2">;
36
37class LASX2RI2_RXI<bits<32> op, Operand ImmOpnd = uimm2>
38    : Fmt2RI2_RXI<op, (outs GPR:$rd), (ins LASX256:$xj, ImmOpnd:$imm2),
39                  "$rd, $xj, $imm2">;
40
41class LASX2RI3_XXI<bits<32> op, Operand ImmOpnd = uimm3>
42    : Fmt2RI3_XXI<op, (outs LASX256:$xd), (ins LASX256:$xj, ImmOpnd:$imm3),
43                  "$xd, $xj, $imm3">;
44
45class LASX2RI3_RXI<bits<32> op, Operand ImmOpnd = uimm3>
46    : Fmt2RI3_RXI<op, (outs GPR:$rd), (ins LASX256:$xj, ImmOpnd:$imm3),
47                  "$rd, $xj, $imm3">;
48
49class LASX2RI4_XXI<bits<32> op, Operand ImmOpnd = uimm4>
50    : Fmt2RI4_XXI<op, (outs LASX256:$xd), (ins LASX256:$xj, ImmOpnd:$imm4),
51                  "$xd, $xj, $imm4">;
52
53class LASX2RI4_XRI<bits<32> op, Operand ImmOpnd = uimm4>
54    : Fmt2RI4_XRI<op, (outs LASX256:$xd), (ins GPR:$rj, ImmOpnd:$imm4),
55                  "$xd, $rj, $imm4">;
56
57class LASX2RI4_RXI<bits<32> op, Operand ImmOpnd = uimm4>
58    : Fmt2RI4_RXI<op, (outs GPR:$rd), (ins LASX256:$xj, ImmOpnd:$imm4),
59                  "$rd, $xj, $imm4">;
60
61class LASX2RI5_XXI<bits<32> op, Operand ImmOpnd = uimm5>
62    : Fmt2RI5_XXI<op, (outs LASX256:$xd), (ins LASX256:$xj, ImmOpnd:$imm5),
63                  "$xd, $xj, $imm5">;
64
65class LASX2RI6_XXI<bits<32> op, Operand ImmOpnd = uimm6>
66    : Fmt2RI6_XXI<op, (outs LASX256:$xd), (ins LASX256:$xj, ImmOpnd:$imm6),
67                  "$xd, $xj, $imm6">;
68
69class LASX2RI8_XXI<bits<32> op, Operand ImmOpnd = uimm8>
70    : Fmt2RI8_XXI<op, (outs LASX256:$xd), (ins LASX256:$xj, ImmOpnd:$imm8),
71                  "$xd, $xj, $imm8">;
72
73class LASX2RI8I2_XRII<bits<32> op, Operand ImmOpnd = simm8,
74                     Operand IdxOpnd = uimm2>
75    : Fmt2RI8I2_XRII<op, (outs),
76                     (ins LASX256:$xd, GPR:$rj, ImmOpnd:$imm8, IdxOpnd:$imm2),
77                     "$xd, $rj, $imm8, $imm2">;
78class LASX2RI8I3_XRII<bits<32> op, Operand ImmOpnd = simm8,
79                     Operand IdxOpnd = uimm3>
80    : Fmt2RI8I3_XRII<op, (outs),
81                     (ins LASX256:$xd, GPR:$rj, ImmOpnd:$imm8, IdxOpnd:$imm3),
82                     "$xd, $rj, $imm8, $imm3">;
83class LASX2RI8I4_XRII<bits<32> op, Operand ImmOpnd = simm8,
84                     Operand IdxOpnd = uimm4>
85    : Fmt2RI8I4_XRII<op, (outs),
86                     (ins LASX256:$xd, GPR:$rj, ImmOpnd:$imm8, IdxOpnd:$imm4),
87                     "$xd, $rj, $imm8, $imm4">;
88class LASX2RI8I5_XRII<bits<32> op, Operand ImmOpnd = simm8,
89                     Operand IdxOpnd = uimm5>
90    : Fmt2RI8I5_XRII<op, (outs),
91                     (ins LASX256:$xd, GPR:$rj, ImmOpnd:$imm8, IdxOpnd:$imm5),
92                     "$xd, $rj, $imm8, $imm5">;
93
94class LASX3R_XXX<bits<32> op>
95    : Fmt3R_XXX<op, (outs LASX256:$xd), (ins LASX256:$xj, LASX256:$xk),
96                "$xd, $xj, $xk">;
97
98class LASX3R_XXR<bits<32> op>
99    : Fmt3R_XXR<op, (outs LASX256:$xd), (ins LASX256:$xj, GPR:$rk),
100                "$xd, $xj, $rk">;
101
102class LASX4R_XXXX<bits<32> op>
103    : Fmt4R_XXXX<op, (outs LASX256:$xd),
104                 (ins LASX256:$xj, LASX256:$xk, LASX256:$xa),
105                 "$xd, $xj, $xk, $xa">;
106
107let Constraints = "$xd = $dst" in {
108
109class LASX2RI2_XXXI<bits<32> op, Operand ImmOpnd = uimm2>
110    : Fmt2RI2_XXI<op, (outs LASX256:$dst), (ins LASX256:$xd, LASX256:$xj, ImmOpnd:$imm2),
111                  "$xd, $xj, $imm2">;
112class LASX2RI3_XXXI<bits<32> op, Operand ImmOpnd = uimm3>
113    : Fmt2RI3_XXI<op, (outs LASX256:$dst), (ins LASX256:$xd, LASX256:$xj, ImmOpnd:$imm3),
114                  "$xd, $xj, $imm3">;
115
116class LASX2RI2_XXRI<bits<32> op, Operand ImmOpnd = uimm2>
117    : Fmt2RI2_XRI<op, (outs LASX256:$dst), (ins LASX256:$xd, GPR:$rj, ImmOpnd:$imm2),
118                  "$xd, $rj, $imm2">;
119class LASX2RI3_XXRI<bits<32> op, Operand ImmOpnd = uimm3>
120    : Fmt2RI3_XRI<op, (outs LASX256:$dst), (ins LASX256:$xd, GPR:$rj, ImmOpnd:$imm3),
121                  "$xd, $rj, $imm3">;
122
123class LASX2RI4_XXXI<bits<32> op, Operand ImmOpnd = uimm4>
124    : Fmt2RI4_XXI<op, (outs LASX256:$dst), (ins LASX256:$xd, LASX256:$xj, ImmOpnd:$imm4),
125                  "$xd, $xj, $imm4">;
126class LASX2RI5_XXXI<bits<32> op, Operand ImmOpnd = uimm5>
127    : Fmt2RI5_XXI<op, (outs LASX256:$dst), (ins LASX256:$xd, LASX256:$xj, ImmOpnd:$imm5),
128                  "$xd, $xj, $imm5">;
129class LASX2RI6_XXXI<bits<32> op, Operand ImmOpnd = uimm6>
130    : Fmt2RI6_XXI<op, (outs LASX256:$dst), (ins LASX256:$xd, LASX256:$xj, ImmOpnd:$imm6),
131                  "$xd, $xj, $imm6">;
132class LASX2RI7_XXXI<bits<32> op, Operand ImmOpnd = uimm7>
133    : Fmt2RI7_XXI<op, (outs LASX256:$dst), (ins LASX256:$xd, LASX256:$xj, ImmOpnd:$imm7),
134                  "$xd, $xj, $imm7">;
135
136class LASX2RI8_XXXI<bits<32> op, Operand ImmOpnd = uimm8>
137    : Fmt2RI8_XXI<op, (outs LASX256:$dst), (ins LASX256:$xd, LASX256:$xj, ImmOpnd:$imm8),
138                  "$xd, $xj, $imm8">;
139
140class LASX3R_XXXX<bits<32> op>
141    : Fmt3R_XXX<op, (outs LASX256:$dst), (ins LASX256:$xd, LASX256:$xj, LASX256:$xk),
142                "$xd, $xj, $xk">;
143
144} // Constraints = "$xd = $dst"
145
146class LASX2RI9_Load<bits<32> op, Operand ImmOpnd = simm9_lsl3>
147    : Fmt2RI9_XRI<op, (outs LASX256:$xd), (ins GPR:$rj, ImmOpnd:$imm9),
148                  "$xd, $rj, $imm9">;
149class LASX2RI10_Load<bits<32> op, Operand ImmOpnd = simm10_lsl2>
150    : Fmt2RI10_XRI<op, (outs LASX256:$xd), (ins GPR:$rj, ImmOpnd:$imm10),
151                  "$xd, $rj, $imm10">;
152class LASX2RI11_Load<bits<32> op, Operand ImmOpnd = simm11_lsl1>
153    : Fmt2RI11_XRI<op, (outs LASX256:$xd), (ins GPR:$rj, ImmOpnd:$imm11),
154                  "$xd, $rj, $imm11">;
155class LASX2RI12_Load<bits<32> op, Operand ImmOpnd = simm12>
156    : Fmt2RI12_XRI<op, (outs LASX256:$xd), (ins GPR:$rj, ImmOpnd:$imm12),
157                  "$xd, $rj, $imm12">;
158class LASX2RI12_Store<bits<32> op, Operand ImmOpnd = simm12>
159    : Fmt2RI12_XRI<op, (outs), (ins LASX256:$xd, GPR:$rj, ImmOpnd:$imm12),
160                  "$xd, $rj, $imm12">;
161
162class LASX3R_Load<bits<32> op>
163    : Fmt3R_XRR<op, (outs LASX256:$xd), (ins GPR:$rj, GPR:$rk),
164                "$xd, $rj, $rk">;
165class LASX3R_Store<bits<32> op>
166    : Fmt3R_XRR<op, (outs), (ins LASX256:$xd, GPR:$rj, GPR:$rk),
167                "$xd, $rj, $rk">;
168
169//===----------------------------------------------------------------------===//
170// Instructions
171//===----------------------------------------------------------------------===//
172
173let hasSideEffects = 0, Predicates = [HasExtLASX] in {
174
175let mayLoad = 0, mayStore = 0 in {
176def XVADD_B : LASX3R_XXX<0x740a0000>;
177def XVADD_H : LASX3R_XXX<0x740a8000>;
178def XVADD_W : LASX3R_XXX<0x740b0000>;
179def XVADD_D : LASX3R_XXX<0x740b8000>;
180def XVADD_Q : LASX3R_XXX<0x752d0000>;
181
182def XVSUB_B : LASX3R_XXX<0x740c0000>;
183def XVSUB_H : LASX3R_XXX<0x740c8000>;
184def XVSUB_W : LASX3R_XXX<0x740d0000>;
185def XVSUB_D : LASX3R_XXX<0x740d8000>;
186def XVSUB_Q : LASX3R_XXX<0x752d8000>;
187
188def XVADDI_BU : LASX2RI5_XXI<0x768a0000>;
189def XVADDI_HU : LASX2RI5_XXI<0x768a8000>;
190def XVADDI_WU : LASX2RI5_XXI<0x768b0000>;
191def XVADDI_DU : LASX2RI5_XXI<0x768b8000>;
192
193def XVSUBI_BU : LASX2RI5_XXI<0x768c0000>;
194def XVSUBI_HU : LASX2RI5_XXI<0x768c8000>;
195def XVSUBI_WU : LASX2RI5_XXI<0x768d0000>;
196def XVSUBI_DU : LASX2RI5_XXI<0x768d8000>;
197
198def XVNEG_B : LASX2R_XX<0x769c3000>;
199def XVNEG_H : LASX2R_XX<0x769c3400>;
200def XVNEG_W : LASX2R_XX<0x769c3800>;
201def XVNEG_D : LASX2R_XX<0x769c3c00>;
202
203def XVSADD_B : LASX3R_XXX<0x74460000>;
204def XVSADD_H : LASX3R_XXX<0x74468000>;
205def XVSADD_W : LASX3R_XXX<0x74470000>;
206def XVSADD_D : LASX3R_XXX<0x74478000>;
207def XVSADD_BU : LASX3R_XXX<0x744a0000>;
208def XVSADD_HU : LASX3R_XXX<0x744a8000>;
209def XVSADD_WU : LASX3R_XXX<0x744b0000>;
210def XVSADD_DU : LASX3R_XXX<0x744b8000>;
211
212def XVSSUB_B : LASX3R_XXX<0x74480000>;
213def XVSSUB_H : LASX3R_XXX<0x74488000>;
214def XVSSUB_W : LASX3R_XXX<0x74490000>;
215def XVSSUB_D : LASX3R_XXX<0x74498000>;
216def XVSSUB_BU : LASX3R_XXX<0x744c0000>;
217def XVSSUB_HU : LASX3R_XXX<0x744c8000>;
218def XVSSUB_WU : LASX3R_XXX<0x744d0000>;
219def XVSSUB_DU : LASX3R_XXX<0x744d8000>;
220
221def XVHADDW_H_B : LASX3R_XXX<0x74540000>;
222def XVHADDW_W_H : LASX3R_XXX<0x74548000>;
223def XVHADDW_D_W : LASX3R_XXX<0x74550000>;
224def XVHADDW_Q_D : LASX3R_XXX<0x74558000>;
225def XVHADDW_HU_BU : LASX3R_XXX<0x74580000>;
226def XVHADDW_WU_HU : LASX3R_XXX<0x74588000>;
227def XVHADDW_DU_WU : LASX3R_XXX<0x74590000>;
228def XVHADDW_QU_DU : LASX3R_XXX<0x74598000>;
229
230def XVHSUBW_H_B : LASX3R_XXX<0x74560000>;
231def XVHSUBW_W_H : LASX3R_XXX<0x74568000>;
232def XVHSUBW_D_W : LASX3R_XXX<0x74570000>;
233def XVHSUBW_Q_D : LASX3R_XXX<0x74578000>;
234def XVHSUBW_HU_BU : LASX3R_XXX<0x745a0000>;
235def XVHSUBW_WU_HU : LASX3R_XXX<0x745a8000>;
236def XVHSUBW_DU_WU : LASX3R_XXX<0x745b0000>;
237def XVHSUBW_QU_DU : LASX3R_XXX<0x745b8000>;
238
239def XVADDWEV_H_B : LASX3R_XXX<0x741e0000>;
240def XVADDWEV_W_H : LASX3R_XXX<0x741e8000>;
241def XVADDWEV_D_W : LASX3R_XXX<0x741f0000>;
242def XVADDWEV_Q_D : LASX3R_XXX<0x741f8000>;
243def XVADDWOD_H_B : LASX3R_XXX<0x74220000>;
244def XVADDWOD_W_H : LASX3R_XXX<0x74228000>;
245def XVADDWOD_D_W : LASX3R_XXX<0x74230000>;
246def XVADDWOD_Q_D : LASX3R_XXX<0x74238000>;
247
248def XVSUBWEV_H_B : LASX3R_XXX<0x74200000>;
249def XVSUBWEV_W_H : LASX3R_XXX<0x74208000>;
250def XVSUBWEV_D_W : LASX3R_XXX<0x74210000>;
251def XVSUBWEV_Q_D : LASX3R_XXX<0x74218000>;
252def XVSUBWOD_H_B : LASX3R_XXX<0x74240000>;
253def XVSUBWOD_W_H : LASX3R_XXX<0x74248000>;
254def XVSUBWOD_D_W : LASX3R_XXX<0x74250000>;
255def XVSUBWOD_Q_D : LASX3R_XXX<0x74258000>;
256
257def XVADDWEV_H_BU : LASX3R_XXX<0x742e0000>;
258def XVADDWEV_W_HU : LASX3R_XXX<0x742e8000>;
259def XVADDWEV_D_WU : LASX3R_XXX<0x742f0000>;
260def XVADDWEV_Q_DU : LASX3R_XXX<0x742f8000>;
261def XVADDWOD_H_BU : LASX3R_XXX<0x74320000>;
262def XVADDWOD_W_HU : LASX3R_XXX<0x74328000>;
263def XVADDWOD_D_WU : LASX3R_XXX<0x74330000>;
264def XVADDWOD_Q_DU : LASX3R_XXX<0x74338000>;
265
266def XVSUBWEV_H_BU : LASX3R_XXX<0x74300000>;
267def XVSUBWEV_W_HU : LASX3R_XXX<0x74308000>;
268def XVSUBWEV_D_WU : LASX3R_XXX<0x74310000>;
269def XVSUBWEV_Q_DU : LASX3R_XXX<0x74318000>;
270def XVSUBWOD_H_BU : LASX3R_XXX<0x74340000>;
271def XVSUBWOD_W_HU : LASX3R_XXX<0x74348000>;
272def XVSUBWOD_D_WU : LASX3R_XXX<0x74350000>;
273def XVSUBWOD_Q_DU : LASX3R_XXX<0x74358000>;
274
275def XVADDWEV_H_BU_B : LASX3R_XXX<0x743e0000>;
276def XVADDWEV_W_HU_H : LASX3R_XXX<0x743e8000>;
277def XVADDWEV_D_WU_W : LASX3R_XXX<0x743f0000>;
278def XVADDWEV_Q_DU_D : LASX3R_XXX<0x743f8000>;
279def XVADDWOD_H_BU_B : LASX3R_XXX<0x74400000>;
280def XVADDWOD_W_HU_H : LASX3R_XXX<0x74408000>;
281def XVADDWOD_D_WU_W : LASX3R_XXX<0x74410000>;
282def XVADDWOD_Q_DU_D : LASX3R_XXX<0x74418000>;
283
284def XVAVG_B : LASX3R_XXX<0x74640000>;
285def XVAVG_H : LASX3R_XXX<0x74648000>;
286def XVAVG_W : LASX3R_XXX<0x74650000>;
287def XVAVG_D : LASX3R_XXX<0x74658000>;
288def XVAVG_BU : LASX3R_XXX<0x74660000>;
289def XVAVG_HU : LASX3R_XXX<0x74668000>;
290def XVAVG_WU : LASX3R_XXX<0x74670000>;
291def XVAVG_DU : LASX3R_XXX<0x74678000>;
292def XVAVGR_B : LASX3R_XXX<0x74680000>;
293def XVAVGR_H : LASX3R_XXX<0x74688000>;
294def XVAVGR_W : LASX3R_XXX<0x74690000>;
295def XVAVGR_D : LASX3R_XXX<0x74698000>;
296def XVAVGR_BU : LASX3R_XXX<0x746a0000>;
297def XVAVGR_HU : LASX3R_XXX<0x746a8000>;
298def XVAVGR_WU : LASX3R_XXX<0x746b0000>;
299def XVAVGR_DU : LASX3R_XXX<0x746b8000>;
300
301def XVABSD_B : LASX3R_XXX<0x74600000>;
302def XVABSD_H : LASX3R_XXX<0x74608000>;
303def XVABSD_W : LASX3R_XXX<0x74610000>;
304def XVABSD_D : LASX3R_XXX<0x74618000>;
305def XVABSD_BU : LASX3R_XXX<0x74620000>;
306def XVABSD_HU : LASX3R_XXX<0x74628000>;
307def XVABSD_WU : LASX3R_XXX<0x74630000>;
308def XVABSD_DU : LASX3R_XXX<0x74638000>;
309
310def XVADDA_B : LASX3R_XXX<0x745c0000>;
311def XVADDA_H : LASX3R_XXX<0x745c8000>;
312def XVADDA_W : LASX3R_XXX<0x745d0000>;
313def XVADDA_D : LASX3R_XXX<0x745d8000>;
314
315def XVMAX_B : LASX3R_XXX<0x74700000>;
316def XVMAX_H : LASX3R_XXX<0x74708000>;
317def XVMAX_W : LASX3R_XXX<0x74710000>;
318def XVMAX_D : LASX3R_XXX<0x74718000>;
319def XVMAXI_B : LASX2RI5_XXI<0x76900000, simm5>;
320def XVMAXI_H : LASX2RI5_XXI<0x76908000, simm5>;
321def XVMAXI_W : LASX2RI5_XXI<0x76910000, simm5>;
322def XVMAXI_D : LASX2RI5_XXI<0x76918000, simm5>;
323def XVMAX_BU : LASX3R_XXX<0x74740000>;
324def XVMAX_HU : LASX3R_XXX<0x74748000>;
325def XVMAX_WU : LASX3R_XXX<0x74750000>;
326def XVMAX_DU : LASX3R_XXX<0x74758000>;
327def XVMAXI_BU : LASX2RI5_XXI<0x76940000>;
328def XVMAXI_HU : LASX2RI5_XXI<0x76948000>;
329def XVMAXI_WU : LASX2RI5_XXI<0x76950000>;
330def XVMAXI_DU : LASX2RI5_XXI<0x76958000>;
331
332def XVMIN_B : LASX3R_XXX<0x74720000>;
333def XVMIN_H : LASX3R_XXX<0x74728000>;
334def XVMIN_W : LASX3R_XXX<0x74730000>;
335def XVMIN_D : LASX3R_XXX<0x74738000>;
336def XVMINI_B : LASX2RI5_XXI<0x76920000, simm5>;
337def XVMINI_H : LASX2RI5_XXI<0x76928000, simm5>;
338def XVMINI_W : LASX2RI5_XXI<0x76930000, simm5>;
339def XVMINI_D : LASX2RI5_XXI<0x76938000, simm5>;
340def XVMIN_BU : LASX3R_XXX<0x74760000>;
341def XVMIN_HU : LASX3R_XXX<0x74768000>;
342def XVMIN_WU : LASX3R_XXX<0x74770000>;
343def XVMIN_DU : LASX3R_XXX<0x74778000>;
344def XVMINI_BU : LASX2RI5_XXI<0x76960000>;
345def XVMINI_HU : LASX2RI5_XXI<0x76968000>;
346def XVMINI_WU : LASX2RI5_XXI<0x76970000>;
347def XVMINI_DU : LASX2RI5_XXI<0x76978000>;
348
349def XVMUL_B : LASX3R_XXX<0x74840000>;
350def XVMUL_H : LASX3R_XXX<0x74848000>;
351def XVMUL_W : LASX3R_XXX<0x74850000>;
352def XVMUL_D : LASX3R_XXX<0x74858000>;
353
354def XVMUH_B : LASX3R_XXX<0x74860000>;
355def XVMUH_H : LASX3R_XXX<0x74868000>;
356def XVMUH_W : LASX3R_XXX<0x74870000>;
357def XVMUH_D : LASX3R_XXX<0x74878000>;
358def XVMUH_BU : LASX3R_XXX<0x74880000>;
359def XVMUH_HU : LASX3R_XXX<0x74888000>;
360def XVMUH_WU : LASX3R_XXX<0x74890000>;
361def XVMUH_DU : LASX3R_XXX<0x74898000>;
362
363def XVMULWEV_H_B : LASX3R_XXX<0x74900000>;
364def XVMULWEV_W_H : LASX3R_XXX<0x74908000>;
365def XVMULWEV_D_W : LASX3R_XXX<0x74910000>;
366def XVMULWEV_Q_D : LASX3R_XXX<0x74918000>;
367def XVMULWOD_H_B : LASX3R_XXX<0x74920000>;
368def XVMULWOD_W_H : LASX3R_XXX<0x74928000>;
369def XVMULWOD_D_W : LASX3R_XXX<0x74930000>;
370def XVMULWOD_Q_D : LASX3R_XXX<0x74938000>;
371def XVMULWEV_H_BU : LASX3R_XXX<0x74980000>;
372def XVMULWEV_W_HU : LASX3R_XXX<0x74988000>;
373def XVMULWEV_D_WU : LASX3R_XXX<0x74990000>;
374def XVMULWEV_Q_DU : LASX3R_XXX<0x74998000>;
375def XVMULWOD_H_BU : LASX3R_XXX<0x749a0000>;
376def XVMULWOD_W_HU : LASX3R_XXX<0x749a8000>;
377def XVMULWOD_D_WU : LASX3R_XXX<0x749b0000>;
378def XVMULWOD_Q_DU : LASX3R_XXX<0x749b8000>;
379def XVMULWEV_H_BU_B : LASX3R_XXX<0x74a00000>;
380def XVMULWEV_W_HU_H : LASX3R_XXX<0x74a08000>;
381def XVMULWEV_D_WU_W : LASX3R_XXX<0x74a10000>;
382def XVMULWEV_Q_DU_D : LASX3R_XXX<0x74a18000>;
383def XVMULWOD_H_BU_B : LASX3R_XXX<0x74a20000>;
384def XVMULWOD_W_HU_H : LASX3R_XXX<0x74a28000>;
385def XVMULWOD_D_WU_W : LASX3R_XXX<0x74a30000>;
386def XVMULWOD_Q_DU_D : LASX3R_XXX<0x74a38000>;
387
388def XVMADD_B : LASX3R_XXXX<0x74a80000>;
389def XVMADD_H : LASX3R_XXXX<0x74a88000>;
390def XVMADD_W : LASX3R_XXXX<0x74a90000>;
391def XVMADD_D : LASX3R_XXXX<0x74a98000>;
392
393def XVMSUB_B : LASX3R_XXXX<0x74aa0000>;
394def XVMSUB_H : LASX3R_XXXX<0x74aa8000>;
395def XVMSUB_W : LASX3R_XXXX<0x74ab0000>;
396def XVMSUB_D : LASX3R_XXXX<0x74ab8000>;
397
398def XVMADDWEV_H_B : LASX3R_XXXX<0x74ac0000>;
399def XVMADDWEV_W_H : LASX3R_XXXX<0x74ac8000>;
400def XVMADDWEV_D_W : LASX3R_XXXX<0x74ad0000>;
401def XVMADDWEV_Q_D : LASX3R_XXXX<0x74ad8000>;
402def XVMADDWOD_H_B : LASX3R_XXXX<0x74ae0000>;
403def XVMADDWOD_W_H : LASX3R_XXXX<0x74ae8000>;
404def XVMADDWOD_D_W : LASX3R_XXXX<0x74af0000>;
405def XVMADDWOD_Q_D : LASX3R_XXXX<0x74af8000>;
406def XVMADDWEV_H_BU : LASX3R_XXXX<0x74b40000>;
407def XVMADDWEV_W_HU : LASX3R_XXXX<0x74b48000>;
408def XVMADDWEV_D_WU : LASX3R_XXXX<0x74b50000>;
409def XVMADDWEV_Q_DU : LASX3R_XXXX<0x74b58000>;
410def XVMADDWOD_H_BU : LASX3R_XXXX<0x74b60000>;
411def XVMADDWOD_W_HU : LASX3R_XXXX<0x74b68000>;
412def XVMADDWOD_D_WU : LASX3R_XXXX<0x74b70000>;
413def XVMADDWOD_Q_DU : LASX3R_XXXX<0x74b78000>;
414def XVMADDWEV_H_BU_B : LASX3R_XXXX<0x74bc0000>;
415def XVMADDWEV_W_HU_H : LASX3R_XXXX<0x74bc8000>;
416def XVMADDWEV_D_WU_W : LASX3R_XXXX<0x74bd0000>;
417def XVMADDWEV_Q_DU_D : LASX3R_XXXX<0x74bd8000>;
418def XVMADDWOD_H_BU_B : LASX3R_XXXX<0x74be0000>;
419def XVMADDWOD_W_HU_H : LASX3R_XXXX<0x74be8000>;
420def XVMADDWOD_D_WU_W : LASX3R_XXXX<0x74bf0000>;
421def XVMADDWOD_Q_DU_D : LASX3R_XXXX<0x74bf8000>;
422
423def XVDIV_B : LASX3R_XXX<0x74e00000>;
424def XVDIV_H : LASX3R_XXX<0x74e08000>;
425def XVDIV_W : LASX3R_XXX<0x74e10000>;
426def XVDIV_D : LASX3R_XXX<0x74e18000>;
427def XVDIV_BU : LASX3R_XXX<0x74e40000>;
428def XVDIV_HU : LASX3R_XXX<0x74e48000>;
429def XVDIV_WU : LASX3R_XXX<0x74e50000>;
430def XVDIV_DU : LASX3R_XXX<0x74e58000>;
431
432def XVMOD_B : LASX3R_XXX<0x74e20000>;
433def XVMOD_H : LASX3R_XXX<0x74e28000>;
434def XVMOD_W : LASX3R_XXX<0x74e30000>;
435def XVMOD_D : LASX3R_XXX<0x74e38000>;
436def XVMOD_BU : LASX3R_XXX<0x74e60000>;
437def XVMOD_HU : LASX3R_XXX<0x74e68000>;
438def XVMOD_WU : LASX3R_XXX<0x74e70000>;
439def XVMOD_DU : LASX3R_XXX<0x74e78000>;
440
441def XVSAT_B : LASX2RI3_XXI<0x77242000>;
442def XVSAT_H : LASX2RI4_XXI<0x77244000>;
443def XVSAT_W : LASX2RI5_XXI<0x77248000>;
444def XVSAT_D : LASX2RI6_XXI<0x77250000>;
445def XVSAT_BU : LASX2RI3_XXI<0x77282000>;
446def XVSAT_HU : LASX2RI4_XXI<0x77284000>;
447def XVSAT_WU : LASX2RI5_XXI<0x77288000>;
448def XVSAT_DU : LASX2RI6_XXI<0x77290000>;
449
450def XVEXTH_H_B : LASX2R_XX<0x769ee000>;
451def XVEXTH_W_H : LASX2R_XX<0x769ee400>;
452def XVEXTH_D_W : LASX2R_XX<0x769ee800>;
453def XVEXTH_Q_D : LASX2R_XX<0x769eec00>;
454def XVEXTH_HU_BU : LASX2R_XX<0x769ef000>;
455def XVEXTH_WU_HU : LASX2R_XX<0x769ef400>;
456def XVEXTH_DU_WU : LASX2R_XX<0x769ef800>;
457def XVEXTH_QU_DU : LASX2R_XX<0x769efc00>;
458
459def VEXT2XV_H_B : LASX2R_XX<0x769f1000>;
460def VEXT2XV_W_B : LASX2R_XX<0x769f1400>;
461def VEXT2XV_D_B : LASX2R_XX<0x769f1800>;
462def VEXT2XV_W_H : LASX2R_XX<0x769f1c00>;
463def VEXT2XV_D_H : LASX2R_XX<0x769f2000>;
464def VEXT2XV_D_W : LASX2R_XX<0x769f2400>;
465def VEXT2XV_HU_BU : LASX2R_XX<0x769f2800>;
466def VEXT2XV_WU_BU : LASX2R_XX<0x769f2c00>;
467def VEXT2XV_DU_BU : LASX2R_XX<0x769f3000>;
468def VEXT2XV_WU_HU : LASX2R_XX<0x769f3400>;
469def VEXT2XV_DU_HU : LASX2R_XX<0x769f3800>;
470def VEXT2XV_DU_WU : LASX2R_XX<0x769f3c00>;
471
472def XVHSELI_D : LASX2RI5_XXI<0x769f8000>;
473
474def XVSIGNCOV_B : LASX3R_XXX<0x752e0000>;
475def XVSIGNCOV_H : LASX3R_XXX<0x752e8000>;
476def XVSIGNCOV_W : LASX3R_XXX<0x752f0000>;
477def XVSIGNCOV_D : LASX3R_XXX<0x752f8000>;
478
479def XVMSKLTZ_B : LASX2R_XX<0x769c4000>;
480def XVMSKLTZ_H : LASX2R_XX<0x769c4400>;
481def XVMSKLTZ_W : LASX2R_XX<0x769c4800>;
482def XVMSKLTZ_D : LASX2R_XX<0x769c4c00>;
483
484def XVMSKGEZ_B : LASX2R_XX<0x769c5000>;
485
486def XVMSKNZ_B : LASX2R_XX<0x769c6000>;
487
488def XVLDI : LASX1RI13_XI<0x77e00000>;
489
490def XVAND_V : LASX3R_XXX<0x75260000>;
491def XVOR_V : LASX3R_XXX<0x75268000>;
492def XVXOR_V : LASX3R_XXX<0x75270000>;
493def XVNOR_V : LASX3R_XXX<0x75278000>;
494def XVANDN_V : LASX3R_XXX<0x75280000>;
495def XVORN_V : LASX3R_XXX<0x75288000>;
496
497def XVANDI_B : LASX2RI8_XXI<0x77d00000>;
498def XVORI_B : LASX2RI8_XXI<0x77d40000>;
499def XVXORI_B : LASX2RI8_XXI<0x77d80000>;
500def XVNORI_B : LASX2RI8_XXI<0x77dc0000>;
501
502def XVSLL_B : LASX3R_XXX<0x74e80000>;
503def XVSLL_H : LASX3R_XXX<0x74e88000>;
504def XVSLL_W : LASX3R_XXX<0x74e90000>;
505def XVSLL_D : LASX3R_XXX<0x74e98000>;
506def XVSLLI_B : LASX2RI3_XXI<0x772c2000>;
507def XVSLLI_H : LASX2RI4_XXI<0x772c4000>;
508def XVSLLI_W : LASX2RI5_XXI<0x772c8000>;
509def XVSLLI_D : LASX2RI6_XXI<0x772d0000>;
510
511def XVSRL_B : LASX3R_XXX<0x74ea0000>;
512def XVSRL_H : LASX3R_XXX<0x74ea8000>;
513def XVSRL_W : LASX3R_XXX<0x74eb0000>;
514def XVSRL_D : LASX3R_XXX<0x74eb8000>;
515def XVSRLI_B : LASX2RI3_XXI<0x77302000>;
516def XVSRLI_H : LASX2RI4_XXI<0x77304000>;
517def XVSRLI_W : LASX2RI5_XXI<0x77308000>;
518def XVSRLI_D : LASX2RI6_XXI<0x77310000>;
519
520def XVSRA_B : LASX3R_XXX<0x74ec0000>;
521def XVSRA_H : LASX3R_XXX<0x74ec8000>;
522def XVSRA_W : LASX3R_XXX<0x74ed0000>;
523def XVSRA_D : LASX3R_XXX<0x74ed8000>;
524def XVSRAI_B : LASX2RI3_XXI<0x77342000>;
525def XVSRAI_H : LASX2RI4_XXI<0x77344000>;
526def XVSRAI_W : LASX2RI5_XXI<0x77348000>;
527def XVSRAI_D : LASX2RI6_XXI<0x77350000>;
528
529def XVROTR_B : LASX3R_XXX<0x74ee0000>;
530def XVROTR_H : LASX3R_XXX<0x74ee8000>;
531def XVROTR_W : LASX3R_XXX<0x74ef0000>;
532def XVROTR_D : LASX3R_XXX<0x74ef8000>;
533def XVROTRI_B : LASX2RI3_XXI<0x76a02000>;
534def XVROTRI_H : LASX2RI4_XXI<0x76a04000>;
535def XVROTRI_W : LASX2RI5_XXI<0x76a08000>;
536def XVROTRI_D : LASX2RI6_XXI<0x76a10000>;
537
538def XVSLLWIL_H_B : LASX2RI3_XXI<0x77082000>;
539def XVSLLWIL_W_H : LASX2RI4_XXI<0x77084000>;
540def XVSLLWIL_D_W : LASX2RI5_XXI<0x77088000>;
541def XVEXTL_Q_D : LASX2R_XX<0x77090000>;
542def XVSLLWIL_HU_BU : LASX2RI3_XXI<0x770c2000>;
543def XVSLLWIL_WU_HU : LASX2RI4_XXI<0x770c4000>;
544def XVSLLWIL_DU_WU : LASX2RI5_XXI<0x770c8000>;
545def XVEXTL_QU_DU : LASX2R_XX<0x770d0000>;
546
547def XVSRLR_B : LASX3R_XXX<0x74f00000>;
548def XVSRLR_H : LASX3R_XXX<0x74f08000>;
549def XVSRLR_W : LASX3R_XXX<0x74f10000>;
550def XVSRLR_D : LASX3R_XXX<0x74f18000>;
551def XVSRLRI_B : LASX2RI3_XXI<0x76a42000>;
552def XVSRLRI_H : LASX2RI4_XXI<0x76a44000>;
553def XVSRLRI_W : LASX2RI5_XXI<0x76a48000>;
554def XVSRLRI_D : LASX2RI6_XXI<0x76a50000>;
555
556def XVSRAR_B : LASX3R_XXX<0x74f20000>;
557def XVSRAR_H : LASX3R_XXX<0x74f28000>;
558def XVSRAR_W : LASX3R_XXX<0x74f30000>;
559def XVSRAR_D : LASX3R_XXX<0x74f38000>;
560def XVSRARI_B : LASX2RI3_XXI<0x76a82000>;
561def XVSRARI_H : LASX2RI4_XXI<0x76a84000>;
562def XVSRARI_W : LASX2RI5_XXI<0x76a88000>;
563def XVSRARI_D : LASX2RI6_XXI<0x76a90000>;
564
565def XVSRLN_B_H : LASX3R_XXX<0x74f48000>;
566def XVSRLN_H_W : LASX3R_XXX<0x74f50000>;
567def XVSRLN_W_D : LASX3R_XXX<0x74f58000>;
568def XVSRAN_B_H : LASX3R_XXX<0x74f68000>;
569def XVSRAN_H_W : LASX3R_XXX<0x74f70000>;
570def XVSRAN_W_D : LASX3R_XXX<0x74f78000>;
571
572def XVSRLNI_B_H : LASX2RI4_XXXI<0x77404000>;
573def XVSRLNI_H_W : LASX2RI5_XXXI<0x77408000>;
574def XVSRLNI_W_D : LASX2RI6_XXXI<0x77410000>;
575def XVSRLNI_D_Q : LASX2RI7_XXXI<0x77420000>;
576def XVSRANI_B_H : LASX2RI4_XXXI<0x77584000>;
577def XVSRANI_H_W : LASX2RI5_XXXI<0x77588000>;
578def XVSRANI_W_D : LASX2RI6_XXXI<0x77590000>;
579def XVSRANI_D_Q : LASX2RI7_XXXI<0x775a0000>;
580
581def XVSRLRN_B_H : LASX3R_XXX<0x74f88000>;
582def XVSRLRN_H_W : LASX3R_XXX<0x74f90000>;
583def XVSRLRN_W_D : LASX3R_XXX<0x74f98000>;
584def XVSRARN_B_H : LASX3R_XXX<0x74fa8000>;
585def XVSRARN_H_W : LASX3R_XXX<0x74fb0000>;
586def XVSRARN_W_D : LASX3R_XXX<0x74fb8000>;
587
588def XVSRLRNI_B_H : LASX2RI4_XXXI<0x77444000>;
589def XVSRLRNI_H_W : LASX2RI5_XXXI<0x77448000>;
590def XVSRLRNI_W_D : LASX2RI6_XXXI<0x77450000>;
591def XVSRLRNI_D_Q : LASX2RI7_XXXI<0x77460000>;
592def XVSRARNI_B_H : LASX2RI4_XXXI<0x775c4000>;
593def XVSRARNI_H_W : LASX2RI5_XXXI<0x775c8000>;
594def XVSRARNI_W_D : LASX2RI6_XXXI<0x775d0000>;
595def XVSRARNI_D_Q : LASX2RI7_XXXI<0x775e0000>;
596
597def XVSSRLN_B_H : LASX3R_XXX<0x74fc8000>;
598def XVSSRLN_H_W : LASX3R_XXX<0x74fd0000>;
599def XVSSRLN_W_D : LASX3R_XXX<0x74fd8000>;
600def XVSSRAN_B_H : LASX3R_XXX<0x74fe8000>;
601def XVSSRAN_H_W : LASX3R_XXX<0x74ff0000>;
602def XVSSRAN_W_D : LASX3R_XXX<0x74ff8000>;
603def XVSSRLN_BU_H : LASX3R_XXX<0x75048000>;
604def XVSSRLN_HU_W : LASX3R_XXX<0x75050000>;
605def XVSSRLN_WU_D : LASX3R_XXX<0x75058000>;
606def XVSSRAN_BU_H : LASX3R_XXX<0x75068000>;
607def XVSSRAN_HU_W : LASX3R_XXX<0x75070000>;
608def XVSSRAN_WU_D : LASX3R_XXX<0x75078000>;
609
610def XVSSRLNI_B_H : LASX2RI4_XXXI<0x77484000>;
611def XVSSRLNI_H_W : LASX2RI5_XXXI<0x77488000>;
612def XVSSRLNI_W_D : LASX2RI6_XXXI<0x77490000>;
613def XVSSRLNI_D_Q : LASX2RI7_XXXI<0x774a0000>;
614def XVSSRANI_B_H : LASX2RI4_XXXI<0x77604000>;
615def XVSSRANI_H_W : LASX2RI5_XXXI<0x77608000>;
616def XVSSRANI_W_D : LASX2RI6_XXXI<0x77610000>;
617def XVSSRANI_D_Q : LASX2RI7_XXXI<0x77620000>;
618def XVSSRLNI_BU_H : LASX2RI4_XXXI<0x774c4000>;
619def XVSSRLNI_HU_W : LASX2RI5_XXXI<0x774c8000>;
620def XVSSRLNI_WU_D : LASX2RI6_XXXI<0x774d0000>;
621def XVSSRLNI_DU_Q : LASX2RI7_XXXI<0x774e0000>;
622def XVSSRANI_BU_H : LASX2RI4_XXXI<0x77644000>;
623def XVSSRANI_HU_W : LASX2RI5_XXXI<0x77648000>;
624def XVSSRANI_WU_D : LASX2RI6_XXXI<0x77650000>;
625def XVSSRANI_DU_Q : LASX2RI7_XXXI<0x77660000>;
626
627def XVSSRLRN_B_H : LASX3R_XXX<0x75008000>;
628def XVSSRLRN_H_W : LASX3R_XXX<0x75010000>;
629def XVSSRLRN_W_D : LASX3R_XXX<0x75018000>;
630def XVSSRARN_B_H : LASX3R_XXX<0x75028000>;
631def XVSSRARN_H_W : LASX3R_XXX<0x75030000>;
632def XVSSRARN_W_D : LASX3R_XXX<0x75038000>;
633def XVSSRLRN_BU_H : LASX3R_XXX<0x75088000>;
634def XVSSRLRN_HU_W : LASX3R_XXX<0x75090000>;
635def XVSSRLRN_WU_D : LASX3R_XXX<0x75098000>;
636def XVSSRARN_BU_H : LASX3R_XXX<0x750a8000>;
637def XVSSRARN_HU_W : LASX3R_XXX<0x750b0000>;
638def XVSSRARN_WU_D : LASX3R_XXX<0x750b8000>;
639
640def XVSSRLRNI_B_H : LASX2RI4_XXXI<0x77504000>;
641def XVSSRLRNI_H_W : LASX2RI5_XXXI<0x77508000>;
642def XVSSRLRNI_W_D : LASX2RI6_XXXI<0x77510000>;
643def XVSSRLRNI_D_Q : LASX2RI7_XXXI<0x77520000>;
644def XVSSRARNI_B_H : LASX2RI4_XXXI<0x77684000>;
645def XVSSRARNI_H_W : LASX2RI5_XXXI<0x77688000>;
646def XVSSRARNI_W_D : LASX2RI6_XXXI<0x77690000>;
647def XVSSRARNI_D_Q : LASX2RI7_XXXI<0x776a0000>;
648def XVSSRLRNI_BU_H : LASX2RI4_XXXI<0x77544000>;
649def XVSSRLRNI_HU_W : LASX2RI5_XXXI<0x77548000>;
650def XVSSRLRNI_WU_D : LASX2RI6_XXXI<0x77550000>;
651def XVSSRLRNI_DU_Q : LASX2RI7_XXXI<0x77560000>;
652def XVSSRARNI_BU_H : LASX2RI4_XXXI<0x776c4000>;
653def XVSSRARNI_HU_W : LASX2RI5_XXXI<0x776c8000>;
654def XVSSRARNI_WU_D : LASX2RI6_XXXI<0x776d0000>;
655def XVSSRARNI_DU_Q : LASX2RI7_XXXI<0x776e0000>;
656
657def XVCLO_B : LASX2R_XX<0x769c0000>;
658def XVCLO_H : LASX2R_XX<0x769c0400>;
659def XVCLO_W : LASX2R_XX<0x769c0800>;
660def XVCLO_D : LASX2R_XX<0x769c0c00>;
661def XVCLZ_B : LASX2R_XX<0x769c1000>;
662def XVCLZ_H : LASX2R_XX<0x769c1400>;
663def XVCLZ_W : LASX2R_XX<0x769c1800>;
664def XVCLZ_D : LASX2R_XX<0x769c1c00>;
665
666def XVPCNT_B : LASX2R_XX<0x769c2000>;
667def XVPCNT_H : LASX2R_XX<0x769c2400>;
668def XVPCNT_W : LASX2R_XX<0x769c2800>;
669def XVPCNT_D : LASX2R_XX<0x769c2c00>;
670
671def XVBITCLR_B : LASX3R_XXX<0x750c0000>;
672def XVBITCLR_H : LASX3R_XXX<0x750c8000>;
673def XVBITCLR_W : LASX3R_XXX<0x750d0000>;
674def XVBITCLR_D : LASX3R_XXX<0x750d8000>;
675def XVBITCLRI_B : LASX2RI3_XXI<0x77102000>;
676def XVBITCLRI_H : LASX2RI4_XXI<0x77104000>;
677def XVBITCLRI_W : LASX2RI5_XXI<0x77108000>;
678def XVBITCLRI_D : LASX2RI6_XXI<0x77110000>;
679
680def XVBITSET_B : LASX3R_XXX<0x750e0000>;
681def XVBITSET_H : LASX3R_XXX<0x750e8000>;
682def XVBITSET_W : LASX3R_XXX<0x750f0000>;
683def XVBITSET_D : LASX3R_XXX<0x750f8000>;
684def XVBITSETI_B : LASX2RI3_XXI<0x77142000>;
685def XVBITSETI_H : LASX2RI4_XXI<0x77144000>;
686def XVBITSETI_W : LASX2RI5_XXI<0x77148000>;
687def XVBITSETI_D : LASX2RI6_XXI<0x77150000>;
688
689def XVBITREV_B : LASX3R_XXX<0x75100000>;
690def XVBITREV_H : LASX3R_XXX<0x75108000>;
691def XVBITREV_W : LASX3R_XXX<0x75110000>;
692def XVBITREV_D : LASX3R_XXX<0x75118000>;
693def XVBITREVI_B : LASX2RI3_XXI<0x77182000>;
694def XVBITREVI_H : LASX2RI4_XXI<0x77184000>;
695def XVBITREVI_W : LASX2RI5_XXI<0x77188000>;
696def XVBITREVI_D : LASX2RI6_XXI<0x77190000>;
697
698def XVFRSTP_B : LASX3R_XXXX<0x752b0000>;
699def XVFRSTP_H : LASX3R_XXXX<0x752b8000>;
700def XVFRSTPI_B : LASX2RI5_XXXI<0x769a0000>;
701def XVFRSTPI_H : LASX2RI5_XXXI<0x769a8000>;
702
703def XVFADD_S : LASX3R_XXX<0x75308000>;
704def XVFADD_D : LASX3R_XXX<0x75310000>;
705def XVFSUB_S : LASX3R_XXX<0x75328000>;
706def XVFSUB_D : LASX3R_XXX<0x75330000>;
707def XVFMUL_S : LASX3R_XXX<0x75388000>;
708def XVFMUL_D : LASX3R_XXX<0x75390000>;
709def XVFDIV_S : LASX3R_XXX<0x753a8000>;
710def XVFDIV_D : LASX3R_XXX<0x753b0000>;
711
712def XVFMADD_S : LASX4R_XXXX<0x0a100000>;
713def XVFMADD_D : LASX4R_XXXX<0x0a200000>;
714def XVFMSUB_S : LASX4R_XXXX<0x0a500000>;
715def XVFMSUB_D : LASX4R_XXXX<0x0a600000>;
716def XVFNMADD_S : LASX4R_XXXX<0x0a900000>;
717def XVFNMADD_D : LASX4R_XXXX<0x0aa00000>;
718def XVFNMSUB_S : LASX4R_XXXX<0x0ad00000>;
719def XVFNMSUB_D : LASX4R_XXXX<0x0ae00000>;
720
721def XVFMAX_S : LASX3R_XXX<0x753c8000>;
722def XVFMAX_D : LASX3R_XXX<0x753d0000>;
723def XVFMIN_S : LASX3R_XXX<0x753e8000>;
724def XVFMIN_D : LASX3R_XXX<0x753f0000>;
725
726def XVFMAXA_S : LASX3R_XXX<0x75408000>;
727def XVFMAXA_D : LASX3R_XXX<0x75410000>;
728def XVFMINA_S : LASX3R_XXX<0x75428000>;
729def XVFMINA_D : LASX3R_XXX<0x75430000>;
730
731def XVFLOGB_S : LASX2R_XX<0x769cc400>;
732def XVFLOGB_D : LASX2R_XX<0x769cc800>;
733
734def XVFCLASS_S : LASX2R_XX<0x769cd400>;
735def XVFCLASS_D : LASX2R_XX<0x769cd800>;
736
737def XVFSQRT_S : LASX2R_XX<0x769ce400>;
738def XVFSQRT_D : LASX2R_XX<0x769ce800>;
739def XVFRECIP_S : LASX2R_XX<0x769cf400>;
740def XVFRECIP_D : LASX2R_XX<0x769cf800>;
741def XVFRSQRT_S : LASX2R_XX<0x769d0400>;
742def XVFRSQRT_D : LASX2R_XX<0x769d0800>;
743
744def XVFCVTL_S_H : LASX2R_XX<0x769de800>;
745def XVFCVTH_S_H : LASX2R_XX<0x769dec00>;
746def XVFCVTL_D_S : LASX2R_XX<0x769df000>;
747def XVFCVTH_D_S : LASX2R_XX<0x769df400>;
748def XVFCVT_H_S : LASX3R_XXX<0x75460000>;
749def XVFCVT_S_D : LASX3R_XXX<0x75468000>;
750
751def XVFRINTRNE_S : LASX2R_XX<0x769d7400>;
752def XVFRINTRNE_D : LASX2R_XX<0x769d7800>;
753def XVFRINTRZ_S : LASX2R_XX<0x769d6400>;
754def XVFRINTRZ_D : LASX2R_XX<0x769d6800>;
755def XVFRINTRP_S : LASX2R_XX<0x769d5400>;
756def XVFRINTRP_D : LASX2R_XX<0x769d5800>;
757def XVFRINTRM_S : LASX2R_XX<0x769d4400>;
758def XVFRINTRM_D : LASX2R_XX<0x769d4800>;
759def XVFRINT_S : LASX2R_XX<0x769d3400>;
760def XVFRINT_D : LASX2R_XX<0x769d3800>;
761
762def XVFTINTRNE_W_S : LASX2R_XX<0x769e5000>;
763def XVFTINTRNE_L_D : LASX2R_XX<0x769e5400>;
764def XVFTINTRZ_W_S : LASX2R_XX<0x769e4800>;
765def XVFTINTRZ_L_D : LASX2R_XX<0x769e4c00>;
766def XVFTINTRP_W_S : LASX2R_XX<0x769e4000>;
767def XVFTINTRP_L_D : LASX2R_XX<0x769e4400>;
768def XVFTINTRM_W_S : LASX2R_XX<0x769e3800>;
769def XVFTINTRM_L_D : LASX2R_XX<0x769e3c00>;
770def XVFTINT_W_S : LASX2R_XX<0x769e3000>;
771def XVFTINT_L_D : LASX2R_XX<0x769e3400>;
772def XVFTINTRZ_WU_S : LASX2R_XX<0x769e7000>;
773def XVFTINTRZ_LU_D : LASX2R_XX<0x769e7400>;
774def XVFTINT_WU_S : LASX2R_XX<0x769e5800>;
775def XVFTINT_LU_D : LASX2R_XX<0x769e5c00>;
776
777def XVFTINTRNE_W_D : LASX3R_XXX<0x754b8000>;
778def XVFTINTRZ_W_D : LASX3R_XXX<0x754b0000>;
779def XVFTINTRP_W_D : LASX3R_XXX<0x754a8000>;
780def XVFTINTRM_W_D : LASX3R_XXX<0x754a0000>;
781def XVFTINT_W_D : LASX3R_XXX<0x75498000>;
782
783def XVFTINTRNEL_L_S : LASX2R_XX<0x769ea000>;
784def XVFTINTRNEH_L_S : LASX2R_XX<0x769ea400>;
785def XVFTINTRZL_L_S : LASX2R_XX<0x769e9800>;
786def XVFTINTRZH_L_S : LASX2R_XX<0x769e9c00>;
787def XVFTINTRPL_L_S : LASX2R_XX<0x769e9000>;
788def XVFTINTRPH_L_S : LASX2R_XX<0x769e9400>;
789def XVFTINTRML_L_S : LASX2R_XX<0x769e8800>;
790def XVFTINTRMH_L_S : LASX2R_XX<0x769e8c00>;
791def XVFTINTL_L_S : LASX2R_XX<0x769e8000>;
792def XVFTINTH_L_S : LASX2R_XX<0x769e8400>;
793
794def XVFFINT_S_W : LASX2R_XX<0x769e0000>;
795def XVFFINT_D_L : LASX2R_XX<0x769e0800>;
796def XVFFINT_S_WU : LASX2R_XX<0x769e0400>;
797def XVFFINT_D_LU : LASX2R_XX<0x769e0c00>;
798def XVFFINTL_D_W : LASX2R_XX<0x769e1000>;
799def XVFFINTH_D_W : LASX2R_XX<0x769e1400>;
800def XVFFINT_S_L : LASX3R_XXX<0x75480000>;
801
802def XVSEQ_B : LASX3R_XXX<0x74000000>;
803def XVSEQ_H : LASX3R_XXX<0x74008000>;
804def XVSEQ_W : LASX3R_XXX<0x74010000>;
805def XVSEQ_D : LASX3R_XXX<0x74018000>;
806def XVSEQI_B : LASX2RI5_XXI<0x76800000, simm5>;
807def XVSEQI_H : LASX2RI5_XXI<0x76808000, simm5>;
808def XVSEQI_W : LASX2RI5_XXI<0x76810000, simm5>;
809def XVSEQI_D : LASX2RI5_XXI<0x76818000, simm5>;
810
811def XVSLE_B : LASX3R_XXX<0x74020000>;
812def XVSLE_H : LASX3R_XXX<0x74028000>;
813def XVSLE_W : LASX3R_XXX<0x74030000>;
814def XVSLE_D : LASX3R_XXX<0x74038000>;
815def XVSLEI_B : LASX2RI5_XXI<0x76820000, simm5>;
816def XVSLEI_H : LASX2RI5_XXI<0x76828000, simm5>;
817def XVSLEI_W : LASX2RI5_XXI<0x76830000, simm5>;
818def XVSLEI_D : LASX2RI5_XXI<0x76838000, simm5>;
819
820def XVSLE_BU : LASX3R_XXX<0x74040000>;
821def XVSLE_HU : LASX3R_XXX<0x74048000>;
822def XVSLE_WU : LASX3R_XXX<0x74050000>;
823def XVSLE_DU : LASX3R_XXX<0x74058000>;
824def XVSLEI_BU : LASX2RI5_XXI<0x76840000>;
825def XVSLEI_HU : LASX2RI5_XXI<0x76848000>;
826def XVSLEI_WU : LASX2RI5_XXI<0x76850000>;
827def XVSLEI_DU : LASX2RI5_XXI<0x76858000>;
828
829def XVSLT_B : LASX3R_XXX<0x74060000>;
830def XVSLT_H : LASX3R_XXX<0x74068000>;
831def XVSLT_W : LASX3R_XXX<0x74070000>;
832def XVSLT_D : LASX3R_XXX<0x74078000>;
833def XVSLTI_B : LASX2RI5_XXI<0x76860000, simm5>;
834def XVSLTI_H : LASX2RI5_XXI<0x76868000, simm5>;
835def XVSLTI_W : LASX2RI5_XXI<0x76870000, simm5>;
836def XVSLTI_D : LASX2RI5_XXI<0x76878000, simm5>;
837
838def XVSLT_BU : LASX3R_XXX<0x74080000>;
839def XVSLT_HU : LASX3R_XXX<0x74088000>;
840def XVSLT_WU : LASX3R_XXX<0x74090000>;
841def XVSLT_DU : LASX3R_XXX<0x74098000>;
842def XVSLTI_BU : LASX2RI5_XXI<0x76880000>;
843def XVSLTI_HU : LASX2RI5_XXI<0x76888000>;
844def XVSLTI_WU : LASX2RI5_XXI<0x76890000>;
845def XVSLTI_DU : LASX2RI5_XXI<0x76898000>;
846
847def XVFCMP_CAF_S : LASX3R_XXX<0x0c900000>;
848def XVFCMP_SAF_S : LASX3R_XXX<0x0c908000>;
849def XVFCMP_CLT_S : LASX3R_XXX<0x0c910000>;
850def XVFCMP_SLT_S : LASX3R_XXX<0x0c918000>;
851def XVFCMP_CEQ_S : LASX3R_XXX<0x0c920000>;
852def XVFCMP_SEQ_S : LASX3R_XXX<0x0c928000>;
853def XVFCMP_CLE_S : LASX3R_XXX<0x0c930000>;
854def XVFCMP_SLE_S : LASX3R_XXX<0x0c938000>;
855def XVFCMP_CUN_S : LASX3R_XXX<0x0c940000>;
856def XVFCMP_SUN_S : LASX3R_XXX<0x0c948000>;
857def XVFCMP_CULT_S : LASX3R_XXX<0x0c950000>;
858def XVFCMP_SULT_S : LASX3R_XXX<0x0c958000>;
859def XVFCMP_CUEQ_S : LASX3R_XXX<0x0c960000>;
860def XVFCMP_SUEQ_S : LASX3R_XXX<0x0c968000>;
861def XVFCMP_CULE_S : LASX3R_XXX<0x0c970000>;
862def XVFCMP_SULE_S : LASX3R_XXX<0x0c978000>;
863def XVFCMP_CNE_S : LASX3R_XXX<0x0c980000>;
864def XVFCMP_SNE_S : LASX3R_XXX<0x0c988000>;
865def XVFCMP_COR_S : LASX3R_XXX<0x0c9a0000>;
866def XVFCMP_SOR_S : LASX3R_XXX<0x0c9a8000>;
867def XVFCMP_CUNE_S : LASX3R_XXX<0x0c9c0000>;
868def XVFCMP_SUNE_S : LASX3R_XXX<0x0c9c8000>;
869
870def XVFCMP_CAF_D : LASX3R_XXX<0x0ca00000>;
871def XVFCMP_SAF_D : LASX3R_XXX<0x0ca08000>;
872def XVFCMP_CLT_D : LASX3R_XXX<0x0ca10000>;
873def XVFCMP_SLT_D : LASX3R_XXX<0x0ca18000>;
874def XVFCMP_CEQ_D : LASX3R_XXX<0x0ca20000>;
875def XVFCMP_SEQ_D : LASX3R_XXX<0x0ca28000>;
876def XVFCMP_CLE_D : LASX3R_XXX<0x0ca30000>;
877def XVFCMP_SLE_D : LASX3R_XXX<0x0ca38000>;
878def XVFCMP_CUN_D : LASX3R_XXX<0x0ca40000>;
879def XVFCMP_SUN_D : LASX3R_XXX<0x0ca48000>;
880def XVFCMP_CULT_D : LASX3R_XXX<0x0ca50000>;
881def XVFCMP_SULT_D : LASX3R_XXX<0x0ca58000>;
882def XVFCMP_CUEQ_D : LASX3R_XXX<0x0ca60000>;
883def XVFCMP_SUEQ_D : LASX3R_XXX<0x0ca68000>;
884def XVFCMP_CULE_D : LASX3R_XXX<0x0ca70000>;
885def XVFCMP_SULE_D : LASX3R_XXX<0x0ca78000>;
886def XVFCMP_CNE_D : LASX3R_XXX<0x0ca80000>;
887def XVFCMP_SNE_D : LASX3R_XXX<0x0ca88000>;
888def XVFCMP_COR_D : LASX3R_XXX<0x0caa0000>;
889def XVFCMP_SOR_D : LASX3R_XXX<0x0caa8000>;
890def XVFCMP_CUNE_D : LASX3R_XXX<0x0cac0000>;
891def XVFCMP_SUNE_D : LASX3R_XXX<0x0cac8000>;
892
893def XVBITSEL_V : LASX4R_XXXX<0x0d200000>;
894
895def XVBITSELI_B : LASX2RI8_XXXI<0x77c40000>;
896
897def XVSETEQZ_V : LASX2R_CX<0x769c9800>;
898def XVSETNEZ_V : LASX2R_CX<0x769c9c00>;
899def XVSETANYEQZ_B : LASX2R_CX<0x769ca000>;
900def XVSETANYEQZ_H : LASX2R_CX<0x769ca400>;
901def XVSETANYEQZ_W : LASX2R_CX<0x769ca800>;
902def XVSETANYEQZ_D : LASX2R_CX<0x769cac00>;
903def XVSETALLNEZ_B : LASX2R_CX<0x769cb000>;
904def XVSETALLNEZ_H : LASX2R_CX<0x769cb400>;
905def XVSETALLNEZ_W : LASX2R_CX<0x769cb800>;
906def XVSETALLNEZ_D : LASX2R_CX<0x769cbc00>;
907
908def XVINSGR2VR_W : LASX2RI3_XXRI<0x76ebc000>;
909def XVINSGR2VR_D : LASX2RI2_XXRI<0x76ebe000>;
910def XVPICKVE2GR_W : LASX2RI3_RXI<0x76efc000>;
911def XVPICKVE2GR_D : LASX2RI2_RXI<0x76efe000>;
912def XVPICKVE2GR_WU : LASX2RI3_RXI<0x76f3c000>;
913def XVPICKVE2GR_DU : LASX2RI2_RXI<0x76f3e000>;
914
915def XVREPLGR2VR_B : LASX2R_XR<0x769f0000>;
916def XVREPLGR2VR_H : LASX2R_XR<0x769f0400>;
917def XVREPLGR2VR_W : LASX2R_XR<0x769f0800>;
918def XVREPLGR2VR_D : LASX2R_XR<0x769f0c00>;
919
920def XVREPLVE_B : LASX3R_XXR<0x75220000>;
921def XVREPLVE_H : LASX3R_XXR<0x75228000>;
922def XVREPLVE_W : LASX3R_XXR<0x75230000>;
923def XVREPLVE_D : LASX3R_XXR<0x75238000>;
924def XVREPL128VEI_B : LASX2RI4_XXI<0x76f78000>;
925def XVREPL128VEI_H : LASX2RI3_XXI<0x76f7c000>;
926def XVREPL128VEI_W : LASX2RI2_XXI<0x76f7e000>;
927def XVREPL128VEI_D : LASX2RI1_XXI<0x76f7f000>;
928
929def XVREPLVE0_B : LASX2R_XX<0x77070000>;
930def XVREPLVE0_H : LASX2R_XX<0x77078000>;
931def XVREPLVE0_W : LASX2R_XX<0x7707c000>;
932def XVREPLVE0_D : LASX2R_XX<0x7707e000>;
933def XVREPLVE0_Q : LASX2R_XX<0x7707f000>;
934
935def XVINSVE0_W : LASX2RI3_XXXI<0x76ffc000>;
936def XVINSVE0_D : LASX2RI2_XXXI<0x76ffe000>;
937
938def XVPICKVE_W : LASX2RI3_XXI<0x7703c000>;
939def XVPICKVE_D : LASX2RI2_XXI<0x7703e000>;
940
941def XVBSLL_V : LASX2RI5_XXI<0x768e0000>;
942def XVBSRL_V : LASX2RI5_XXI<0x768e8000>;
943
944def XVPACKEV_B : LASX3R_XXX<0x75160000>;
945def XVPACKEV_H : LASX3R_XXX<0x75168000>;
946def XVPACKEV_W : LASX3R_XXX<0x75170000>;
947def XVPACKEV_D : LASX3R_XXX<0x75178000>;
948def XVPACKOD_B : LASX3R_XXX<0x75180000>;
949def XVPACKOD_H : LASX3R_XXX<0x75188000>;
950def XVPACKOD_W : LASX3R_XXX<0x75190000>;
951def XVPACKOD_D : LASX3R_XXX<0x75198000>;
952
953def XVPICKEV_B : LASX3R_XXX<0x751e0000>;
954def XVPICKEV_H : LASX3R_XXX<0x751e8000>;
955def XVPICKEV_W : LASX3R_XXX<0x751f0000>;
956def XVPICKEV_D : LASX3R_XXX<0x751f8000>;
957def XVPICKOD_B : LASX3R_XXX<0x75200000>;
958def XVPICKOD_H : LASX3R_XXX<0x75208000>;
959def XVPICKOD_W : LASX3R_XXX<0x75210000>;
960def XVPICKOD_D : LASX3R_XXX<0x75218000>;
961
962def XVILVL_B : LASX3R_XXX<0x751a0000>;
963def XVILVL_H : LASX3R_XXX<0x751a8000>;
964def XVILVL_W : LASX3R_XXX<0x751b0000>;
965def XVILVL_D : LASX3R_XXX<0x751b8000>;
966def XVILVH_B : LASX3R_XXX<0x751c0000>;
967def XVILVH_H : LASX3R_XXX<0x751c8000>;
968def XVILVH_W : LASX3R_XXX<0x751d0000>;
969def XVILVH_D : LASX3R_XXX<0x751d8000>;
970
971def XVSHUF_B : LASX4R_XXXX<0x0d600000>;
972
973def XVSHUF_H : LASX3R_XXXX<0x757a8000>;
974def XVSHUF_W : LASX3R_XXXX<0x757b0000>;
975def XVSHUF_D : LASX3R_XXXX<0x757b8000>;
976
977def XVPERM_W : LASX3R_XXX<0x757d0000>;
978
979def XVSHUF4I_B : LASX2RI8_XXI<0x77900000>;
980def XVSHUF4I_H : LASX2RI8_XXI<0x77940000>;
981def XVSHUF4I_W : LASX2RI8_XXI<0x77980000>;
982def XVSHUF4I_D : LASX2RI8_XXXI<0x779c0000>;
983
984def XVPERMI_W : LASX2RI8_XXXI<0x77e40000>;
985def XVPERMI_D : LASX2RI8_XXI<0x77e80000>;
986def XVPERMI_Q : LASX2RI8_XXXI<0x77ec0000>;
987
988def XVEXTRINS_D : LASX2RI8_XXXI<0x77800000>;
989def XVEXTRINS_W : LASX2RI8_XXXI<0x77840000>;
990def XVEXTRINS_H : LASX2RI8_XXXI<0x77880000>;
991def XVEXTRINS_B : LASX2RI8_XXXI<0x778c0000>;
992} // mayLoad = 0, mayStore = 0
993
994let mayLoad = 1, mayStore = 0 in {
995def XVLD : LASX2RI12_Load<0x2c800000>;
996def XVLDX : LASX3R_Load<0x38480000>;
997
998def XVLDREPL_B : LASX2RI12_Load<0x32800000>;
999def XVLDREPL_H : LASX2RI11_Load<0x32400000>;
1000def XVLDREPL_W : LASX2RI10_Load<0x32200000>;
1001def XVLDREPL_D : LASX2RI9_Load<0x32100000>;
1002} // mayLoad = 1, mayStore = 0
1003
1004let mayLoad = 0, mayStore = 1 in {
1005def XVST : LASX2RI12_Store<0x2cc00000>;
1006def XVSTX : LASX3R_Store<0x384c0000>;
1007
1008def XVSTELM_B : LASX2RI8I5_XRII<0x33800000>;
1009def XVSTELM_H : LASX2RI8I4_XRII<0x33400000, simm8_lsl1>;
1010def XVSTELM_W : LASX2RI8I3_XRII<0x33200000, simm8_lsl2>;
1011def XVSTELM_D : LASX2RI8I2_XRII<0x33100000, simm8_lsl3>;
1012} // mayLoad = 0, mayStore = 1
1013
1014} // hasSideEffects = 0, Predicates = [HasExtLASX]
1015
1016/// Pseudo-instructions
1017
1018let Predicates = [HasExtLASX] in {
1019
1020let hasSideEffects = 0, mayLoad = 0, mayStore = 0, isCodeGenOnly = 0,
1021    isAsmParserOnly = 1 in {
1022def PseudoXVREPLI_B : Pseudo<(outs LASX256:$xd), (ins simm10:$imm), [],
1023                             "xvrepli.b", "$xd, $imm">;
1024def PseudoXVREPLI_H : Pseudo<(outs LASX256:$xd), (ins simm10:$imm), [],
1025                             "xvrepli.h", "$xd, $imm">;
1026def PseudoXVREPLI_W : Pseudo<(outs LASX256:$xd), (ins simm10:$imm), [],
1027                             "xvrepli.w", "$xd, $imm">;
1028def PseudoXVREPLI_D : Pseudo<(outs LASX256:$xd), (ins simm10:$imm), [],
1029                             "xvrepli.d", "$xd, $imm">;
1030}
1031
1032} // Predicates = [HasExtLASX]
1033