xref: /openbmc/qemu/target/loongarch/disas.c (revision 5f1a3132)
1aae1746cSSong Gao /* SPDX-License-Identifier: GPL-2.0-or-later */
2aae1746cSSong Gao /*
3aae1746cSSong Gao  * QEMU LoongArch Disassembler
4aae1746cSSong Gao  *
5aae1746cSSong Gao  * Copyright (c) 2021 Loongson Technology Corporation Limited.
6aae1746cSSong Gao  */
7aae1746cSSong Gao 
8aae1746cSSong Gao #include "qemu/osdep.h"
9aae1746cSSong Gao #include "disas/dis-asm.h"
10aae1746cSSong Gao #include "qemu/bitops.h"
115b1dedfeSXiaojuan Yang #include "cpu-csr.h"
12aae1746cSSong Gao 
13aae1746cSSong Gao typedef struct {
14aae1746cSSong Gao     disassemble_info *info;
15aae1746cSSong Gao     uint64_t pc;
16aae1746cSSong Gao     uint32_t insn;
17aae1746cSSong Gao } DisasContext;
18aae1746cSSong Gao 
plus_1(DisasContext * ctx,int x)19aae1746cSSong Gao static inline int plus_1(DisasContext *ctx, int x)
20aae1746cSSong Gao {
21aae1746cSSong Gao     return x + 1;
22aae1746cSSong Gao }
23aae1746cSSong Gao 
shl_1(DisasContext * ctx,int x)24843b627aSSong Gao static inline int shl_1(DisasContext *ctx, int x)
25843b627aSSong Gao {
26843b627aSSong Gao     return x << 1;
27843b627aSSong Gao }
28843b627aSSong Gao 
shl_2(DisasContext * ctx,int x)29aae1746cSSong Gao static inline int shl_2(DisasContext *ctx, int x)
30aae1746cSSong Gao {
31aae1746cSSong Gao     return x << 2;
32aae1746cSSong Gao }
33aae1746cSSong Gao 
shl_3(DisasContext * ctx,int x)34843b627aSSong Gao static inline int shl_3(DisasContext *ctx, int x)
35843b627aSSong Gao {
36843b627aSSong Gao     return x << 3;
37843b627aSSong Gao }
38843b627aSSong Gao 
395b1dedfeSXiaojuan Yang #define CSR_NAME(REG) \
405b1dedfeSXiaojuan Yang     [LOONGARCH_CSR_##REG] = (#REG)
415b1dedfeSXiaojuan Yang 
425b1dedfeSXiaojuan Yang static const char * const csr_names[] = {
435b1dedfeSXiaojuan Yang     CSR_NAME(CRMD),
445b1dedfeSXiaojuan Yang     CSR_NAME(PRMD),
455b1dedfeSXiaojuan Yang     CSR_NAME(EUEN),
465b1dedfeSXiaojuan Yang     CSR_NAME(MISC),
475b1dedfeSXiaojuan Yang     CSR_NAME(ECFG),
485b1dedfeSXiaojuan Yang     CSR_NAME(ESTAT),
495b1dedfeSXiaojuan Yang     CSR_NAME(ERA),
505b1dedfeSXiaojuan Yang     CSR_NAME(BADV),
515b1dedfeSXiaojuan Yang     CSR_NAME(BADI),
525b1dedfeSXiaojuan Yang     CSR_NAME(EENTRY),
535b1dedfeSXiaojuan Yang     CSR_NAME(TLBIDX),
545b1dedfeSXiaojuan Yang     CSR_NAME(TLBEHI),
555b1dedfeSXiaojuan Yang     CSR_NAME(TLBELO0),
565b1dedfeSXiaojuan Yang     CSR_NAME(TLBELO1),
575b1dedfeSXiaojuan Yang     CSR_NAME(ASID),
585b1dedfeSXiaojuan Yang     CSR_NAME(PGDL),
595b1dedfeSXiaojuan Yang     CSR_NAME(PGDH),
605b1dedfeSXiaojuan Yang     CSR_NAME(PGD),
615b1dedfeSXiaojuan Yang     CSR_NAME(PWCL),
625b1dedfeSXiaojuan Yang     CSR_NAME(PWCH),
635b1dedfeSXiaojuan Yang     CSR_NAME(STLBPS),
645b1dedfeSXiaojuan Yang     CSR_NAME(RVACFG),
655b1dedfeSXiaojuan Yang     CSR_NAME(CPUID),
665b1dedfeSXiaojuan Yang     CSR_NAME(PRCFG1),
675b1dedfeSXiaojuan Yang     CSR_NAME(PRCFG2),
685b1dedfeSXiaojuan Yang     CSR_NAME(PRCFG3),
695b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(0)),
705b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(1)),
715b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(2)),
725b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(3)),
735b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(4)),
745b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(5)),
755b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(6)),
765b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(7)),
775b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(8)),
785b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(9)),
795b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(10)),
805b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(11)),
815b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(12)),
825b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(13)),
835b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(14)),
845b1dedfeSXiaojuan Yang     CSR_NAME(SAVE(15)),
855b1dedfeSXiaojuan Yang     CSR_NAME(TID),
865b1dedfeSXiaojuan Yang     CSR_NAME(TCFG),
875b1dedfeSXiaojuan Yang     CSR_NAME(TVAL),
885b1dedfeSXiaojuan Yang     CSR_NAME(CNTC),
895b1dedfeSXiaojuan Yang     CSR_NAME(TICLR),
905b1dedfeSXiaojuan Yang     CSR_NAME(LLBCTL),
915b1dedfeSXiaojuan Yang     CSR_NAME(IMPCTL1),
925b1dedfeSXiaojuan Yang     CSR_NAME(IMPCTL2),
935b1dedfeSXiaojuan Yang     CSR_NAME(TLBRENTRY),
945b1dedfeSXiaojuan Yang     CSR_NAME(TLBRBADV),
955b1dedfeSXiaojuan Yang     CSR_NAME(TLBRERA),
965b1dedfeSXiaojuan Yang     CSR_NAME(TLBRSAVE),
975b1dedfeSXiaojuan Yang     CSR_NAME(TLBRELO0),
985b1dedfeSXiaojuan Yang     CSR_NAME(TLBRELO1),
995b1dedfeSXiaojuan Yang     CSR_NAME(TLBREHI),
1005b1dedfeSXiaojuan Yang     CSR_NAME(TLBRPRMD),
1015b1dedfeSXiaojuan Yang     CSR_NAME(MERRCTL),
1025b1dedfeSXiaojuan Yang     CSR_NAME(MERRINFO1),
1035b1dedfeSXiaojuan Yang     CSR_NAME(MERRINFO2),
1045b1dedfeSXiaojuan Yang     CSR_NAME(MERRENTRY),
1055b1dedfeSXiaojuan Yang     CSR_NAME(MERRERA),
1065b1dedfeSXiaojuan Yang     CSR_NAME(MERRSAVE),
1075b1dedfeSXiaojuan Yang     CSR_NAME(CTAG),
1085b1dedfeSXiaojuan Yang     CSR_NAME(DMW(0)),
1095b1dedfeSXiaojuan Yang     CSR_NAME(DMW(1)),
1105b1dedfeSXiaojuan Yang     CSR_NAME(DMW(2)),
1115b1dedfeSXiaojuan Yang     CSR_NAME(DMW(3)),
1125b1dedfeSXiaojuan Yang     CSR_NAME(DBG),
1135b1dedfeSXiaojuan Yang     CSR_NAME(DERA),
1145b1dedfeSXiaojuan Yang     CSR_NAME(DSAVE),
1155b1dedfeSXiaojuan Yang };
1165b1dedfeSXiaojuan Yang 
get_csr_name(unsigned num)1175b1dedfeSXiaojuan Yang static const char *get_csr_name(unsigned num)
1185b1dedfeSXiaojuan Yang {
1195b1dedfeSXiaojuan Yang     return ((num < ARRAY_SIZE(csr_names)) && (csr_names[num] != NULL)) ?
1205b1dedfeSXiaojuan Yang            csr_names[num] : "Undefined CSR";
1215b1dedfeSXiaojuan Yang }
1225b1dedfeSXiaojuan Yang 
123aae1746cSSong Gao #define output(C, INSN, FMT, ...)                                   \
124aae1746cSSong Gao {                                                                   \
125aae1746cSSong Gao     (C)->info->fprintf_func((C)->info->stream, "%08x   %-9s\t" FMT, \
126aae1746cSSong Gao                             (C)->insn, INSN, ##__VA_ARGS__);        \
127aae1746cSSong Gao }
128aae1746cSSong Gao 
129aae1746cSSong Gao #include "decode-insns.c.inc"
130aae1746cSSong Gao 
print_insn_loongarch(bfd_vma memaddr,struct disassemble_info * info)131aae1746cSSong Gao int print_insn_loongarch(bfd_vma memaddr, struct disassemble_info *info)
132aae1746cSSong Gao {
133aae1746cSSong Gao     bfd_byte buffer[4];
134aae1746cSSong Gao     uint32_t insn;
135aae1746cSSong Gao     int status;
136aae1746cSSong Gao 
137aae1746cSSong Gao     status = (*info->read_memory_func)(memaddr, buffer, 4, info);
138aae1746cSSong Gao     if (status != 0) {
139aae1746cSSong Gao         (*info->memory_error_func)(status, memaddr, info);
140aae1746cSSong Gao         return -1;
141aae1746cSSong Gao     }
142aae1746cSSong Gao     insn = bfd_getl32(buffer);
143aae1746cSSong Gao     DisasContext ctx = {
144aae1746cSSong Gao         .info = info,
145aae1746cSSong Gao         .pc = memaddr,
146aae1746cSSong Gao         .insn = insn
147aae1746cSSong Gao     };
148aae1746cSSong Gao 
149aae1746cSSong Gao     if (!decode(&ctx, insn)) {
150aae1746cSSong Gao         output(&ctx, "illegal", "");
151aae1746cSSong Gao     }
152aae1746cSSong Gao     return 4;
153aae1746cSSong Gao }
154aae1746cSSong Gao 
output_r_i(DisasContext * ctx,arg_r_i * a,const char * mnemonic)155aae1746cSSong Gao static void output_r_i(DisasContext *ctx, arg_r_i *a, const char *mnemonic)
156aae1746cSSong Gao {
157aae1746cSSong Gao     output(ctx, mnemonic, "r%d, %d", a->rd, a->imm);
158aae1746cSSong Gao }
159aae1746cSSong Gao 
output_rrr(DisasContext * ctx,arg_rrr * a,const char * mnemonic)160aae1746cSSong Gao static void output_rrr(DisasContext *ctx, arg_rrr *a, const char *mnemonic)
161aae1746cSSong Gao {
162aae1746cSSong Gao     output(ctx, mnemonic, "r%d, r%d, r%d", a->rd, a->rj, a->rk);
163aae1746cSSong Gao }
164aae1746cSSong Gao 
output_rr_i(DisasContext * ctx,arg_rr_i * a,const char * mnemonic)165aae1746cSSong Gao static void output_rr_i(DisasContext *ctx, arg_rr_i *a, const char *mnemonic)
166aae1746cSSong Gao {
167aae1746cSSong Gao     output(ctx, mnemonic, "r%d, r%d, %d", a->rd, a->rj, a->imm);
168aae1746cSSong Gao }
169aae1746cSSong Gao 
output_rrr_sa(DisasContext * ctx,arg_rrr_sa * a,const char * mnemonic)170aae1746cSSong Gao static void output_rrr_sa(DisasContext *ctx, arg_rrr_sa *a,
171aae1746cSSong Gao                           const char *mnemonic)
172aae1746cSSong Gao {
173aae1746cSSong Gao     output(ctx, mnemonic, "r%d, r%d, r%d, %d", a->rd, a->rj, a->rk, a->sa);
174aae1746cSSong Gao }
175aae1746cSSong Gao 
output_rr(DisasContext * ctx,arg_rr * a,const char * mnemonic)176aae1746cSSong Gao static void output_rr(DisasContext *ctx, arg_rr *a, const char *mnemonic)
177aae1746cSSong Gao {
178aae1746cSSong Gao     output(ctx, mnemonic, "r%d, r%d", a->rd, a->rj);
179aae1746cSSong Gao }
180aae1746cSSong Gao 
output_rr_ms_ls(DisasContext * ctx,arg_rr_ms_ls * a,const char * mnemonic)181aae1746cSSong Gao static void output_rr_ms_ls(DisasContext *ctx, arg_rr_ms_ls *a,
182aae1746cSSong Gao                           const char *mnemonic)
183aae1746cSSong Gao {
184aae1746cSSong Gao     output(ctx, mnemonic, "r%d, r%d, %d, %d", a->rd, a->rj, a->ms, a->ls);
185aae1746cSSong Gao }
186aae1746cSSong Gao 
output_hint_r_i(DisasContext * ctx,arg_hint_r_i * a,const char * mnemonic)187aae1746cSSong Gao static void output_hint_r_i(DisasContext *ctx, arg_hint_r_i *a,
188aae1746cSSong Gao                             const char *mnemonic)
189aae1746cSSong Gao {
190aae1746cSSong Gao     output(ctx, mnemonic, "%d, r%d, %d", a->hint, a->rj, a->imm);
191aae1746cSSong Gao }
192aae1746cSSong Gao 
output_hint_rr(DisasContext * ctx,arg_hint_rr * a,const char * mnemonic)193*5f1a3132SSong Gao static void output_hint_rr(DisasContext *ctx, arg_hint_rr *a,
194*5f1a3132SSong Gao                            const char *mnemonic)
195*5f1a3132SSong Gao {
196*5f1a3132SSong Gao     output(ctx, mnemonic, "%d, r%d, r%d", a->hint, a->rj, a->rk);
197*5f1a3132SSong Gao }
198*5f1a3132SSong Gao 
output_i(DisasContext * ctx,arg_i * a,const char * mnemonic)199aae1746cSSong Gao static void output_i(DisasContext *ctx, arg_i *a, const char *mnemonic)
200aae1746cSSong Gao {
201aae1746cSSong Gao     output(ctx, mnemonic, "%d", a->imm);
202aae1746cSSong Gao }
203aae1746cSSong Gao 
output_rr_jk(DisasContext * ctx,arg_rr_jk * a,const char * mnemonic)204aae1746cSSong Gao static void output_rr_jk(DisasContext *ctx, arg_rr_jk *a,
205aae1746cSSong Gao                          const char *mnemonic)
206aae1746cSSong Gao {
207aae1746cSSong Gao     output(ctx, mnemonic, "r%d, r%d", a->rj, a->rk);
208aae1746cSSong Gao }
209aae1746cSSong Gao 
output_ff(DisasContext * ctx,arg_ff * a,const char * mnemonic)210aae1746cSSong Gao static void output_ff(DisasContext *ctx, arg_ff *a, const char *mnemonic)
211aae1746cSSong Gao {
212aae1746cSSong Gao     output(ctx, mnemonic, "f%d, f%d", a->fd, a->fj);
213aae1746cSSong Gao }
214aae1746cSSong Gao 
output_fff(DisasContext * ctx,arg_fff * a,const char * mnemonic)215aae1746cSSong Gao static void output_fff(DisasContext *ctx, arg_fff *a, const char *mnemonic)
216aae1746cSSong Gao {
217aae1746cSSong Gao     output(ctx, mnemonic, "f%d, f%d, f%d", a->fd, a->fj, a->fk);
218aae1746cSSong Gao }
219aae1746cSSong Gao 
output_ffff(DisasContext * ctx,arg_ffff * a,const char * mnemonic)220aae1746cSSong Gao static void output_ffff(DisasContext *ctx, arg_ffff *a, const char *mnemonic)
221aae1746cSSong Gao {
222aae1746cSSong Gao     output(ctx, mnemonic, "f%d, f%d, f%d, f%d", a->fd, a->fj, a->fk, a->fa);
223aae1746cSSong Gao }
224aae1746cSSong Gao 
output_fffc(DisasContext * ctx,arg_fffc * a,const char * mnemonic)225aae1746cSSong Gao static void output_fffc(DisasContext *ctx, arg_fffc *a, const char *mnemonic)
226aae1746cSSong Gao {
227aae1746cSSong Gao     output(ctx, mnemonic, "f%d, f%d, f%d, %d", a->fd, a->fj, a->fk, a->ca);
228aae1746cSSong Gao }
229aae1746cSSong Gao 
output_fr(DisasContext * ctx,arg_fr * a,const char * mnemonic)230aae1746cSSong Gao static void output_fr(DisasContext *ctx, arg_fr *a, const char *mnemonic)
231aae1746cSSong Gao {
232aae1746cSSong Gao     output(ctx, mnemonic, "f%d, r%d", a->fd, a->rj);
233aae1746cSSong Gao }
234aae1746cSSong Gao 
output_rf(DisasContext * ctx,arg_rf * a,const char * mnemonic)235aae1746cSSong Gao static void output_rf(DisasContext *ctx, arg_rf *a, const char *mnemonic)
236aae1746cSSong Gao {
237aae1746cSSong Gao     output(ctx, mnemonic, "r%d, f%d", a->rd, a->fj);
238aae1746cSSong Gao }
239aae1746cSSong Gao 
output_fcsrd_r(DisasContext * ctx,arg_fcsrd_r * a,const char * mnemonic)240aae1746cSSong Gao static void output_fcsrd_r(DisasContext *ctx, arg_fcsrd_r *a,
241aae1746cSSong Gao                            const char *mnemonic)
242aae1746cSSong Gao {
243aae1746cSSong Gao     output(ctx, mnemonic, "fcsr%d, r%d", a->fcsrd, a->rj);
244aae1746cSSong Gao }
245aae1746cSSong Gao 
output_r_fcsrs(DisasContext * ctx,arg_r_fcsrs * a,const char * mnemonic)246aae1746cSSong Gao static void output_r_fcsrs(DisasContext *ctx, arg_r_fcsrs *a,
247aae1746cSSong Gao                            const char *mnemonic)
248aae1746cSSong Gao {
249aae1746cSSong Gao     output(ctx, mnemonic, "r%d, fcsr%d", a->rd, a->fcsrs);
250aae1746cSSong Gao }
251aae1746cSSong Gao 
output_cf(DisasContext * ctx,arg_cf * a,const char * mnemonic)252aae1746cSSong Gao static void output_cf(DisasContext *ctx, arg_cf *a, const char *mnemonic)
253aae1746cSSong Gao {
254aae1746cSSong Gao     output(ctx, mnemonic, "fcc%d, f%d", a->cd, a->fj);
255aae1746cSSong Gao }
256aae1746cSSong Gao 
output_fc(DisasContext * ctx,arg_fc * a,const char * mnemonic)257aae1746cSSong Gao static void output_fc(DisasContext *ctx, arg_fc *a, const char *mnemonic)
258aae1746cSSong Gao {
259aae1746cSSong Gao     output(ctx, mnemonic, "f%d, fcc%d", a->fd, a->cj);
260aae1746cSSong Gao }
261aae1746cSSong Gao 
output_cr(DisasContext * ctx,arg_cr * a,const char * mnemonic)262aae1746cSSong Gao static void output_cr(DisasContext *ctx, arg_cr *a, const char *mnemonic)
263aae1746cSSong Gao {
264aae1746cSSong Gao     output(ctx, mnemonic, "fcc%d, r%d", a->cd, a->rj);
265aae1746cSSong Gao }
266aae1746cSSong Gao 
output_rc(DisasContext * ctx,arg_rc * a,const char * mnemonic)267aae1746cSSong Gao static void output_rc(DisasContext *ctx, arg_rc *a, const char *mnemonic)
268aae1746cSSong Gao {
269aae1746cSSong Gao     output(ctx, mnemonic, "r%d, fcc%d", a->rd, a->cj);
270aae1746cSSong Gao }
271aae1746cSSong Gao 
output_frr(DisasContext * ctx,arg_frr * a,const char * mnemonic)272aae1746cSSong Gao static void output_frr(DisasContext *ctx, arg_frr *a, const char *mnemonic)
273aae1746cSSong Gao {
274aae1746cSSong Gao     output(ctx, mnemonic, "f%d, r%d, r%d", a->fd, a->rj, a->rk);
275aae1746cSSong Gao }
276aae1746cSSong Gao 
output_fr_i(DisasContext * ctx,arg_fr_i * a,const char * mnemonic)277aae1746cSSong Gao static void output_fr_i(DisasContext *ctx, arg_fr_i *a, const char *mnemonic)
278aae1746cSSong Gao {
279aae1746cSSong Gao     output(ctx, mnemonic, "f%d, r%d, %d", a->fd, a->rj, a->imm);
280aae1746cSSong Gao }
281aae1746cSSong Gao 
output_r_offs(DisasContext * ctx,arg_r_offs * a,const char * mnemonic)282aae1746cSSong Gao static void output_r_offs(DisasContext *ctx, arg_r_offs *a,
283aae1746cSSong Gao                           const char *mnemonic)
284aae1746cSSong Gao {
285aae1746cSSong Gao     output(ctx, mnemonic, "r%d, %d # 0x%" PRIx64, a->rj, a->offs,
286aae1746cSSong Gao            ctx->pc + a->offs);
287aae1746cSSong Gao }
288aae1746cSSong Gao 
output_c_offs(DisasContext * ctx,arg_c_offs * a,const char * mnemonic)289aae1746cSSong Gao static void output_c_offs(DisasContext *ctx, arg_c_offs *a,
290aae1746cSSong Gao                           const char *mnemonic)
291aae1746cSSong Gao {
292aae1746cSSong Gao     output(ctx, mnemonic, "fcc%d, %d # 0x%" PRIx64, a->cj, a->offs,
293aae1746cSSong Gao            ctx->pc + a->offs);
294aae1746cSSong Gao }
295aae1746cSSong Gao 
output_offs(DisasContext * ctx,arg_offs * a,const char * mnemonic)296aae1746cSSong Gao static void output_offs(DisasContext *ctx, arg_offs *a,
297aae1746cSSong Gao                         const char *mnemonic)
298aae1746cSSong Gao {
299aae1746cSSong Gao     output(ctx, mnemonic, "%d # 0x%" PRIx64, a->offs, ctx->pc + a->offs);
300aae1746cSSong Gao }
301aae1746cSSong Gao 
output_rr_offs(DisasContext * ctx,arg_rr_offs * a,const char * mnemonic)302aae1746cSSong Gao static void output_rr_offs(DisasContext *ctx, arg_rr_offs *a,
303aae1746cSSong Gao                            const char *mnemonic)
304aae1746cSSong Gao {
305aae1746cSSong Gao     output(ctx, mnemonic, "r%d, r%d, %d # 0x%" PRIx64, a->rj,
306aae1746cSSong Gao            a->rd, a->offs, ctx->pc + a->offs);
307aae1746cSSong Gao }
308aae1746cSSong Gao 
output_r_csr(DisasContext * ctx,arg_r_csr * a,const char * mnemonic)3095b1dedfeSXiaojuan Yang static void output_r_csr(DisasContext *ctx, arg_r_csr *a,
3105b1dedfeSXiaojuan Yang                          const char *mnemonic)
3115b1dedfeSXiaojuan Yang {
3125b1dedfeSXiaojuan Yang     output(ctx, mnemonic, "r%d, %d # %s", a->rd, a->csr, get_csr_name(a->csr));
3135b1dedfeSXiaojuan Yang }
3145b1dedfeSXiaojuan Yang 
output_rr_csr(DisasContext * ctx,arg_rr_csr * a,const char * mnemonic)3155b1dedfeSXiaojuan Yang static void output_rr_csr(DisasContext *ctx, arg_rr_csr *a,
3165b1dedfeSXiaojuan Yang                           const char *mnemonic)
3175b1dedfeSXiaojuan Yang {
3185b1dedfeSXiaojuan Yang     output(ctx, mnemonic, "r%d, r%d, %d # %s",
3195b1dedfeSXiaojuan Yang            a->rd, a->rj, a->csr, get_csr_name(a->csr));
3205b1dedfeSXiaojuan Yang }
3215b1dedfeSXiaojuan Yang 
output_empty(DisasContext * ctx,arg_empty * a,const char * mnemonic)322fcbbeb8eSXiaojuan Yang static void output_empty(DisasContext *ctx, arg_empty *a,
323fcbbeb8eSXiaojuan Yang                          const char *mnemonic)
324fcbbeb8eSXiaojuan Yang {
325fcbbeb8eSXiaojuan Yang     output(ctx, mnemonic, "");
326fcbbeb8eSXiaojuan Yang }
327fcbbeb8eSXiaojuan Yang 
output_i_rr(DisasContext * ctx,arg_i_rr * a,const char * mnemonic)328fcbbeb8eSXiaojuan Yang static void output_i_rr(DisasContext *ctx, arg_i_rr *a, const char *mnemonic)
329fcbbeb8eSXiaojuan Yang {
330fcbbeb8eSXiaojuan Yang     output(ctx, mnemonic, "%d, r%d, r%d", a->imm, a->rj, a->rk);
331fcbbeb8eSXiaojuan Yang }
332fcbbeb8eSXiaojuan Yang 
output_cop_r_i(DisasContext * ctx,arg_cop_r_i * a,const char * mnemonic)333d2cba6f7SXiaojuan Yang static void output_cop_r_i(DisasContext *ctx, arg_cop_r_i *a,
334d2cba6f7SXiaojuan Yang                            const char *mnemonic)
335d2cba6f7SXiaojuan Yang {
336d2cba6f7SXiaojuan Yang     output(ctx, mnemonic, "%d, r%d, %d", a->cop, a->rj, a->imm);
337d2cba6f7SXiaojuan Yang }
338d2cba6f7SXiaojuan Yang 
output_j_i(DisasContext * ctx,arg_j_i * a,const char * mnemonic)339d2cba6f7SXiaojuan Yang static void output_j_i(DisasContext *ctx, arg_j_i *a, const char *mnemonic)
340d2cba6f7SXiaojuan Yang {
341d2cba6f7SXiaojuan Yang     output(ctx, mnemonic, "r%d, %d", a->rj, a->imm);
342d2cba6f7SXiaojuan Yang }
343d2cba6f7SXiaojuan Yang 
344aae1746cSSong Gao #define INSN(insn, type)                                    \
345aae1746cSSong Gao static bool trans_##insn(DisasContext *ctx, arg_##type * a) \
346aae1746cSSong Gao {                                                           \
347aae1746cSSong Gao     output_##type(ctx, a, #insn);                           \
348aae1746cSSong Gao     return true;                                            \
349aae1746cSSong Gao }
350aae1746cSSong Gao 
INSN(clo_w,rr)351aae1746cSSong Gao INSN(clo_w,        rr)
352aae1746cSSong Gao INSN(clz_w,        rr)
353aae1746cSSong Gao INSN(cto_w,        rr)
354aae1746cSSong Gao INSN(ctz_w,        rr)
355aae1746cSSong Gao INSN(clo_d,        rr)
356aae1746cSSong Gao INSN(clz_d,        rr)
357aae1746cSSong Gao INSN(cto_d,        rr)
358aae1746cSSong Gao INSN(ctz_d,        rr)
359aae1746cSSong Gao INSN(revb_2h,      rr)
360aae1746cSSong Gao INSN(revb_4h,      rr)
361aae1746cSSong Gao INSN(revb_2w,      rr)
362aae1746cSSong Gao INSN(revb_d,       rr)
363aae1746cSSong Gao INSN(revh_2w,      rr)
364aae1746cSSong Gao INSN(revh_d,       rr)
365aae1746cSSong Gao INSN(bitrev_4b,    rr)
366aae1746cSSong Gao INSN(bitrev_8b,    rr)
367aae1746cSSong Gao INSN(bitrev_w,     rr)
368aae1746cSSong Gao INSN(bitrev_d,     rr)
369aae1746cSSong Gao INSN(ext_w_h,      rr)
370aae1746cSSong Gao INSN(ext_w_b,      rr)
371f9bf5074SXiaojuan Yang INSN(rdtimel_w,    rr)
372f9bf5074SXiaojuan Yang INSN(rdtimeh_w,    rr)
373f9bf5074SXiaojuan Yang INSN(rdtime_d,     rr)
374aae1746cSSong Gao INSN(cpucfg,       rr)
375aae1746cSSong Gao INSN(asrtle_d,     rr_jk)
376aae1746cSSong Gao INSN(asrtgt_d,     rr_jk)
377aae1746cSSong Gao INSN(alsl_w,       rrr_sa)
378aae1746cSSong Gao INSN(alsl_wu,      rrr_sa)
379aae1746cSSong Gao INSN(bytepick_w,   rrr_sa)
380aae1746cSSong Gao INSN(bytepick_d,   rrr_sa)
381aae1746cSSong Gao INSN(add_w,        rrr)
382aae1746cSSong Gao INSN(add_d,        rrr)
383aae1746cSSong Gao INSN(sub_w,        rrr)
384aae1746cSSong Gao INSN(sub_d,        rrr)
385aae1746cSSong Gao INSN(slt,          rrr)
386aae1746cSSong Gao INSN(sltu,         rrr)
387aae1746cSSong Gao INSN(maskeqz,      rrr)
388aae1746cSSong Gao INSN(masknez,      rrr)
389aae1746cSSong Gao INSN(nor,          rrr)
390aae1746cSSong Gao INSN(and,          rrr)
391aae1746cSSong Gao INSN(or,           rrr)
392aae1746cSSong Gao INSN(xor,          rrr)
393aae1746cSSong Gao INSN(orn,          rrr)
394aae1746cSSong Gao INSN(andn,         rrr)
395aae1746cSSong Gao INSN(sll_w,        rrr)
396aae1746cSSong Gao INSN(srl_w,        rrr)
397aae1746cSSong Gao INSN(sra_w,        rrr)
398aae1746cSSong Gao INSN(sll_d,        rrr)
399aae1746cSSong Gao INSN(srl_d,        rrr)
400aae1746cSSong Gao INSN(sra_d,        rrr)
401aae1746cSSong Gao INSN(rotr_w,       rrr)
402aae1746cSSong Gao INSN(rotr_d,       rrr)
403aae1746cSSong Gao INSN(mul_w,        rrr)
404aae1746cSSong Gao INSN(mulh_w,       rrr)
405aae1746cSSong Gao INSN(mulh_wu,      rrr)
406aae1746cSSong Gao INSN(mul_d,        rrr)
407aae1746cSSong Gao INSN(mulh_d,       rrr)
408aae1746cSSong Gao INSN(mulh_du,      rrr)
409aae1746cSSong Gao INSN(mulw_d_w,     rrr)
410aae1746cSSong Gao INSN(mulw_d_wu,    rrr)
411aae1746cSSong Gao INSN(div_w,        rrr)
412aae1746cSSong Gao INSN(mod_w,        rrr)
413aae1746cSSong Gao INSN(div_wu,       rrr)
414aae1746cSSong Gao INSN(mod_wu,       rrr)
415aae1746cSSong Gao INSN(div_d,        rrr)
416aae1746cSSong Gao INSN(mod_d,        rrr)
417aae1746cSSong Gao INSN(div_du,       rrr)
418aae1746cSSong Gao INSN(mod_du,       rrr)
419aae1746cSSong Gao INSN(crc_w_b_w,    rrr)
420aae1746cSSong Gao INSN(crc_w_h_w,    rrr)
421aae1746cSSong Gao INSN(crc_w_w_w,    rrr)
422aae1746cSSong Gao INSN(crc_w_d_w,    rrr)
423aae1746cSSong Gao INSN(crcc_w_b_w,   rrr)
424aae1746cSSong Gao INSN(crcc_w_h_w,   rrr)
425aae1746cSSong Gao INSN(crcc_w_w_w,   rrr)
426aae1746cSSong Gao INSN(crcc_w_d_w,   rrr)
427aae1746cSSong Gao INSN(break,        i)
428aae1746cSSong Gao INSN(syscall,      i)
429aae1746cSSong Gao INSN(alsl_d,       rrr_sa)
430aae1746cSSong Gao INSN(slli_w,       rr_i)
431aae1746cSSong Gao INSN(slli_d,       rr_i)
432aae1746cSSong Gao INSN(srli_w,       rr_i)
433aae1746cSSong Gao INSN(srli_d,       rr_i)
434aae1746cSSong Gao INSN(srai_w,       rr_i)
435aae1746cSSong Gao INSN(srai_d,       rr_i)
436aae1746cSSong Gao INSN(rotri_w,      rr_i)
437aae1746cSSong Gao INSN(rotri_d,      rr_i)
438aae1746cSSong Gao INSN(bstrins_w,    rr_ms_ls)
439aae1746cSSong Gao INSN(bstrpick_w,   rr_ms_ls)
440aae1746cSSong Gao INSN(bstrins_d,    rr_ms_ls)
441aae1746cSSong Gao INSN(bstrpick_d,   rr_ms_ls)
442aae1746cSSong Gao INSN(fadd_s,       fff)
443aae1746cSSong Gao INSN(fadd_d,       fff)
444aae1746cSSong Gao INSN(fsub_s,       fff)
445aae1746cSSong Gao INSN(fsub_d,       fff)
446aae1746cSSong Gao INSN(fmul_s,       fff)
447aae1746cSSong Gao INSN(fmul_d,       fff)
448aae1746cSSong Gao INSN(fdiv_s,       fff)
449aae1746cSSong Gao INSN(fdiv_d,       fff)
450aae1746cSSong Gao INSN(fmax_s,       fff)
451aae1746cSSong Gao INSN(fmax_d,       fff)
452aae1746cSSong Gao INSN(fmin_s,       fff)
453aae1746cSSong Gao INSN(fmin_d,       fff)
454aae1746cSSong Gao INSN(fmaxa_s,      fff)
455aae1746cSSong Gao INSN(fmaxa_d,      fff)
456aae1746cSSong Gao INSN(fmina_s,      fff)
457aae1746cSSong Gao INSN(fmina_d,      fff)
458aae1746cSSong Gao INSN(fscaleb_s,    fff)
459aae1746cSSong Gao INSN(fscaleb_d,    fff)
460aae1746cSSong Gao INSN(fcopysign_s,  fff)
461aae1746cSSong Gao INSN(fcopysign_d,  fff)
462aae1746cSSong Gao INSN(fabs_s,       ff)
463aae1746cSSong Gao INSN(fabs_d,       ff)
464aae1746cSSong Gao INSN(fneg_s,       ff)
465aae1746cSSong Gao INSN(fneg_d,       ff)
466aae1746cSSong Gao INSN(flogb_s,      ff)
467aae1746cSSong Gao INSN(flogb_d,      ff)
468aae1746cSSong Gao INSN(fclass_s,     ff)
469aae1746cSSong Gao INSN(fclass_d,     ff)
470aae1746cSSong Gao INSN(fsqrt_s,      ff)
471aae1746cSSong Gao INSN(fsqrt_d,      ff)
472aae1746cSSong Gao INSN(frecip_s,     ff)
473aae1746cSSong Gao INSN(frecip_d,     ff)
474aae1746cSSong Gao INSN(frsqrt_s,     ff)
475aae1746cSSong Gao INSN(frsqrt_d,     ff)
476aae1746cSSong Gao INSN(fmov_s,       ff)
477aae1746cSSong Gao INSN(fmov_d,       ff)
478aae1746cSSong Gao INSN(movgr2fr_w,   fr)
479aae1746cSSong Gao INSN(movgr2fr_d,   fr)
480aae1746cSSong Gao INSN(movgr2frh_w,  fr)
481aae1746cSSong Gao INSN(movfr2gr_s,   rf)
482aae1746cSSong Gao INSN(movfr2gr_d,   rf)
483aae1746cSSong Gao INSN(movfrh2gr_s,  rf)
484aae1746cSSong Gao INSN(movgr2fcsr,   fcsrd_r)
485aae1746cSSong Gao INSN(movfcsr2gr,   r_fcsrs)
486aae1746cSSong Gao INSN(movfr2cf,     cf)
487aae1746cSSong Gao INSN(movcf2fr,     fc)
488aae1746cSSong Gao INSN(movgr2cf,     cr)
489aae1746cSSong Gao INSN(movcf2gr,     rc)
490aae1746cSSong Gao INSN(fcvt_s_d,     ff)
491aae1746cSSong Gao INSN(fcvt_d_s,     ff)
492aae1746cSSong Gao INSN(ftintrm_w_s,  ff)
493aae1746cSSong Gao INSN(ftintrm_w_d,  ff)
494aae1746cSSong Gao INSN(ftintrm_l_s,  ff)
495aae1746cSSong Gao INSN(ftintrm_l_d,  ff)
496aae1746cSSong Gao INSN(ftintrp_w_s,  ff)
497aae1746cSSong Gao INSN(ftintrp_w_d,  ff)
498aae1746cSSong Gao INSN(ftintrp_l_s,  ff)
499aae1746cSSong Gao INSN(ftintrp_l_d,  ff)
500aae1746cSSong Gao INSN(ftintrz_w_s,  ff)
501aae1746cSSong Gao INSN(ftintrz_w_d,  ff)
502aae1746cSSong Gao INSN(ftintrz_l_s,  ff)
503aae1746cSSong Gao INSN(ftintrz_l_d,  ff)
504aae1746cSSong Gao INSN(ftintrne_w_s, ff)
505aae1746cSSong Gao INSN(ftintrne_w_d, ff)
506aae1746cSSong Gao INSN(ftintrne_l_s, ff)
507aae1746cSSong Gao INSN(ftintrne_l_d, ff)
508aae1746cSSong Gao INSN(ftint_w_s,    ff)
509aae1746cSSong Gao INSN(ftint_w_d,    ff)
510aae1746cSSong Gao INSN(ftint_l_s,    ff)
511aae1746cSSong Gao INSN(ftint_l_d,    ff)
512aae1746cSSong Gao INSN(ffint_s_w,    ff)
513aae1746cSSong Gao INSN(ffint_s_l,    ff)
514aae1746cSSong Gao INSN(ffint_d_w,    ff)
515aae1746cSSong Gao INSN(ffint_d_l,    ff)
516aae1746cSSong Gao INSN(frint_s,      ff)
517aae1746cSSong Gao INSN(frint_d,      ff)
518aae1746cSSong Gao INSN(slti,         rr_i)
519aae1746cSSong Gao INSN(sltui,        rr_i)
520aae1746cSSong Gao INSN(addi_w,       rr_i)
521aae1746cSSong Gao INSN(addi_d,       rr_i)
522aae1746cSSong Gao INSN(lu52i_d,      rr_i)
523aae1746cSSong Gao INSN(andi,         rr_i)
524aae1746cSSong Gao INSN(ori,          rr_i)
525aae1746cSSong Gao INSN(xori,         rr_i)
526aae1746cSSong Gao INSN(fmadd_s,      ffff)
527aae1746cSSong Gao INSN(fmadd_d,      ffff)
528aae1746cSSong Gao INSN(fmsub_s,      ffff)
529aae1746cSSong Gao INSN(fmsub_d,      ffff)
530aae1746cSSong Gao INSN(fnmadd_s,     ffff)
531aae1746cSSong Gao INSN(fnmadd_d,     ffff)
532aae1746cSSong Gao INSN(fnmsub_s,     ffff)
533aae1746cSSong Gao INSN(fnmsub_d,     ffff)
534aae1746cSSong Gao INSN(fsel,         fffc)
535aae1746cSSong Gao INSN(addu16i_d,    rr_i)
536aae1746cSSong Gao INSN(lu12i_w,      r_i)
537aae1746cSSong Gao INSN(lu32i_d,      r_i)
538aae1746cSSong Gao INSN(ll_w,         rr_i)
539aae1746cSSong Gao INSN(sc_w,         rr_i)
540aae1746cSSong Gao INSN(ll_d,         rr_i)
541aae1746cSSong Gao INSN(sc_d,         rr_i)
542aae1746cSSong Gao INSN(ldptr_w,      rr_i)
543aae1746cSSong Gao INSN(stptr_w,      rr_i)
544aae1746cSSong Gao INSN(ldptr_d,      rr_i)
545aae1746cSSong Gao INSN(stptr_d,      rr_i)
546aae1746cSSong Gao INSN(ld_b,         rr_i)
547aae1746cSSong Gao INSN(ld_h,         rr_i)
548aae1746cSSong Gao INSN(ld_w,         rr_i)
549aae1746cSSong Gao INSN(ld_d,         rr_i)
550aae1746cSSong Gao INSN(st_b,         rr_i)
551aae1746cSSong Gao INSN(st_h,         rr_i)
552aae1746cSSong Gao INSN(st_w,         rr_i)
553aae1746cSSong Gao INSN(st_d,         rr_i)
554aae1746cSSong Gao INSN(ld_bu,        rr_i)
555aae1746cSSong Gao INSN(ld_hu,        rr_i)
556aae1746cSSong Gao INSN(ld_wu,        rr_i)
557aae1746cSSong Gao INSN(preld,        hint_r_i)
558*5f1a3132SSong Gao INSN(preldx,       hint_rr)
559aae1746cSSong Gao INSN(fld_s,        fr_i)
560aae1746cSSong Gao INSN(fst_s,        fr_i)
561aae1746cSSong Gao INSN(fld_d,        fr_i)
562aae1746cSSong Gao INSN(fst_d,        fr_i)
563aae1746cSSong Gao INSN(ldx_b,        rrr)
564aae1746cSSong Gao INSN(ldx_h,        rrr)
565aae1746cSSong Gao INSN(ldx_w,        rrr)
566aae1746cSSong Gao INSN(ldx_d,        rrr)
567aae1746cSSong Gao INSN(stx_b,        rrr)
568aae1746cSSong Gao INSN(stx_h,        rrr)
569aae1746cSSong Gao INSN(stx_w,        rrr)
570aae1746cSSong Gao INSN(stx_d,        rrr)
571aae1746cSSong Gao INSN(ldx_bu,       rrr)
572aae1746cSSong Gao INSN(ldx_hu,       rrr)
573aae1746cSSong Gao INSN(ldx_wu,       rrr)
574aae1746cSSong Gao INSN(fldx_s,       frr)
575aae1746cSSong Gao INSN(fldx_d,       frr)
576aae1746cSSong Gao INSN(fstx_s,       frr)
577aae1746cSSong Gao INSN(fstx_d,       frr)
578aae1746cSSong Gao INSN(amswap_w,     rrr)
579aae1746cSSong Gao INSN(amswap_d,     rrr)
580aae1746cSSong Gao INSN(amadd_w,      rrr)
581aae1746cSSong Gao INSN(amadd_d,      rrr)
582aae1746cSSong Gao INSN(amand_w,      rrr)
583aae1746cSSong Gao INSN(amand_d,      rrr)
584aae1746cSSong Gao INSN(amor_w,       rrr)
585aae1746cSSong Gao INSN(amor_d,       rrr)
586aae1746cSSong Gao INSN(amxor_w,      rrr)
587aae1746cSSong Gao INSN(amxor_d,      rrr)
588aae1746cSSong Gao INSN(ammax_w,      rrr)
589aae1746cSSong Gao INSN(ammax_d,      rrr)
590aae1746cSSong Gao INSN(ammin_w,      rrr)
591aae1746cSSong Gao INSN(ammin_d,      rrr)
592aae1746cSSong Gao INSN(ammax_wu,     rrr)
593aae1746cSSong Gao INSN(ammax_du,     rrr)
594aae1746cSSong Gao INSN(ammin_wu,     rrr)
595aae1746cSSong Gao INSN(ammin_du,     rrr)
596aae1746cSSong Gao INSN(amswap_db_w,  rrr)
597aae1746cSSong Gao INSN(amswap_db_d,  rrr)
598aae1746cSSong Gao INSN(amadd_db_w,   rrr)
599aae1746cSSong Gao INSN(amadd_db_d,   rrr)
600aae1746cSSong Gao INSN(amand_db_w,   rrr)
601aae1746cSSong Gao INSN(amand_db_d,   rrr)
602aae1746cSSong Gao INSN(amor_db_w,    rrr)
603aae1746cSSong Gao INSN(amor_db_d,    rrr)
604aae1746cSSong Gao INSN(amxor_db_w,   rrr)
605aae1746cSSong Gao INSN(amxor_db_d,   rrr)
606aae1746cSSong Gao INSN(ammax_db_w,   rrr)
607aae1746cSSong Gao INSN(ammax_db_d,   rrr)
608aae1746cSSong Gao INSN(ammin_db_w,   rrr)
609aae1746cSSong Gao INSN(ammin_db_d,   rrr)
610aae1746cSSong Gao INSN(ammax_db_wu,  rrr)
611aae1746cSSong Gao INSN(ammax_db_du,  rrr)
612aae1746cSSong Gao INSN(ammin_db_wu,  rrr)
613aae1746cSSong Gao INSN(ammin_db_du,  rrr)
614aae1746cSSong Gao INSN(dbar,         i)
615aae1746cSSong Gao INSN(ibar,         i)
616aae1746cSSong Gao INSN(fldgt_s,      frr)
617aae1746cSSong Gao INSN(fldgt_d,      frr)
618aae1746cSSong Gao INSN(fldle_s,      frr)
619aae1746cSSong Gao INSN(fldle_d,      frr)
620aae1746cSSong Gao INSN(fstgt_s,      frr)
621aae1746cSSong Gao INSN(fstgt_d,      frr)
622aae1746cSSong Gao INSN(fstle_s,      frr)
623aae1746cSSong Gao INSN(fstle_d,      frr)
624aae1746cSSong Gao INSN(ldgt_b,       rrr)
625aae1746cSSong Gao INSN(ldgt_h,       rrr)
626aae1746cSSong Gao INSN(ldgt_w,       rrr)
627aae1746cSSong Gao INSN(ldgt_d,       rrr)
628aae1746cSSong Gao INSN(ldle_b,       rrr)
629aae1746cSSong Gao INSN(ldle_h,       rrr)
630aae1746cSSong Gao INSN(ldle_w,       rrr)
631aae1746cSSong Gao INSN(ldle_d,       rrr)
632aae1746cSSong Gao INSN(stgt_b,       rrr)
633aae1746cSSong Gao INSN(stgt_h,       rrr)
634aae1746cSSong Gao INSN(stgt_w,       rrr)
635aae1746cSSong Gao INSN(stgt_d,       rrr)
636aae1746cSSong Gao INSN(stle_b,       rrr)
637aae1746cSSong Gao INSN(stle_h,       rrr)
638aae1746cSSong Gao INSN(stle_w,       rrr)
639aae1746cSSong Gao INSN(stle_d,       rrr)
640aae1746cSSong Gao INSN(beqz,         r_offs)
641aae1746cSSong Gao INSN(bnez,         r_offs)
642aae1746cSSong Gao INSN(bceqz,        c_offs)
643aae1746cSSong Gao INSN(bcnez,        c_offs)
644c2b618a8SRichard Henderson INSN(jirl,         rr_i)
645aae1746cSSong Gao INSN(b,            offs)
646aae1746cSSong Gao INSN(bl,           offs)
647aae1746cSSong Gao INSN(beq,          rr_offs)
648aae1746cSSong Gao INSN(bne,          rr_offs)
649aae1746cSSong Gao INSN(blt,          rr_offs)
650aae1746cSSong Gao INSN(bge,          rr_offs)
651aae1746cSSong Gao INSN(bltu,         rr_offs)
652aae1746cSSong Gao INSN(bgeu,         rr_offs)
6535b1dedfeSXiaojuan Yang INSN(csrrd,        r_csr)
6545b1dedfeSXiaojuan Yang INSN(csrwr,        r_csr)
6555b1dedfeSXiaojuan Yang INSN(csrxchg,      rr_csr)
656f84a2aacSXiaojuan Yang INSN(iocsrrd_b,    rr)
657f84a2aacSXiaojuan Yang INSN(iocsrrd_h,    rr)
658f84a2aacSXiaojuan Yang INSN(iocsrrd_w,    rr)
659f84a2aacSXiaojuan Yang INSN(iocsrrd_d,    rr)
660f84a2aacSXiaojuan Yang INSN(iocsrwr_b,    rr)
661f84a2aacSXiaojuan Yang INSN(iocsrwr_h,    rr)
662f84a2aacSXiaojuan Yang INSN(iocsrwr_w,    rr)
663f84a2aacSXiaojuan Yang INSN(iocsrwr_d,    rr)
664fcbbeb8eSXiaojuan Yang INSN(tlbsrch,      empty)
665fcbbeb8eSXiaojuan Yang INSN(tlbrd,        empty)
666fcbbeb8eSXiaojuan Yang INSN(tlbwr,        empty)
667fcbbeb8eSXiaojuan Yang INSN(tlbfill,      empty)
668fcbbeb8eSXiaojuan Yang INSN(tlbclr,       empty)
669fcbbeb8eSXiaojuan Yang INSN(tlbflush,     empty)
670fcbbeb8eSXiaojuan Yang INSN(invtlb,       i_rr)
671d2cba6f7SXiaojuan Yang INSN(cacop,        cop_r_i)
672d2cba6f7SXiaojuan Yang INSN(lddir,        rr_i)
673d2cba6f7SXiaojuan Yang INSN(ldpte,        j_i)
674d2cba6f7SXiaojuan Yang INSN(ertn,         empty)
675d2cba6f7SXiaojuan Yang INSN(idle,         i)
676d2cba6f7SXiaojuan Yang INSN(dbcl,         i)
677aae1746cSSong Gao 
678aae1746cSSong Gao #define output_fcmp(C, PREFIX, SUFFIX)                                         \
679aae1746cSSong Gao {                                                                              \
680aae1746cSSong Gao     (C)->info->fprintf_func((C)->info->stream, "%08x   %s%s\tfcc%d, f%d, f%d", \
681aae1746cSSong Gao                             (C)->insn, PREFIX, SUFFIX, a->cd,                  \
682aae1746cSSong Gao                             a->fj, a->fk);                                     \
683aae1746cSSong Gao }
684aae1746cSSong Gao 
685aae1746cSSong Gao static bool output_cff_fcond(DisasContext *ctx, arg_cff_fcond * a,
686aae1746cSSong Gao                                const char *suffix)
687aae1746cSSong Gao {
688aae1746cSSong Gao     bool ret = true;
689aae1746cSSong Gao     switch (a->fcond) {
690aae1746cSSong Gao     case 0x0:
691aae1746cSSong Gao         output_fcmp(ctx, "fcmp_caf_", suffix);
692aae1746cSSong Gao         break;
693aae1746cSSong Gao     case 0x1:
694aae1746cSSong Gao         output_fcmp(ctx, "fcmp_saf_", suffix);
695aae1746cSSong Gao         break;
696aae1746cSSong Gao     case 0x2:
697aae1746cSSong Gao         output_fcmp(ctx, "fcmp_clt_", suffix);
698aae1746cSSong Gao         break;
699aae1746cSSong Gao     case 0x3:
700aae1746cSSong Gao         output_fcmp(ctx, "fcmp_slt_", suffix);
701aae1746cSSong Gao         break;
702aae1746cSSong Gao     case 0x4:
703aae1746cSSong Gao         output_fcmp(ctx, "fcmp_ceq_", suffix);
704aae1746cSSong Gao         break;
705aae1746cSSong Gao     case 0x5:
706aae1746cSSong Gao         output_fcmp(ctx, "fcmp_seq_", suffix);
707aae1746cSSong Gao         break;
708aae1746cSSong Gao     case 0x6:
709aae1746cSSong Gao         output_fcmp(ctx, "fcmp_cle_", suffix);
710aae1746cSSong Gao         break;
711aae1746cSSong Gao     case 0x7:
712aae1746cSSong Gao         output_fcmp(ctx, "fcmp_sle_", suffix);
713aae1746cSSong Gao         break;
714aae1746cSSong Gao     case 0x8:
715aae1746cSSong Gao         output_fcmp(ctx, "fcmp_cun_", suffix);
716aae1746cSSong Gao         break;
717aae1746cSSong Gao     case 0x9:
718aae1746cSSong Gao         output_fcmp(ctx, "fcmp_sun_", suffix);
719aae1746cSSong Gao         break;
720aae1746cSSong Gao     case 0xA:
721aae1746cSSong Gao         output_fcmp(ctx, "fcmp_cult_", suffix);
722aae1746cSSong Gao         break;
723aae1746cSSong Gao     case 0xB:
724aae1746cSSong Gao         output_fcmp(ctx, "fcmp_sult_", suffix);
725aae1746cSSong Gao         break;
726aae1746cSSong Gao     case 0xC:
727aae1746cSSong Gao         output_fcmp(ctx, "fcmp_cueq_", suffix);
728aae1746cSSong Gao         break;
729aae1746cSSong Gao     case 0xD:
730aae1746cSSong Gao         output_fcmp(ctx, "fcmp_sueq_", suffix);
731aae1746cSSong Gao         break;
732aae1746cSSong Gao     case 0xE:
733aae1746cSSong Gao         output_fcmp(ctx, "fcmp_cule_", suffix);
734aae1746cSSong Gao         break;
735aae1746cSSong Gao     case 0xF:
736aae1746cSSong Gao         output_fcmp(ctx, "fcmp_sule_", suffix);
737aae1746cSSong Gao         break;
738aae1746cSSong Gao     case 0x10:
739aae1746cSSong Gao         output_fcmp(ctx, "fcmp_cne_", suffix);
740aae1746cSSong Gao         break;
741aae1746cSSong Gao     case 0x11:
742aae1746cSSong Gao         output_fcmp(ctx, "fcmp_sne_", suffix);
743aae1746cSSong Gao         break;
744aae1746cSSong Gao     case 0x14:
745aae1746cSSong Gao         output_fcmp(ctx, "fcmp_cor_", suffix);
746aae1746cSSong Gao         break;
747aae1746cSSong Gao     case 0x15:
748aae1746cSSong Gao         output_fcmp(ctx, "fcmp_sor_", suffix);
749aae1746cSSong Gao         break;
750aae1746cSSong Gao     case 0x18:
751aae1746cSSong Gao         output_fcmp(ctx, "fcmp_cune_", suffix);
752aae1746cSSong Gao         break;
753aae1746cSSong Gao     case 0x19:
754aae1746cSSong Gao         output_fcmp(ctx, "fcmp_sune_", suffix);
755aae1746cSSong Gao         break;
756aae1746cSSong Gao     default:
757aae1746cSSong Gao         ret = false;
758aae1746cSSong Gao     }
759aae1746cSSong Gao     return ret;
760aae1746cSSong Gao }
761aae1746cSSong Gao 
762aae1746cSSong Gao #define FCMP_INSN(suffix)                               \
763aae1746cSSong Gao static bool trans_fcmp_cond_##suffix(DisasContext *ctx, \
764aae1746cSSong Gao                                      arg_cff_fcond * a) \
765aae1746cSSong Gao {                                                       \
766aae1746cSSong Gao     return output_cff_fcond(ctx, a, #suffix);           \
767aae1746cSSong Gao }
768aae1746cSSong Gao 
769aae1746cSSong Gao FCMP_INSN(s)
FCMP_INSN(d)770aae1746cSSong Gao FCMP_INSN(d)
77169c9a5cfSRichard Henderson 
77269c9a5cfSRichard Henderson #define PCADD_INSN(name)                                        \
77369c9a5cfSRichard Henderson static bool trans_##name(DisasContext *ctx, arg_##name *a)      \
77469c9a5cfSRichard Henderson {                                                               \
77569c9a5cfSRichard Henderson     output(ctx, #name, "r%d, %d # 0x%" PRIx64,                  \
77669c9a5cfSRichard Henderson            a->rd, a->imm, gen_##name(ctx->pc, a->imm));         \
77769c9a5cfSRichard Henderson     return true;                                                \
77869c9a5cfSRichard Henderson }
77969c9a5cfSRichard Henderson 
78069c9a5cfSRichard Henderson static uint64_t gen_pcaddi(uint64_t pc, int imm)
78169c9a5cfSRichard Henderson {
78269c9a5cfSRichard Henderson     return pc + (imm << 2);
78369c9a5cfSRichard Henderson }
78469c9a5cfSRichard Henderson 
gen_pcalau12i(uint64_t pc,int imm)78569c9a5cfSRichard Henderson static uint64_t gen_pcalau12i(uint64_t pc, int imm)
78669c9a5cfSRichard Henderson {
78769c9a5cfSRichard Henderson     return (pc + (imm << 12)) & ~0xfff;
78869c9a5cfSRichard Henderson }
78969c9a5cfSRichard Henderson 
gen_pcaddu12i(uint64_t pc,int imm)79069c9a5cfSRichard Henderson static uint64_t gen_pcaddu12i(uint64_t pc, int imm)
79169c9a5cfSRichard Henderson {
79269c9a5cfSRichard Henderson     return pc + (imm << 12);
79369c9a5cfSRichard Henderson }
79469c9a5cfSRichard Henderson 
gen_pcaddu18i(uint64_t pc,int imm)79569c9a5cfSRichard Henderson static uint64_t gen_pcaddu18i(uint64_t pc, int imm)
79669c9a5cfSRichard Henderson {
79769c9a5cfSRichard Henderson     return pc + ((uint64_t)(imm) << 18);
79869c9a5cfSRichard Henderson }
79969c9a5cfSRichard Henderson 
80069c9a5cfSRichard Henderson PCADD_INSN(pcaddi)
PCADD_INSN(pcalau12i)80169c9a5cfSRichard Henderson PCADD_INSN(pcalau12i)
80269c9a5cfSRichard Henderson PCADD_INSN(pcaddu12i)
80369c9a5cfSRichard Henderson PCADD_INSN(pcaddu18i)
80457b4f1acSSong Gao 
80557b4f1acSSong Gao #define INSN_LSX(insn, type)                                \
80657b4f1acSSong Gao static bool trans_##insn(DisasContext *ctx, arg_##type * a) \
80757b4f1acSSong Gao {                                                           \
80857b4f1acSSong Gao     output_##type(ctx, a, #insn);                           \
80957b4f1acSSong Gao     return true;                                            \
81057b4f1acSSong Gao }
81157b4f1acSSong Gao 
812d0dfa19aSSong Gao static void output_cv(DisasContext *ctx, arg_cv *a,
813d0dfa19aSSong Gao                         const char *mnemonic)
814d0dfa19aSSong Gao {
815d0dfa19aSSong Gao     output(ctx, mnemonic, "fcc%d, v%d", a->cd, a->vj);
816d0dfa19aSSong Gao }
817d0dfa19aSSong Gao 
output_vvv(DisasContext * ctx,arg_vvv * a,const char * mnemonic)81857b4f1acSSong Gao static void output_vvv(DisasContext *ctx, arg_vvv *a, const char *mnemonic)
81957b4f1acSSong Gao {
82057b4f1acSSong Gao     output(ctx, mnemonic, "v%d, v%d, v%d", a->vd, a->vj, a->vk);
82157b4f1acSSong Gao }
82257b4f1acSSong Gao 
output_vv_i(DisasContext * ctx,arg_vv_i * a,const char * mnemonic)823d8be64c1SSong Gao static void output_vv_i(DisasContext *ctx, arg_vv_i *a, const char *mnemonic)
824d8be64c1SSong Gao {
825d8be64c1SSong Gao     output(ctx, mnemonic, "v%d, v%d, 0x%x", a->vd, a->vj, a->imm);
826d8be64c1SSong Gao }
827d8be64c1SSong Gao 
output_vv(DisasContext * ctx,arg_vv * a,const char * mnemonic)828be9ec557SSong Gao static void output_vv(DisasContext *ctx, arg_vv *a, const char *mnemonic)
829be9ec557SSong Gao {
830be9ec557SSong Gao     output(ctx, mnemonic, "v%d, v%d", a->vd, a->vj);
831be9ec557SSong Gao }
832be9ec557SSong Gao 
output_vvvv(DisasContext * ctx,arg_vvvv * a,const char * mnemonic)833aca67472SSong Gao static void output_vvvv(DisasContext *ctx, arg_vvvv *a, const char *mnemonic)
834aca67472SSong Gao {
835aca67472SSong Gao     output(ctx, mnemonic, "v%d, v%d, v%d, v%d", a->vd, a->vj, a->vk, a->va);
836aca67472SSong Gao }
837aca67472SSong Gao 
output_vr_i(DisasContext * ctx,arg_vr_i * a,const char * mnemonic)838cdbdefbfSSong Gao static void output_vr_i(DisasContext *ctx, arg_vr_i *a, const char *mnemonic)
839cdbdefbfSSong Gao {
840cdbdefbfSSong Gao     output(ctx, mnemonic, "v%d, r%d, 0x%x", a->vd, a->rj, a->imm);
841cdbdefbfSSong Gao }
842cdbdefbfSSong Gao 
output_vr_ii(DisasContext * ctx,arg_vr_ii * a,const char * mnemonic)843843b627aSSong Gao static void output_vr_ii(DisasContext *ctx, arg_vr_ii *a, const char *mnemonic)
844843b627aSSong Gao {
845843b627aSSong Gao     output(ctx, mnemonic, "v%d, r%d, 0x%x, 0x%x", a->vd, a->rj, a->imm, a->imm2);
846843b627aSSong Gao }
847843b627aSSong Gao 
output_rv_i(DisasContext * ctx,arg_rv_i * a,const char * mnemonic)848cdbdefbfSSong Gao static void output_rv_i(DisasContext *ctx, arg_rv_i *a, const char *mnemonic)
849cdbdefbfSSong Gao {
850cdbdefbfSSong Gao     output(ctx, mnemonic, "r%d, v%d, 0x%x", a->rd, a->vj,  a->imm);
851cdbdefbfSSong Gao }
852cdbdefbfSSong Gao 
output_vr(DisasContext * ctx,arg_vr * a,const char * mnemonic)853cdbdefbfSSong Gao static void output_vr(DisasContext *ctx, arg_vr *a, const char *mnemonic)
854cdbdefbfSSong Gao {
855cdbdefbfSSong Gao     output(ctx, mnemonic, "v%d, r%d", a->vd, a->rj);
856cdbdefbfSSong Gao }
857cdbdefbfSSong Gao 
output_vvr(DisasContext * ctx,arg_vvr * a,const char * mnemonic)858d5e5563cSSong Gao static void output_vvr(DisasContext *ctx, arg_vvr *a, const char *mnemonic)
859d5e5563cSSong Gao {
860d5e5563cSSong Gao     output(ctx, mnemonic, "v%d, v%d, r%d", a->vd, a->vj, a->rk);
861d5e5563cSSong Gao }
862d5e5563cSSong Gao 
output_vrr(DisasContext * ctx,arg_vrr * a,const char * mnemonic)863843b627aSSong Gao static void output_vrr(DisasContext *ctx, arg_vrr *a, const char *mnemonic)
864843b627aSSong Gao {
865843b627aSSong Gao     output(ctx, mnemonic, "v%d, r%d, r%d", a->vd, a->rj, a->rk);
866843b627aSSong Gao }
867843b627aSSong Gao 
output_v_i(DisasContext * ctx,arg_v_i * a,const char * mnemonic)86829bb5d72SSong Gao static void output_v_i(DisasContext *ctx, arg_v_i *a, const char *mnemonic)
86929bb5d72SSong Gao {
87029bb5d72SSong Gao     output(ctx, mnemonic, "v%d, 0x%x", a->vd, a->imm);
87129bb5d72SSong Gao }
87229bb5d72SSong Gao 
INSN_LSX(vadd_b,vvv)87357b4f1acSSong Gao INSN_LSX(vadd_b,           vvv)
87457b4f1acSSong Gao INSN_LSX(vadd_h,           vvv)
87557b4f1acSSong Gao INSN_LSX(vadd_w,           vvv)
87657b4f1acSSong Gao INSN_LSX(vadd_d,           vvv)
87757b4f1acSSong Gao INSN_LSX(vadd_q,           vvv)
87857b4f1acSSong Gao INSN_LSX(vsub_b,           vvv)
87957b4f1acSSong Gao INSN_LSX(vsub_h,           vvv)
88057b4f1acSSong Gao INSN_LSX(vsub_w,           vvv)
88157b4f1acSSong Gao INSN_LSX(vsub_d,           vvv)
88257b4f1acSSong Gao INSN_LSX(vsub_q,           vvv)
883d8be64c1SSong Gao 
884d8be64c1SSong Gao INSN_LSX(vaddi_bu,         vv_i)
885d8be64c1SSong Gao INSN_LSX(vaddi_hu,         vv_i)
886d8be64c1SSong Gao INSN_LSX(vaddi_wu,         vv_i)
887d8be64c1SSong Gao INSN_LSX(vaddi_du,         vv_i)
888d8be64c1SSong Gao INSN_LSX(vsubi_bu,         vv_i)
889d8be64c1SSong Gao INSN_LSX(vsubi_hu,         vv_i)
890d8be64c1SSong Gao INSN_LSX(vsubi_wu,         vv_i)
891d8be64c1SSong Gao INSN_LSX(vsubi_du,         vv_i)
892be9ec557SSong Gao 
893be9ec557SSong Gao INSN_LSX(vneg_b,           vv)
894be9ec557SSong Gao INSN_LSX(vneg_h,           vv)
895be9ec557SSong Gao INSN_LSX(vneg_w,           vv)
896be9ec557SSong Gao INSN_LSX(vneg_d,           vv)
897a94cb911SSong Gao 
898a94cb911SSong Gao INSN_LSX(vsadd_b,          vvv)
899a94cb911SSong Gao INSN_LSX(vsadd_h,          vvv)
900a94cb911SSong Gao INSN_LSX(vsadd_w,          vvv)
901a94cb911SSong Gao INSN_LSX(vsadd_d,          vvv)
902a94cb911SSong Gao INSN_LSX(vsadd_bu,         vvv)
903a94cb911SSong Gao INSN_LSX(vsadd_hu,         vvv)
904a94cb911SSong Gao INSN_LSX(vsadd_wu,         vvv)
905a94cb911SSong Gao INSN_LSX(vsadd_du,         vvv)
906a94cb911SSong Gao INSN_LSX(vssub_b,          vvv)
907a94cb911SSong Gao INSN_LSX(vssub_h,          vvv)
908a94cb911SSong Gao INSN_LSX(vssub_w,          vvv)
909a94cb911SSong Gao INSN_LSX(vssub_d,          vvv)
910a94cb911SSong Gao INSN_LSX(vssub_bu,         vvv)
911a94cb911SSong Gao INSN_LSX(vssub_hu,         vvv)
912a94cb911SSong Gao INSN_LSX(vssub_wu,         vvv)
913a94cb911SSong Gao INSN_LSX(vssub_du,         vvv)
914c037fbc9SSong Gao 
915c037fbc9SSong Gao INSN_LSX(vhaddw_h_b,       vvv)
916c037fbc9SSong Gao INSN_LSX(vhaddw_w_h,       vvv)
917c037fbc9SSong Gao INSN_LSX(vhaddw_d_w,       vvv)
918c037fbc9SSong Gao INSN_LSX(vhaddw_q_d,       vvv)
919c037fbc9SSong Gao INSN_LSX(vhaddw_hu_bu,     vvv)
920c037fbc9SSong Gao INSN_LSX(vhaddw_wu_hu,     vvv)
921c037fbc9SSong Gao INSN_LSX(vhaddw_du_wu,     vvv)
922c037fbc9SSong Gao INSN_LSX(vhaddw_qu_du,     vvv)
923c037fbc9SSong Gao INSN_LSX(vhsubw_h_b,       vvv)
924c037fbc9SSong Gao INSN_LSX(vhsubw_w_h,       vvv)
925c037fbc9SSong Gao INSN_LSX(vhsubw_d_w,       vvv)
926c037fbc9SSong Gao INSN_LSX(vhsubw_q_d,       vvv)
927c037fbc9SSong Gao INSN_LSX(vhsubw_hu_bu,     vvv)
928c037fbc9SSong Gao INSN_LSX(vhsubw_wu_hu,     vvv)
929c037fbc9SSong Gao INSN_LSX(vhsubw_du_wu,     vvv)
930c037fbc9SSong Gao INSN_LSX(vhsubw_qu_du,     vvv)
9312d5f950cSSong Gao 
9322d5f950cSSong Gao INSN_LSX(vaddwev_h_b,      vvv)
9332d5f950cSSong Gao INSN_LSX(vaddwev_w_h,      vvv)
9342d5f950cSSong Gao INSN_LSX(vaddwev_d_w,      vvv)
9352d5f950cSSong Gao INSN_LSX(vaddwev_q_d,      vvv)
9362d5f950cSSong Gao INSN_LSX(vaddwod_h_b,      vvv)
9372d5f950cSSong Gao INSN_LSX(vaddwod_w_h,      vvv)
9382d5f950cSSong Gao INSN_LSX(vaddwod_d_w,      vvv)
9392d5f950cSSong Gao INSN_LSX(vaddwod_q_d,      vvv)
9402d5f950cSSong Gao INSN_LSX(vsubwev_h_b,      vvv)
9412d5f950cSSong Gao INSN_LSX(vsubwev_w_h,      vvv)
9422d5f950cSSong Gao INSN_LSX(vsubwev_d_w,      vvv)
9432d5f950cSSong Gao INSN_LSX(vsubwev_q_d,      vvv)
9442d5f950cSSong Gao INSN_LSX(vsubwod_h_b,      vvv)
9452d5f950cSSong Gao INSN_LSX(vsubwod_w_h,      vvv)
9462d5f950cSSong Gao INSN_LSX(vsubwod_d_w,      vvv)
9472d5f950cSSong Gao INSN_LSX(vsubwod_q_d,      vvv)
9482d5f950cSSong Gao 
9492d5f950cSSong Gao INSN_LSX(vaddwev_h_bu,     vvv)
9502d5f950cSSong Gao INSN_LSX(vaddwev_w_hu,     vvv)
9512d5f950cSSong Gao INSN_LSX(vaddwev_d_wu,     vvv)
9522d5f950cSSong Gao INSN_LSX(vaddwev_q_du,     vvv)
9532d5f950cSSong Gao INSN_LSX(vaddwod_h_bu,     vvv)
9542d5f950cSSong Gao INSN_LSX(vaddwod_w_hu,     vvv)
9552d5f950cSSong Gao INSN_LSX(vaddwod_d_wu,     vvv)
9562d5f950cSSong Gao INSN_LSX(vaddwod_q_du,     vvv)
9572d5f950cSSong Gao INSN_LSX(vsubwev_h_bu,     vvv)
9582d5f950cSSong Gao INSN_LSX(vsubwev_w_hu,     vvv)
9592d5f950cSSong Gao INSN_LSX(vsubwev_d_wu,     vvv)
9602d5f950cSSong Gao INSN_LSX(vsubwev_q_du,     vvv)
9612d5f950cSSong Gao INSN_LSX(vsubwod_h_bu,     vvv)
9622d5f950cSSong Gao INSN_LSX(vsubwod_w_hu,     vvv)
9632d5f950cSSong Gao INSN_LSX(vsubwod_d_wu,     vvv)
9642d5f950cSSong Gao INSN_LSX(vsubwod_q_du,     vvv)
9652d5f950cSSong Gao 
9662d5f950cSSong Gao INSN_LSX(vaddwev_h_bu_b,   vvv)
9672d5f950cSSong Gao INSN_LSX(vaddwev_w_hu_h,   vvv)
9682d5f950cSSong Gao INSN_LSX(vaddwev_d_wu_w,   vvv)
9692d5f950cSSong Gao INSN_LSX(vaddwev_q_du_d,   vvv)
9702d5f950cSSong Gao INSN_LSX(vaddwod_h_bu_b,   vvv)
9712d5f950cSSong Gao INSN_LSX(vaddwod_w_hu_h,   vvv)
9722d5f950cSSong Gao INSN_LSX(vaddwod_d_wu_w,   vvv)
9732d5f950cSSong Gao INSN_LSX(vaddwod_q_du_d,   vvv)
97439e9b0a7SSong Gao 
97539e9b0a7SSong Gao INSN_LSX(vavg_b,           vvv)
97639e9b0a7SSong Gao INSN_LSX(vavg_h,           vvv)
97739e9b0a7SSong Gao INSN_LSX(vavg_w,           vvv)
97839e9b0a7SSong Gao INSN_LSX(vavg_d,           vvv)
97939e9b0a7SSong Gao INSN_LSX(vavg_bu,          vvv)
98039e9b0a7SSong Gao INSN_LSX(vavg_hu,          vvv)
98139e9b0a7SSong Gao INSN_LSX(vavg_wu,          vvv)
98239e9b0a7SSong Gao INSN_LSX(vavg_du,          vvv)
98339e9b0a7SSong Gao INSN_LSX(vavgr_b,          vvv)
98439e9b0a7SSong Gao INSN_LSX(vavgr_h,          vvv)
98539e9b0a7SSong Gao INSN_LSX(vavgr_w,          vvv)
98639e9b0a7SSong Gao INSN_LSX(vavgr_d,          vvv)
98739e9b0a7SSong Gao INSN_LSX(vavgr_bu,         vvv)
98839e9b0a7SSong Gao INSN_LSX(vavgr_hu,         vvv)
98939e9b0a7SSong Gao INSN_LSX(vavgr_wu,         vvv)
99039e9b0a7SSong Gao INSN_LSX(vavgr_du,         vvv)
99149725659SSong Gao 
99249725659SSong Gao INSN_LSX(vabsd_b,          vvv)
99349725659SSong Gao INSN_LSX(vabsd_h,          vvv)
99449725659SSong Gao INSN_LSX(vabsd_w,          vvv)
99549725659SSong Gao INSN_LSX(vabsd_d,          vvv)
99649725659SSong Gao INSN_LSX(vabsd_bu,         vvv)
99749725659SSong Gao INSN_LSX(vabsd_hu,         vvv)
99849725659SSong Gao INSN_LSX(vabsd_wu,         vvv)
99949725659SSong Gao INSN_LSX(vabsd_du,         vvv)
1000af448cb3SSong Gao 
1001af448cb3SSong Gao INSN_LSX(vadda_b,          vvv)
1002af448cb3SSong Gao INSN_LSX(vadda_h,          vvv)
1003af448cb3SSong Gao INSN_LSX(vadda_w,          vvv)
1004af448cb3SSong Gao INSN_LSX(vadda_d,          vvv)
10059ab29520SSong Gao 
10069ab29520SSong Gao INSN_LSX(vmax_b,           vvv)
10079ab29520SSong Gao INSN_LSX(vmax_h,           vvv)
10089ab29520SSong Gao INSN_LSX(vmax_w,           vvv)
10099ab29520SSong Gao INSN_LSX(vmax_d,           vvv)
10109ab29520SSong Gao INSN_LSX(vmin_b,           vvv)
10119ab29520SSong Gao INSN_LSX(vmin_h,           vvv)
10129ab29520SSong Gao INSN_LSX(vmin_w,           vvv)
10139ab29520SSong Gao INSN_LSX(vmin_d,           vvv)
10149ab29520SSong Gao INSN_LSX(vmax_bu,          vvv)
10159ab29520SSong Gao INSN_LSX(vmax_hu,          vvv)
10169ab29520SSong Gao INSN_LSX(vmax_wu,          vvv)
10179ab29520SSong Gao INSN_LSX(vmax_du,          vvv)
10189ab29520SSong Gao INSN_LSX(vmin_bu,          vvv)
10199ab29520SSong Gao INSN_LSX(vmin_hu,          vvv)
10209ab29520SSong Gao INSN_LSX(vmin_wu,          vvv)
10219ab29520SSong Gao INSN_LSX(vmin_du,          vvv)
10229ab29520SSong Gao INSN_LSX(vmaxi_b,          vv_i)
10239ab29520SSong Gao INSN_LSX(vmaxi_h,          vv_i)
10249ab29520SSong Gao INSN_LSX(vmaxi_w,          vv_i)
10259ab29520SSong Gao INSN_LSX(vmaxi_d,          vv_i)
10269ab29520SSong Gao INSN_LSX(vmini_b,          vv_i)
10279ab29520SSong Gao INSN_LSX(vmini_h,          vv_i)
10289ab29520SSong Gao INSN_LSX(vmini_w,          vv_i)
10299ab29520SSong Gao INSN_LSX(vmini_d,          vv_i)
10309ab29520SSong Gao INSN_LSX(vmaxi_bu,         vv_i)
10319ab29520SSong Gao INSN_LSX(vmaxi_hu,         vv_i)
10329ab29520SSong Gao INSN_LSX(vmaxi_wu,         vv_i)
10339ab29520SSong Gao INSN_LSX(vmaxi_du,         vv_i)
10349ab29520SSong Gao INSN_LSX(vmini_bu,         vv_i)
10359ab29520SSong Gao INSN_LSX(vmini_hu,         vv_i)
10369ab29520SSong Gao INSN_LSX(vmini_wu,         vv_i)
10379ab29520SSong Gao INSN_LSX(vmini_du,         vv_i)
1038cd1c49adSSong Gao 
1039cd1c49adSSong Gao INSN_LSX(vmul_b,           vvv)
1040cd1c49adSSong Gao INSN_LSX(vmul_h,           vvv)
1041cd1c49adSSong Gao INSN_LSX(vmul_w,           vvv)
1042cd1c49adSSong Gao INSN_LSX(vmul_d,           vvv)
1043cd1c49adSSong Gao INSN_LSX(vmuh_b,           vvv)
1044cd1c49adSSong Gao INSN_LSX(vmuh_h,           vvv)
1045cd1c49adSSong Gao INSN_LSX(vmuh_w,           vvv)
1046cd1c49adSSong Gao INSN_LSX(vmuh_d,           vvv)
1047cd1c49adSSong Gao INSN_LSX(vmuh_bu,          vvv)
1048cd1c49adSSong Gao INSN_LSX(vmuh_hu,          vvv)
1049cd1c49adSSong Gao INSN_LSX(vmuh_wu,          vvv)
1050cd1c49adSSong Gao INSN_LSX(vmuh_du,          vvv)
1051cd1c49adSSong Gao 
1052cd1c49adSSong Gao INSN_LSX(vmulwev_h_b,      vvv)
1053cd1c49adSSong Gao INSN_LSX(vmulwev_w_h,      vvv)
1054cd1c49adSSong Gao INSN_LSX(vmulwev_d_w,      vvv)
1055cd1c49adSSong Gao INSN_LSX(vmulwev_q_d,      vvv)
1056cd1c49adSSong Gao INSN_LSX(vmulwod_h_b,      vvv)
1057cd1c49adSSong Gao INSN_LSX(vmulwod_w_h,      vvv)
1058cd1c49adSSong Gao INSN_LSX(vmulwod_d_w,      vvv)
1059cd1c49adSSong Gao INSN_LSX(vmulwod_q_d,      vvv)
1060cd1c49adSSong Gao INSN_LSX(vmulwev_h_bu,     vvv)
1061cd1c49adSSong Gao INSN_LSX(vmulwev_w_hu,     vvv)
1062cd1c49adSSong Gao INSN_LSX(vmulwev_d_wu,     vvv)
1063cd1c49adSSong Gao INSN_LSX(vmulwev_q_du,     vvv)
1064cd1c49adSSong Gao INSN_LSX(vmulwod_h_bu,     vvv)
1065cd1c49adSSong Gao INSN_LSX(vmulwod_w_hu,     vvv)
1066cd1c49adSSong Gao INSN_LSX(vmulwod_d_wu,     vvv)
1067cd1c49adSSong Gao INSN_LSX(vmulwod_q_du,     vvv)
1068cd1c49adSSong Gao INSN_LSX(vmulwev_h_bu_b,   vvv)
1069cd1c49adSSong Gao INSN_LSX(vmulwev_w_hu_h,   vvv)
1070cd1c49adSSong Gao INSN_LSX(vmulwev_d_wu_w,   vvv)
1071cd1c49adSSong Gao INSN_LSX(vmulwev_q_du_d,   vvv)
1072cd1c49adSSong Gao INSN_LSX(vmulwod_h_bu_b,   vvv)
1073cd1c49adSSong Gao INSN_LSX(vmulwod_w_hu_h,   vvv)
1074cd1c49adSSong Gao INSN_LSX(vmulwod_d_wu_w,   vvv)
1075cd1c49adSSong Gao INSN_LSX(vmulwod_q_du_d,   vvv)
1076d3aec65bSSong Gao 
1077d3aec65bSSong Gao INSN_LSX(vmadd_b,          vvv)
1078d3aec65bSSong Gao INSN_LSX(vmadd_h,          vvv)
1079d3aec65bSSong Gao INSN_LSX(vmadd_w,          vvv)
1080d3aec65bSSong Gao INSN_LSX(vmadd_d,          vvv)
1081d3aec65bSSong Gao INSN_LSX(vmsub_b,          vvv)
1082d3aec65bSSong Gao INSN_LSX(vmsub_h,          vvv)
1083d3aec65bSSong Gao INSN_LSX(vmsub_w,          vvv)
1084d3aec65bSSong Gao INSN_LSX(vmsub_d,          vvv)
1085d3aec65bSSong Gao 
1086d3aec65bSSong Gao INSN_LSX(vmaddwev_h_b,     vvv)
1087d3aec65bSSong Gao INSN_LSX(vmaddwev_w_h,     vvv)
1088d3aec65bSSong Gao INSN_LSX(vmaddwev_d_w,     vvv)
1089d3aec65bSSong Gao INSN_LSX(vmaddwev_q_d,     vvv)
1090d3aec65bSSong Gao INSN_LSX(vmaddwod_h_b,     vvv)
1091d3aec65bSSong Gao INSN_LSX(vmaddwod_w_h,     vvv)
1092d3aec65bSSong Gao INSN_LSX(vmaddwod_d_w,     vvv)
1093d3aec65bSSong Gao INSN_LSX(vmaddwod_q_d,     vvv)
1094d3aec65bSSong Gao INSN_LSX(vmaddwev_h_bu,    vvv)
1095d3aec65bSSong Gao INSN_LSX(vmaddwev_w_hu,    vvv)
1096d3aec65bSSong Gao INSN_LSX(vmaddwev_d_wu,    vvv)
1097d3aec65bSSong Gao INSN_LSX(vmaddwev_q_du,    vvv)
1098d3aec65bSSong Gao INSN_LSX(vmaddwod_h_bu,    vvv)
1099d3aec65bSSong Gao INSN_LSX(vmaddwod_w_hu,    vvv)
1100d3aec65bSSong Gao INSN_LSX(vmaddwod_d_wu,    vvv)
1101d3aec65bSSong Gao INSN_LSX(vmaddwod_q_du,    vvv)
1102d3aec65bSSong Gao INSN_LSX(vmaddwev_h_bu_b,  vvv)
1103d3aec65bSSong Gao INSN_LSX(vmaddwev_w_hu_h,  vvv)
1104d3aec65bSSong Gao INSN_LSX(vmaddwev_d_wu_w,  vvv)
1105d3aec65bSSong Gao INSN_LSX(vmaddwev_q_du_d,  vvv)
1106d3aec65bSSong Gao INSN_LSX(vmaddwod_h_bu_b,  vvv)
1107d3aec65bSSong Gao INSN_LSX(vmaddwod_w_hu_h,  vvv)
1108d3aec65bSSong Gao INSN_LSX(vmaddwod_d_wu_w,  vvv)
1109d3aec65bSSong Gao INSN_LSX(vmaddwod_q_du_d,  vvv)
11104cc4c0f7SSong Gao 
11114cc4c0f7SSong Gao INSN_LSX(vdiv_b,           vvv)
11124cc4c0f7SSong Gao INSN_LSX(vdiv_h,           vvv)
11134cc4c0f7SSong Gao INSN_LSX(vdiv_w,           vvv)
11144cc4c0f7SSong Gao INSN_LSX(vdiv_d,           vvv)
11154cc4c0f7SSong Gao INSN_LSX(vdiv_bu,          vvv)
11164cc4c0f7SSong Gao INSN_LSX(vdiv_hu,          vvv)
11174cc4c0f7SSong Gao INSN_LSX(vdiv_wu,          vvv)
11184cc4c0f7SSong Gao INSN_LSX(vdiv_du,          vvv)
11194cc4c0f7SSong Gao INSN_LSX(vmod_b,           vvv)
11204cc4c0f7SSong Gao INSN_LSX(vmod_h,           vvv)
11214cc4c0f7SSong Gao INSN_LSX(vmod_w,           vvv)
11224cc4c0f7SSong Gao INSN_LSX(vmod_d,           vvv)
11234cc4c0f7SSong Gao INSN_LSX(vmod_bu,          vvv)
11244cc4c0f7SSong Gao INSN_LSX(vmod_hu,          vvv)
11254cc4c0f7SSong Gao INSN_LSX(vmod_wu,          vvv)
11264cc4c0f7SSong Gao INSN_LSX(vmod_du,          vvv)
1127cbe44190SSong Gao 
1128cbe44190SSong Gao INSN_LSX(vsat_b,           vv_i)
1129cbe44190SSong Gao INSN_LSX(vsat_h,           vv_i)
1130cbe44190SSong Gao INSN_LSX(vsat_w,           vv_i)
1131cbe44190SSong Gao INSN_LSX(vsat_d,           vv_i)
1132cbe44190SSong Gao INSN_LSX(vsat_bu,          vv_i)
1133cbe44190SSong Gao INSN_LSX(vsat_hu,          vv_i)
1134cbe44190SSong Gao INSN_LSX(vsat_wu,          vv_i)
1135cbe44190SSong Gao INSN_LSX(vsat_du,          vv_i)
11363734ad93SSong Gao 
11373734ad93SSong Gao INSN_LSX(vexth_h_b,        vv)
11383734ad93SSong Gao INSN_LSX(vexth_w_h,        vv)
11393734ad93SSong Gao INSN_LSX(vexth_d_w,        vv)
11403734ad93SSong Gao INSN_LSX(vexth_q_d,        vv)
11413734ad93SSong Gao INSN_LSX(vexth_hu_bu,      vv)
11423734ad93SSong Gao INSN_LSX(vexth_wu_hu,      vv)
11433734ad93SSong Gao INSN_LSX(vexth_du_wu,      vv)
11443734ad93SSong Gao INSN_LSX(vexth_qu_du,      vv)
1145f0e395dfSSong Gao 
1146f0e395dfSSong Gao INSN_LSX(vsigncov_b,       vvv)
1147f0e395dfSSong Gao INSN_LSX(vsigncov_h,       vvv)
1148f0e395dfSSong Gao INSN_LSX(vsigncov_w,       vvv)
1149f0e395dfSSong Gao INSN_LSX(vsigncov_d,       vvv)
1150789f4a4cSSong Gao 
1151789f4a4cSSong Gao INSN_LSX(vmskltz_b,        vv)
1152789f4a4cSSong Gao INSN_LSX(vmskltz_h,        vv)
1153789f4a4cSSong Gao INSN_LSX(vmskltz_w,        vv)
1154789f4a4cSSong Gao INSN_LSX(vmskltz_d,        vv)
1155789f4a4cSSong Gao INSN_LSX(vmskgez_b,        vv)
1156789f4a4cSSong Gao INSN_LSX(vmsknz_b,         vv)
1157f205a539SSong Gao 
115829bb5d72SSong Gao INSN_LSX(vldi,             v_i)
115929bb5d72SSong Gao 
1160f205a539SSong Gao INSN_LSX(vand_v,           vvv)
1161f205a539SSong Gao INSN_LSX(vor_v,            vvv)
1162f205a539SSong Gao INSN_LSX(vxor_v,           vvv)
1163f205a539SSong Gao INSN_LSX(vnor_v,           vvv)
1164f205a539SSong Gao INSN_LSX(vandn_v,          vvv)
1165f205a539SSong Gao INSN_LSX(vorn_v,           vvv)
1166f205a539SSong Gao 
1167f205a539SSong Gao INSN_LSX(vandi_b,          vv_i)
1168f205a539SSong Gao INSN_LSX(vori_b,           vv_i)
1169f205a539SSong Gao INSN_LSX(vxori_b,          vv_i)
1170f205a539SSong Gao INSN_LSX(vnori_b,          vv_i)
1171b281d696SSong Gao 
1172b281d696SSong Gao INSN_LSX(vsll_b,           vvv)
1173b281d696SSong Gao INSN_LSX(vsll_h,           vvv)
1174b281d696SSong Gao INSN_LSX(vsll_w,           vvv)
1175b281d696SSong Gao INSN_LSX(vsll_d,           vvv)
1176b281d696SSong Gao INSN_LSX(vslli_b,          vv_i)
1177b281d696SSong Gao INSN_LSX(vslli_h,          vv_i)
1178b281d696SSong Gao INSN_LSX(vslli_w,          vv_i)
1179b281d696SSong Gao INSN_LSX(vslli_d,          vv_i)
1180b281d696SSong Gao 
1181b281d696SSong Gao INSN_LSX(vsrl_b,           vvv)
1182b281d696SSong Gao INSN_LSX(vsrl_h,           vvv)
1183b281d696SSong Gao INSN_LSX(vsrl_w,           vvv)
1184b281d696SSong Gao INSN_LSX(vsrl_d,           vvv)
1185b281d696SSong Gao INSN_LSX(vsrli_b,          vv_i)
1186b281d696SSong Gao INSN_LSX(vsrli_h,          vv_i)
1187b281d696SSong Gao INSN_LSX(vsrli_w,          vv_i)
1188b281d696SSong Gao INSN_LSX(vsrli_d,          vv_i)
1189b281d696SSong Gao 
1190b281d696SSong Gao INSN_LSX(vsra_b,           vvv)
1191b281d696SSong Gao INSN_LSX(vsra_h,           vvv)
1192b281d696SSong Gao INSN_LSX(vsra_w,           vvv)
1193b281d696SSong Gao INSN_LSX(vsra_d,           vvv)
1194b281d696SSong Gao INSN_LSX(vsrai_b,          vv_i)
1195b281d696SSong Gao INSN_LSX(vsrai_h,          vv_i)
1196b281d696SSong Gao INSN_LSX(vsrai_w,          vv_i)
1197b281d696SSong Gao INSN_LSX(vsrai_d,          vv_i)
1198b281d696SSong Gao 
1199b281d696SSong Gao INSN_LSX(vrotr_b,          vvv)
1200b281d696SSong Gao INSN_LSX(vrotr_h,          vvv)
1201b281d696SSong Gao INSN_LSX(vrotr_w,          vvv)
1202b281d696SSong Gao INSN_LSX(vrotr_d,          vvv)
1203b281d696SSong Gao INSN_LSX(vrotri_b,         vv_i)
1204b281d696SSong Gao INSN_LSX(vrotri_h,         vv_i)
1205b281d696SSong Gao INSN_LSX(vrotri_w,         vv_i)
1206b281d696SSong Gao INSN_LSX(vrotri_d,         vv_i)
12079b21a7a5SSong Gao 
12089b21a7a5SSong Gao INSN_LSX(vsllwil_h_b,      vv_i)
12099b21a7a5SSong Gao INSN_LSX(vsllwil_w_h,      vv_i)
12109b21a7a5SSong Gao INSN_LSX(vsllwil_d_w,      vv_i)
12119b21a7a5SSong Gao INSN_LSX(vextl_q_d,        vv)
12129b21a7a5SSong Gao INSN_LSX(vsllwil_hu_bu,    vv_i)
12139b21a7a5SSong Gao INSN_LSX(vsllwil_wu_hu,    vv_i)
12149b21a7a5SSong Gao INSN_LSX(vsllwil_du_wu,    vv_i)
12159b21a7a5SSong Gao INSN_LSX(vextl_qu_du,      vv)
1216ecb93716SSong Gao 
1217ecb93716SSong Gao INSN_LSX(vsrlr_b,          vvv)
1218ecb93716SSong Gao INSN_LSX(vsrlr_h,          vvv)
1219ecb93716SSong Gao INSN_LSX(vsrlr_w,          vvv)
1220ecb93716SSong Gao INSN_LSX(vsrlr_d,          vvv)
1221ecb93716SSong Gao INSN_LSX(vsrlri_b,         vv_i)
1222ecb93716SSong Gao INSN_LSX(vsrlri_h,         vv_i)
1223ecb93716SSong Gao INSN_LSX(vsrlri_w,         vv_i)
1224ecb93716SSong Gao INSN_LSX(vsrlri_d,         vv_i)
1225ecb93716SSong Gao 
1226ecb93716SSong Gao INSN_LSX(vsrar_b,          vvv)
1227ecb93716SSong Gao INSN_LSX(vsrar_h,          vvv)
1228ecb93716SSong Gao INSN_LSX(vsrar_w,          vvv)
1229ecb93716SSong Gao INSN_LSX(vsrar_d,          vvv)
1230ecb93716SSong Gao INSN_LSX(vsrari_b,         vv_i)
1231ecb93716SSong Gao INSN_LSX(vsrari_h,         vv_i)
1232ecb93716SSong Gao INSN_LSX(vsrari_w,         vv_i)
1233ecb93716SSong Gao INSN_LSX(vsrari_d,         vv_i)
1234d79fb8ddSSong Gao 
1235d79fb8ddSSong Gao INSN_LSX(vsrln_b_h,       vvv)
1236d79fb8ddSSong Gao INSN_LSX(vsrln_h_w,       vvv)
1237d79fb8ddSSong Gao INSN_LSX(vsrln_w_d,       vvv)
1238d79fb8ddSSong Gao INSN_LSX(vsran_b_h,       vvv)
1239d79fb8ddSSong Gao INSN_LSX(vsran_h_w,       vvv)
1240d79fb8ddSSong Gao INSN_LSX(vsran_w_d,       vvv)
1241d79fb8ddSSong Gao 
1242d79fb8ddSSong Gao INSN_LSX(vsrlni_b_h,       vv_i)
1243d79fb8ddSSong Gao INSN_LSX(vsrlni_h_w,       vv_i)
1244d79fb8ddSSong Gao INSN_LSX(vsrlni_w_d,       vv_i)
1245d79fb8ddSSong Gao INSN_LSX(vsrlni_d_q,       vv_i)
1246d79fb8ddSSong Gao INSN_LSX(vsrani_b_h,       vv_i)
1247d79fb8ddSSong Gao INSN_LSX(vsrani_h_w,       vv_i)
1248d79fb8ddSSong Gao INSN_LSX(vsrani_w_d,       vv_i)
1249d79fb8ddSSong Gao INSN_LSX(vsrani_d_q,       vv_i)
1250a5200a17SSong Gao 
1251a5200a17SSong Gao INSN_LSX(vsrlrn_b_h,       vvv)
1252a5200a17SSong Gao INSN_LSX(vsrlrn_h_w,       vvv)
1253a5200a17SSong Gao INSN_LSX(vsrlrn_w_d,       vvv)
1254a5200a17SSong Gao INSN_LSX(vsrarn_b_h,       vvv)
1255a5200a17SSong Gao INSN_LSX(vsrarn_h_w,       vvv)
1256a5200a17SSong Gao INSN_LSX(vsrarn_w_d,       vvv)
1257a5200a17SSong Gao 
1258a5200a17SSong Gao INSN_LSX(vsrlrni_b_h,      vv_i)
1259a5200a17SSong Gao INSN_LSX(vsrlrni_h_w,      vv_i)
1260a5200a17SSong Gao INSN_LSX(vsrlrni_w_d,      vv_i)
1261a5200a17SSong Gao INSN_LSX(vsrlrni_d_q,      vv_i)
1262a5200a17SSong Gao INSN_LSX(vsrarni_b_h,      vv_i)
1263a5200a17SSong Gao INSN_LSX(vsrarni_h_w,      vv_i)
1264a5200a17SSong Gao INSN_LSX(vsrarni_w_d,      vv_i)
1265a5200a17SSong Gao INSN_LSX(vsrarni_d_q,      vv_i)
126683b3815dSSong Gao 
126783b3815dSSong Gao INSN_LSX(vssrln_b_h,       vvv)
126883b3815dSSong Gao INSN_LSX(vssrln_h_w,       vvv)
126983b3815dSSong Gao INSN_LSX(vssrln_w_d,       vvv)
127083b3815dSSong Gao INSN_LSX(vssran_b_h,       vvv)
127183b3815dSSong Gao INSN_LSX(vssran_h_w,       vvv)
127283b3815dSSong Gao INSN_LSX(vssran_w_d,       vvv)
127383b3815dSSong Gao INSN_LSX(vssrln_bu_h,      vvv)
127483b3815dSSong Gao INSN_LSX(vssrln_hu_w,      vvv)
127583b3815dSSong Gao INSN_LSX(vssrln_wu_d,      vvv)
127683b3815dSSong Gao INSN_LSX(vssran_bu_h,      vvv)
127783b3815dSSong Gao INSN_LSX(vssran_hu_w,      vvv)
127883b3815dSSong Gao INSN_LSX(vssran_wu_d,      vvv)
127983b3815dSSong Gao 
128083b3815dSSong Gao INSN_LSX(vssrlni_b_h,      vv_i)
128183b3815dSSong Gao INSN_LSX(vssrlni_h_w,      vv_i)
128283b3815dSSong Gao INSN_LSX(vssrlni_w_d,      vv_i)
128383b3815dSSong Gao INSN_LSX(vssrlni_d_q,      vv_i)
128483b3815dSSong Gao INSN_LSX(vssrani_b_h,      vv_i)
128583b3815dSSong Gao INSN_LSX(vssrani_h_w,      vv_i)
128683b3815dSSong Gao INSN_LSX(vssrani_w_d,      vv_i)
128783b3815dSSong Gao INSN_LSX(vssrani_d_q,      vv_i)
128883b3815dSSong Gao INSN_LSX(vssrlni_bu_h,     vv_i)
128983b3815dSSong Gao INSN_LSX(vssrlni_hu_w,     vv_i)
129083b3815dSSong Gao INSN_LSX(vssrlni_wu_d,     vv_i)
129183b3815dSSong Gao INSN_LSX(vssrlni_du_q,     vv_i)
129283b3815dSSong Gao INSN_LSX(vssrani_bu_h,     vv_i)
129383b3815dSSong Gao INSN_LSX(vssrani_hu_w,     vv_i)
129483b3815dSSong Gao INSN_LSX(vssrani_wu_d,     vv_i)
129583b3815dSSong Gao INSN_LSX(vssrani_du_q,     vv_i)
1296162cd32cSSong Gao 
1297162cd32cSSong Gao INSN_LSX(vssrlrn_b_h,      vvv)
1298162cd32cSSong Gao INSN_LSX(vssrlrn_h_w,      vvv)
1299162cd32cSSong Gao INSN_LSX(vssrlrn_w_d,      vvv)
1300162cd32cSSong Gao INSN_LSX(vssrarn_b_h,      vvv)
1301162cd32cSSong Gao INSN_LSX(vssrarn_h_w,      vvv)
1302162cd32cSSong Gao INSN_LSX(vssrarn_w_d,      vvv)
1303162cd32cSSong Gao INSN_LSX(vssrlrn_bu_h,     vvv)
1304162cd32cSSong Gao INSN_LSX(vssrlrn_hu_w,     vvv)
1305162cd32cSSong Gao INSN_LSX(vssrlrn_wu_d,     vvv)
1306162cd32cSSong Gao INSN_LSX(vssrarn_bu_h,     vvv)
1307162cd32cSSong Gao INSN_LSX(vssrarn_hu_w,     vvv)
1308162cd32cSSong Gao INSN_LSX(vssrarn_wu_d,     vvv)
1309162cd32cSSong Gao 
1310162cd32cSSong Gao INSN_LSX(vssrlrni_b_h,     vv_i)
1311162cd32cSSong Gao INSN_LSX(vssrlrni_h_w,     vv_i)
1312162cd32cSSong Gao INSN_LSX(vssrlrni_w_d,     vv_i)
1313162cd32cSSong Gao INSN_LSX(vssrlrni_d_q,     vv_i)
1314162cd32cSSong Gao INSN_LSX(vssrlrni_bu_h,    vv_i)
1315162cd32cSSong Gao INSN_LSX(vssrlrni_hu_w,    vv_i)
1316162cd32cSSong Gao INSN_LSX(vssrlrni_wu_d,    vv_i)
1317162cd32cSSong Gao INSN_LSX(vssrlrni_du_q,    vv_i)
1318162cd32cSSong Gao INSN_LSX(vssrarni_b_h,     vv_i)
1319162cd32cSSong Gao INSN_LSX(vssrarni_h_w,     vv_i)
1320162cd32cSSong Gao INSN_LSX(vssrarni_w_d,     vv_i)
1321162cd32cSSong Gao INSN_LSX(vssrarni_d_q,     vv_i)
1322162cd32cSSong Gao INSN_LSX(vssrarni_bu_h,    vv_i)
1323162cd32cSSong Gao INSN_LSX(vssrarni_hu_w,    vv_i)
1324162cd32cSSong Gao INSN_LSX(vssrarni_wu_d,    vv_i)
1325162cd32cSSong Gao INSN_LSX(vssrarni_du_q,    vv_i)
13262e105e12SSong Gao 
13272e105e12SSong Gao INSN_LSX(vclo_b,           vv)
13282e105e12SSong Gao INSN_LSX(vclo_h,           vv)
13292e105e12SSong Gao INSN_LSX(vclo_w,           vv)
13302e105e12SSong Gao INSN_LSX(vclo_d,           vv)
13312e105e12SSong Gao INSN_LSX(vclz_b,           vv)
13322e105e12SSong Gao INSN_LSX(vclz_h,           vv)
13332e105e12SSong Gao INSN_LSX(vclz_w,           vv)
13342e105e12SSong Gao INSN_LSX(vclz_d,           vv)
1335bb22ee57SSong Gao 
1336bb22ee57SSong Gao INSN_LSX(vpcnt_b,          vv)
1337bb22ee57SSong Gao INSN_LSX(vpcnt_h,          vv)
1338bb22ee57SSong Gao INSN_LSX(vpcnt_w,          vv)
1339bb22ee57SSong Gao INSN_LSX(vpcnt_d,          vv)
13400b1e6705SSong Gao 
13410b1e6705SSong Gao INSN_LSX(vbitclr_b,        vvv)
13420b1e6705SSong Gao INSN_LSX(vbitclr_h,        vvv)
13430b1e6705SSong Gao INSN_LSX(vbitclr_w,        vvv)
13440b1e6705SSong Gao INSN_LSX(vbitclr_d,        vvv)
13450b1e6705SSong Gao INSN_LSX(vbitclri_b,       vv_i)
13460b1e6705SSong Gao INSN_LSX(vbitclri_h,       vv_i)
13470b1e6705SSong Gao INSN_LSX(vbitclri_w,       vv_i)
13480b1e6705SSong Gao INSN_LSX(vbitclri_d,       vv_i)
13490b1e6705SSong Gao INSN_LSX(vbitset_b,        vvv)
13500b1e6705SSong Gao INSN_LSX(vbitset_h,        vvv)
13510b1e6705SSong Gao INSN_LSX(vbitset_w,        vvv)
13520b1e6705SSong Gao INSN_LSX(vbitset_d,        vvv)
13530b1e6705SSong Gao INSN_LSX(vbitseti_b,       vv_i)
13540b1e6705SSong Gao INSN_LSX(vbitseti_h,       vv_i)
13550b1e6705SSong Gao INSN_LSX(vbitseti_w,       vv_i)
13560b1e6705SSong Gao INSN_LSX(vbitseti_d,       vv_i)
13570b1e6705SSong Gao INSN_LSX(vbitrev_b,        vvv)
13580b1e6705SSong Gao INSN_LSX(vbitrev_h,        vvv)
13590b1e6705SSong Gao INSN_LSX(vbitrev_w,        vvv)
13600b1e6705SSong Gao INSN_LSX(vbitrev_d,        vvv)
13610b1e6705SSong Gao INSN_LSX(vbitrevi_b,       vv_i)
13620b1e6705SSong Gao INSN_LSX(vbitrevi_h,       vv_i)
13630b1e6705SSong Gao INSN_LSX(vbitrevi_w,       vv_i)
13640b1e6705SSong Gao INSN_LSX(vbitrevi_d,       vv_i)
1365ac95a0b9SSong Gao 
1366ac95a0b9SSong Gao INSN_LSX(vfrstp_b,         vvv)
1367ac95a0b9SSong Gao INSN_LSX(vfrstp_h,         vvv)
1368ac95a0b9SSong Gao INSN_LSX(vfrstpi_b,        vv_i)
1369ac95a0b9SSong Gao INSN_LSX(vfrstpi_h,        vv_i)
1370aca67472SSong Gao 
1371aca67472SSong Gao INSN_LSX(vfadd_s,          vvv)
1372aca67472SSong Gao INSN_LSX(vfadd_d,          vvv)
1373aca67472SSong Gao INSN_LSX(vfsub_s,          vvv)
1374aca67472SSong Gao INSN_LSX(vfsub_d,          vvv)
1375aca67472SSong Gao INSN_LSX(vfmul_s,          vvv)
1376aca67472SSong Gao INSN_LSX(vfmul_d,          vvv)
1377aca67472SSong Gao INSN_LSX(vfdiv_s,          vvv)
1378aca67472SSong Gao INSN_LSX(vfdiv_d,          vvv)
1379aca67472SSong Gao 
1380aca67472SSong Gao INSN_LSX(vfmadd_s,         vvvv)
1381aca67472SSong Gao INSN_LSX(vfmadd_d,         vvvv)
1382aca67472SSong Gao INSN_LSX(vfmsub_s,         vvvv)
1383aca67472SSong Gao INSN_LSX(vfmsub_d,         vvvv)
1384aca67472SSong Gao INSN_LSX(vfnmadd_s,        vvvv)
1385aca67472SSong Gao INSN_LSX(vfnmadd_d,        vvvv)
1386aca67472SSong Gao INSN_LSX(vfnmsub_s,        vvvv)
1387aca67472SSong Gao INSN_LSX(vfnmsub_d,        vvvv)
1388aca67472SSong Gao 
1389aca67472SSong Gao INSN_LSX(vfmax_s,          vvv)
1390aca67472SSong Gao INSN_LSX(vfmax_d,          vvv)
1391aca67472SSong Gao INSN_LSX(vfmin_s,          vvv)
1392aca67472SSong Gao INSN_LSX(vfmin_d,          vvv)
1393aca67472SSong Gao 
1394aca67472SSong Gao INSN_LSX(vfmaxa_s,         vvv)
1395aca67472SSong Gao INSN_LSX(vfmaxa_d,         vvv)
1396aca67472SSong Gao INSN_LSX(vfmina_s,         vvv)
1397aca67472SSong Gao INSN_LSX(vfmina_d,         vvv)
1398aca67472SSong Gao 
1399aca67472SSong Gao INSN_LSX(vflogb_s,         vv)
1400aca67472SSong Gao INSN_LSX(vflogb_d,         vv)
1401aca67472SSong Gao 
1402aca67472SSong Gao INSN_LSX(vfclass_s,        vv)
1403aca67472SSong Gao INSN_LSX(vfclass_d,        vv)
1404aca67472SSong Gao 
1405aca67472SSong Gao INSN_LSX(vfsqrt_s,         vv)
1406aca67472SSong Gao INSN_LSX(vfsqrt_d,         vv)
1407aca67472SSong Gao INSN_LSX(vfrecip_s,        vv)
1408aca67472SSong Gao INSN_LSX(vfrecip_d,        vv)
1409aca67472SSong Gao INSN_LSX(vfrsqrt_s,        vv)
1410aca67472SSong Gao INSN_LSX(vfrsqrt_d,        vv)
1411399665d2SSong Gao 
1412399665d2SSong Gao INSN_LSX(vfcvtl_s_h,       vv)
1413399665d2SSong Gao INSN_LSX(vfcvth_s_h,       vv)
1414399665d2SSong Gao INSN_LSX(vfcvtl_d_s,       vv)
1415399665d2SSong Gao INSN_LSX(vfcvth_d_s,       vv)
1416399665d2SSong Gao INSN_LSX(vfcvt_h_s,        vvv)
1417399665d2SSong Gao INSN_LSX(vfcvt_s_d,        vvv)
1418399665d2SSong Gao 
1419399665d2SSong Gao INSN_LSX(vfrint_s,         vv)
1420399665d2SSong Gao INSN_LSX(vfrint_d,         vv)
1421399665d2SSong Gao INSN_LSX(vfrintrm_s,       vv)
1422399665d2SSong Gao INSN_LSX(vfrintrm_d,       vv)
1423399665d2SSong Gao INSN_LSX(vfrintrp_s,       vv)
1424399665d2SSong Gao INSN_LSX(vfrintrp_d,       vv)
1425399665d2SSong Gao INSN_LSX(vfrintrz_s,       vv)
1426399665d2SSong Gao INSN_LSX(vfrintrz_d,       vv)
1427399665d2SSong Gao INSN_LSX(vfrintrne_s,      vv)
1428399665d2SSong Gao INSN_LSX(vfrintrne_d,      vv)
1429399665d2SSong Gao 
1430399665d2SSong Gao INSN_LSX(vftint_w_s,       vv)
1431399665d2SSong Gao INSN_LSX(vftint_l_d,       vv)
1432399665d2SSong Gao INSN_LSX(vftintrm_w_s,     vv)
1433399665d2SSong Gao INSN_LSX(vftintrm_l_d,     vv)
1434399665d2SSong Gao INSN_LSX(vftintrp_w_s,     vv)
1435399665d2SSong Gao INSN_LSX(vftintrp_l_d,     vv)
1436399665d2SSong Gao INSN_LSX(vftintrz_w_s,     vv)
1437399665d2SSong Gao INSN_LSX(vftintrz_l_d,     vv)
1438399665d2SSong Gao INSN_LSX(vftintrne_w_s,    vv)
1439399665d2SSong Gao INSN_LSX(vftintrne_l_d,    vv)
1440399665d2SSong Gao INSN_LSX(vftint_wu_s,      vv)
1441399665d2SSong Gao INSN_LSX(vftint_lu_d,      vv)
1442399665d2SSong Gao INSN_LSX(vftintrz_wu_s,    vv)
1443399665d2SSong Gao INSN_LSX(vftintrz_lu_d,    vv)
1444399665d2SSong Gao INSN_LSX(vftint_w_d,       vvv)
1445399665d2SSong Gao INSN_LSX(vftintrm_w_d,     vvv)
1446399665d2SSong Gao INSN_LSX(vftintrp_w_d,     vvv)
1447399665d2SSong Gao INSN_LSX(vftintrz_w_d,     vvv)
1448399665d2SSong Gao INSN_LSX(vftintrne_w_d,    vvv)
1449399665d2SSong Gao INSN_LSX(vftintl_l_s,      vv)
1450399665d2SSong Gao INSN_LSX(vftinth_l_s,      vv)
1451399665d2SSong Gao INSN_LSX(vftintrml_l_s,    vv)
1452399665d2SSong Gao INSN_LSX(vftintrmh_l_s,    vv)
1453399665d2SSong Gao INSN_LSX(vftintrpl_l_s,    vv)
1454399665d2SSong Gao INSN_LSX(vftintrph_l_s,    vv)
1455399665d2SSong Gao INSN_LSX(vftintrzl_l_s,    vv)
1456399665d2SSong Gao INSN_LSX(vftintrzh_l_s,    vv)
1457399665d2SSong Gao INSN_LSX(vftintrnel_l_s,   vv)
1458399665d2SSong Gao INSN_LSX(vftintrneh_l_s,   vv)
1459399665d2SSong Gao 
1460399665d2SSong Gao INSN_LSX(vffint_s_w,       vv)
1461399665d2SSong Gao INSN_LSX(vffint_s_wu,      vv)
1462399665d2SSong Gao INSN_LSX(vffint_d_l,       vv)
1463399665d2SSong Gao INSN_LSX(vffint_d_lu,      vv)
1464399665d2SSong Gao INSN_LSX(vffintl_d_w,      vv)
1465399665d2SSong Gao INSN_LSX(vffinth_d_w,      vv)
1466399665d2SSong Gao INSN_LSX(vffint_s_l,       vvv)
1467f435e1e5SSong Gao 
1468f435e1e5SSong Gao INSN_LSX(vseq_b,           vvv)
1469f435e1e5SSong Gao INSN_LSX(vseq_h,           vvv)
1470f435e1e5SSong Gao INSN_LSX(vseq_w,           vvv)
1471f435e1e5SSong Gao INSN_LSX(vseq_d,           vvv)
1472f435e1e5SSong Gao INSN_LSX(vseqi_b,          vv_i)
1473f435e1e5SSong Gao INSN_LSX(vseqi_h,          vv_i)
1474f435e1e5SSong Gao INSN_LSX(vseqi_w,          vv_i)
1475f435e1e5SSong Gao INSN_LSX(vseqi_d,          vv_i)
1476f435e1e5SSong Gao 
1477f435e1e5SSong Gao INSN_LSX(vsle_b,           vvv)
1478f435e1e5SSong Gao INSN_LSX(vsle_h,           vvv)
1479f435e1e5SSong Gao INSN_LSX(vsle_w,           vvv)
1480f435e1e5SSong Gao INSN_LSX(vsle_d,           vvv)
1481f435e1e5SSong Gao INSN_LSX(vslei_b,          vv_i)
1482f435e1e5SSong Gao INSN_LSX(vslei_h,          vv_i)
1483f435e1e5SSong Gao INSN_LSX(vslei_w,          vv_i)
1484f435e1e5SSong Gao INSN_LSX(vslei_d,          vv_i)
1485f435e1e5SSong Gao INSN_LSX(vsle_bu,          vvv)
1486f435e1e5SSong Gao INSN_LSX(vsle_hu,          vvv)
1487f435e1e5SSong Gao INSN_LSX(vsle_wu,          vvv)
1488f435e1e5SSong Gao INSN_LSX(vsle_du,          vvv)
1489f435e1e5SSong Gao INSN_LSX(vslei_bu,         vv_i)
1490f435e1e5SSong Gao INSN_LSX(vslei_hu,         vv_i)
1491f435e1e5SSong Gao INSN_LSX(vslei_wu,         vv_i)
1492f435e1e5SSong Gao INSN_LSX(vslei_du,         vv_i)
1493f435e1e5SSong Gao 
1494f435e1e5SSong Gao INSN_LSX(vslt_b,           vvv)
1495f435e1e5SSong Gao INSN_LSX(vslt_h,           vvv)
1496f435e1e5SSong Gao INSN_LSX(vslt_w,           vvv)
1497f435e1e5SSong Gao INSN_LSX(vslt_d,           vvv)
1498f435e1e5SSong Gao INSN_LSX(vslti_b,          vv_i)
1499f435e1e5SSong Gao INSN_LSX(vslti_h,          vv_i)
1500f435e1e5SSong Gao INSN_LSX(vslti_w,          vv_i)
1501f435e1e5SSong Gao INSN_LSX(vslti_d,          vv_i)
1502f435e1e5SSong Gao INSN_LSX(vslt_bu,          vvv)
1503f435e1e5SSong Gao INSN_LSX(vslt_hu,          vvv)
1504f435e1e5SSong Gao INSN_LSX(vslt_wu,          vvv)
1505f435e1e5SSong Gao INSN_LSX(vslt_du,          vvv)
1506f435e1e5SSong Gao INSN_LSX(vslti_bu,         vv_i)
1507f435e1e5SSong Gao INSN_LSX(vslti_hu,         vv_i)
1508f435e1e5SSong Gao INSN_LSX(vslti_wu,         vv_i)
1509f435e1e5SSong Gao INSN_LSX(vslti_du,         vv_i)
1510386c4e86SSong Gao 
1511386c4e86SSong Gao #define output_vfcmp(C, PREFIX, SUFFIX)                                     \
1512386c4e86SSong Gao {                                                                           \
1513386c4e86SSong Gao     (C)->info->fprintf_func((C)->info->stream, "%08x   %s%s\t%d, f%d, f%d", \
1514386c4e86SSong Gao                             (C)->insn, PREFIX, SUFFIX, a->vd,               \
1515386c4e86SSong Gao                             a->vj, a->vk);                                  \
1516386c4e86SSong Gao }
1517386c4e86SSong Gao 
1518386c4e86SSong Gao static bool output_vvv_fcond(DisasContext *ctx, arg_vvv_fcond * a,
1519386c4e86SSong Gao                              const char *suffix)
1520386c4e86SSong Gao {
1521386c4e86SSong Gao     bool ret = true;
1522386c4e86SSong Gao     switch (a->fcond) {
1523386c4e86SSong Gao     case 0x0:
1524386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_caf_", suffix);
1525386c4e86SSong Gao         break;
1526386c4e86SSong Gao     case 0x1:
1527386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_saf_", suffix);
1528386c4e86SSong Gao         break;
1529386c4e86SSong Gao     case 0x2:
1530386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_clt_", suffix);
1531386c4e86SSong Gao         break;
1532386c4e86SSong Gao     case 0x3:
1533386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_slt_", suffix);
1534386c4e86SSong Gao         break;
1535386c4e86SSong Gao     case 0x4:
1536386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_ceq_", suffix);
1537386c4e86SSong Gao         break;
1538386c4e86SSong Gao     case 0x5:
1539386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_seq_", suffix);
1540386c4e86SSong Gao         break;
1541386c4e86SSong Gao     case 0x6:
1542386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_cle_", suffix);
1543386c4e86SSong Gao         break;
1544386c4e86SSong Gao     case 0x7:
1545386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_sle_", suffix);
1546386c4e86SSong Gao         break;
1547386c4e86SSong Gao     case 0x8:
1548386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_cun_", suffix);
1549386c4e86SSong Gao         break;
1550386c4e86SSong Gao     case 0x9:
1551386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_sun_", suffix);
1552386c4e86SSong Gao         break;
1553386c4e86SSong Gao     case 0xA:
1554386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_cult_", suffix);
1555386c4e86SSong Gao         break;
1556386c4e86SSong Gao     case 0xB:
1557386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_sult_", suffix);
1558386c4e86SSong Gao         break;
1559386c4e86SSong Gao     case 0xC:
1560386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_cueq_", suffix);
1561386c4e86SSong Gao         break;
1562386c4e86SSong Gao     case 0xD:
1563386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_sueq_", suffix);
1564386c4e86SSong Gao         break;
1565386c4e86SSong Gao     case 0xE:
1566386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_cule_", suffix);
1567386c4e86SSong Gao         break;
1568386c4e86SSong Gao     case 0xF:
1569386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_sule_", suffix);
1570386c4e86SSong Gao         break;
1571386c4e86SSong Gao     case 0x10:
1572386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_cne_", suffix);
1573386c4e86SSong Gao         break;
1574386c4e86SSong Gao     case 0x11:
1575386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_sne_", suffix);
1576386c4e86SSong Gao         break;
1577386c4e86SSong Gao     case 0x14:
1578386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_cor_", suffix);
1579386c4e86SSong Gao         break;
1580386c4e86SSong Gao     case 0x15:
1581386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_sor_", suffix);
1582386c4e86SSong Gao         break;
1583386c4e86SSong Gao     case 0x18:
1584386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_cune_", suffix);
1585386c4e86SSong Gao         break;
1586386c4e86SSong Gao     case 0x19:
1587386c4e86SSong Gao         output_vfcmp(ctx, "vfcmp_sune_", suffix);
1588386c4e86SSong Gao         break;
1589386c4e86SSong Gao     default:
1590386c4e86SSong Gao         ret = false;
1591386c4e86SSong Gao     }
1592386c4e86SSong Gao     return ret;
1593386c4e86SSong Gao }
1594386c4e86SSong Gao 
1595386c4e86SSong Gao #define LSX_FCMP_INSN(suffix)                            \
1596386c4e86SSong Gao static bool trans_vfcmp_cond_##suffix(DisasContext *ctx, \
1597386c4e86SSong Gao                                      arg_vvv_fcond * a)  \
1598386c4e86SSong Gao {                                                        \
1599386c4e86SSong Gao     return output_vvv_fcond(ctx, a, #suffix);            \
1600386c4e86SSong Gao }
1601386c4e86SSong Gao 
1602386c4e86SSong Gao LSX_FCMP_INSN(s)
LSX_FCMP_INSN(d)1603386c4e86SSong Gao LSX_FCMP_INSN(d)
1604d0dfa19aSSong Gao 
1605d0dfa19aSSong Gao INSN_LSX(vbitsel_v,        vvvv)
1606d0dfa19aSSong Gao INSN_LSX(vbitseli_b,       vv_i)
1607d0dfa19aSSong Gao 
1608d0dfa19aSSong Gao INSN_LSX(vseteqz_v,        cv)
1609d0dfa19aSSong Gao INSN_LSX(vsetnez_v,        cv)
1610d0dfa19aSSong Gao INSN_LSX(vsetanyeqz_b,     cv)
1611d0dfa19aSSong Gao INSN_LSX(vsetanyeqz_h,     cv)
1612d0dfa19aSSong Gao INSN_LSX(vsetanyeqz_w,     cv)
1613d0dfa19aSSong Gao INSN_LSX(vsetanyeqz_d,     cv)
1614d0dfa19aSSong Gao INSN_LSX(vsetallnez_b,     cv)
1615d0dfa19aSSong Gao INSN_LSX(vsetallnez_h,     cv)
1616d0dfa19aSSong Gao INSN_LSX(vsetallnez_w,     cv)
1617d0dfa19aSSong Gao INSN_LSX(vsetallnez_d,     cv)
1618cdbdefbfSSong Gao 
1619cdbdefbfSSong Gao INSN_LSX(vinsgr2vr_b,      vr_i)
1620cdbdefbfSSong Gao INSN_LSX(vinsgr2vr_h,      vr_i)
1621cdbdefbfSSong Gao INSN_LSX(vinsgr2vr_w,      vr_i)
1622cdbdefbfSSong Gao INSN_LSX(vinsgr2vr_d,      vr_i)
1623cdbdefbfSSong Gao INSN_LSX(vpickve2gr_b,     rv_i)
1624cdbdefbfSSong Gao INSN_LSX(vpickve2gr_h,     rv_i)
1625cdbdefbfSSong Gao INSN_LSX(vpickve2gr_w,     rv_i)
1626cdbdefbfSSong Gao INSN_LSX(vpickve2gr_d,     rv_i)
1627cdbdefbfSSong Gao INSN_LSX(vpickve2gr_bu,    rv_i)
1628cdbdefbfSSong Gao INSN_LSX(vpickve2gr_hu,    rv_i)
1629cdbdefbfSSong Gao INSN_LSX(vpickve2gr_wu,    rv_i)
1630cdbdefbfSSong Gao INSN_LSX(vpickve2gr_du,    rv_i)
1631cdbdefbfSSong Gao 
1632cdbdefbfSSong Gao INSN_LSX(vreplgr2vr_b,     vr)
1633cdbdefbfSSong Gao INSN_LSX(vreplgr2vr_h,     vr)
1634cdbdefbfSSong Gao INSN_LSX(vreplgr2vr_w,     vr)
1635cdbdefbfSSong Gao INSN_LSX(vreplgr2vr_d,     vr)
1636d5e5563cSSong Gao 
1637d5e5563cSSong Gao INSN_LSX(vreplve_b,        vvr)
1638d5e5563cSSong Gao INSN_LSX(vreplve_h,        vvr)
1639d5e5563cSSong Gao INSN_LSX(vreplve_w,        vvr)
1640d5e5563cSSong Gao INSN_LSX(vreplve_d,        vvr)
1641d5e5563cSSong Gao INSN_LSX(vreplvei_b,       vv_i)
1642d5e5563cSSong Gao INSN_LSX(vreplvei_h,       vv_i)
1643d5e5563cSSong Gao INSN_LSX(vreplvei_w,       vv_i)
1644d5e5563cSSong Gao INSN_LSX(vreplvei_d,       vv_i)
1645d5e5563cSSong Gao 
1646d5e5563cSSong Gao INSN_LSX(vbsll_v,          vv_i)
1647d5e5563cSSong Gao INSN_LSX(vbsrl_v,          vv_i)
1648d5e5563cSSong Gao 
1649d5e5563cSSong Gao INSN_LSX(vpackev_b,        vvv)
1650d5e5563cSSong Gao INSN_LSX(vpackev_h,        vvv)
1651d5e5563cSSong Gao INSN_LSX(vpackev_w,        vvv)
1652d5e5563cSSong Gao INSN_LSX(vpackev_d,        vvv)
1653d5e5563cSSong Gao INSN_LSX(vpackod_b,        vvv)
1654d5e5563cSSong Gao INSN_LSX(vpackod_h,        vvv)
1655d5e5563cSSong Gao INSN_LSX(vpackod_w,        vvv)
1656d5e5563cSSong Gao INSN_LSX(vpackod_d,        vvv)
1657d5e5563cSSong Gao 
1658d5e5563cSSong Gao INSN_LSX(vpickev_b,        vvv)
1659d5e5563cSSong Gao INSN_LSX(vpickev_h,        vvv)
1660d5e5563cSSong Gao INSN_LSX(vpickev_w,        vvv)
1661d5e5563cSSong Gao INSN_LSX(vpickev_d,        vvv)
1662d5e5563cSSong Gao INSN_LSX(vpickod_b,        vvv)
1663d5e5563cSSong Gao INSN_LSX(vpickod_h,        vvv)
1664d5e5563cSSong Gao INSN_LSX(vpickod_w,        vvv)
1665d5e5563cSSong Gao INSN_LSX(vpickod_d,        vvv)
1666e93dd431SSong Gao 
1667e93dd431SSong Gao INSN_LSX(vilvl_b,          vvv)
1668e93dd431SSong Gao INSN_LSX(vilvl_h,          vvv)
1669e93dd431SSong Gao INSN_LSX(vilvl_w,          vvv)
1670e93dd431SSong Gao INSN_LSX(vilvl_d,          vvv)
1671e93dd431SSong Gao INSN_LSX(vilvh_b,          vvv)
1672e93dd431SSong Gao INSN_LSX(vilvh_h,          vvv)
1673e93dd431SSong Gao INSN_LSX(vilvh_w,          vvv)
1674e93dd431SSong Gao INSN_LSX(vilvh_d,          vvv)
1675e93dd431SSong Gao 
1676e93dd431SSong Gao INSN_LSX(vshuf_b,          vvvv)
1677e93dd431SSong Gao INSN_LSX(vshuf_h,          vvv)
1678e93dd431SSong Gao INSN_LSX(vshuf_w,          vvv)
1679e93dd431SSong Gao INSN_LSX(vshuf_d,          vvv)
1680e93dd431SSong Gao INSN_LSX(vshuf4i_b,        vv_i)
1681e93dd431SSong Gao INSN_LSX(vshuf4i_h,        vv_i)
1682e93dd431SSong Gao INSN_LSX(vshuf4i_w,        vv_i)
1683e93dd431SSong Gao INSN_LSX(vshuf4i_d,        vv_i)
1684e93dd431SSong Gao 
1685e93dd431SSong Gao INSN_LSX(vpermi_w,         vv_i)
1686e93dd431SSong Gao 
1687e93dd431SSong Gao INSN_LSX(vextrins_d,       vv_i)
1688e93dd431SSong Gao INSN_LSX(vextrins_w,       vv_i)
1689e93dd431SSong Gao INSN_LSX(vextrins_h,       vv_i)
1690e93dd431SSong Gao INSN_LSX(vextrins_b,       vv_i)
1691843b627aSSong Gao 
1692843b627aSSong Gao INSN_LSX(vld,              vr_i)
1693843b627aSSong Gao INSN_LSX(vst,              vr_i)
1694843b627aSSong Gao INSN_LSX(vldx,             vrr)
1695843b627aSSong Gao INSN_LSX(vstx,             vrr)
1696843b627aSSong Gao 
1697843b627aSSong Gao INSN_LSX(vldrepl_d,        vr_i)
1698843b627aSSong Gao INSN_LSX(vldrepl_w,        vr_i)
1699843b627aSSong Gao INSN_LSX(vldrepl_h,        vr_i)
1700843b627aSSong Gao INSN_LSX(vldrepl_b,        vr_i)
1701843b627aSSong Gao INSN_LSX(vstelm_d,         vr_ii)
1702843b627aSSong Gao INSN_LSX(vstelm_w,         vr_ii)
1703843b627aSSong Gao INSN_LSX(vstelm_h,         vr_ii)
1704843b627aSSong Gao INSN_LSX(vstelm_b,         vr_ii)
1705269ca39aSSong Gao 
1706269ca39aSSong Gao #define INSN_LASX(insn, type)                               \
1707269ca39aSSong Gao static bool trans_##insn(DisasContext *ctx, arg_##type * a) \
1708269ca39aSSong Gao {                                                           \
1709269ca39aSSong Gao     output_##type ## _x(ctx, a, #insn);                     \
1710269ca39aSSong Gao     return true;                                            \
1711269ca39aSSong Gao }
1712269ca39aSSong Gao 
1713f3dfcc8bSSong Gao static void output_cv_x(DisasContext *ctx, arg_cv *a, const char *mnemonic)
1714f3dfcc8bSSong Gao {
1715f3dfcc8bSSong Gao     output(ctx, mnemonic, "fcc%d, x%d", a->cd, a->vj);
1716f3dfcc8bSSong Gao }
1717f3dfcc8bSSong Gao 
output_v_i_x(DisasContext * ctx,arg_v_i * a,const char * mnemonic)1718a59098e3SSong Gao static void output_v_i_x(DisasContext *ctx, arg_v_i *a, const char *mnemonic)
1719a59098e3SSong Gao {
1720a59098e3SSong Gao     output(ctx, mnemonic, "x%d, 0x%x", a->vd, a->imm);
1721a59098e3SSong Gao }
1722a59098e3SSong Gao 
output_vvvv_x(DisasContext * ctx,arg_vvvv * a,const char * mnemonic)1723c9caf158SSong Gao static void output_vvvv_x(DisasContext *ctx, arg_vvvv *a, const char *mnemonic)
1724c9caf158SSong Gao {
1725c9caf158SSong Gao     output(ctx, mnemonic, "x%d, x%d, x%d, x%d", a->vd, a->vj, a->vk, a->va);
1726c9caf158SSong Gao }
1727c9caf158SSong Gao 
output_vvv_x(DisasContext * ctx,arg_vvv * a,const char * mnemonic)1728269ca39aSSong Gao static void output_vvv_x(DisasContext *ctx, arg_vvv * a, const char *mnemonic)
1729269ca39aSSong Gao {
1730269ca39aSSong Gao     output(ctx, mnemonic, "x%d, x%d, x%d", a->vd, a->vj, a->vk);
1731269ca39aSSong Gao }
1732269ca39aSSong Gao 
output_vr_x(DisasContext * ctx,arg_vr * a,const char * mnemonic)173373123406SSong Gao static void output_vr_x(DisasContext *ctx, arg_vr *a, const char *mnemonic)
173473123406SSong Gao {
173573123406SSong Gao     output(ctx, mnemonic, "x%d, r%d", a->vd, a->rj);
173673123406SSong Gao }
173773123406SSong Gao 
output_vv_i_x(DisasContext * ctx,arg_vv_i * a,const char * mnemonic)173834200421SSong Gao static void output_vv_i_x(DisasContext *ctx, arg_vv_i *a, const char *mnemonic)
173934200421SSong Gao {
174034200421SSong Gao     output(ctx, mnemonic, "x%d, x%d, 0x%x", a->vd, a->vj, a->imm);
174134200421SSong Gao }
174234200421SSong Gao 
output_vv_x(DisasContext * ctx,arg_vv * a,const char * mnemonic)1743760f9647SSong Gao static void output_vv_x(DisasContext *ctx, arg_vv *a, const char *mnemonic)
1744760f9647SSong Gao {
1745760f9647SSong Gao     output(ctx, mnemonic, "x%d, x%d", a->vd, a->vj);
1746760f9647SSong Gao }
1747760f9647SSong Gao 
output_vr_i_x(DisasContext * ctx,arg_vr_i * a,const char * mnemonic)1748f5ce2c8fSSong Gao static void output_vr_i_x(DisasContext *ctx, arg_vr_i *a, const char *mnemonic)
1749f5ce2c8fSSong Gao {
1750f5ce2c8fSSong Gao     output(ctx, mnemonic, "x%d, r%d, 0x%x", a->vd, a->rj, a->imm);
1751f5ce2c8fSSong Gao }
1752f5ce2c8fSSong Gao 
output_rv_i_x(DisasContext * ctx,arg_rv_i * a,const char * mnemonic)1753f5ce2c8fSSong Gao static void output_rv_i_x(DisasContext *ctx, arg_rv_i *a, const char *mnemonic)
1754f5ce2c8fSSong Gao {
1755f5ce2c8fSSong Gao     output(ctx, mnemonic, "r%d, x%d, 0x%x", a->rd, a->vj, a->imm);
1756f5ce2c8fSSong Gao }
1757f5ce2c8fSSong Gao 
output_vvr_x(DisasContext * ctx,arg_vvr * a,const char * mnemonic)1758df97f338SSong Gao static void output_vvr_x(DisasContext *ctx, arg_vvr *a, const char *mnemonic)
1759df97f338SSong Gao {
1760df97f338SSong Gao     output(ctx, mnemonic, "x%d, x%d, r%d", a->vd, a->vj, a->rk);
1761df97f338SSong Gao }
1762df97f338SSong Gao 
output_vrr_x(DisasContext * ctx,arg_vrr * a,const char * mnemonic)17634a26512fSSong Gao static void output_vrr_x(DisasContext *ctx, arg_vrr *a, const char *mnemonic)
17644a26512fSSong Gao {
17654a26512fSSong Gao     output(ctx, mnemonic, "x%d, r%d, r%d", a->vd, a->rj, a->rk);
17664a26512fSSong Gao }
17674a26512fSSong Gao 
output_vr_ii_x(DisasContext * ctx,arg_vr_ii * a,const char * mnemonic)17684a26512fSSong Gao static void output_vr_ii_x(DisasContext *ctx, arg_vr_ii *a, const char *mnemonic)
17694a26512fSSong Gao {
17704a26512fSSong Gao     output(ctx, mnemonic, "x%d, r%d, 0x%x, 0x%x", a->vd, a->rj, a->imm, a->imm2);
17714a26512fSSong Gao }
17724a26512fSSong Gao 
INSN_LASX(xvadd_b,vvv)1773269ca39aSSong Gao INSN_LASX(xvadd_b,           vvv)
1774269ca39aSSong Gao INSN_LASX(xvadd_h,           vvv)
1775269ca39aSSong Gao INSN_LASX(xvadd_w,           vvv)
1776269ca39aSSong Gao INSN_LASX(xvadd_d,           vvv)
1777269ca39aSSong Gao INSN_LASX(xvadd_q,           vvv)
1778269ca39aSSong Gao INSN_LASX(xvsub_b,           vvv)
1779269ca39aSSong Gao INSN_LASX(xvsub_h,           vvv)
1780269ca39aSSong Gao INSN_LASX(xvsub_w,           vvv)
1781269ca39aSSong Gao INSN_LASX(xvsub_d,           vvv)
1782269ca39aSSong Gao INSN_LASX(xvsub_q,           vvv)
178373123406SSong Gao 
178434200421SSong Gao INSN_LASX(xvaddi_bu,         vv_i)
178534200421SSong Gao INSN_LASX(xvaddi_hu,         vv_i)
178634200421SSong Gao INSN_LASX(xvaddi_wu,         vv_i)
178734200421SSong Gao INSN_LASX(xvaddi_du,         vv_i)
178834200421SSong Gao INSN_LASX(xvsubi_bu,         vv_i)
178934200421SSong Gao INSN_LASX(xvsubi_hu,         vv_i)
179034200421SSong Gao INSN_LASX(xvsubi_wu,         vv_i)
179134200421SSong Gao INSN_LASX(xvsubi_du,         vv_i)
179234200421SSong Gao 
1793760f9647SSong Gao INSN_LASX(xvneg_b,           vv)
1794760f9647SSong Gao INSN_LASX(xvneg_h,           vv)
1795760f9647SSong Gao INSN_LASX(xvneg_w,           vv)
1796760f9647SSong Gao INSN_LASX(xvneg_d,           vv)
1797760f9647SSong Gao 
1798d2df46d9SSong Gao INSN_LASX(xvsadd_b,          vvv)
1799d2df46d9SSong Gao INSN_LASX(xvsadd_h,          vvv)
1800d2df46d9SSong Gao INSN_LASX(xvsadd_w,          vvv)
1801d2df46d9SSong Gao INSN_LASX(xvsadd_d,          vvv)
1802d2df46d9SSong Gao INSN_LASX(xvsadd_bu,         vvv)
1803d2df46d9SSong Gao INSN_LASX(xvsadd_hu,         vvv)
1804d2df46d9SSong Gao INSN_LASX(xvsadd_wu,         vvv)
1805d2df46d9SSong Gao INSN_LASX(xvsadd_du,         vvv)
1806d2df46d9SSong Gao INSN_LASX(xvssub_b,          vvv)
1807d2df46d9SSong Gao INSN_LASX(xvssub_h,          vvv)
1808d2df46d9SSong Gao INSN_LASX(xvssub_w,          vvv)
1809d2df46d9SSong Gao INSN_LASX(xvssub_d,          vvv)
1810d2df46d9SSong Gao INSN_LASX(xvssub_bu,         vvv)
1811d2df46d9SSong Gao INSN_LASX(xvssub_hu,         vvv)
1812d2df46d9SSong Gao INSN_LASX(xvssub_wu,         vvv)
1813d2df46d9SSong Gao INSN_LASX(xvssub_du,         vvv)
1814d2df46d9SSong Gao 
181564cf6b99SSong Gao INSN_LASX(xvhaddw_h_b,       vvv)
181664cf6b99SSong Gao INSN_LASX(xvhaddw_w_h,       vvv)
181764cf6b99SSong Gao INSN_LASX(xvhaddw_d_w,       vvv)
181864cf6b99SSong Gao INSN_LASX(xvhaddw_q_d,       vvv)
181964cf6b99SSong Gao INSN_LASX(xvhaddw_hu_bu,     vvv)
182064cf6b99SSong Gao INSN_LASX(xvhaddw_wu_hu,     vvv)
182164cf6b99SSong Gao INSN_LASX(xvhaddw_du_wu,     vvv)
182264cf6b99SSong Gao INSN_LASX(xvhaddw_qu_du,     vvv)
182364cf6b99SSong Gao INSN_LASX(xvhsubw_h_b,       vvv)
182464cf6b99SSong Gao INSN_LASX(xvhsubw_w_h,       vvv)
182564cf6b99SSong Gao INSN_LASX(xvhsubw_d_w,       vvv)
182664cf6b99SSong Gao INSN_LASX(xvhsubw_q_d,       vvv)
182764cf6b99SSong Gao INSN_LASX(xvhsubw_hu_bu,     vvv)
182864cf6b99SSong Gao INSN_LASX(xvhsubw_wu_hu,     vvv)
182964cf6b99SSong Gao INSN_LASX(xvhsubw_du_wu,     vvv)
183064cf6b99SSong Gao INSN_LASX(xvhsubw_qu_du,     vvv)
183164cf6b99SSong Gao 
183285995f07SSong Gao INSN_LASX(xvaddwev_h_b,      vvv)
183385995f07SSong Gao INSN_LASX(xvaddwev_w_h,      vvv)
183485995f07SSong Gao INSN_LASX(xvaddwev_d_w,      vvv)
183585995f07SSong Gao INSN_LASX(xvaddwev_q_d,      vvv)
183685995f07SSong Gao INSN_LASX(xvaddwod_h_b,      vvv)
183785995f07SSong Gao INSN_LASX(xvaddwod_w_h,      vvv)
183885995f07SSong Gao INSN_LASX(xvaddwod_d_w,      vvv)
183985995f07SSong Gao INSN_LASX(xvaddwod_q_d,      vvv)
184085995f07SSong Gao INSN_LASX(xvsubwev_h_b,      vvv)
184185995f07SSong Gao INSN_LASX(xvsubwev_w_h,      vvv)
184285995f07SSong Gao INSN_LASX(xvsubwev_d_w,      vvv)
184385995f07SSong Gao INSN_LASX(xvsubwev_q_d,      vvv)
184485995f07SSong Gao INSN_LASX(xvsubwod_h_b,      vvv)
184585995f07SSong Gao INSN_LASX(xvsubwod_w_h,      vvv)
184685995f07SSong Gao INSN_LASX(xvsubwod_d_w,      vvv)
184785995f07SSong Gao INSN_LASX(xvsubwod_q_d,      vvv)
184885995f07SSong Gao 
184985995f07SSong Gao INSN_LASX(xvaddwev_h_bu,     vvv)
185085995f07SSong Gao INSN_LASX(xvaddwev_w_hu,     vvv)
185185995f07SSong Gao INSN_LASX(xvaddwev_d_wu,     vvv)
185285995f07SSong Gao INSN_LASX(xvaddwev_q_du,     vvv)
185385995f07SSong Gao INSN_LASX(xvaddwod_h_bu,     vvv)
185485995f07SSong Gao INSN_LASX(xvaddwod_w_hu,     vvv)
185585995f07SSong Gao INSN_LASX(xvaddwod_d_wu,     vvv)
185685995f07SSong Gao INSN_LASX(xvaddwod_q_du,     vvv)
185785995f07SSong Gao INSN_LASX(xvsubwev_h_bu,     vvv)
185885995f07SSong Gao INSN_LASX(xvsubwev_w_hu,     vvv)
185985995f07SSong Gao INSN_LASX(xvsubwev_d_wu,     vvv)
186085995f07SSong Gao INSN_LASX(xvsubwev_q_du,     vvv)
186185995f07SSong Gao INSN_LASX(xvsubwod_h_bu,     vvv)
186285995f07SSong Gao INSN_LASX(xvsubwod_w_hu,     vvv)
186385995f07SSong Gao INSN_LASX(xvsubwod_d_wu,     vvv)
186485995f07SSong Gao INSN_LASX(xvsubwod_q_du,     vvv)
186585995f07SSong Gao 
186685995f07SSong Gao INSN_LASX(xvaddwev_h_bu_b,   vvv)
186785995f07SSong Gao INSN_LASX(xvaddwev_w_hu_h,   vvv)
186885995f07SSong Gao INSN_LASX(xvaddwev_d_wu_w,   vvv)
186985995f07SSong Gao INSN_LASX(xvaddwev_q_du_d,   vvv)
187085995f07SSong Gao INSN_LASX(xvaddwod_h_bu_b,   vvv)
187185995f07SSong Gao INSN_LASX(xvaddwod_w_hu_h,   vvv)
187285995f07SSong Gao INSN_LASX(xvaddwod_d_wu_w,   vvv)
187385995f07SSong Gao INSN_LASX(xvaddwod_q_du_d,   vvv)
187485995f07SSong Gao 
1875ee7250d0SSong Gao INSN_LASX(xvavg_b,           vvv)
1876ee7250d0SSong Gao INSN_LASX(xvavg_h,           vvv)
1877ee7250d0SSong Gao INSN_LASX(xvavg_w,           vvv)
1878ee7250d0SSong Gao INSN_LASX(xvavg_d,           vvv)
1879ee7250d0SSong Gao INSN_LASX(xvavg_bu,          vvv)
1880ee7250d0SSong Gao INSN_LASX(xvavg_hu,          vvv)
1881ee7250d0SSong Gao INSN_LASX(xvavg_wu,          vvv)
1882ee7250d0SSong Gao INSN_LASX(xvavg_du,          vvv)
1883ee7250d0SSong Gao INSN_LASX(xvavgr_b,          vvv)
1884ee7250d0SSong Gao INSN_LASX(xvavgr_h,          vvv)
1885ee7250d0SSong Gao INSN_LASX(xvavgr_w,          vvv)
1886ee7250d0SSong Gao INSN_LASX(xvavgr_d,          vvv)
1887ee7250d0SSong Gao INSN_LASX(xvavgr_bu,         vvv)
1888ee7250d0SSong Gao INSN_LASX(xvavgr_hu,         vvv)
1889ee7250d0SSong Gao INSN_LASX(xvavgr_wu,         vvv)
1890ee7250d0SSong Gao INSN_LASX(xvavgr_du,         vvv)
1891ee7250d0SSong Gao 
1892ccc9fa26SSong Gao INSN_LASX(xvabsd_b,          vvv)
1893ccc9fa26SSong Gao INSN_LASX(xvabsd_h,          vvv)
1894ccc9fa26SSong Gao INSN_LASX(xvabsd_w,          vvv)
1895ccc9fa26SSong Gao INSN_LASX(xvabsd_d,          vvv)
1896ccc9fa26SSong Gao INSN_LASX(xvabsd_bu,         vvv)
1897ccc9fa26SSong Gao INSN_LASX(xvabsd_hu,         vvv)
1898ccc9fa26SSong Gao INSN_LASX(xvabsd_wu,         vvv)
1899ccc9fa26SSong Gao INSN_LASX(xvabsd_du,         vvv)
1900ccc9fa26SSong Gao 
190127f5485dSSong Gao INSN_LASX(xvadda_b,          vvv)
190227f5485dSSong Gao INSN_LASX(xvadda_h,          vvv)
190327f5485dSSong Gao INSN_LASX(xvadda_w,          vvv)
190427f5485dSSong Gao INSN_LASX(xvadda_d,          vvv)
190527f5485dSSong Gao 
1906c09360faSSong Gao INSN_LASX(xvmax_b,           vvv)
1907c09360faSSong Gao INSN_LASX(xvmax_h,           vvv)
1908c09360faSSong Gao INSN_LASX(xvmax_w,           vvv)
1909c09360faSSong Gao INSN_LASX(xvmax_d,           vvv)
1910c09360faSSong Gao INSN_LASX(xvmin_b,           vvv)
1911c09360faSSong Gao INSN_LASX(xvmin_h,           vvv)
1912c09360faSSong Gao INSN_LASX(xvmin_w,           vvv)
1913c09360faSSong Gao INSN_LASX(xvmin_d,           vvv)
1914c09360faSSong Gao INSN_LASX(xvmax_bu,          vvv)
1915c09360faSSong Gao INSN_LASX(xvmax_hu,          vvv)
1916c09360faSSong Gao INSN_LASX(xvmax_wu,          vvv)
1917c09360faSSong Gao INSN_LASX(xvmax_du,          vvv)
1918c09360faSSong Gao INSN_LASX(xvmin_bu,          vvv)
1919c09360faSSong Gao INSN_LASX(xvmin_hu,          vvv)
1920c09360faSSong Gao INSN_LASX(xvmin_wu,          vvv)
1921c09360faSSong Gao INSN_LASX(xvmin_du,          vvv)
1922c09360faSSong Gao 
1923c09360faSSong Gao INSN_LASX(xvmaxi_b,          vv_i)
1924c09360faSSong Gao INSN_LASX(xvmaxi_h,          vv_i)
1925c09360faSSong Gao INSN_LASX(xvmaxi_w,          vv_i)
1926c09360faSSong Gao INSN_LASX(xvmaxi_d,          vv_i)
1927c09360faSSong Gao INSN_LASX(xvmini_b,          vv_i)
1928c09360faSSong Gao INSN_LASX(xvmini_h,          vv_i)
1929c09360faSSong Gao INSN_LASX(xvmini_w,          vv_i)
1930c09360faSSong Gao INSN_LASX(xvmini_d,          vv_i)
1931c09360faSSong Gao INSN_LASX(xvmaxi_bu,         vv_i)
1932c09360faSSong Gao INSN_LASX(xvmaxi_hu,         vv_i)
1933c09360faSSong Gao INSN_LASX(xvmaxi_wu,         vv_i)
1934c09360faSSong Gao INSN_LASX(xvmaxi_du,         vv_i)
1935c09360faSSong Gao INSN_LASX(xvmini_bu,         vv_i)
1936c09360faSSong Gao INSN_LASX(xvmini_hu,         vv_i)
1937c09360faSSong Gao INSN_LASX(xvmini_wu,         vv_i)
1938c09360faSSong Gao INSN_LASX(xvmini_du,         vv_i)
1939c09360faSSong Gao 
1940342dc1cfSSong Gao INSN_LASX(xvmul_b,           vvv)
1941342dc1cfSSong Gao INSN_LASX(xvmul_h,           vvv)
1942342dc1cfSSong Gao INSN_LASX(xvmul_w,           vvv)
1943342dc1cfSSong Gao INSN_LASX(xvmul_d,           vvv)
1944342dc1cfSSong Gao INSN_LASX(xvmuh_b,           vvv)
1945342dc1cfSSong Gao INSN_LASX(xvmuh_h,           vvv)
1946342dc1cfSSong Gao INSN_LASX(xvmuh_w,           vvv)
1947342dc1cfSSong Gao INSN_LASX(xvmuh_d,           vvv)
1948342dc1cfSSong Gao INSN_LASX(xvmuh_bu,          vvv)
1949342dc1cfSSong Gao INSN_LASX(xvmuh_hu,          vvv)
1950342dc1cfSSong Gao INSN_LASX(xvmuh_wu,          vvv)
1951342dc1cfSSong Gao INSN_LASX(xvmuh_du,          vvv)
1952342dc1cfSSong Gao 
1953342dc1cfSSong Gao INSN_LASX(xvmulwev_h_b,      vvv)
1954342dc1cfSSong Gao INSN_LASX(xvmulwev_w_h,      vvv)
1955342dc1cfSSong Gao INSN_LASX(xvmulwev_d_w,      vvv)
1956342dc1cfSSong Gao INSN_LASX(xvmulwev_q_d,      vvv)
1957342dc1cfSSong Gao INSN_LASX(xvmulwod_h_b,      vvv)
1958342dc1cfSSong Gao INSN_LASX(xvmulwod_w_h,      vvv)
1959342dc1cfSSong Gao INSN_LASX(xvmulwod_d_w,      vvv)
1960342dc1cfSSong Gao INSN_LASX(xvmulwod_q_d,      vvv)
1961342dc1cfSSong Gao INSN_LASX(xvmulwev_h_bu,     vvv)
1962342dc1cfSSong Gao INSN_LASX(xvmulwev_w_hu,     vvv)
1963342dc1cfSSong Gao INSN_LASX(xvmulwev_d_wu,     vvv)
1964342dc1cfSSong Gao INSN_LASX(xvmulwev_q_du,     vvv)
1965342dc1cfSSong Gao INSN_LASX(xvmulwod_h_bu,     vvv)
1966342dc1cfSSong Gao INSN_LASX(xvmulwod_w_hu,     vvv)
1967342dc1cfSSong Gao INSN_LASX(xvmulwod_d_wu,     vvv)
1968342dc1cfSSong Gao INSN_LASX(xvmulwod_q_du,     vvv)
1969342dc1cfSSong Gao INSN_LASX(xvmulwev_h_bu_b,   vvv)
1970342dc1cfSSong Gao INSN_LASX(xvmulwev_w_hu_h,   vvv)
1971342dc1cfSSong Gao INSN_LASX(xvmulwev_d_wu_w,   vvv)
1972342dc1cfSSong Gao INSN_LASX(xvmulwev_q_du_d,   vvv)
1973342dc1cfSSong Gao INSN_LASX(xvmulwod_h_bu_b,   vvv)
1974342dc1cfSSong Gao INSN_LASX(xvmulwod_w_hu_h,   vvv)
1975342dc1cfSSong Gao INSN_LASX(xvmulwod_d_wu_w,   vvv)
1976342dc1cfSSong Gao INSN_LASX(xvmulwod_q_du_d,   vvv)
1977342dc1cfSSong Gao 
19783f450c17SSong Gao INSN_LASX(xvmadd_b,          vvv)
19793f450c17SSong Gao INSN_LASX(xvmadd_h,          vvv)
19803f450c17SSong Gao INSN_LASX(xvmadd_w,          vvv)
19813f450c17SSong Gao INSN_LASX(xvmadd_d,          vvv)
19823f450c17SSong Gao INSN_LASX(xvmsub_b,          vvv)
19833f450c17SSong Gao INSN_LASX(xvmsub_h,          vvv)
19843f450c17SSong Gao INSN_LASX(xvmsub_w,          vvv)
19853f450c17SSong Gao INSN_LASX(xvmsub_d,          vvv)
19863f450c17SSong Gao 
19873f450c17SSong Gao INSN_LASX(xvmaddwev_h_b,     vvv)
19883f450c17SSong Gao INSN_LASX(xvmaddwev_w_h,     vvv)
19893f450c17SSong Gao INSN_LASX(xvmaddwev_d_w,     vvv)
19903f450c17SSong Gao INSN_LASX(xvmaddwev_q_d,     vvv)
19913f450c17SSong Gao INSN_LASX(xvmaddwod_h_b,     vvv)
19923f450c17SSong Gao INSN_LASX(xvmaddwod_w_h,     vvv)
19933f450c17SSong Gao INSN_LASX(xvmaddwod_d_w,     vvv)
19943f450c17SSong Gao INSN_LASX(xvmaddwod_q_d,     vvv)
19953f450c17SSong Gao INSN_LASX(xvmaddwev_h_bu,    vvv)
19963f450c17SSong Gao INSN_LASX(xvmaddwev_w_hu,    vvv)
19973f450c17SSong Gao INSN_LASX(xvmaddwev_d_wu,    vvv)
19983f450c17SSong Gao INSN_LASX(xvmaddwev_q_du,    vvv)
19993f450c17SSong Gao INSN_LASX(xvmaddwod_h_bu,    vvv)
20003f450c17SSong Gao INSN_LASX(xvmaddwod_w_hu,    vvv)
20013f450c17SSong Gao INSN_LASX(xvmaddwod_d_wu,    vvv)
20023f450c17SSong Gao INSN_LASX(xvmaddwod_q_du,    vvv)
20033f450c17SSong Gao INSN_LASX(xvmaddwev_h_bu_b,  vvv)
20043f450c17SSong Gao INSN_LASX(xvmaddwev_w_hu_h,  vvv)
20053f450c17SSong Gao INSN_LASX(xvmaddwev_d_wu_w,  vvv)
20063f450c17SSong Gao INSN_LASX(xvmaddwev_q_du_d,  vvv)
20073f450c17SSong Gao INSN_LASX(xvmaddwod_h_bu_b,  vvv)
20083f450c17SSong Gao INSN_LASX(xvmaddwod_w_hu_h,  vvv)
20093f450c17SSong Gao INSN_LASX(xvmaddwod_d_wu_w,  vvv)
20103f450c17SSong Gao INSN_LASX(xvmaddwod_q_du_d,  vvv)
20113f450c17SSong Gao 
2012abb693deSSong Gao INSN_LASX(xvdiv_b,           vvv)
2013abb693deSSong Gao INSN_LASX(xvdiv_h,           vvv)
2014abb693deSSong Gao INSN_LASX(xvdiv_w,           vvv)
2015abb693deSSong Gao INSN_LASX(xvdiv_d,           vvv)
2016abb693deSSong Gao INSN_LASX(xvdiv_bu,          vvv)
2017abb693deSSong Gao INSN_LASX(xvdiv_hu,          vvv)
2018abb693deSSong Gao INSN_LASX(xvdiv_wu,          vvv)
2019abb693deSSong Gao INSN_LASX(xvdiv_du,          vvv)
2020abb693deSSong Gao INSN_LASX(xvmod_b,           vvv)
2021abb693deSSong Gao INSN_LASX(xvmod_h,           vvv)
2022abb693deSSong Gao INSN_LASX(xvmod_w,           vvv)
2023abb693deSSong Gao INSN_LASX(xvmod_d,           vvv)
2024abb693deSSong Gao INSN_LASX(xvmod_bu,          vvv)
2025abb693deSSong Gao INSN_LASX(xvmod_hu,          vvv)
2026abb693deSSong Gao INSN_LASX(xvmod_wu,          vvv)
2027abb693deSSong Gao INSN_LASX(xvmod_du,          vvv)
2028abb693deSSong Gao 
2029e5c7f031SSong Gao INSN_LASX(xvsat_b,           vv_i)
2030e5c7f031SSong Gao INSN_LASX(xvsat_h,           vv_i)
2031e5c7f031SSong Gao INSN_LASX(xvsat_w,           vv_i)
2032e5c7f031SSong Gao INSN_LASX(xvsat_d,           vv_i)
2033e5c7f031SSong Gao INSN_LASX(xvsat_bu,          vv_i)
2034e5c7f031SSong Gao INSN_LASX(xvsat_hu,          vv_i)
2035e5c7f031SSong Gao INSN_LASX(xvsat_wu,          vv_i)
2036e5c7f031SSong Gao INSN_LASX(xvsat_du,          vv_i)
2037e5c7f031SSong Gao 
2038f0db0bebSSong Gao INSN_LASX(xvexth_h_b,        vv)
2039f0db0bebSSong Gao INSN_LASX(xvexth_w_h,        vv)
2040f0db0bebSSong Gao INSN_LASX(xvexth_d_w,        vv)
2041f0db0bebSSong Gao INSN_LASX(xvexth_q_d,        vv)
2042f0db0bebSSong Gao INSN_LASX(xvexth_hu_bu,      vv)
2043f0db0bebSSong Gao INSN_LASX(xvexth_wu_hu,      vv)
2044f0db0bebSSong Gao INSN_LASX(xvexth_du_wu,      vv)
2045f0db0bebSSong Gao INSN_LASX(xvexth_qu_du,      vv)
2046f0db0bebSSong Gao 
2047790acb2aSSong Gao INSN_LASX(vext2xv_h_b,       vv)
2048790acb2aSSong Gao INSN_LASX(vext2xv_w_b,       vv)
2049790acb2aSSong Gao INSN_LASX(vext2xv_d_b,       vv)
2050790acb2aSSong Gao INSN_LASX(vext2xv_w_h,       vv)
2051790acb2aSSong Gao INSN_LASX(vext2xv_d_h,       vv)
2052790acb2aSSong Gao INSN_LASX(vext2xv_d_w,       vv)
2053790acb2aSSong Gao INSN_LASX(vext2xv_hu_bu,     vv)
2054790acb2aSSong Gao INSN_LASX(vext2xv_wu_bu,     vv)
2055790acb2aSSong Gao INSN_LASX(vext2xv_du_bu,     vv)
2056790acb2aSSong Gao INSN_LASX(vext2xv_wu_hu,     vv)
2057790acb2aSSong Gao INSN_LASX(vext2xv_du_hu,     vv)
2058790acb2aSSong Gao INSN_LASX(vext2xv_du_wu,     vv)
2059790acb2aSSong Gao 
20603a275217SSong Gao INSN_LASX(xvsigncov_b,       vvv)
20613a275217SSong Gao INSN_LASX(xvsigncov_h,       vvv)
20623a275217SSong Gao INSN_LASX(xvsigncov_w,       vvv)
20633a275217SSong Gao INSN_LASX(xvsigncov_d,       vvv)
20643a275217SSong Gao 
206597074674SSong Gao INSN_LASX(xvmskltz_b,        vv)
206697074674SSong Gao INSN_LASX(xvmskltz_h,        vv)
206797074674SSong Gao INSN_LASX(xvmskltz_w,        vv)
206897074674SSong Gao INSN_LASX(xvmskltz_d,        vv)
206997074674SSong Gao INSN_LASX(xvmskgez_b,        vv)
207097074674SSong Gao INSN_LASX(xvmsknz_b,         vv)
207197074674SSong Gao 
2072a59098e3SSong Gao INSN_LASX(xvldi,             v_i)
2073a59098e3SSong Gao 
20744472a45aSSong Gao INSN_LASX(xvand_v,           vvv)
20754472a45aSSong Gao INSN_LASX(xvor_v,            vvv)
20764472a45aSSong Gao INSN_LASX(xvxor_v,           vvv)
20774472a45aSSong Gao INSN_LASX(xvnor_v,           vvv)
20784472a45aSSong Gao INSN_LASX(xvandn_v,          vvv)
20794472a45aSSong Gao INSN_LASX(xvorn_v,           vvv)
20804472a45aSSong Gao 
20814472a45aSSong Gao INSN_LASX(xvandi_b,          vv_i)
20824472a45aSSong Gao INSN_LASX(xvori_b,           vv_i)
20834472a45aSSong Gao INSN_LASX(xvxori_b,          vv_i)
20844472a45aSSong Gao INSN_LASX(xvnori_b,          vv_i)
20854472a45aSSong Gao 
2086ad6dc718SSong Gao INSN_LASX(xvsll_b,           vvv)
2087ad6dc718SSong Gao INSN_LASX(xvsll_h,           vvv)
2088ad6dc718SSong Gao INSN_LASX(xvsll_w,           vvv)
2089ad6dc718SSong Gao INSN_LASX(xvsll_d,           vvv)
2090ad6dc718SSong Gao INSN_LASX(xvslli_b,          vv_i)
2091ad6dc718SSong Gao INSN_LASX(xvslli_h,          vv_i)
2092ad6dc718SSong Gao INSN_LASX(xvslli_w,          vv_i)
2093ad6dc718SSong Gao INSN_LASX(xvslli_d,          vv_i)
2094ad6dc718SSong Gao 
2095ad6dc718SSong Gao INSN_LASX(xvsrl_b,           vvv)
2096ad6dc718SSong Gao INSN_LASX(xvsrl_h,           vvv)
2097ad6dc718SSong Gao INSN_LASX(xvsrl_w,           vvv)
2098ad6dc718SSong Gao INSN_LASX(xvsrl_d,           vvv)
2099ad6dc718SSong Gao INSN_LASX(xvsrli_b,          vv_i)
2100ad6dc718SSong Gao INSN_LASX(xvsrli_h,          vv_i)
2101ad6dc718SSong Gao INSN_LASX(xvsrli_w,          vv_i)
2102ad6dc718SSong Gao INSN_LASX(xvsrli_d,          vv_i)
2103ad6dc718SSong Gao 
2104ad6dc718SSong Gao INSN_LASX(xvsra_b,           vvv)
2105ad6dc718SSong Gao INSN_LASX(xvsra_h,           vvv)
2106ad6dc718SSong Gao INSN_LASX(xvsra_w,           vvv)
2107ad6dc718SSong Gao INSN_LASX(xvsra_d,           vvv)
2108ad6dc718SSong Gao INSN_LASX(xvsrai_b,          vv_i)
2109ad6dc718SSong Gao INSN_LASX(xvsrai_h,          vv_i)
2110ad6dc718SSong Gao INSN_LASX(xvsrai_w,          vv_i)
2111ad6dc718SSong Gao INSN_LASX(xvsrai_d,          vv_i)
2112ad6dc718SSong Gao 
2113ad6dc718SSong Gao INSN_LASX(xvrotr_b,          vvv)
2114ad6dc718SSong Gao INSN_LASX(xvrotr_h,          vvv)
2115ad6dc718SSong Gao INSN_LASX(xvrotr_w,          vvv)
2116ad6dc718SSong Gao INSN_LASX(xvrotr_d,          vvv)
2117ad6dc718SSong Gao INSN_LASX(xvrotri_b,         vv_i)
2118ad6dc718SSong Gao INSN_LASX(xvrotri_h,         vv_i)
2119ad6dc718SSong Gao INSN_LASX(xvrotri_w,         vv_i)
2120ad6dc718SSong Gao INSN_LASX(xvrotri_d,         vv_i)
2121ad6dc718SSong Gao 
21226567eac7SSong Gao INSN_LASX(xvsllwil_h_b,      vv_i)
21236567eac7SSong Gao INSN_LASX(xvsllwil_w_h,      vv_i)
21246567eac7SSong Gao INSN_LASX(xvsllwil_d_w,      vv_i)
21256567eac7SSong Gao INSN_LASX(xvextl_q_d,        vv)
21266567eac7SSong Gao INSN_LASX(xvsllwil_hu_bu,    vv_i)
21276567eac7SSong Gao INSN_LASX(xvsllwil_wu_hu,    vv_i)
21286567eac7SSong Gao INSN_LASX(xvsllwil_du_wu,    vv_i)
21296567eac7SSong Gao INSN_LASX(xvextl_qu_du,      vv)
21306567eac7SSong Gao 
21318c272fe8SSong Gao INSN_LASX(xvsrlr_b,          vvv)
21328c272fe8SSong Gao INSN_LASX(xvsrlr_h,          vvv)
21338c272fe8SSong Gao INSN_LASX(xvsrlr_w,          vvv)
21348c272fe8SSong Gao INSN_LASX(xvsrlr_d,          vvv)
21358c272fe8SSong Gao INSN_LASX(xvsrlri_b,         vv_i)
21368c272fe8SSong Gao INSN_LASX(xvsrlri_h,         vv_i)
21378c272fe8SSong Gao INSN_LASX(xvsrlri_w,         vv_i)
21388c272fe8SSong Gao INSN_LASX(xvsrlri_d,         vv_i)
21398c272fe8SSong Gao 
21408c272fe8SSong Gao INSN_LASX(xvsrar_b,          vvv)
21418c272fe8SSong Gao INSN_LASX(xvsrar_h,          vvv)
21428c272fe8SSong Gao INSN_LASX(xvsrar_w,          vvv)
21438c272fe8SSong Gao INSN_LASX(xvsrar_d,          vvv)
21448c272fe8SSong Gao INSN_LASX(xvsrari_b,         vv_i)
21458c272fe8SSong Gao INSN_LASX(xvsrari_h,         vv_i)
21468c272fe8SSong Gao INSN_LASX(xvsrari_w,         vv_i)
21478c272fe8SSong Gao INSN_LASX(xvsrari_d,         vv_i)
21488c272fe8SSong Gao 
214940c7674eSSong Gao INSN_LASX(xvsrln_b_h,        vvv)
215040c7674eSSong Gao INSN_LASX(xvsrln_h_w,        vvv)
215140c7674eSSong Gao INSN_LASX(xvsrln_w_d,        vvv)
215240c7674eSSong Gao INSN_LASX(xvsran_b_h,        vvv)
215340c7674eSSong Gao INSN_LASX(xvsran_h_w,        vvv)
215440c7674eSSong Gao INSN_LASX(xvsran_w_d,        vvv)
215540c7674eSSong Gao 
215640c7674eSSong Gao INSN_LASX(xvsrlni_b_h,       vv_i)
215740c7674eSSong Gao INSN_LASX(xvsrlni_h_w,       vv_i)
215840c7674eSSong Gao INSN_LASX(xvsrlni_w_d,       vv_i)
215940c7674eSSong Gao INSN_LASX(xvsrlni_d_q,       vv_i)
216040c7674eSSong Gao INSN_LASX(xvsrani_b_h,       vv_i)
216140c7674eSSong Gao INSN_LASX(xvsrani_h_w,       vv_i)
216240c7674eSSong Gao INSN_LASX(xvsrani_w_d,       vv_i)
216340c7674eSSong Gao INSN_LASX(xvsrani_d_q,       vv_i)
216440c7674eSSong Gao 
2165c50ce38aSSong Gao INSN_LASX(xvsrlrn_b_h,       vvv)
2166c50ce38aSSong Gao INSN_LASX(xvsrlrn_h_w,       vvv)
2167c50ce38aSSong Gao INSN_LASX(xvsrlrn_w_d,       vvv)
2168c50ce38aSSong Gao INSN_LASX(xvsrarn_b_h,       vvv)
2169c50ce38aSSong Gao INSN_LASX(xvsrarn_h_w,       vvv)
2170c50ce38aSSong Gao INSN_LASX(xvsrarn_w_d,       vvv)
2171c50ce38aSSong Gao 
2172c50ce38aSSong Gao INSN_LASX(xvsrlrni_b_h,      vv_i)
2173c50ce38aSSong Gao INSN_LASX(xvsrlrni_h_w,      vv_i)
2174c50ce38aSSong Gao INSN_LASX(xvsrlrni_w_d,      vv_i)
2175c50ce38aSSong Gao INSN_LASX(xvsrlrni_d_q,      vv_i)
2176c50ce38aSSong Gao INSN_LASX(xvsrarni_b_h,      vv_i)
2177c50ce38aSSong Gao INSN_LASX(xvsrarni_h_w,      vv_i)
2178c50ce38aSSong Gao INSN_LASX(xvsrarni_w_d,      vv_i)
2179c50ce38aSSong Gao INSN_LASX(xvsrarni_d_q,      vv_i)
2180c50ce38aSSong Gao 
21816256c8caSSong Gao INSN_LASX(xvssrln_b_h,       vvv)
21826256c8caSSong Gao INSN_LASX(xvssrln_h_w,       vvv)
21836256c8caSSong Gao INSN_LASX(xvssrln_w_d,       vvv)
21846256c8caSSong Gao INSN_LASX(xvssran_b_h,       vvv)
21856256c8caSSong Gao INSN_LASX(xvssran_h_w,       vvv)
21866256c8caSSong Gao INSN_LASX(xvssran_w_d,       vvv)
21876256c8caSSong Gao INSN_LASX(xvssrln_bu_h,      vvv)
21886256c8caSSong Gao INSN_LASX(xvssrln_hu_w,      vvv)
21896256c8caSSong Gao INSN_LASX(xvssrln_wu_d,      vvv)
21906256c8caSSong Gao INSN_LASX(xvssran_bu_h,      vvv)
21916256c8caSSong Gao INSN_LASX(xvssran_hu_w,      vvv)
21926256c8caSSong Gao INSN_LASX(xvssran_wu_d,      vvv)
21936256c8caSSong Gao 
21946256c8caSSong Gao INSN_LASX(xvssrlni_b_h,      vv_i)
21956256c8caSSong Gao INSN_LASX(xvssrlni_h_w,      vv_i)
21966256c8caSSong Gao INSN_LASX(xvssrlni_w_d,      vv_i)
21976256c8caSSong Gao INSN_LASX(xvssrlni_d_q,      vv_i)
21986256c8caSSong Gao INSN_LASX(xvssrani_b_h,      vv_i)
21996256c8caSSong Gao INSN_LASX(xvssrani_h_w,      vv_i)
22006256c8caSSong Gao INSN_LASX(xvssrani_w_d,      vv_i)
22016256c8caSSong Gao INSN_LASX(xvssrani_d_q,      vv_i)
22026256c8caSSong Gao INSN_LASX(xvssrlni_bu_h,     vv_i)
22036256c8caSSong Gao INSN_LASX(xvssrlni_hu_w,     vv_i)
22046256c8caSSong Gao INSN_LASX(xvssrlni_wu_d,     vv_i)
22056256c8caSSong Gao INSN_LASX(xvssrlni_du_q,     vv_i)
22066256c8caSSong Gao INSN_LASX(xvssrani_bu_h,     vv_i)
22076256c8caSSong Gao INSN_LASX(xvssrani_hu_w,     vv_i)
22086256c8caSSong Gao INSN_LASX(xvssrani_wu_d,     vv_i)
22096256c8caSSong Gao INSN_LASX(xvssrani_du_q,     vv_i)
22106256c8caSSong Gao 
221177fca794SSong Gao INSN_LASX(xvssrlrn_b_h,      vvv)
221277fca794SSong Gao INSN_LASX(xvssrlrn_h_w,      vvv)
221377fca794SSong Gao INSN_LASX(xvssrlrn_w_d,      vvv)
221477fca794SSong Gao INSN_LASX(xvssrarn_b_h,      vvv)
221577fca794SSong Gao INSN_LASX(xvssrarn_h_w,      vvv)
221677fca794SSong Gao INSN_LASX(xvssrarn_w_d,      vvv)
221777fca794SSong Gao INSN_LASX(xvssrlrn_bu_h,     vvv)
221877fca794SSong Gao INSN_LASX(xvssrlrn_hu_w,     vvv)
221977fca794SSong Gao INSN_LASX(xvssrlrn_wu_d,     vvv)
222077fca794SSong Gao INSN_LASX(xvssrarn_bu_h,     vvv)
222177fca794SSong Gao INSN_LASX(xvssrarn_hu_w,     vvv)
222277fca794SSong Gao INSN_LASX(xvssrarn_wu_d,     vvv)
222377fca794SSong Gao 
222477fca794SSong Gao INSN_LASX(xvssrlrni_b_h,     vv_i)
222577fca794SSong Gao INSN_LASX(xvssrlrni_h_w,     vv_i)
222677fca794SSong Gao INSN_LASX(xvssrlrni_w_d,     vv_i)
222777fca794SSong Gao INSN_LASX(xvssrlrni_d_q,     vv_i)
222877fca794SSong Gao INSN_LASX(xvssrlrni_bu_h,    vv_i)
222977fca794SSong Gao INSN_LASX(xvssrlrni_hu_w,    vv_i)
223077fca794SSong Gao INSN_LASX(xvssrlrni_wu_d,    vv_i)
223177fca794SSong Gao INSN_LASX(xvssrlrni_du_q,    vv_i)
223277fca794SSong Gao INSN_LASX(xvssrarni_b_h,     vv_i)
223377fca794SSong Gao INSN_LASX(xvssrarni_h_w,     vv_i)
223477fca794SSong Gao INSN_LASX(xvssrarni_w_d,     vv_i)
223577fca794SSong Gao INSN_LASX(xvssrarni_d_q,     vv_i)
223677fca794SSong Gao INSN_LASX(xvssrarni_bu_h,    vv_i)
223777fca794SSong Gao INSN_LASX(xvssrarni_hu_w,    vv_i)
223877fca794SSong Gao INSN_LASX(xvssrarni_wu_d,    vv_i)
223977fca794SSong Gao INSN_LASX(xvssrarni_du_q,    vv_i)
224077fca794SSong Gao 
224112ad133fSSong Gao INSN_LASX(xvclo_b,           vv)
224212ad133fSSong Gao INSN_LASX(xvclo_h,           vv)
224312ad133fSSong Gao INSN_LASX(xvclo_w,           vv)
224412ad133fSSong Gao INSN_LASX(xvclo_d,           vv)
224512ad133fSSong Gao INSN_LASX(xvclz_b,           vv)
224612ad133fSSong Gao INSN_LASX(xvclz_h,           vv)
224712ad133fSSong Gao INSN_LASX(xvclz_w,           vv)
224812ad133fSSong Gao INSN_LASX(xvclz_d,           vv)
224912ad133fSSong Gao 
2250956dec74SSong Gao INSN_LASX(xvpcnt_b,          vv)
2251956dec74SSong Gao INSN_LASX(xvpcnt_h,          vv)
2252956dec74SSong Gao INSN_LASX(xvpcnt_w,          vv)
2253956dec74SSong Gao INSN_LASX(xvpcnt_d,          vv)
2254956dec74SSong Gao 
22551b3e242fSSong Gao INSN_LASX(xvbitclr_b,        vvv)
22561b3e242fSSong Gao INSN_LASX(xvbitclr_h,        vvv)
22571b3e242fSSong Gao INSN_LASX(xvbitclr_w,        vvv)
22581b3e242fSSong Gao INSN_LASX(xvbitclr_d,        vvv)
22591b3e242fSSong Gao INSN_LASX(xvbitclri_b,       vv_i)
22601b3e242fSSong Gao INSN_LASX(xvbitclri_h,       vv_i)
22611b3e242fSSong Gao INSN_LASX(xvbitclri_w,       vv_i)
22621b3e242fSSong Gao INSN_LASX(xvbitclri_d,       vv_i)
22631b3e242fSSong Gao INSN_LASX(xvbitset_b,        vvv)
22641b3e242fSSong Gao INSN_LASX(xvbitset_h,        vvv)
22651b3e242fSSong Gao INSN_LASX(xvbitset_w,        vvv)
22661b3e242fSSong Gao INSN_LASX(xvbitset_d,        vvv)
22671b3e242fSSong Gao INSN_LASX(xvbitseti_b,       vv_i)
22681b3e242fSSong Gao INSN_LASX(xvbitseti_h,       vv_i)
22691b3e242fSSong Gao INSN_LASX(xvbitseti_w,       vv_i)
22701b3e242fSSong Gao INSN_LASX(xvbitseti_d,       vv_i)
22711b3e242fSSong Gao INSN_LASX(xvbitrev_b,        vvv)
22721b3e242fSSong Gao INSN_LASX(xvbitrev_h,        vvv)
22731b3e242fSSong Gao INSN_LASX(xvbitrev_w,        vvv)
22741b3e242fSSong Gao INSN_LASX(xvbitrev_d,        vvv)
22751b3e242fSSong Gao INSN_LASX(xvbitrevi_b,       vv_i)
22761b3e242fSSong Gao INSN_LASX(xvbitrevi_h,       vv_i)
22771b3e242fSSong Gao INSN_LASX(xvbitrevi_w,       vv_i)
22781b3e242fSSong Gao INSN_LASX(xvbitrevi_d,       vv_i)
22791b3e242fSSong Gao 
2280abee168eSSong Gao INSN_LASX(xvfrstp_b,         vvv)
2281abee168eSSong Gao INSN_LASX(xvfrstp_h,         vvv)
2282abee168eSSong Gao INSN_LASX(xvfrstpi_b,        vv_i)
2283abee168eSSong Gao INSN_LASX(xvfrstpi_h,        vv_i)
2284abee168eSSong Gao 
2285c9caf158SSong Gao INSN_LASX(xvfadd_s,          vvv)
2286c9caf158SSong Gao INSN_LASX(xvfadd_d,          vvv)
2287c9caf158SSong Gao INSN_LASX(xvfsub_s,          vvv)
2288c9caf158SSong Gao INSN_LASX(xvfsub_d,          vvv)
2289c9caf158SSong Gao INSN_LASX(xvfmul_s,          vvv)
2290c9caf158SSong Gao INSN_LASX(xvfmul_d,          vvv)
2291c9caf158SSong Gao INSN_LASX(xvfdiv_s,          vvv)
2292c9caf158SSong Gao INSN_LASX(xvfdiv_d,          vvv)
2293c9caf158SSong Gao 
2294c9caf158SSong Gao INSN_LASX(xvfmadd_s,         vvvv)
2295c9caf158SSong Gao INSN_LASX(xvfmadd_d,         vvvv)
2296c9caf158SSong Gao INSN_LASX(xvfmsub_s,         vvvv)
2297c9caf158SSong Gao INSN_LASX(xvfmsub_d,         vvvv)
2298c9caf158SSong Gao INSN_LASX(xvfnmadd_s,        vvvv)
2299c9caf158SSong Gao INSN_LASX(xvfnmadd_d,        vvvv)
2300c9caf158SSong Gao INSN_LASX(xvfnmsub_s,        vvvv)
2301c9caf158SSong Gao INSN_LASX(xvfnmsub_d,        vvvv)
2302c9caf158SSong Gao 
2303c9caf158SSong Gao INSN_LASX(xvfmax_s,          vvv)
2304c9caf158SSong Gao INSN_LASX(xvfmax_d,          vvv)
2305c9caf158SSong Gao INSN_LASX(xvfmin_s,          vvv)
2306c9caf158SSong Gao INSN_LASX(xvfmin_d,          vvv)
2307c9caf158SSong Gao 
2308c9caf158SSong Gao INSN_LASX(xvfmaxa_s,         vvv)
2309c9caf158SSong Gao INSN_LASX(xvfmaxa_d,         vvv)
2310c9caf158SSong Gao INSN_LASX(xvfmina_s,         vvv)
2311c9caf158SSong Gao INSN_LASX(xvfmina_d,         vvv)
2312c9caf158SSong Gao 
2313c9caf158SSong Gao INSN_LASX(xvflogb_s,         vv)
2314c9caf158SSong Gao INSN_LASX(xvflogb_d,         vv)
2315c9caf158SSong Gao 
2316c9caf158SSong Gao INSN_LASX(xvfclass_s,        vv)
2317c9caf158SSong Gao INSN_LASX(xvfclass_d,        vv)
2318c9caf158SSong Gao 
2319c9caf158SSong Gao INSN_LASX(xvfsqrt_s,         vv)
2320c9caf158SSong Gao INSN_LASX(xvfsqrt_d,         vv)
2321c9caf158SSong Gao INSN_LASX(xvfrecip_s,        vv)
2322c9caf158SSong Gao INSN_LASX(xvfrecip_d,        vv)
2323c9caf158SSong Gao INSN_LASX(xvfrsqrt_s,        vv)
2324c9caf158SSong Gao INSN_LASX(xvfrsqrt_d,        vv)
2325c9caf158SSong Gao 
232660df31a2SSong Gao INSN_LASX(xvfcvtl_s_h,       vv)
232760df31a2SSong Gao INSN_LASX(xvfcvth_s_h,       vv)
232860df31a2SSong Gao INSN_LASX(xvfcvtl_d_s,       vv)
232960df31a2SSong Gao INSN_LASX(xvfcvth_d_s,       vv)
233060df31a2SSong Gao INSN_LASX(xvfcvt_h_s,        vvv)
233160df31a2SSong Gao INSN_LASX(xvfcvt_s_d,        vvv)
233260df31a2SSong Gao 
233360df31a2SSong Gao INSN_LASX(xvfrint_s,         vv)
233460df31a2SSong Gao INSN_LASX(xvfrint_d,         vv)
233560df31a2SSong Gao INSN_LASX(xvfrintrm_s,       vv)
233660df31a2SSong Gao INSN_LASX(xvfrintrm_d,       vv)
233760df31a2SSong Gao INSN_LASX(xvfrintrp_s,       vv)
233860df31a2SSong Gao INSN_LASX(xvfrintrp_d,       vv)
233960df31a2SSong Gao INSN_LASX(xvfrintrz_s,       vv)
234060df31a2SSong Gao INSN_LASX(xvfrintrz_d,       vv)
234160df31a2SSong Gao INSN_LASX(xvfrintrne_s,      vv)
234260df31a2SSong Gao INSN_LASX(xvfrintrne_d,      vv)
234360df31a2SSong Gao 
234460df31a2SSong Gao INSN_LASX(xvftint_w_s,       vv)
234560df31a2SSong Gao INSN_LASX(xvftint_l_d,       vv)
234660df31a2SSong Gao INSN_LASX(xvftintrm_w_s,     vv)
234760df31a2SSong Gao INSN_LASX(xvftintrm_l_d,     vv)
234860df31a2SSong Gao INSN_LASX(xvftintrp_w_s,     vv)
234960df31a2SSong Gao INSN_LASX(xvftintrp_l_d,     vv)
235060df31a2SSong Gao INSN_LASX(xvftintrz_w_s,     vv)
235160df31a2SSong Gao INSN_LASX(xvftintrz_l_d,     vv)
235260df31a2SSong Gao INSN_LASX(xvftintrne_w_s,    vv)
235360df31a2SSong Gao INSN_LASX(xvftintrne_l_d,    vv)
235460df31a2SSong Gao INSN_LASX(xvftint_wu_s,      vv)
235560df31a2SSong Gao INSN_LASX(xvftint_lu_d,      vv)
235660df31a2SSong Gao INSN_LASX(xvftintrz_wu_s,    vv)
235760df31a2SSong Gao INSN_LASX(xvftintrz_lu_d,    vv)
235860df31a2SSong Gao INSN_LASX(xvftint_w_d,       vvv)
235960df31a2SSong Gao INSN_LASX(xvftintrm_w_d,     vvv)
236060df31a2SSong Gao INSN_LASX(xvftintrp_w_d,     vvv)
236160df31a2SSong Gao INSN_LASX(xvftintrz_w_d,     vvv)
236260df31a2SSong Gao INSN_LASX(xvftintrne_w_d,    vvv)
236360df31a2SSong Gao INSN_LASX(xvftintl_l_s,      vv)
236460df31a2SSong Gao INSN_LASX(xvftinth_l_s,      vv)
236560df31a2SSong Gao INSN_LASX(xvftintrml_l_s,    vv)
236660df31a2SSong Gao INSN_LASX(xvftintrmh_l_s,    vv)
236760df31a2SSong Gao INSN_LASX(xvftintrpl_l_s,    vv)
236860df31a2SSong Gao INSN_LASX(xvftintrph_l_s,    vv)
236960df31a2SSong Gao INSN_LASX(xvftintrzl_l_s,    vv)
237060df31a2SSong Gao INSN_LASX(xvftintrzh_l_s,    vv)
237160df31a2SSong Gao INSN_LASX(xvftintrnel_l_s,   vv)
237260df31a2SSong Gao INSN_LASX(xvftintrneh_l_s,   vv)
237360df31a2SSong Gao 
237460df31a2SSong Gao INSN_LASX(xvffint_s_w,       vv)
237560df31a2SSong Gao INSN_LASX(xvffint_s_wu,      vv)
237660df31a2SSong Gao INSN_LASX(xvffint_d_l,       vv)
237760df31a2SSong Gao INSN_LASX(xvffint_d_lu,      vv)
237860df31a2SSong Gao INSN_LASX(xvffintl_d_w,      vv)
237960df31a2SSong Gao INSN_LASX(xvffinth_d_w,      vv)
238060df31a2SSong Gao INSN_LASX(xvffint_s_l,       vvv)
238160df31a2SSong Gao 
23824da72d43SSong Gao INSN_LASX(xvseq_b,           vvv)
23834da72d43SSong Gao INSN_LASX(xvseq_h,           vvv)
23844da72d43SSong Gao INSN_LASX(xvseq_w,           vvv)
23854da72d43SSong Gao INSN_LASX(xvseq_d,           vvv)
23864da72d43SSong Gao INSN_LASX(xvseqi_b,          vv_i)
23874da72d43SSong Gao INSN_LASX(xvseqi_h,          vv_i)
23884da72d43SSong Gao INSN_LASX(xvseqi_w,          vv_i)
23894da72d43SSong Gao INSN_LASX(xvseqi_d,          vv_i)
23904da72d43SSong Gao 
23914da72d43SSong Gao INSN_LASX(xvsle_b,           vvv)
23924da72d43SSong Gao INSN_LASX(xvsle_h,           vvv)
23934da72d43SSong Gao INSN_LASX(xvsle_w,           vvv)
23944da72d43SSong Gao INSN_LASX(xvsle_d,           vvv)
23954da72d43SSong Gao INSN_LASX(xvslei_b,          vv_i)
23964da72d43SSong Gao INSN_LASX(xvslei_h,          vv_i)
23974da72d43SSong Gao INSN_LASX(xvslei_w,          vv_i)
23984da72d43SSong Gao INSN_LASX(xvslei_d,          vv_i)
23994da72d43SSong Gao INSN_LASX(xvsle_bu,          vvv)
24004da72d43SSong Gao INSN_LASX(xvsle_hu,          vvv)
24014da72d43SSong Gao INSN_LASX(xvsle_wu,          vvv)
24024da72d43SSong Gao INSN_LASX(xvsle_du,          vvv)
24034da72d43SSong Gao INSN_LASX(xvslei_bu,         vv_i)
24044da72d43SSong Gao INSN_LASX(xvslei_hu,         vv_i)
24054da72d43SSong Gao INSN_LASX(xvslei_wu,         vv_i)
24064da72d43SSong Gao INSN_LASX(xvslei_du,         vv_i)
24074da72d43SSong Gao 
24084da72d43SSong Gao INSN_LASX(xvslt_b,           vvv)
24094da72d43SSong Gao INSN_LASX(xvslt_h,           vvv)
24104da72d43SSong Gao INSN_LASX(xvslt_w,           vvv)
24114da72d43SSong Gao INSN_LASX(xvslt_d,           vvv)
24124da72d43SSong Gao INSN_LASX(xvslti_b,          vv_i)
24134da72d43SSong Gao INSN_LASX(xvslti_h,          vv_i)
24144da72d43SSong Gao INSN_LASX(xvslti_w,          vv_i)
24154da72d43SSong Gao INSN_LASX(xvslti_d,          vv_i)
24164da72d43SSong Gao INSN_LASX(xvslt_bu,          vvv)
24174da72d43SSong Gao INSN_LASX(xvslt_hu,          vvv)
24184da72d43SSong Gao INSN_LASX(xvslt_wu,          vvv)
24194da72d43SSong Gao INSN_LASX(xvslt_du,          vvv)
24204da72d43SSong Gao INSN_LASX(xvslti_bu,         vv_i)
24214da72d43SSong Gao INSN_LASX(xvslti_hu,         vv_i)
24224da72d43SSong Gao INSN_LASX(xvslti_wu,         vv_i)
24234da72d43SSong Gao INSN_LASX(xvslti_du,         vv_i)
24244da72d43SSong Gao 
24253eeda5feSSong Gao #define output_xvfcmp(C, PREFIX, SUFFIX)                                    \
24263eeda5feSSong Gao {                                                                           \
24273eeda5feSSong Gao     (C)->info->fprintf_func((C)->info->stream, "%08x  %s%s\tx%d, x%d, x%d", \
24283eeda5feSSong Gao                             (C)->insn, PREFIX, SUFFIX, a->vd,               \
24293eeda5feSSong Gao                             a->vj, a->vk);                                  \
24303eeda5feSSong Gao }
24313eeda5feSSong Gao static bool output_xxx_fcond(DisasContext *ctx, arg_vvv_fcond * a,
24323eeda5feSSong Gao                              const char *suffix)
24333eeda5feSSong Gao {
24343eeda5feSSong Gao     bool ret = true;
24353eeda5feSSong Gao     switch (a->fcond) {
24363eeda5feSSong Gao     case 0x0:
24373eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_caf_", suffix);
24383eeda5feSSong Gao         break;
24393eeda5feSSong Gao     case 0x1:
24403eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_saf_", suffix);
24413eeda5feSSong Gao         break;
24423eeda5feSSong Gao     case 0x2:
24433eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_clt_", suffix);
24443eeda5feSSong Gao         break;
24453eeda5feSSong Gao     case 0x3:
24463eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_slt_", suffix);
24473eeda5feSSong Gao         break;
24483eeda5feSSong Gao     case 0x4:
24493eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_ceq_", suffix);
24503eeda5feSSong Gao         break;
24513eeda5feSSong Gao     case 0x5:
24523eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_seq_", suffix);
24533eeda5feSSong Gao         break;
24543eeda5feSSong Gao     case 0x6:
24553eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_cle_", suffix);
24563eeda5feSSong Gao         break;
24573eeda5feSSong Gao     case 0x7:
24583eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_sle_", suffix);
24593eeda5feSSong Gao         break;
24603eeda5feSSong Gao     case 0x8:
24613eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_cun_", suffix);
24623eeda5feSSong Gao         break;
24633eeda5feSSong Gao     case 0x9:
24643eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_sun_", suffix);
24653eeda5feSSong Gao         break;
24663eeda5feSSong Gao     case 0xA:
24673eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_cult_", suffix);
24683eeda5feSSong Gao         break;
24693eeda5feSSong Gao     case 0xB:
24703eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_sult_", suffix);
24713eeda5feSSong Gao         break;
24723eeda5feSSong Gao     case 0xC:
24733eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_cueq_", suffix);
24743eeda5feSSong Gao         break;
24753eeda5feSSong Gao     case 0xD:
24763eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_sueq_", suffix);
24773eeda5feSSong Gao         break;
24783eeda5feSSong Gao     case 0xE:
24793eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_cule_", suffix);
24803eeda5feSSong Gao         break;
24813eeda5feSSong Gao     case 0xF:
24823eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_sule_", suffix);
24833eeda5feSSong Gao         break;
24843eeda5feSSong Gao     case 0x10:
24853eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_cne_", suffix);
24863eeda5feSSong Gao         break;
24873eeda5feSSong Gao     case 0x11:
24883eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_sne_", suffix);
24893eeda5feSSong Gao         break;
24903eeda5feSSong Gao     case 0x14:
24913eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_cor_", suffix);
24923eeda5feSSong Gao         break;
24933eeda5feSSong Gao     case 0x15:
24943eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_sor_", suffix);
24953eeda5feSSong Gao         break;
24963eeda5feSSong Gao     case 0x18:
24973eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_cune_", suffix);
24983eeda5feSSong Gao         break;
24993eeda5feSSong Gao     case 0x19:
25003eeda5feSSong Gao         output_xvfcmp(ctx, "xvfcmp_sune_", suffix);
25013eeda5feSSong Gao         break;
25023eeda5feSSong Gao     default:
25033eeda5feSSong Gao         ret = false;
25043eeda5feSSong Gao     }
25053eeda5feSSong Gao     return ret;
25063eeda5feSSong Gao }
25073eeda5feSSong Gao 
25083eeda5feSSong Gao #define LASX_FCMP_INSN(suffix)                            \
25093eeda5feSSong Gao static bool trans_xvfcmp_cond_##suffix(DisasContext *ctx, \
25103eeda5feSSong Gao                                        arg_vvv_fcond * a) \
25113eeda5feSSong Gao {                                                         \
25123eeda5feSSong Gao     return output_xxx_fcond(ctx, a, #suffix);             \
25133eeda5feSSong Gao }
25143eeda5feSSong Gao 
25153eeda5feSSong Gao LASX_FCMP_INSN(s)
25163eeda5feSSong Gao LASX_FCMP_INSN(d)
25173eeda5feSSong Gao 
2518f3dfcc8bSSong Gao INSN_LASX(xvbitsel_v,        vvvv)
2519f3dfcc8bSSong Gao INSN_LASX(xvbitseli_b,       vv_i)
2520f3dfcc8bSSong Gao 
2521f3dfcc8bSSong Gao INSN_LASX(xvseteqz_v,        cv)
2522f3dfcc8bSSong Gao INSN_LASX(xvsetnez_v,        cv)
2523f3dfcc8bSSong Gao INSN_LASX(xvsetanyeqz_b,     cv)
2524f3dfcc8bSSong Gao INSN_LASX(xvsetanyeqz_h,     cv)
2525f3dfcc8bSSong Gao INSN_LASX(xvsetanyeqz_w,     cv)
2526f3dfcc8bSSong Gao INSN_LASX(xvsetanyeqz_d,     cv)
2527f3dfcc8bSSong Gao INSN_LASX(xvsetallnez_b,     cv)
2528f3dfcc8bSSong Gao INSN_LASX(xvsetallnez_h,     cv)
2529f3dfcc8bSSong Gao INSN_LASX(xvsetallnez_w,     cv)
2530f3dfcc8bSSong Gao INSN_LASX(xvsetallnez_d,     cv)
2531f3dfcc8bSSong Gao 
2532f5ce2c8fSSong Gao INSN_LASX(xvinsgr2vr_w,      vr_i)
2533f5ce2c8fSSong Gao INSN_LASX(xvinsgr2vr_d,      vr_i)
2534f5ce2c8fSSong Gao INSN_LASX(xvpickve2gr_w,     rv_i)
2535f5ce2c8fSSong Gao INSN_LASX(xvpickve2gr_d,     rv_i)
2536f5ce2c8fSSong Gao INSN_LASX(xvpickve2gr_wu,    rv_i)
2537f5ce2c8fSSong Gao INSN_LASX(xvpickve2gr_du,    rv_i)
2538f5ce2c8fSSong Gao 
253973123406SSong Gao INSN_LASX(xvreplgr2vr_b,     vr)
254073123406SSong Gao INSN_LASX(xvreplgr2vr_h,     vr)
254173123406SSong Gao INSN_LASX(xvreplgr2vr_w,     vr)
254273123406SSong Gao INSN_LASX(xvreplgr2vr_d,     vr)
2543df97f338SSong Gao 
2544df97f338SSong Gao INSN_LASX(xvreplve_b,        vvr)
2545df97f338SSong Gao INSN_LASX(xvreplve_h,        vvr)
2546df97f338SSong Gao INSN_LASX(xvreplve_w,        vvr)
2547df97f338SSong Gao INSN_LASX(xvreplve_d,        vvr)
2548df97f338SSong Gao INSN_LASX(xvrepl128vei_b,    vv_i)
2549df97f338SSong Gao INSN_LASX(xvrepl128vei_h,    vv_i)
2550df97f338SSong Gao INSN_LASX(xvrepl128vei_w,    vv_i)
2551df97f338SSong Gao INSN_LASX(xvrepl128vei_d,    vv_i)
2552df97f338SSong Gao 
2553df97f338SSong Gao INSN_LASX(xvreplve0_b,       vv)
2554df97f338SSong Gao INSN_LASX(xvreplve0_h,       vv)
2555df97f338SSong Gao INSN_LASX(xvreplve0_w,       vv)
2556df97f338SSong Gao INSN_LASX(xvreplve0_d,       vv)
2557df97f338SSong Gao INSN_LASX(xvreplve0_q,       vv)
2558df97f338SSong Gao 
2559df97f338SSong Gao INSN_LASX(xvinsve0_w,        vv_i)
2560df97f338SSong Gao INSN_LASX(xvinsve0_d,        vv_i)
2561df97f338SSong Gao 
2562df97f338SSong Gao INSN_LASX(xvpickve_w,        vv_i)
2563df97f338SSong Gao INSN_LASX(xvpickve_d,        vv_i)
2564df97f338SSong Gao 
2565df97f338SSong Gao INSN_LASX(xvbsll_v,          vv_i)
2566df97f338SSong Gao INSN_LASX(xvbsrl_v,          vv_i)
2567ad292148SSong Gao 
2568ad292148SSong Gao INSN_LASX(xvpackev_b,        vvv)
2569ad292148SSong Gao INSN_LASX(xvpackev_h,        vvv)
2570ad292148SSong Gao INSN_LASX(xvpackev_w,        vvv)
2571ad292148SSong Gao INSN_LASX(xvpackev_d,        vvv)
2572ad292148SSong Gao INSN_LASX(xvpackod_b,        vvv)
2573ad292148SSong Gao INSN_LASX(xvpackod_h,        vvv)
2574ad292148SSong Gao INSN_LASX(xvpackod_w,        vvv)
2575ad292148SSong Gao INSN_LASX(xvpackod_d,        vvv)
2576ad292148SSong Gao 
2577ad292148SSong Gao INSN_LASX(xvpickev_b,        vvv)
2578ad292148SSong Gao INSN_LASX(xvpickev_h,        vvv)
2579ad292148SSong Gao INSN_LASX(xvpickev_w,        vvv)
2580ad292148SSong Gao INSN_LASX(xvpickev_d,        vvv)
2581ad292148SSong Gao INSN_LASX(xvpickod_b,        vvv)
2582ad292148SSong Gao INSN_LASX(xvpickod_h,        vvv)
2583ad292148SSong Gao INSN_LASX(xvpickod_w,        vvv)
2584ad292148SSong Gao INSN_LASX(xvpickod_d,        vvv)
2585ad292148SSong Gao 
2586ad292148SSong Gao INSN_LASX(xvilvl_b,          vvv)
2587ad292148SSong Gao INSN_LASX(xvilvl_h,          vvv)
2588ad292148SSong Gao INSN_LASX(xvilvl_w,          vvv)
2589ad292148SSong Gao INSN_LASX(xvilvl_d,          vvv)
2590ad292148SSong Gao INSN_LASX(xvilvh_b,          vvv)
2591ad292148SSong Gao INSN_LASX(xvilvh_h,          vvv)
2592ad292148SSong Gao INSN_LASX(xvilvh_w,          vvv)
2593ad292148SSong Gao INSN_LASX(xvilvh_d,          vvv)
2594513e88a2SSong Gao 
2595513e88a2SSong Gao INSN_LASX(xvshuf_b,          vvvv)
2596513e88a2SSong Gao INSN_LASX(xvshuf_h,          vvv)
2597513e88a2SSong Gao INSN_LASX(xvshuf_w,          vvv)
2598513e88a2SSong Gao INSN_LASX(xvshuf_d,          vvv)
2599513e88a2SSong Gao 
2600513e88a2SSong Gao INSN_LASX(xvperm_w,          vvv)
2601513e88a2SSong Gao 
2602513e88a2SSong Gao INSN_LASX(xvshuf4i_b,        vv_i)
2603513e88a2SSong Gao INSN_LASX(xvshuf4i_h,        vv_i)
2604513e88a2SSong Gao INSN_LASX(xvshuf4i_w,        vv_i)
2605513e88a2SSong Gao INSN_LASX(xvshuf4i_d,        vv_i)
2606513e88a2SSong Gao 
2607513e88a2SSong Gao INSN_LASX(xvpermi_w,         vv_i)
2608513e88a2SSong Gao INSN_LASX(xvpermi_d,         vv_i)
2609513e88a2SSong Gao INSN_LASX(xvpermi_q,         vv_i)
2610513e88a2SSong Gao 
2611513e88a2SSong Gao INSN_LASX(xvextrins_d,       vv_i)
2612513e88a2SSong Gao INSN_LASX(xvextrins_w,       vv_i)
2613513e88a2SSong Gao INSN_LASX(xvextrins_h,       vv_i)
2614513e88a2SSong Gao INSN_LASX(xvextrins_b,       vv_i)
26154a26512fSSong Gao 
26164a26512fSSong Gao INSN_LASX(xvld,              vr_i)
26174a26512fSSong Gao INSN_LASX(xvst,              vr_i)
26184a26512fSSong Gao INSN_LASX(xvldx,             vrr)
26194a26512fSSong Gao INSN_LASX(xvstx,             vrr)
26204a26512fSSong Gao 
26214a26512fSSong Gao INSN_LASX(xvldrepl_d,        vr_i)
26224a26512fSSong Gao INSN_LASX(xvldrepl_w,        vr_i)
26234a26512fSSong Gao INSN_LASX(xvldrepl_h,        vr_i)
26244a26512fSSong Gao INSN_LASX(xvldrepl_b,        vr_i)
26254a26512fSSong Gao INSN_LASX(xvstelm_d,         vr_ii)
26264a26512fSSong Gao INSN_LASX(xvstelm_w,         vr_ii)
26274a26512fSSong Gao INSN_LASX(xvstelm_h,         vr_ii)
26284a26512fSSong Gao INSN_LASX(xvstelm_b,         vr_ii)
2629