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