• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2019, VIXL authors
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are met:
6 //
7 //   * Redistributions of source code must retain the above copyright notice,
8 //     this list of conditions and the following disclaimer.
9 //   * Redistributions in binary form must reproduce the above copyright notice,
10 //     this list of conditions and the following disclaimer in the documentation
11 //     and/or other materials provided with the distribution.
12 //   * Neither the name of ARM Limited nor the names of its contributors may be
13 //     used to endorse or promote products derived from this software without
14 //     specific prior written permission.
15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND
17 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 
27 #ifndef VIXL_AARCH64_DECODER_AARCH64_H_
28 #define VIXL_AARCH64_DECODER_AARCH64_H_
29 
30 #include <functional>
31 #include <list>
32 #include <map>
33 #include <string>
34 
35 #include "../globals-vixl.h"
36 #include "../utils-vixl.h"
37 
38 #include "instructions-aarch64.h"
39 
40 // List macro containing all visitors needed by the decoder class.
41 #define INSTRUCTION_VISITOR_LIST(V) \
42   V(abs_asimdmisc_r)                \
43   V(abs_asisdmisc_r)                \
44   V(abs_z_p_z)                      \
45   V(adc_32_addsub_carry)            \
46   V(adc_64_addsub_carry)            \
47   V(adclb_z_zzz)                    \
48   V(adclt_z_zzz)                    \
49   V(adcs_32_addsub_carry)           \
50   V(adcs_64_addsub_carry)           \
51   V(add_32_addsub_ext)              \
52   V(add_32_addsub_imm)              \
53   V(add_32_addsub_shift)            \
54   V(add_64_addsub_ext)              \
55   V(add_64_addsub_imm)              \
56   V(add_64_addsub_shift)            \
57   V(add_asimdsame_only)             \
58   V(add_asisdsame_only)             \
59   V(add_z_p_zz)                     \
60   V(add_z_zi)                       \
61   V(add_z_zz)                       \
62   V(addg_64_addsub_immtags)         \
63   V(addhn_asimddiff_n)              \
64   V(addhnb_z_zz)                    \
65   V(addhnt_z_zz)                    \
66   V(addp_asimdsame_only)            \
67   V(addp_asisdpair_only)            \
68   V(addp_z_p_zz)                    \
69   V(addpl_r_ri)                     \
70   V(adds_32_addsub_shift)           \
71   V(adds_32s_addsub_ext)            \
72   V(adds_32s_addsub_imm)            \
73   V(adds_64_addsub_shift)           \
74   V(adds_64s_addsub_ext)            \
75   V(adds_64s_addsub_imm)            \
76   V(addv_asimdall_only)             \
77   V(addvl_r_ri)                     \
78   V(adr_only_pcreladdr)             \
79   V(adr_z_az_d_s32_scaled)          \
80   V(adr_z_az_d_u32_scaled)          \
81   V(adr_z_az_sd_same_scaled)        \
82   V(adrp_only_pcreladdr)            \
83   V(aesd_b_cryptoaes)               \
84   V(aesd_z_zz)                      \
85   V(aese_b_cryptoaes)               \
86   V(aese_z_zz)                      \
87   V(aesimc_b_cryptoaes)             \
88   V(aesimc_z_z)                     \
89   V(aesmc_b_cryptoaes)              \
90   V(aesmc_z_z)                      \
91   V(and_32_log_imm)                 \
92   V(and_32_log_shift)               \
93   V(and_64_log_imm)                 \
94   V(and_64_log_shift)               \
95   V(and_asimdsame_only)             \
96   V(and_p_p_pp_z)                   \
97   V(and_z_p_zz)                     \
98   V(and_z_zi)                       \
99   V(and_z_zz)                       \
100   V(ands_32_log_shift)              \
101   V(ands_32s_log_imm)               \
102   V(ands_64_log_shift)              \
103   V(ands_64s_log_imm)               \
104   V(ands_p_p_pp_z)                  \
105   V(andv_r_p_z)                     \
106   V(asr_z_p_zi)                     \
107   V(asr_z_p_zw)                     \
108   V(asr_z_p_zz)                     \
109   V(asr_z_zi)                       \
110   V(asr_z_zw)                       \
111   V(asrd_z_p_zi)                    \
112   V(asrr_z_p_zz)                    \
113   V(asrv_32_dp_2src)                \
114   V(asrv_64_dp_2src)                \
115   V(autda_64p_dp_1src)              \
116   V(autdb_64p_dp_1src)              \
117   V(autdza_64z_dp_1src)             \
118   V(autdzb_64z_dp_1src)             \
119   V(autia1716_hi_hints)             \
120   V(autia_64p_dp_1src)              \
121   V(autiasp_hi_hints)               \
122   V(autiaz_hi_hints)                \
123   V(autib1716_hi_hints)             \
124   V(autib_64p_dp_1src)              \
125   V(autibsp_hi_hints)               \
126   V(autibz_hi_hints)                \
127   V(autiza_64z_dp_1src)             \
128   V(autizb_64z_dp_1src)             \
129   V(axflag_m_pstate)                \
130   V(b_only_branch_imm)              \
131   V(b_only_condbranch)              \
132   V(bcax_vvv16_crypto4)             \
133   V(bcax_z_zzz)                     \
134   V(bdep_z_zz)                      \
135   V(bext_z_zz)                      \
136   V(bfcvt_bs_floatdp1)              \
137   V(bfcvt_z_p_z_s2bf)               \
138   V(bfcvtn_asimdmisc_4s)            \
139   V(bfcvtnt_z_p_z_s2bf)             \
140   V(bfdot_asimdelem_e)              \
141   V(bfdot_asimdsame2_d)             \
142   V(bfdot_z_zzz)                    \
143   V(bfdot_z_zzzi)                   \
144   V(bfm_32m_bitfield)               \
145   V(bfm_64m_bitfield)               \
146   V(bfmlal_asimdelem_f)             \
147   V(bfmlal_asimdsame2_f)            \
148   V(bfmlalb_z_zzz)                  \
149   V(bfmlalb_z_zzzi)                 \
150   V(bfmlalt_z_zzz)                  \
151   V(bfmlalt_z_zzzi)                 \
152   V(bfmmla_asimdsame2_e)            \
153   V(bfmmla_z_zzz)                   \
154   V(bgrp_z_zz)                      \
155   V(bic_32_log_shift)               \
156   V(bic_64_log_shift)               \
157   V(bic_asimdimm_l_hl)              \
158   V(bic_asimdimm_l_sl)              \
159   V(bic_asimdsame_only)             \
160   V(bic_p_p_pp_z)                   \
161   V(bic_z_p_zz)                     \
162   V(bic_z_zz)                       \
163   V(bics_32_log_shift)              \
164   V(bics_64_log_shift)              \
165   V(bics_p_p_pp_z)                  \
166   V(bif_asimdsame_only)             \
167   V(bit_asimdsame_only)             \
168   V(bl_only_branch_imm)             \
169   V(blr_64_branch_reg)              \
170   V(blraa_64p_branch_reg)           \
171   V(blraaz_64_branch_reg)           \
172   V(blrab_64p_branch_reg)           \
173   V(blrabz_64_branch_reg)           \
174   V(br_64_branch_reg)               \
175   V(braa_64p_branch_reg)            \
176   V(braaz_64_branch_reg)            \
177   V(brab_64p_branch_reg)            \
178   V(brabz_64_branch_reg)            \
179   V(brk_ex_exception)               \
180   V(brka_p_p_p)                     \
181   V(brkas_p_p_p_z)                  \
182   V(brkb_p_p_p)                     \
183   V(brkbs_p_p_p_z)                  \
184   V(brkn_p_p_pp)                    \
185   V(brkns_p_p_pp)                   \
186   V(brkpa_p_p_pp)                   \
187   V(brkpas_p_p_pp)                  \
188   V(brkpb_p_p_pp)                   \
189   V(brkpbs_p_p_pp)                  \
190   V(bsl1n_z_zzz)                    \
191   V(bsl2n_z_zzz)                    \
192   V(bsl_asimdsame_only)             \
193   V(bsl_z_zzz)                      \
194   V(bti_hb_hints)                   \
195   V(cadd_z_zz)                      \
196   V(cas_c32_ldstexcl)               \
197   V(cas_c64_ldstexcl)               \
198   V(casa_c32_ldstexcl)              \
199   V(casa_c64_ldstexcl)              \
200   V(casab_c32_ldstexcl)             \
201   V(casah_c32_ldstexcl)             \
202   V(casal_c32_ldstexcl)             \
203   V(casal_c64_ldstexcl)             \
204   V(casalb_c32_ldstexcl)            \
205   V(casalh_c32_ldstexcl)            \
206   V(casb_c32_ldstexcl)              \
207   V(cash_c32_ldstexcl)              \
208   V(casl_c32_ldstexcl)              \
209   V(casl_c64_ldstexcl)              \
210   V(caslb_c32_ldstexcl)             \
211   V(caslh_c32_ldstexcl)             \
212   V(casp_cp32_ldstexcl)             \
213   V(casp_cp64_ldstexcl)             \
214   V(caspa_cp32_ldstexcl)            \
215   V(caspa_cp64_ldstexcl)            \
216   V(caspal_cp32_ldstexcl)           \
217   V(caspal_cp64_ldstexcl)           \
218   V(caspl_cp32_ldstexcl)            \
219   V(caspl_cp64_ldstexcl)            \
220   V(cbnz_32_compbranch)             \
221   V(cbnz_64_compbranch)             \
222   V(cbz_32_compbranch)              \
223   V(cbz_64_compbranch)              \
224   V(ccmn_32_condcmp_imm)            \
225   V(ccmn_32_condcmp_reg)            \
226   V(ccmn_64_condcmp_imm)            \
227   V(ccmn_64_condcmp_reg)            \
228   V(ccmp_32_condcmp_imm)            \
229   V(ccmp_32_condcmp_reg)            \
230   V(ccmp_64_condcmp_imm)            \
231   V(ccmp_64_condcmp_reg)            \
232   V(cdot_z_zzz)                     \
233   V(cdot_z_zzzi_d)                  \
234   V(cdot_z_zzzi_s)                  \
235   V(cfinv_m_pstate)                 \
236   V(clasta_r_p_z)                   \
237   V(clasta_v_p_z)                   \
238   V(clasta_z_p_zz)                  \
239   V(clastb_r_p_z)                   \
240   V(clastb_v_p_z)                   \
241   V(clastb_z_p_zz)                  \
242   V(clrex_bn_barriers)              \
243   V(cls_32_dp_1src)                 \
244   V(cls_64_dp_1src)                 \
245   V(cls_asimdmisc_r)                \
246   V(cls_z_p_z)                      \
247   V(clz_32_dp_1src)                 \
248   V(clz_64_dp_1src)                 \
249   V(clz_asimdmisc_r)                \
250   V(clz_z_p_z)                      \
251   V(cmeq_asimdmisc_z)               \
252   V(cmeq_asimdsame_only)            \
253   V(cmeq_asisdmisc_z)               \
254   V(cmeq_asisdsame_only)            \
255   V(cmge_asimdmisc_z)               \
256   V(cmge_asimdsame_only)            \
257   V(cmge_asisdmisc_z)               \
258   V(cmge_asisdsame_only)            \
259   V(cmgt_asimdmisc_z)               \
260   V(cmgt_asimdsame_only)            \
261   V(cmgt_asisdmisc_z)               \
262   V(cmgt_asisdsame_only)            \
263   V(cmhi_asimdsame_only)            \
264   V(cmhi_asisdsame_only)            \
265   V(cmhs_asimdsame_only)            \
266   V(cmhs_asisdsame_only)            \
267   V(cmla_z_zzz)                     \
268   V(cmla_z_zzzi_h)                  \
269   V(cmla_z_zzzi_s)                  \
270   V(cmle_asimdmisc_z)               \
271   V(cmle_asisdmisc_z)               \
272   V(cmlt_asimdmisc_z)               \
273   V(cmlt_asisdmisc_z)               \
274   V(cmpeq_p_p_zi)                   \
275   V(cmpeq_p_p_zw)                   \
276   V(cmpeq_p_p_zz)                   \
277   V(cmpge_p_p_zi)                   \
278   V(cmpge_p_p_zw)                   \
279   V(cmpge_p_p_zz)                   \
280   V(cmpgt_p_p_zi)                   \
281   V(cmpgt_p_p_zw)                   \
282   V(cmpgt_p_p_zz)                   \
283   V(cmphi_p_p_zi)                   \
284   V(cmphi_p_p_zw)                   \
285   V(cmphi_p_p_zz)                   \
286   V(cmphs_p_p_zi)                   \
287   V(cmphs_p_p_zw)                   \
288   V(cmphs_p_p_zz)                   \
289   V(cmple_p_p_zi)                   \
290   V(cmple_p_p_zw)                   \
291   V(cmplo_p_p_zi)                   \
292   V(cmplo_p_p_zw)                   \
293   V(cmpls_p_p_zi)                   \
294   V(cmpls_p_p_zw)                   \
295   V(cmplt_p_p_zi)                   \
296   V(cmplt_p_p_zw)                   \
297   V(cmpne_p_p_zi)                   \
298   V(cmpne_p_p_zw)                   \
299   V(cmpne_p_p_zz)                   \
300   V(cmtst_asimdsame_only)           \
301   V(cmtst_asisdsame_only)           \
302   V(cnot_z_p_z)                     \
303   V(cnt_asimdmisc_r)                \
304   V(cnt_z_p_z)                      \
305   V(cntb_r_s)                       \
306   V(cntd_r_s)                       \
307   V(cnth_r_s)                       \
308   V(cntp_r_p_p)                     \
309   V(cntw_r_s)                       \
310   V(compact_z_p_z)                  \
311   V(cpy_z_o_i)                      \
312   V(cpy_z_p_i)                      \
313   V(cpy_z_p_r)                      \
314   V(cpy_z_p_v)                      \
315   V(crc32b_32c_dp_2src)             \
316   V(crc32cb_32c_dp_2src)            \
317   V(crc32ch_32c_dp_2src)            \
318   V(crc32cw_32c_dp_2src)            \
319   V(crc32cx_64c_dp_2src)            \
320   V(crc32h_32c_dp_2src)             \
321   V(crc32w_32c_dp_2src)             \
322   V(crc32x_64c_dp_2src)             \
323   V(csdb_hi_hints)                  \
324   V(csel_32_condsel)                \
325   V(csel_64_condsel)                \
326   V(csinc_32_condsel)               \
327   V(csinc_64_condsel)               \
328   V(csinv_32_condsel)               \
329   V(csinv_64_condsel)               \
330   V(csneg_32_condsel)               \
331   V(csneg_64_condsel)               \
332   V(ctermeq_rr)                     \
333   V(ctermne_rr)                     \
334   V(dcps1_dc_exception)             \
335   V(dcps2_dc_exception)             \
336   V(dcps3_dc_exception)             \
337   V(decb_r_rs)                      \
338   V(decd_r_rs)                      \
339   V(decd_z_zs)                      \
340   V(dech_r_rs)                      \
341   V(dech_z_zs)                      \
342   V(decp_r_p_r)                     \
343   V(decp_z_p_z)                     \
344   V(decw_r_rs)                      \
345   V(decw_z_zs)                      \
346   V(dgh_hi_hints)                   \
347   V(dmb_bo_barriers)                \
348   V(drps_64e_branch_reg)            \
349   V(dsb_bo_barriers)                \
350   V(dsb_bon_barriers)               \
351   V(dup_asimdins_dr_r)              \
352   V(dup_asimdins_dv_v)              \
353   V(dup_asisdone_only)              \
354   V(dup_z_i)                        \
355   V(dup_z_r)                        \
356   V(dup_z_zi)                       \
357   V(dupm_z_i)                       \
358   V(eon_32_log_shift)               \
359   V(eon_64_log_shift)               \
360   V(eor3_vvv16_crypto4)             \
361   V(eor3_z_zzz)                     \
362   V(eor_32_log_imm)                 \
363   V(eor_32_log_shift)               \
364   V(eor_64_log_imm)                 \
365   V(eor_64_log_shift)               \
366   V(eor_asimdsame_only)             \
367   V(eor_p_p_pp_z)                   \
368   V(eor_z_p_zz)                     \
369   V(eor_z_zi)                       \
370   V(eor_z_zz)                       \
371   V(eorbt_z_zz)                     \
372   V(eors_p_p_pp_z)                  \
373   V(eortb_z_zz)                     \
374   V(eorv_r_p_z)                     \
375   V(eret_64e_branch_reg)            \
376   V(eretaa_64e_branch_reg)          \
377   V(eretab_64e_branch_reg)          \
378   V(esb_hi_hints)                   \
379   V(ext_asimdext_only)              \
380   V(ext_z_zi_con)                   \
381   V(ext_z_zi_des)                   \
382   V(extr_32_extract)                \
383   V(extr_64_extract)                \
384   V(fabd_asimdsame_only)            \
385   V(fabd_asimdsamefp16_only)        \
386   V(fabd_asisdsame_only)            \
387   V(fabd_asisdsamefp16_only)        \
388   V(fabd_z_p_zz)                    \
389   V(fabs_asimdmisc_r)               \
390   V(fabs_asimdmiscfp16_r)           \
391   V(fabs_d_floatdp1)                \
392   V(fabs_h_floatdp1)                \
393   V(fabs_s_floatdp1)                \
394   V(fabs_z_p_z)                     \
395   V(facge_asimdsame_only)           \
396   V(facge_asimdsamefp16_only)       \
397   V(facge_asisdsame_only)           \
398   V(facge_asisdsamefp16_only)       \
399   V(facge_p_p_zz)                   \
400   V(facgt_asimdsame_only)           \
401   V(facgt_asimdsamefp16_only)       \
402   V(facgt_asisdsame_only)           \
403   V(facgt_asisdsamefp16_only)       \
404   V(facgt_p_p_zz)                   \
405   V(fadd_asimdsame_only)            \
406   V(fadd_asimdsamefp16_only)        \
407   V(fadd_d_floatdp2)                \
408   V(fadd_h_floatdp2)                \
409   V(fadd_s_floatdp2)                \
410   V(fadd_z_p_zs)                    \
411   V(fadd_z_p_zz)                    \
412   V(fadd_z_zz)                      \
413   V(fadda_v_p_z)                    \
414   V(faddp_asimdsame_only)           \
415   V(faddp_asimdsamefp16_only)       \
416   V(faddp_asisdpair_only_h)         \
417   V(faddp_asisdpair_only_sd)        \
418   V(faddp_z_p_zz)                   \
419   V(faddv_v_p_z)                    \
420   V(fcadd_asimdsame2_c)             \
421   V(fcadd_z_p_zz)                   \
422   V(fccmp_d_floatccmp)              \
423   V(fccmp_h_floatccmp)              \
424   V(fccmp_s_floatccmp)              \
425   V(fccmpe_d_floatccmp)             \
426   V(fccmpe_h_floatccmp)             \
427   V(fccmpe_s_floatccmp)             \
428   V(fcmeq_asimdmisc_fz)             \
429   V(fcmeq_asimdmiscfp16_fz)         \
430   V(fcmeq_asimdsame_only)           \
431   V(fcmeq_asimdsamefp16_only)       \
432   V(fcmeq_asisdmisc_fz)             \
433   V(fcmeq_asisdmiscfp16_fz)         \
434   V(fcmeq_asisdsame_only)           \
435   V(fcmeq_asisdsamefp16_only)       \
436   V(fcmeq_p_p_z0)                   \
437   V(fcmeq_p_p_zz)                   \
438   V(fcmge_asimdmisc_fz)             \
439   V(fcmge_asimdmiscfp16_fz)         \
440   V(fcmge_asimdsame_only)           \
441   V(fcmge_asimdsamefp16_only)       \
442   V(fcmge_asisdmisc_fz)             \
443   V(fcmge_asisdmiscfp16_fz)         \
444   V(fcmge_asisdsame_only)           \
445   V(fcmge_asisdsamefp16_only)       \
446   V(fcmge_p_p_z0)                   \
447   V(fcmge_p_p_zz)                   \
448   V(fcmgt_asimdmisc_fz)             \
449   V(fcmgt_asimdmiscfp16_fz)         \
450   V(fcmgt_asimdsame_only)           \
451   V(fcmgt_asimdsamefp16_only)       \
452   V(fcmgt_asisdmisc_fz)             \
453   V(fcmgt_asisdmiscfp16_fz)         \
454   V(fcmgt_asisdsame_only)           \
455   V(fcmgt_asisdsamefp16_only)       \
456   V(fcmgt_p_p_z0)                   \
457   V(fcmgt_p_p_zz)                   \
458   V(fcmla_asimdelem_c_h)            \
459   V(fcmla_asimdelem_c_s)            \
460   V(fcmla_asimdsame2_c)             \
461   V(fcmla_z_p_zzz)                  \
462   V(fcmla_z_zzzi_h)                 \
463   V(fcmla_z_zzzi_s)                 \
464   V(fcmle_asimdmisc_fz)             \
465   V(fcmle_asimdmiscfp16_fz)         \
466   V(fcmle_asisdmisc_fz)             \
467   V(fcmle_asisdmiscfp16_fz)         \
468   V(fcmle_p_p_z0)                   \
469   V(fcmlt_asimdmisc_fz)             \
470   V(fcmlt_asimdmiscfp16_fz)         \
471   V(fcmlt_asisdmisc_fz)             \
472   V(fcmlt_asisdmiscfp16_fz)         \
473   V(fcmlt_p_p_z0)                   \
474   V(fcmne_p_p_z0)                   \
475   V(fcmne_p_p_zz)                   \
476   V(fcmp_d_floatcmp)                \
477   V(fcmp_dz_floatcmp)               \
478   V(fcmp_h_floatcmp)                \
479   V(fcmp_hz_floatcmp)               \
480   V(fcmp_s_floatcmp)                \
481   V(fcmp_sz_floatcmp)               \
482   V(fcmpe_d_floatcmp)               \
483   V(fcmpe_dz_floatcmp)              \
484   V(fcmpe_h_floatcmp)               \
485   V(fcmpe_hz_floatcmp)              \
486   V(fcmpe_s_floatcmp)               \
487   V(fcmpe_sz_floatcmp)              \
488   V(fcmuo_p_p_zz)                   \
489   V(fcpy_z_p_i)                     \
490   V(fcsel_d_floatsel)               \
491   V(fcsel_h_floatsel)               \
492   V(fcsel_s_floatsel)               \
493   V(fcvt_dh_floatdp1)               \
494   V(fcvt_ds_floatdp1)               \
495   V(fcvt_hd_floatdp1)               \
496   V(fcvt_hs_floatdp1)               \
497   V(fcvt_sd_floatdp1)               \
498   V(fcvt_sh_floatdp1)               \
499   V(fcvt_z_p_z_d2h)                 \
500   V(fcvt_z_p_z_d2s)                 \
501   V(fcvt_z_p_z_h2d)                 \
502   V(fcvt_z_p_z_h2s)                 \
503   V(fcvt_z_p_z_s2d)                 \
504   V(fcvt_z_p_z_s2h)                 \
505   V(fcvtas_32d_float2int)           \
506   V(fcvtas_32h_float2int)           \
507   V(fcvtas_32s_float2int)           \
508   V(fcvtas_64d_float2int)           \
509   V(fcvtas_64h_float2int)           \
510   V(fcvtas_64s_float2int)           \
511   V(fcvtas_asimdmisc_r)             \
512   V(fcvtas_asimdmiscfp16_r)         \
513   V(fcvtas_asisdmisc_r)             \
514   V(fcvtas_asisdmiscfp16_r)         \
515   V(fcvtau_32d_float2int)           \
516   V(fcvtau_32h_float2int)           \
517   V(fcvtau_32s_float2int)           \
518   V(fcvtau_64d_float2int)           \
519   V(fcvtau_64h_float2int)           \
520   V(fcvtau_64s_float2int)           \
521   V(fcvtau_asimdmisc_r)             \
522   V(fcvtau_asimdmiscfp16_r)         \
523   V(fcvtau_asisdmisc_r)             \
524   V(fcvtau_asisdmiscfp16_r)         \
525   V(fcvtl_asimdmisc_l)              \
526   V(fcvtlt_z_p_z_h2s)               \
527   V(fcvtlt_z_p_z_s2d)               \
528   V(fcvtms_32d_float2int)           \
529   V(fcvtms_32h_float2int)           \
530   V(fcvtms_32s_float2int)           \
531   V(fcvtms_64d_float2int)           \
532   V(fcvtms_64h_float2int)           \
533   V(fcvtms_64s_float2int)           \
534   V(fcvtms_asimdmisc_r)             \
535   V(fcvtms_asimdmiscfp16_r)         \
536   V(fcvtms_asisdmisc_r)             \
537   V(fcvtms_asisdmiscfp16_r)         \
538   V(fcvtmu_32d_float2int)           \
539   V(fcvtmu_32h_float2int)           \
540   V(fcvtmu_32s_float2int)           \
541   V(fcvtmu_64d_float2int)           \
542   V(fcvtmu_64h_float2int)           \
543   V(fcvtmu_64s_float2int)           \
544   V(fcvtmu_asimdmisc_r)             \
545   V(fcvtmu_asimdmiscfp16_r)         \
546   V(fcvtmu_asisdmisc_r)             \
547   V(fcvtmu_asisdmiscfp16_r)         \
548   V(fcvtn_asimdmisc_n)              \
549   V(fcvtns_32d_float2int)           \
550   V(fcvtns_32h_float2int)           \
551   V(fcvtns_32s_float2int)           \
552   V(fcvtns_64d_float2int)           \
553   V(fcvtns_64h_float2int)           \
554   V(fcvtns_64s_float2int)           \
555   V(fcvtns_asimdmisc_r)             \
556   V(fcvtns_asimdmiscfp16_r)         \
557   V(fcvtns_asisdmisc_r)             \
558   V(fcvtns_asisdmiscfp16_r)         \
559   V(fcvtnt_z_p_z_d2s)               \
560   V(fcvtnt_z_p_z_s2h)               \
561   V(fcvtnu_32d_float2int)           \
562   V(fcvtnu_32h_float2int)           \
563   V(fcvtnu_32s_float2int)           \
564   V(fcvtnu_64d_float2int)           \
565   V(fcvtnu_64h_float2int)           \
566   V(fcvtnu_64s_float2int)           \
567   V(fcvtnu_asimdmisc_r)             \
568   V(fcvtnu_asimdmiscfp16_r)         \
569   V(fcvtnu_asisdmisc_r)             \
570   V(fcvtnu_asisdmiscfp16_r)         \
571   V(fcvtps_32d_float2int)           \
572   V(fcvtps_32h_float2int)           \
573   V(fcvtps_32s_float2int)           \
574   V(fcvtps_64d_float2int)           \
575   V(fcvtps_64h_float2int)           \
576   V(fcvtps_64s_float2int)           \
577   V(fcvtps_asimdmisc_r)             \
578   V(fcvtps_asimdmiscfp16_r)         \
579   V(fcvtps_asisdmisc_r)             \
580   V(fcvtps_asisdmiscfp16_r)         \
581   V(fcvtpu_32d_float2int)           \
582   V(fcvtpu_32h_float2int)           \
583   V(fcvtpu_32s_float2int)           \
584   V(fcvtpu_64d_float2int)           \
585   V(fcvtpu_64h_float2int)           \
586   V(fcvtpu_64s_float2int)           \
587   V(fcvtpu_asimdmisc_r)             \
588   V(fcvtpu_asimdmiscfp16_r)         \
589   V(fcvtpu_asisdmisc_r)             \
590   V(fcvtpu_asisdmiscfp16_r)         \
591   V(fcvtx_z_p_z_d2s)                \
592   V(fcvtxn_asimdmisc_n)             \
593   V(fcvtxn_asisdmisc_n)             \
594   V(fcvtxnt_z_p_z_d2s)              \
595   V(fcvtzs_32d_float2fix)           \
596   V(fcvtzs_32d_float2int)           \
597   V(fcvtzs_32h_float2fix)           \
598   V(fcvtzs_32h_float2int)           \
599   V(fcvtzs_32s_float2fix)           \
600   V(fcvtzs_32s_float2int)           \
601   V(fcvtzs_64d_float2fix)           \
602   V(fcvtzs_64d_float2int)           \
603   V(fcvtzs_64h_float2fix)           \
604   V(fcvtzs_64h_float2int)           \
605   V(fcvtzs_64s_float2fix)           \
606   V(fcvtzs_64s_float2int)           \
607   V(fcvtzs_asimdmisc_r)             \
608   V(fcvtzs_asimdmiscfp16_r)         \
609   V(fcvtzs_asimdshf_c)              \
610   V(fcvtzs_asisdmisc_r)             \
611   V(fcvtzs_asisdmiscfp16_r)         \
612   V(fcvtzs_asisdshf_c)              \
613   V(fcvtzs_z_p_z_d2w)               \
614   V(fcvtzs_z_p_z_d2x)               \
615   V(fcvtzs_z_p_z_fp162h)            \
616   V(fcvtzs_z_p_z_fp162w)            \
617   V(fcvtzs_z_p_z_fp162x)            \
618   V(fcvtzs_z_p_z_s2w)               \
619   V(fcvtzs_z_p_z_s2x)               \
620   V(fcvtzu_32d_float2fix)           \
621   V(fcvtzu_32d_float2int)           \
622   V(fcvtzu_32h_float2fix)           \
623   V(fcvtzu_32h_float2int)           \
624   V(fcvtzu_32s_float2fix)           \
625   V(fcvtzu_32s_float2int)           \
626   V(fcvtzu_64d_float2fix)           \
627   V(fcvtzu_64d_float2int)           \
628   V(fcvtzu_64h_float2fix)           \
629   V(fcvtzu_64h_float2int)           \
630   V(fcvtzu_64s_float2fix)           \
631   V(fcvtzu_64s_float2int)           \
632   V(fcvtzu_asimdmisc_r)             \
633   V(fcvtzu_asimdmiscfp16_r)         \
634   V(fcvtzu_asimdshf_c)              \
635   V(fcvtzu_asisdmisc_r)             \
636   V(fcvtzu_asisdmiscfp16_r)         \
637   V(fcvtzu_asisdshf_c)              \
638   V(fcvtzu_z_p_z_d2w)               \
639   V(fcvtzu_z_p_z_d2x)               \
640   V(fcvtzu_z_p_z_fp162h)            \
641   V(fcvtzu_z_p_z_fp162w)            \
642   V(fcvtzu_z_p_z_fp162x)            \
643   V(fcvtzu_z_p_z_s2w)               \
644   V(fcvtzu_z_p_z_s2x)               \
645   V(fdiv_asimdsame_only)            \
646   V(fdiv_asimdsamefp16_only)        \
647   V(fdiv_d_floatdp2)                \
648   V(fdiv_h_floatdp2)                \
649   V(fdiv_s_floatdp2)                \
650   V(fdiv_z_p_zz)                    \
651   V(fdivr_z_p_zz)                   \
652   V(fdup_z_i)                       \
653   V(fexpa_z_z)                      \
654   V(fjcvtzs_32d_float2int)          \
655   V(flogb_z_p_z)                    \
656   V(fmad_z_p_zzz)                   \
657   V(fmadd_d_floatdp3)               \
658   V(fmadd_h_floatdp3)               \
659   V(fmadd_s_floatdp3)               \
660   V(fmax_asimdsame_only)            \
661   V(fmax_asimdsamefp16_only)        \
662   V(fmax_d_floatdp2)                \
663   V(fmax_h_floatdp2)                \
664   V(fmax_s_floatdp2)                \
665   V(fmax_z_p_zs)                    \
666   V(fmax_z_p_zz)                    \
667   V(fmaxnm_asimdsame_only)          \
668   V(fmaxnm_asimdsamefp16_only)      \
669   V(fmaxnm_d_floatdp2)              \
670   V(fmaxnm_h_floatdp2)              \
671   V(fmaxnm_s_floatdp2)              \
672   V(fmaxnm_z_p_zs)                  \
673   V(fmaxnm_z_p_zz)                  \
674   V(fmaxnmp_asimdsame_only)         \
675   V(fmaxnmp_asimdsamefp16_only)     \
676   V(fmaxnmp_asisdpair_only_h)       \
677   V(fmaxnmp_asisdpair_only_sd)      \
678   V(fmaxnmp_z_p_zz)                 \
679   V(fmaxnmv_asimdall_only_h)        \
680   V(fmaxnmv_asimdall_only_sd)       \
681   V(fmaxnmv_v_p_z)                  \
682   V(fmaxp_asimdsame_only)           \
683   V(fmaxp_asimdsamefp16_only)       \
684   V(fmaxp_asisdpair_only_h)         \
685   V(fmaxp_asisdpair_only_sd)        \
686   V(fmaxp_z_p_zz)                   \
687   V(fmaxv_asimdall_only_h)          \
688   V(fmaxv_asimdall_only_sd)         \
689   V(fmaxv_v_p_z)                    \
690   V(fmin_asimdsame_only)            \
691   V(fmin_asimdsamefp16_only)        \
692   V(fmin_d_floatdp2)                \
693   V(fmin_h_floatdp2)                \
694   V(fmin_s_floatdp2)                \
695   V(fmin_z_p_zs)                    \
696   V(fmin_z_p_zz)                    \
697   V(fminnm_asimdsame_only)          \
698   V(fminnm_asimdsamefp16_only)      \
699   V(fminnm_d_floatdp2)              \
700   V(fminnm_h_floatdp2)              \
701   V(fminnm_s_floatdp2)              \
702   V(fminnm_z_p_zs)                  \
703   V(fminnm_z_p_zz)                  \
704   V(fminnmp_asimdsame_only)         \
705   V(fminnmp_asimdsamefp16_only)     \
706   V(fminnmp_asisdpair_only_h)       \
707   V(fminnmp_asisdpair_only_sd)      \
708   V(fminnmp_z_p_zz)                 \
709   V(fminnmv_asimdall_only_h)        \
710   V(fminnmv_asimdall_only_sd)       \
711   V(fminnmv_v_p_z)                  \
712   V(fminp_asimdsame_only)           \
713   V(fminp_asimdsamefp16_only)       \
714   V(fminp_asisdpair_only_h)         \
715   V(fminp_asisdpair_only_sd)        \
716   V(fminp_z_p_zz)                   \
717   V(fminv_asimdall_only_h)          \
718   V(fminv_asimdall_only_sd)         \
719   V(fminv_v_p_z)                    \
720   V(fmla_asimdelem_r_sd)            \
721   V(fmla_asimdelem_rh_h)            \
722   V(fmla_asimdsame_only)            \
723   V(fmla_asimdsamefp16_only)        \
724   V(fmla_asisdelem_r_sd)            \
725   V(fmla_asisdelem_rh_h)            \
726   V(fmla_z_p_zzz)                   \
727   V(fmla_z_zzzi_d)                  \
728   V(fmla_z_zzzi_h)                  \
729   V(fmla_z_zzzi_s)                  \
730   V(fmlal2_asimdelem_lh)            \
731   V(fmlal2_asimdsame_f)             \
732   V(fmlal_asimdelem_lh)             \
733   V(fmlal_asimdsame_f)              \
734   V(fmlalb_z_zzz)                   \
735   V(fmlalb_z_zzzi_s)                \
736   V(fmlalt_z_zzz)                   \
737   V(fmlalt_z_zzzi_s)                \
738   V(fmls_asimdelem_r_sd)            \
739   V(fmls_asimdelem_rh_h)            \
740   V(fmls_asimdsame_only)            \
741   V(fmls_asimdsamefp16_only)        \
742   V(fmls_asisdelem_r_sd)            \
743   V(fmls_asisdelem_rh_h)            \
744   V(fmls_z_p_zzz)                   \
745   V(fmls_z_zzzi_d)                  \
746   V(fmls_z_zzzi_h)                  \
747   V(fmls_z_zzzi_s)                  \
748   V(fmlsl2_asimdelem_lh)            \
749   V(fmlsl2_asimdsame_f)             \
750   V(fmlsl_asimdelem_lh)             \
751   V(fmlsl_asimdsame_f)              \
752   V(fmlslb_z_zzz)                   \
753   V(fmlslb_z_zzzi_s)                \
754   V(fmlslt_z_zzz)                   \
755   V(fmlslt_z_zzzi_s)                \
756   V(fmmla_z_zzz_d)                  \
757   V(fmmla_z_zzz_s)                  \
758   V(fmov_32h_float2int)             \
759   V(fmov_32s_float2int)             \
760   V(fmov_64d_float2int)             \
761   V(fmov_64h_float2int)             \
762   V(fmov_64vx_float2int)            \
763   V(fmov_asimdimm_d2_d)             \
764   V(fmov_asimdimm_h_h)              \
765   V(fmov_asimdimm_s_s)              \
766   V(fmov_d64_float2int)             \
767   V(fmov_d_floatdp1)                \
768   V(fmov_d_floatimm)                \
769   V(fmov_h32_float2int)             \
770   V(fmov_h64_float2int)             \
771   V(fmov_h_floatdp1)                \
772   V(fmov_h_floatimm)                \
773   V(fmov_s32_float2int)             \
774   V(fmov_s_floatdp1)                \
775   V(fmov_s_floatimm)                \
776   V(fmov_v64i_float2int)            \
777   V(fmsb_z_p_zzz)                   \
778   V(fmsub_d_floatdp3)               \
779   V(fmsub_h_floatdp3)               \
780   V(fmsub_s_floatdp3)               \
781   V(fmul_asimdelem_r_sd)            \
782   V(fmul_asimdelem_rh_h)            \
783   V(fmul_asimdsame_only)            \
784   V(fmul_asimdsamefp16_only)        \
785   V(fmul_asisdelem_r_sd)            \
786   V(fmul_asisdelem_rh_h)            \
787   V(fmul_d_floatdp2)                \
788   V(fmul_h_floatdp2)                \
789   V(fmul_s_floatdp2)                \
790   V(fmul_z_p_zs)                    \
791   V(fmul_z_p_zz)                    \
792   V(fmul_z_zz)                      \
793   V(fmul_z_zzi_d)                   \
794   V(fmul_z_zzi_h)                   \
795   V(fmul_z_zzi_s)                   \
796   V(fmulx_asimdelem_r_sd)           \
797   V(fmulx_asimdelem_rh_h)           \
798   V(fmulx_asimdsame_only)           \
799   V(fmulx_asimdsamefp16_only)       \
800   V(fmulx_asisdelem_r_sd)           \
801   V(fmulx_asisdelem_rh_h)           \
802   V(fmulx_asisdsame_only)           \
803   V(fmulx_asisdsamefp16_only)       \
804   V(fmulx_z_p_zz)                   \
805   V(fneg_asimdmisc_r)               \
806   V(fneg_asimdmiscfp16_r)           \
807   V(fneg_d_floatdp1)                \
808   V(fneg_h_floatdp1)                \
809   V(fneg_s_floatdp1)                \
810   V(fneg_z_p_z)                     \
811   V(fnmad_z_p_zzz)                  \
812   V(fnmadd_d_floatdp3)              \
813   V(fnmadd_h_floatdp3)              \
814   V(fnmadd_s_floatdp3)              \
815   V(fnmla_z_p_zzz)                  \
816   V(fnmls_z_p_zzz)                  \
817   V(fnmsb_z_p_zzz)                  \
818   V(fnmsub_d_floatdp3)              \
819   V(fnmsub_h_floatdp3)              \
820   V(fnmsub_s_floatdp3)              \
821   V(fnmul_d_floatdp2)               \
822   V(fnmul_h_floatdp2)               \
823   V(fnmul_s_floatdp2)               \
824   V(frecpe_asimdmisc_r)             \
825   V(frecpe_asimdmiscfp16_r)         \
826   V(frecpe_asisdmisc_r)             \
827   V(frecpe_asisdmiscfp16_r)         \
828   V(frecpe_z_z)                     \
829   V(frecps_asimdsame_only)          \
830   V(frecps_asimdsamefp16_only)      \
831   V(frecps_asisdsame_only)          \
832   V(frecps_asisdsamefp16_only)      \
833   V(frecps_z_zz)                    \
834   V(frecpx_asisdmisc_r)             \
835   V(frecpx_asisdmiscfp16_r)         \
836   V(frecpx_z_p_z)                   \
837   V(frint32x_asimdmisc_r)           \
838   V(frint32x_d_floatdp1)            \
839   V(frint32x_s_floatdp1)            \
840   V(frint32z_asimdmisc_r)           \
841   V(frint32z_d_floatdp1)            \
842   V(frint32z_s_floatdp1)            \
843   V(frint64x_asimdmisc_r)           \
844   V(frint64x_d_floatdp1)            \
845   V(frint64x_s_floatdp1)            \
846   V(frint64z_asimdmisc_r)           \
847   V(frint64z_d_floatdp1)            \
848   V(frint64z_s_floatdp1)            \
849   V(frinta_asimdmisc_r)             \
850   V(frinta_asimdmiscfp16_r)         \
851   V(frinta_d_floatdp1)              \
852   V(frinta_h_floatdp1)              \
853   V(frinta_s_floatdp1)              \
854   V(frinta_z_p_z)                   \
855   V(frinti_asimdmisc_r)             \
856   V(frinti_asimdmiscfp16_r)         \
857   V(frinti_d_floatdp1)              \
858   V(frinti_h_floatdp1)              \
859   V(frinti_s_floatdp1)              \
860   V(frinti_z_p_z)                   \
861   V(frintm_asimdmisc_r)             \
862   V(frintm_asimdmiscfp16_r)         \
863   V(frintm_d_floatdp1)              \
864   V(frintm_h_floatdp1)              \
865   V(frintm_s_floatdp1)              \
866   V(frintm_z_p_z)                   \
867   V(frintn_asimdmisc_r)             \
868   V(frintn_asimdmiscfp16_r)         \
869   V(frintn_d_floatdp1)              \
870   V(frintn_h_floatdp1)              \
871   V(frintn_s_floatdp1)              \
872   V(frintn_z_p_z)                   \
873   V(frintp_asimdmisc_r)             \
874   V(frintp_asimdmiscfp16_r)         \
875   V(frintp_d_floatdp1)              \
876   V(frintp_h_floatdp1)              \
877   V(frintp_s_floatdp1)              \
878   V(frintp_z_p_z)                   \
879   V(frintx_asimdmisc_r)             \
880   V(frintx_asimdmiscfp16_r)         \
881   V(frintx_d_floatdp1)              \
882   V(frintx_h_floatdp1)              \
883   V(frintx_s_floatdp1)              \
884   V(frintx_z_p_z)                   \
885   V(frintz_asimdmisc_r)             \
886   V(frintz_asimdmiscfp16_r)         \
887   V(frintz_d_floatdp1)              \
888   V(frintz_h_floatdp1)              \
889   V(frintz_s_floatdp1)              \
890   V(frintz_z_p_z)                   \
891   V(frsqrte_asimdmisc_r)            \
892   V(frsqrte_asimdmiscfp16_r)        \
893   V(frsqrte_asisdmisc_r)            \
894   V(frsqrte_asisdmiscfp16_r)        \
895   V(frsqrte_z_z)                    \
896   V(frsqrts_asimdsame_only)         \
897   V(frsqrts_asimdsamefp16_only)     \
898   V(frsqrts_asisdsame_only)         \
899   V(frsqrts_asisdsamefp16_only)     \
900   V(frsqrts_z_zz)                   \
901   V(fscale_z_p_zz)                  \
902   V(fsqrt_asimdmisc_r)              \
903   V(fsqrt_asimdmiscfp16_r)          \
904   V(fsqrt_d_floatdp1)               \
905   V(fsqrt_h_floatdp1)               \
906   V(fsqrt_s_floatdp1)               \
907   V(fsqrt_z_p_z)                    \
908   V(fsub_asimdsame_only)            \
909   V(fsub_asimdsamefp16_only)        \
910   V(fsub_d_floatdp2)                \
911   V(fsub_h_floatdp2)                \
912   V(fsub_s_floatdp2)                \
913   V(fsub_z_p_zs)                    \
914   V(fsub_z_p_zz)                    \
915   V(fsub_z_zz)                      \
916   V(fsubr_z_p_zs)                   \
917   V(fsubr_z_p_zz)                   \
918   V(ftmad_z_zzi)                    \
919   V(ftsmul_z_zz)                    \
920   V(ftssel_z_zz)                    \
921   V(gmi_64g_dp_2src)                \
922   V(hint_hm_hints)                  \
923   V(histcnt_z_p_zz)                 \
924   V(histseg_z_zz)                   \
925   V(hlt_ex_exception)               \
926   V(hvc_ex_exception)               \
927   V(incb_r_rs)                      \
928   V(incd_r_rs)                      \
929   V(incd_z_zs)                      \
930   V(inch_r_rs)                      \
931   V(inch_z_zs)                      \
932   V(incp_r_p_r)                     \
933   V(incp_z_p_z)                     \
934   V(incw_r_rs)                      \
935   V(incw_z_zs)                      \
936   V(index_z_ii)                     \
937   V(index_z_ir)                     \
938   V(index_z_ri)                     \
939   V(index_z_rr)                     \
940   V(ins_asimdins_ir_r)              \
941   V(ins_asimdins_iv_v)              \
942   V(insr_z_r)                       \
943   V(insr_z_v)                       \
944   V(irg_64i_dp_2src)                \
945   V(isb_bi_barriers)                \
946   V(lasta_r_p_z)                    \
947   V(lasta_v_p_z)                    \
948   V(lastb_r_p_z)                    \
949   V(lastb_v_p_z)                    \
950   V(ld1_asisdlse_r1_1v)             \
951   V(ld1_asisdlse_r2_2v)             \
952   V(ld1_asisdlse_r3_3v)             \
953   V(ld1_asisdlse_r4_4v)             \
954   V(ld1_asisdlsep_i1_i1)            \
955   V(ld1_asisdlsep_i2_i2)            \
956   V(ld1_asisdlsep_i3_i3)            \
957   V(ld1_asisdlsep_i4_i4)            \
958   V(ld1_asisdlsep_r1_r1)            \
959   V(ld1_asisdlsep_r2_r2)            \
960   V(ld1_asisdlsep_r3_r3)            \
961   V(ld1_asisdlsep_r4_r4)            \
962   V(ld1_asisdlso_b1_1b)             \
963   V(ld1_asisdlso_d1_1d)             \
964   V(ld1_asisdlso_h1_1h)             \
965   V(ld1_asisdlso_s1_1s)             \
966   V(ld1_asisdlsop_b1_i1b)           \
967   V(ld1_asisdlsop_bx1_r1b)          \
968   V(ld1_asisdlsop_d1_i1d)           \
969   V(ld1_asisdlsop_dx1_r1d)          \
970   V(ld1_asisdlsop_h1_i1h)           \
971   V(ld1_asisdlsop_hx1_r1h)          \
972   V(ld1_asisdlsop_s1_i1s)           \
973   V(ld1_asisdlsop_sx1_r1s)          \
974   V(ld1b_z_p_ai_d)                  \
975   V(ld1b_z_p_ai_s)                  \
976   V(ld1b_z_p_bi_u16)                \
977   V(ld1b_z_p_bi_u32)                \
978   V(ld1b_z_p_bi_u64)                \
979   V(ld1b_z_p_bi_u8)                 \
980   V(ld1b_z_p_br_u16)                \
981   V(ld1b_z_p_br_u32)                \
982   V(ld1b_z_p_br_u64)                \
983   V(ld1b_z_p_br_u8)                 \
984   V(ld1b_z_p_bz_d_64_unscaled)      \
985   V(ld1b_z_p_bz_d_x32_unscaled)     \
986   V(ld1b_z_p_bz_s_x32_unscaled)     \
987   V(ld1d_z_p_ai_d)                  \
988   V(ld1d_z_p_bi_u64)                \
989   V(ld1d_z_p_br_u64)                \
990   V(ld1d_z_p_bz_d_64_scaled)        \
991   V(ld1d_z_p_bz_d_64_unscaled)      \
992   V(ld1d_z_p_bz_d_x32_scaled)       \
993   V(ld1d_z_p_bz_d_x32_unscaled)     \
994   V(ld1h_z_p_ai_d)                  \
995   V(ld1h_z_p_ai_s)                  \
996   V(ld1h_z_p_bi_u16)                \
997   V(ld1h_z_p_bi_u32)                \
998   V(ld1h_z_p_bi_u64)                \
999   V(ld1h_z_p_br_u16)                \
1000   V(ld1h_z_p_br_u32)                \
1001   V(ld1h_z_p_br_u64)                \
1002   V(ld1h_z_p_bz_d_64_scaled)        \
1003   V(ld1h_z_p_bz_d_64_unscaled)      \
1004   V(ld1h_z_p_bz_d_x32_scaled)       \
1005   V(ld1h_z_p_bz_d_x32_unscaled)     \
1006   V(ld1h_z_p_bz_s_x32_scaled)       \
1007   V(ld1h_z_p_bz_s_x32_unscaled)     \
1008   V(ld1r_asisdlso_r1)               \
1009   V(ld1r_asisdlsop_r1_i)            \
1010   V(ld1r_asisdlsop_rx1_r)           \
1011   V(ld1rb_z_p_bi_u16)               \
1012   V(ld1rb_z_p_bi_u32)               \
1013   V(ld1rb_z_p_bi_u64)               \
1014   V(ld1rb_z_p_bi_u8)                \
1015   V(ld1rd_z_p_bi_u64)               \
1016   V(ld1rh_z_p_bi_u16)               \
1017   V(ld1rh_z_p_bi_u32)               \
1018   V(ld1rh_z_p_bi_u64)               \
1019   V(ld1rob_z_p_bi_u8)               \
1020   V(ld1rob_z_p_br_contiguous)       \
1021   V(ld1rod_z_p_bi_u64)              \
1022   V(ld1rod_z_p_br_contiguous)       \
1023   V(ld1roh_z_p_bi_u16)              \
1024   V(ld1roh_z_p_br_contiguous)       \
1025   V(ld1row_z_p_bi_u32)              \
1026   V(ld1row_z_p_br_contiguous)       \
1027   V(ld1rqb_z_p_bi_u8)               \
1028   V(ld1rqb_z_p_br_contiguous)       \
1029   V(ld1rqd_z_p_bi_u64)              \
1030   V(ld1rqd_z_p_br_contiguous)       \
1031   V(ld1rqh_z_p_bi_u16)              \
1032   V(ld1rqh_z_p_br_contiguous)       \
1033   V(ld1rqw_z_p_bi_u32)              \
1034   V(ld1rqw_z_p_br_contiguous)       \
1035   V(ld1rsb_z_p_bi_s16)              \
1036   V(ld1rsb_z_p_bi_s32)              \
1037   V(ld1rsb_z_p_bi_s64)              \
1038   V(ld1rsh_z_p_bi_s32)              \
1039   V(ld1rsh_z_p_bi_s64)              \
1040   V(ld1rsw_z_p_bi_s64)              \
1041   V(ld1rw_z_p_bi_u32)               \
1042   V(ld1rw_z_p_bi_u64)               \
1043   V(ld1sb_z_p_ai_d)                 \
1044   V(ld1sb_z_p_ai_s)                 \
1045   V(ld1sb_z_p_bi_s16)               \
1046   V(ld1sb_z_p_bi_s32)               \
1047   V(ld1sb_z_p_bi_s64)               \
1048   V(ld1sb_z_p_br_s16)               \
1049   V(ld1sb_z_p_br_s32)               \
1050   V(ld1sb_z_p_br_s64)               \
1051   V(ld1sb_z_p_bz_d_64_unscaled)     \
1052   V(ld1sb_z_p_bz_d_x32_unscaled)    \
1053   V(ld1sb_z_p_bz_s_x32_unscaled)    \
1054   V(ld1sh_z_p_ai_d)                 \
1055   V(ld1sh_z_p_ai_s)                 \
1056   V(ld1sh_z_p_bi_s32)               \
1057   V(ld1sh_z_p_bi_s64)               \
1058   V(ld1sh_z_p_br_s32)               \
1059   V(ld1sh_z_p_br_s64)               \
1060   V(ld1sh_z_p_bz_d_64_scaled)       \
1061   V(ld1sh_z_p_bz_d_64_unscaled)     \
1062   V(ld1sh_z_p_bz_d_x32_scaled)      \
1063   V(ld1sh_z_p_bz_d_x32_unscaled)    \
1064   V(ld1sh_z_p_bz_s_x32_scaled)      \
1065   V(ld1sh_z_p_bz_s_x32_unscaled)    \
1066   V(ld1sw_z_p_ai_d)                 \
1067   V(ld1sw_z_p_bi_s64)               \
1068   V(ld1sw_z_p_br_s64)               \
1069   V(ld1sw_z_p_bz_d_64_scaled)       \
1070   V(ld1sw_z_p_bz_d_64_unscaled)     \
1071   V(ld1sw_z_p_bz_d_x32_scaled)      \
1072   V(ld1sw_z_p_bz_d_x32_unscaled)    \
1073   V(ld1w_z_p_ai_d)                  \
1074   V(ld1w_z_p_ai_s)                  \
1075   V(ld1w_z_p_bi_u32)                \
1076   V(ld1w_z_p_bi_u64)                \
1077   V(ld1w_z_p_br_u32)                \
1078   V(ld1w_z_p_br_u64)                \
1079   V(ld1w_z_p_bz_d_64_scaled)        \
1080   V(ld1w_z_p_bz_d_64_unscaled)      \
1081   V(ld1w_z_p_bz_d_x32_scaled)       \
1082   V(ld1w_z_p_bz_d_x32_unscaled)     \
1083   V(ld1w_z_p_bz_s_x32_scaled)       \
1084   V(ld1w_z_p_bz_s_x32_unscaled)     \
1085   V(ld2_asisdlse_r2)                \
1086   V(ld2_asisdlsep_i2_i)             \
1087   V(ld2_asisdlsep_r2_r)             \
1088   V(ld2_asisdlso_b2_2b)             \
1089   V(ld2_asisdlso_d2_2d)             \
1090   V(ld2_asisdlso_h2_2h)             \
1091   V(ld2_asisdlso_s2_2s)             \
1092   V(ld2_asisdlsop_b2_i2b)           \
1093   V(ld2_asisdlsop_bx2_r2b)          \
1094   V(ld2_asisdlsop_d2_i2d)           \
1095   V(ld2_asisdlsop_dx2_r2d)          \
1096   V(ld2_asisdlsop_h2_i2h)           \
1097   V(ld2_asisdlsop_hx2_r2h)          \
1098   V(ld2_asisdlsop_s2_i2s)           \
1099   V(ld2_asisdlsop_sx2_r2s)          \
1100   V(ld2b_z_p_bi_contiguous)         \
1101   V(ld2b_z_p_br_contiguous)         \
1102   V(ld2d_z_p_bi_contiguous)         \
1103   V(ld2d_z_p_br_contiguous)         \
1104   V(ld2h_z_p_bi_contiguous)         \
1105   V(ld2h_z_p_br_contiguous)         \
1106   V(ld2r_asisdlso_r2)               \
1107   V(ld2r_asisdlsop_r2_i)            \
1108   V(ld2r_asisdlsop_rx2_r)           \
1109   V(ld2w_z_p_bi_contiguous)         \
1110   V(ld2w_z_p_br_contiguous)         \
1111   V(ld3_asisdlse_r3)                \
1112   V(ld3_asisdlsep_i3_i)             \
1113   V(ld3_asisdlsep_r3_r)             \
1114   V(ld3_asisdlso_b3_3b)             \
1115   V(ld3_asisdlso_d3_3d)             \
1116   V(ld3_asisdlso_h3_3h)             \
1117   V(ld3_asisdlso_s3_3s)             \
1118   V(ld3_asisdlsop_b3_i3b)           \
1119   V(ld3_asisdlsop_bx3_r3b)          \
1120   V(ld3_asisdlsop_d3_i3d)           \
1121   V(ld3_asisdlsop_dx3_r3d)          \
1122   V(ld3_asisdlsop_h3_i3h)           \
1123   V(ld3_asisdlsop_hx3_r3h)          \
1124   V(ld3_asisdlsop_s3_i3s)           \
1125   V(ld3_asisdlsop_sx3_r3s)          \
1126   V(ld3b_z_p_bi_contiguous)         \
1127   V(ld3b_z_p_br_contiguous)         \
1128   V(ld3d_z_p_bi_contiguous)         \
1129   V(ld3d_z_p_br_contiguous)         \
1130   V(ld3h_z_p_bi_contiguous)         \
1131   V(ld3h_z_p_br_contiguous)         \
1132   V(ld3r_asisdlso_r3)               \
1133   V(ld3r_asisdlsop_r3_i)            \
1134   V(ld3r_asisdlsop_rx3_r)           \
1135   V(ld3w_z_p_bi_contiguous)         \
1136   V(ld3w_z_p_br_contiguous)         \
1137   V(ld4_asisdlse_r4)                \
1138   V(ld4_asisdlsep_i4_i)             \
1139   V(ld4_asisdlsep_r4_r)             \
1140   V(ld4_asisdlso_b4_4b)             \
1141   V(ld4_asisdlso_d4_4d)             \
1142   V(ld4_asisdlso_h4_4h)             \
1143   V(ld4_asisdlso_s4_4s)             \
1144   V(ld4_asisdlsop_b4_i4b)           \
1145   V(ld4_asisdlsop_bx4_r4b)          \
1146   V(ld4_asisdlsop_d4_i4d)           \
1147   V(ld4_asisdlsop_dx4_r4d)          \
1148   V(ld4_asisdlsop_h4_i4h)           \
1149   V(ld4_asisdlsop_hx4_r4h)          \
1150   V(ld4_asisdlsop_s4_i4s)           \
1151   V(ld4_asisdlsop_sx4_r4s)          \
1152   V(ld4b_z_p_bi_contiguous)         \
1153   V(ld4b_z_p_br_contiguous)         \
1154   V(ld4d_z_p_bi_contiguous)         \
1155   V(ld4d_z_p_br_contiguous)         \
1156   V(ld4h_z_p_bi_contiguous)         \
1157   V(ld4h_z_p_br_contiguous)         \
1158   V(ld4r_asisdlso_r4)               \
1159   V(ld4r_asisdlsop_r4_i)            \
1160   V(ld4r_asisdlsop_rx4_r)           \
1161   V(ld4w_z_p_bi_contiguous)         \
1162   V(ld4w_z_p_br_contiguous)         \
1163   V(ld64b_64l_memop)                \
1164   V(ldadd_32_memop)                 \
1165   V(ldadd_64_memop)                 \
1166   V(ldadda_32_memop)                \
1167   V(ldadda_64_memop)                \
1168   V(ldaddab_32_memop)               \
1169   V(ldaddah_32_memop)               \
1170   V(ldaddal_32_memop)               \
1171   V(ldaddal_64_memop)               \
1172   V(ldaddalb_32_memop)              \
1173   V(ldaddalh_32_memop)              \
1174   V(ldaddb_32_memop)                \
1175   V(ldaddh_32_memop)                \
1176   V(ldaddl_32_memop)                \
1177   V(ldaddl_64_memop)                \
1178   V(ldaddlb_32_memop)               \
1179   V(ldaddlh_32_memop)               \
1180   V(ldapr_32l_memop)                \
1181   V(ldapr_64l_memop)                \
1182   V(ldaprb_32l_memop)               \
1183   V(ldaprh_32l_memop)               \
1184   V(ldapur_32_ldapstl_unscaled)     \
1185   V(ldapur_64_ldapstl_unscaled)     \
1186   V(ldapurb_32_ldapstl_unscaled)    \
1187   V(ldapurh_32_ldapstl_unscaled)    \
1188   V(ldapursb_32_ldapstl_unscaled)   \
1189   V(ldapursb_64_ldapstl_unscaled)   \
1190   V(ldapursh_32_ldapstl_unscaled)   \
1191   V(ldapursh_64_ldapstl_unscaled)   \
1192   V(ldapursw_64_ldapstl_unscaled)   \
1193   V(ldar_lr32_ldstexcl)             \
1194   V(ldar_lr64_ldstexcl)             \
1195   V(ldarb_lr32_ldstexcl)            \
1196   V(ldarh_lr32_ldstexcl)            \
1197   V(ldaxp_lp32_ldstexcl)            \
1198   V(ldaxp_lp64_ldstexcl)            \
1199   V(ldaxr_lr32_ldstexcl)            \
1200   V(ldaxr_lr64_ldstexcl)            \
1201   V(ldaxrb_lr32_ldstexcl)           \
1202   V(ldaxrh_lr32_ldstexcl)           \
1203   V(ldclr_32_memop)                 \
1204   V(ldclr_64_memop)                 \
1205   V(ldclra_32_memop)                \
1206   V(ldclra_64_memop)                \
1207   V(ldclrab_32_memop)               \
1208   V(ldclrah_32_memop)               \
1209   V(ldclral_32_memop)               \
1210   V(ldclral_64_memop)               \
1211   V(ldclralb_32_memop)              \
1212   V(ldclralh_32_memop)              \
1213   V(ldclrb_32_memop)                \
1214   V(ldclrh_32_memop)                \
1215   V(ldclrl_32_memop)                \
1216   V(ldclrl_64_memop)                \
1217   V(ldclrlb_32_memop)               \
1218   V(ldclrlh_32_memop)               \
1219   V(ldeor_32_memop)                 \
1220   V(ldeor_64_memop)                 \
1221   V(ldeora_32_memop)                \
1222   V(ldeora_64_memop)                \
1223   V(ldeorab_32_memop)               \
1224   V(ldeorah_32_memop)               \
1225   V(ldeoral_32_memop)               \
1226   V(ldeoral_64_memop)               \
1227   V(ldeoralb_32_memop)              \
1228   V(ldeoralh_32_memop)              \
1229   V(ldeorb_32_memop)                \
1230   V(ldeorh_32_memop)                \
1231   V(ldeorl_32_memop)                \
1232   V(ldeorl_64_memop)                \
1233   V(ldeorlb_32_memop)               \
1234   V(ldeorlh_32_memop)               \
1235   V(ldff1b_z_p_ai_d)                \
1236   V(ldff1b_z_p_ai_s)                \
1237   V(ldff1b_z_p_br_u16)              \
1238   V(ldff1b_z_p_br_u32)              \
1239   V(ldff1b_z_p_br_u64)              \
1240   V(ldff1b_z_p_br_u8)               \
1241   V(ldff1b_z_p_bz_d_64_unscaled)    \
1242   V(ldff1b_z_p_bz_d_x32_unscaled)   \
1243   V(ldff1b_z_p_bz_s_x32_unscaled)   \
1244   V(ldff1d_z_p_ai_d)                \
1245   V(ldff1d_z_p_br_u64)              \
1246   V(ldff1d_z_p_bz_d_64_scaled)      \
1247   V(ldff1d_z_p_bz_d_64_unscaled)    \
1248   V(ldff1d_z_p_bz_d_x32_scaled)     \
1249   V(ldff1d_z_p_bz_d_x32_unscaled)   \
1250   V(ldff1h_z_p_ai_d)                \
1251   V(ldff1h_z_p_ai_s)                \
1252   V(ldff1h_z_p_br_u16)              \
1253   V(ldff1h_z_p_br_u32)              \
1254   V(ldff1h_z_p_br_u64)              \
1255   V(ldff1h_z_p_bz_d_64_scaled)      \
1256   V(ldff1h_z_p_bz_d_64_unscaled)    \
1257   V(ldff1h_z_p_bz_d_x32_scaled)     \
1258   V(ldff1h_z_p_bz_d_x32_unscaled)   \
1259   V(ldff1h_z_p_bz_s_x32_scaled)     \
1260   V(ldff1h_z_p_bz_s_x32_unscaled)   \
1261   V(ldff1sb_z_p_ai_d)               \
1262   V(ldff1sb_z_p_ai_s)               \
1263   V(ldff1sb_z_p_br_s16)             \
1264   V(ldff1sb_z_p_br_s32)             \
1265   V(ldff1sb_z_p_br_s64)             \
1266   V(ldff1sb_z_p_bz_d_64_unscaled)   \
1267   V(ldff1sb_z_p_bz_d_x32_unscaled)  \
1268   V(ldff1sb_z_p_bz_s_x32_unscaled)  \
1269   V(ldff1sh_z_p_ai_d)               \
1270   V(ldff1sh_z_p_ai_s)               \
1271   V(ldff1sh_z_p_br_s32)             \
1272   V(ldff1sh_z_p_br_s64)             \
1273   V(ldff1sh_z_p_bz_d_64_scaled)     \
1274   V(ldff1sh_z_p_bz_d_64_unscaled)   \
1275   V(ldff1sh_z_p_bz_d_x32_scaled)    \
1276   V(ldff1sh_z_p_bz_d_x32_unscaled)  \
1277   V(ldff1sh_z_p_bz_s_x32_scaled)    \
1278   V(ldff1sh_z_p_bz_s_x32_unscaled)  \
1279   V(ldff1sw_z_p_ai_d)               \
1280   V(ldff1sw_z_p_br_s64)             \
1281   V(ldff1sw_z_p_bz_d_64_scaled)     \
1282   V(ldff1sw_z_p_bz_d_64_unscaled)   \
1283   V(ldff1sw_z_p_bz_d_x32_scaled)    \
1284   V(ldff1sw_z_p_bz_d_x32_unscaled)  \
1285   V(ldff1w_z_p_ai_d)                \
1286   V(ldff1w_z_p_ai_s)                \
1287   V(ldff1w_z_p_br_u32)              \
1288   V(ldff1w_z_p_br_u64)              \
1289   V(ldff1w_z_p_bz_d_64_scaled)      \
1290   V(ldff1w_z_p_bz_d_64_unscaled)    \
1291   V(ldff1w_z_p_bz_d_x32_scaled)     \
1292   V(ldff1w_z_p_bz_d_x32_unscaled)   \
1293   V(ldff1w_z_p_bz_s_x32_scaled)     \
1294   V(ldff1w_z_p_bz_s_x32_unscaled)   \
1295   V(ldg_64loffset_ldsttags)         \
1296   V(ldgm_64bulk_ldsttags)           \
1297   V(ldlar_lr32_ldstexcl)            \
1298   V(ldlar_lr64_ldstexcl)            \
1299   V(ldlarb_lr32_ldstexcl)           \
1300   V(ldlarh_lr32_ldstexcl)           \
1301   V(ldnf1b_z_p_bi_u16)              \
1302   V(ldnf1b_z_p_bi_u32)              \
1303   V(ldnf1b_z_p_bi_u64)              \
1304   V(ldnf1b_z_p_bi_u8)               \
1305   V(ldnf1d_z_p_bi_u64)              \
1306   V(ldnf1h_z_p_bi_u16)              \
1307   V(ldnf1h_z_p_bi_u32)              \
1308   V(ldnf1h_z_p_bi_u64)              \
1309   V(ldnf1sb_z_p_bi_s16)             \
1310   V(ldnf1sb_z_p_bi_s32)             \
1311   V(ldnf1sb_z_p_bi_s64)             \
1312   V(ldnf1sh_z_p_bi_s32)             \
1313   V(ldnf1sh_z_p_bi_s64)             \
1314   V(ldnf1sw_z_p_bi_s64)             \
1315   V(ldnf1w_z_p_bi_u32)              \
1316   V(ldnf1w_z_p_bi_u64)              \
1317   V(ldnp_32_ldstnapair_offs)        \
1318   V(ldnp_64_ldstnapair_offs)        \
1319   V(ldnp_d_ldstnapair_offs)         \
1320   V(ldnp_q_ldstnapair_offs)         \
1321   V(ldnp_s_ldstnapair_offs)         \
1322   V(ldnt1b_z_p_ar_d_64_unscaled)    \
1323   V(ldnt1b_z_p_ar_s_x32_unscaled)   \
1324   V(ldnt1b_z_p_bi_contiguous)       \
1325   V(ldnt1b_z_p_br_contiguous)       \
1326   V(ldnt1d_z_p_ar_d_64_unscaled)    \
1327   V(ldnt1d_z_p_bi_contiguous)       \
1328   V(ldnt1d_z_p_br_contiguous)       \
1329   V(ldnt1h_z_p_ar_d_64_unscaled)    \
1330   V(ldnt1h_z_p_ar_s_x32_unscaled)   \
1331   V(ldnt1h_z_p_bi_contiguous)       \
1332   V(ldnt1h_z_p_br_contiguous)       \
1333   V(ldnt1sb_z_p_ar_d_64_unscaled)   \
1334   V(ldnt1sb_z_p_ar_s_x32_unscaled)  \
1335   V(ldnt1sh_z_p_ar_d_64_unscaled)   \
1336   V(ldnt1sh_z_p_ar_s_x32_unscaled)  \
1337   V(ldnt1sw_z_p_ar_d_64_unscaled)   \
1338   V(ldnt1w_z_p_ar_d_64_unscaled)    \
1339   V(ldnt1w_z_p_ar_s_x32_unscaled)   \
1340   V(ldnt1w_z_p_bi_contiguous)       \
1341   V(ldnt1w_z_p_br_contiguous)       \
1342   V(ldp_32_ldstpair_off)            \
1343   V(ldp_32_ldstpair_post)           \
1344   V(ldp_32_ldstpair_pre)            \
1345   V(ldp_64_ldstpair_off)            \
1346   V(ldp_64_ldstpair_post)           \
1347   V(ldp_64_ldstpair_pre)            \
1348   V(ldp_d_ldstpair_off)             \
1349   V(ldp_d_ldstpair_post)            \
1350   V(ldp_d_ldstpair_pre)             \
1351   V(ldp_q_ldstpair_off)             \
1352   V(ldp_q_ldstpair_post)            \
1353   V(ldp_q_ldstpair_pre)             \
1354   V(ldp_s_ldstpair_off)             \
1355   V(ldp_s_ldstpair_post)            \
1356   V(ldp_s_ldstpair_pre)             \
1357   V(ldpsw_64_ldstpair_off)          \
1358   V(ldpsw_64_ldstpair_post)         \
1359   V(ldpsw_64_ldstpair_pre)          \
1360   V(ldr_32_ldst_immpost)            \
1361   V(ldr_32_ldst_immpre)             \
1362   V(ldr_32_ldst_pos)                \
1363   V(ldr_32_ldst_regoff)             \
1364   V(ldr_32_loadlit)                 \
1365   V(ldr_64_ldst_immpost)            \
1366   V(ldr_64_ldst_immpre)             \
1367   V(ldr_64_ldst_pos)                \
1368   V(ldr_64_ldst_regoff)             \
1369   V(ldr_64_loadlit)                 \
1370   V(ldr_b_ldst_immpost)             \
1371   V(ldr_b_ldst_immpre)              \
1372   V(ldr_b_ldst_pos)                 \
1373   V(ldr_b_ldst_regoff)              \
1374   V(ldr_bl_ldst_regoff)             \
1375   V(ldr_d_ldst_immpost)             \
1376   V(ldr_d_ldst_immpre)              \
1377   V(ldr_d_ldst_pos)                 \
1378   V(ldr_d_ldst_regoff)              \
1379   V(ldr_d_loadlit)                  \
1380   V(ldr_h_ldst_immpost)             \
1381   V(ldr_h_ldst_immpre)              \
1382   V(ldr_h_ldst_pos)                 \
1383   V(ldr_h_ldst_regoff)              \
1384   V(ldr_p_bi)                       \
1385   V(ldr_q_ldst_immpost)             \
1386   V(ldr_q_ldst_immpre)              \
1387   V(ldr_q_ldst_pos)                 \
1388   V(ldr_q_ldst_regoff)              \
1389   V(ldr_q_loadlit)                  \
1390   V(ldr_s_ldst_immpost)             \
1391   V(ldr_s_ldst_immpre)              \
1392   V(ldr_s_ldst_pos)                 \
1393   V(ldr_s_ldst_regoff)              \
1394   V(ldr_s_loadlit)                  \
1395   V(ldr_z_bi)                       \
1396   V(ldraa_64_ldst_pac)              \
1397   V(ldraa_64w_ldst_pac)             \
1398   V(ldrab_64_ldst_pac)              \
1399   V(ldrab_64w_ldst_pac)             \
1400   V(ldrb_32_ldst_immpost)           \
1401   V(ldrb_32_ldst_immpre)            \
1402   V(ldrb_32_ldst_pos)               \
1403   V(ldrb_32b_ldst_regoff)           \
1404   V(ldrb_32bl_ldst_regoff)          \
1405   V(ldrh_32_ldst_immpost)           \
1406   V(ldrh_32_ldst_immpre)            \
1407   V(ldrh_32_ldst_pos)               \
1408   V(ldrh_32_ldst_regoff)            \
1409   V(ldrsb_32_ldst_immpost)          \
1410   V(ldrsb_32_ldst_immpre)           \
1411   V(ldrsb_32_ldst_pos)              \
1412   V(ldrsb_32b_ldst_regoff)          \
1413   V(ldrsb_32bl_ldst_regoff)         \
1414   V(ldrsb_64_ldst_immpost)          \
1415   V(ldrsb_64_ldst_immpre)           \
1416   V(ldrsb_64_ldst_pos)              \
1417   V(ldrsb_64b_ldst_regoff)          \
1418   V(ldrsb_64bl_ldst_regoff)         \
1419   V(ldrsh_32_ldst_immpost)          \
1420   V(ldrsh_32_ldst_immpre)           \
1421   V(ldrsh_32_ldst_pos)              \
1422   V(ldrsh_32_ldst_regoff)           \
1423   V(ldrsh_64_ldst_immpost)          \
1424   V(ldrsh_64_ldst_immpre)           \
1425   V(ldrsh_64_ldst_pos)              \
1426   V(ldrsh_64_ldst_regoff)           \
1427   V(ldrsw_64_ldst_immpost)          \
1428   V(ldrsw_64_ldst_immpre)           \
1429   V(ldrsw_64_ldst_pos)              \
1430   V(ldrsw_64_ldst_regoff)           \
1431   V(ldrsw_64_loadlit)               \
1432   V(ldset_32_memop)                 \
1433   V(ldset_64_memop)                 \
1434   V(ldseta_32_memop)                \
1435   V(ldseta_64_memop)                \
1436   V(ldsetab_32_memop)               \
1437   V(ldsetah_32_memop)               \
1438   V(ldsetal_32_memop)               \
1439   V(ldsetal_64_memop)               \
1440   V(ldsetalb_32_memop)              \
1441   V(ldsetalh_32_memop)              \
1442   V(ldsetb_32_memop)                \
1443   V(ldseth_32_memop)                \
1444   V(ldsetl_32_memop)                \
1445   V(ldsetl_64_memop)                \
1446   V(ldsetlb_32_memop)               \
1447   V(ldsetlh_32_memop)               \
1448   V(ldsmax_32_memop)                \
1449   V(ldsmax_64_memop)                \
1450   V(ldsmaxa_32_memop)               \
1451   V(ldsmaxa_64_memop)               \
1452   V(ldsmaxab_32_memop)              \
1453   V(ldsmaxah_32_memop)              \
1454   V(ldsmaxal_32_memop)              \
1455   V(ldsmaxal_64_memop)              \
1456   V(ldsmaxalb_32_memop)             \
1457   V(ldsmaxalh_32_memop)             \
1458   V(ldsmaxb_32_memop)               \
1459   V(ldsmaxh_32_memop)               \
1460   V(ldsmaxl_32_memop)               \
1461   V(ldsmaxl_64_memop)               \
1462   V(ldsmaxlb_32_memop)              \
1463   V(ldsmaxlh_32_memop)              \
1464   V(ldsmin_32_memop)                \
1465   V(ldsmin_64_memop)                \
1466   V(ldsmina_32_memop)               \
1467   V(ldsmina_64_memop)               \
1468   V(ldsminab_32_memop)              \
1469   V(ldsminah_32_memop)              \
1470   V(ldsminal_32_memop)              \
1471   V(ldsminal_64_memop)              \
1472   V(ldsminalb_32_memop)             \
1473   V(ldsminalh_32_memop)             \
1474   V(ldsminb_32_memop)               \
1475   V(ldsminh_32_memop)               \
1476   V(ldsminl_32_memop)               \
1477   V(ldsminl_64_memop)               \
1478   V(ldsminlb_32_memop)              \
1479   V(ldsminlh_32_memop)              \
1480   V(ldtr_32_ldst_unpriv)            \
1481   V(ldtr_64_ldst_unpriv)            \
1482   V(ldtrb_32_ldst_unpriv)           \
1483   V(ldtrh_32_ldst_unpriv)           \
1484   V(ldtrsb_32_ldst_unpriv)          \
1485   V(ldtrsb_64_ldst_unpriv)          \
1486   V(ldtrsh_32_ldst_unpriv)          \
1487   V(ldtrsh_64_ldst_unpriv)          \
1488   V(ldtrsw_64_ldst_unpriv)          \
1489   V(ldumax_32_memop)                \
1490   V(ldumax_64_memop)                \
1491   V(ldumaxa_32_memop)               \
1492   V(ldumaxa_64_memop)               \
1493   V(ldumaxab_32_memop)              \
1494   V(ldumaxah_32_memop)              \
1495   V(ldumaxal_32_memop)              \
1496   V(ldumaxal_64_memop)              \
1497   V(ldumaxalb_32_memop)             \
1498   V(ldumaxalh_32_memop)             \
1499   V(ldumaxb_32_memop)               \
1500   V(ldumaxh_32_memop)               \
1501   V(ldumaxl_32_memop)               \
1502   V(ldumaxl_64_memop)               \
1503   V(ldumaxlb_32_memop)              \
1504   V(ldumaxlh_32_memop)              \
1505   V(ldumin_32_memop)                \
1506   V(ldumin_64_memop)                \
1507   V(ldumina_32_memop)               \
1508   V(ldumina_64_memop)               \
1509   V(lduminab_32_memop)              \
1510   V(lduminah_32_memop)              \
1511   V(lduminal_32_memop)              \
1512   V(lduminal_64_memop)              \
1513   V(lduminalb_32_memop)             \
1514   V(lduminalh_32_memop)             \
1515   V(lduminb_32_memop)               \
1516   V(lduminh_32_memop)               \
1517   V(lduminl_32_memop)               \
1518   V(lduminl_64_memop)               \
1519   V(lduminlb_32_memop)              \
1520   V(lduminlh_32_memop)              \
1521   V(ldur_32_ldst_unscaled)          \
1522   V(ldur_64_ldst_unscaled)          \
1523   V(ldur_b_ldst_unscaled)           \
1524   V(ldur_d_ldst_unscaled)           \
1525   V(ldur_h_ldst_unscaled)           \
1526   V(ldur_q_ldst_unscaled)           \
1527   V(ldur_s_ldst_unscaled)           \
1528   V(ldurb_32_ldst_unscaled)         \
1529   V(ldurh_32_ldst_unscaled)         \
1530   V(ldursb_32_ldst_unscaled)        \
1531   V(ldursb_64_ldst_unscaled)        \
1532   V(ldursh_32_ldst_unscaled)        \
1533   V(ldursh_64_ldst_unscaled)        \
1534   V(ldursw_64_ldst_unscaled)        \
1535   V(ldxp_lp32_ldstexcl)             \
1536   V(ldxp_lp64_ldstexcl)             \
1537   V(ldxr_lr32_ldstexcl)             \
1538   V(ldxr_lr64_ldstexcl)             \
1539   V(ldxrb_lr32_ldstexcl)            \
1540   V(ldxrh_lr32_ldstexcl)            \
1541   V(lsl_z_p_zi)                     \
1542   V(lsl_z_p_zw)                     \
1543   V(lsl_z_p_zz)                     \
1544   V(lsl_z_zi)                       \
1545   V(lsl_z_zw)                       \
1546   V(lslr_z_p_zz)                    \
1547   V(lslv_32_dp_2src)                \
1548   V(lslv_64_dp_2src)                \
1549   V(lsr_z_p_zi)                     \
1550   V(lsr_z_p_zw)                     \
1551   V(lsr_z_p_zz)                     \
1552   V(lsr_z_zi)                       \
1553   V(lsr_z_zw)                       \
1554   V(lsrr_z_p_zz)                    \
1555   V(lsrv_32_dp_2src)                \
1556   V(lsrv_64_dp_2src)                \
1557   V(mad_z_p_zzz)                    \
1558   V(madd_32a_dp_3src)               \
1559   V(madd_64a_dp_3src)               \
1560   V(match_p_p_zz)                   \
1561   V(mla_asimdelem_r)                \
1562   V(mla_asimdsame_only)             \
1563   V(mla_z_p_zzz)                    \
1564   V(mla_z_zzzi_d)                   \
1565   V(mla_z_zzzi_h)                   \
1566   V(mla_z_zzzi_s)                   \
1567   V(mls_asimdelem_r)                \
1568   V(mls_asimdsame_only)             \
1569   V(mls_z_p_zzz)                    \
1570   V(mls_z_zzzi_d)                   \
1571   V(mls_z_zzzi_h)                   \
1572   V(mls_z_zzzi_s)                   \
1573   V(movi_asimdimm_d2_d)             \
1574   V(movi_asimdimm_d_ds)             \
1575   V(movi_asimdimm_l_hl)             \
1576   V(movi_asimdimm_l_sl)             \
1577   V(movi_asimdimm_m_sm)             \
1578   V(movi_asimdimm_n_b)              \
1579   V(movk_32_movewide)               \
1580   V(movk_64_movewide)               \
1581   V(movn_32_movewide)               \
1582   V(movn_64_movewide)               \
1583   V(movprfx_z_p_z)                  \
1584   V(movprfx_z_z)                    \
1585   V(movz_32_movewide)               \
1586   V(movz_64_movewide)               \
1587   V(mrs_rs_systemmove)              \
1588   V(msb_z_p_zzz)                    \
1589   V(msr_sr_systemmove)              \
1590   V(msub_32a_dp_3src)               \
1591   V(msub_64a_dp_3src)               \
1592   V(mul_asimdelem_r)                \
1593   V(mul_asimdsame_only)             \
1594   V(mul_z_p_zz)                     \
1595   V(mul_z_zi)                       \
1596   V(mul_z_zz)                       \
1597   V(mul_z_zzi_d)                    \
1598   V(mul_z_zzi_h)                    \
1599   V(mul_z_zzi_s)                    \
1600   V(mvni_asimdimm_l_hl)             \
1601   V(mvni_asimdimm_l_sl)             \
1602   V(mvni_asimdimm_m_sm)             \
1603   V(nand_p_p_pp_z)                  \
1604   V(nands_p_p_pp_z)                 \
1605   V(nbsl_z_zzz)                     \
1606   V(neg_asimdmisc_r)                \
1607   V(neg_asisdmisc_r)                \
1608   V(neg_z_p_z)                      \
1609   V(nmatch_p_p_zz)                  \
1610   V(nop_hi_hints)                   \
1611   V(nor_p_p_pp_z)                   \
1612   V(nors_p_p_pp_z)                  \
1613   V(not_asimdmisc_r)                \
1614   V(not_z_p_z)                      \
1615   V(orn_32_log_shift)               \
1616   V(orn_64_log_shift)               \
1617   V(orn_asimdsame_only)             \
1618   V(orn_p_p_pp_z)                   \
1619   V(orns_p_p_pp_z)                  \
1620   V(orr_32_log_imm)                 \
1621   V(orr_32_log_shift)               \
1622   V(orr_64_log_imm)                 \
1623   V(orr_64_log_shift)               \
1624   V(orr_asimdimm_l_hl)              \
1625   V(orr_asimdimm_l_sl)              \
1626   V(orr_asimdsame_only)             \
1627   V(orr_p_p_pp_z)                   \
1628   V(orr_z_p_zz)                     \
1629   V(orr_z_zi)                       \
1630   V(orr_z_zz)                       \
1631   V(orrs_p_p_pp_z)                  \
1632   V(orv_r_p_z)                      \
1633   V(pacda_64p_dp_1src)              \
1634   V(pacdb_64p_dp_1src)              \
1635   V(pacdza_64z_dp_1src)             \
1636   V(pacdzb_64z_dp_1src)             \
1637   V(pacga_64p_dp_2src)              \
1638   V(pacia1716_hi_hints)             \
1639   V(pacia_64p_dp_1src)              \
1640   V(paciasp_hi_hints)               \
1641   V(paciaz_hi_hints)                \
1642   V(pacib1716_hi_hints)             \
1643   V(pacib_64p_dp_1src)              \
1644   V(pacibsp_hi_hints)               \
1645   V(pacibz_hi_hints)                \
1646   V(paciza_64z_dp_1src)             \
1647   V(pacizb_64z_dp_1src)             \
1648   V(pfalse_p)                       \
1649   V(pfirst_p_p_p)                   \
1650   V(pmul_asimdsame_only)            \
1651   V(pmul_z_zz)                      \
1652   V(pmull_asimddiff_l)              \
1653   V(pmullb_z_zz)                    \
1654   V(pmullt_z_zz)                    \
1655   V(pnext_p_p_p)                    \
1656   V(prfb_i_p_ai_d)                  \
1657   V(prfb_i_p_ai_s)                  \
1658   V(prfb_i_p_bi_s)                  \
1659   V(prfb_i_p_br_s)                  \
1660   V(prfb_i_p_bz_d_64_scaled)        \
1661   V(prfb_i_p_bz_d_x32_scaled)       \
1662   V(prfb_i_p_bz_s_x32_scaled)       \
1663   V(prfd_i_p_ai_d)                  \
1664   V(prfd_i_p_ai_s)                  \
1665   V(prfd_i_p_bi_s)                  \
1666   V(prfd_i_p_br_s)                  \
1667   V(prfd_i_p_bz_d_64_scaled)        \
1668   V(prfd_i_p_bz_d_x32_scaled)       \
1669   V(prfd_i_p_bz_s_x32_scaled)       \
1670   V(prfh_i_p_ai_d)                  \
1671   V(prfh_i_p_ai_s)                  \
1672   V(prfh_i_p_bi_s)                  \
1673   V(prfh_i_p_br_s)                  \
1674   V(prfh_i_p_bz_d_64_scaled)        \
1675   V(prfh_i_p_bz_d_x32_scaled)       \
1676   V(prfh_i_p_bz_s_x32_scaled)       \
1677   V(prfm_p_ldst_pos)                \
1678   V(prfm_p_ldst_regoff)             \
1679   V(prfm_p_loadlit)                 \
1680   V(prfum_p_ldst_unscaled)          \
1681   V(prfw_i_p_ai_d)                  \
1682   V(prfw_i_p_ai_s)                  \
1683   V(prfw_i_p_bi_s)                  \
1684   V(prfw_i_p_br_s)                  \
1685   V(prfw_i_p_bz_d_64_scaled)        \
1686   V(prfw_i_p_bz_d_x32_scaled)       \
1687   V(prfw_i_p_bz_s_x32_scaled)       \
1688   V(psb_hc_hints)                   \
1689   V(pssbb_only_barriers)            \
1690   V(ptest_p_p)                      \
1691   V(ptrue_p_s)                      \
1692   V(ptrues_p_s)                     \
1693   V(punpkhi_p_p)                    \
1694   V(punpklo_p_p)                    \
1695   V(raddhn_asimddiff_n)             \
1696   V(raddhnb_z_zz)                   \
1697   V(raddhnt_z_zz)                   \
1698   V(rax1_vvv2_cryptosha512_3)       \
1699   V(rax1_z_zz)                      \
1700   V(rbit_32_dp_1src)                \
1701   V(rbit_64_dp_1src)                \
1702   V(rbit_asimdmisc_r)               \
1703   V(rbit_z_p_z)                     \
1704   V(rdffr_p_f)                      \
1705   V(rdffr_p_p_f)                    \
1706   V(rdffrs_p_p_f)                   \
1707   V(rdvl_r_i)                       \
1708   V(ret_64r_branch_reg)             \
1709   V(retaa_64e_branch_reg)           \
1710   V(retab_64e_branch_reg)           \
1711   V(rev16_32_dp_1src)               \
1712   V(rev16_64_dp_1src)               \
1713   V(rev16_asimdmisc_r)              \
1714   V(rev32_64_dp_1src)               \
1715   V(rev32_asimdmisc_r)              \
1716   V(rev64_asimdmisc_r)              \
1717   V(rev_32_dp_1src)                 \
1718   V(rev_64_dp_1src)                 \
1719   V(rev_p_p)                        \
1720   V(rev_z_z)                        \
1721   V(revb_z_z)                       \
1722   V(revh_z_z)                       \
1723   V(revw_z_z)                       \
1724   V(rmif_only_rmif)                 \
1725   V(rorv_32_dp_2src)                \
1726   V(rorv_64_dp_2src)                \
1727   V(rshrn_asimdshf_n)               \
1728   V(rshrnb_z_zi)                    \
1729   V(rshrnt_z_zi)                    \
1730   V(rsubhn_asimddiff_n)             \
1731   V(rsubhnb_z_zz)                   \
1732   V(rsubhnt_z_zz)                   \
1733   V(saba_asimdsame_only)            \
1734   V(saba_z_zzz)                     \
1735   V(sabal_asimddiff_l)              \
1736   V(sabalb_z_zzz)                   \
1737   V(sabalt_z_zzz)                   \
1738   V(sabd_asimdsame_only)            \
1739   V(sabd_z_p_zz)                    \
1740   V(sabdl_asimddiff_l)              \
1741   V(sabdlb_z_zz)                    \
1742   V(sabdlt_z_zz)                    \
1743   V(sadalp_asimdmisc_p)             \
1744   V(sadalp_z_p_z)                   \
1745   V(saddl_asimddiff_l)              \
1746   V(saddlb_z_zz)                    \
1747   V(saddlbt_z_zz)                   \
1748   V(saddlp_asimdmisc_p)             \
1749   V(saddlt_z_zz)                    \
1750   V(saddlv_asimdall_only)           \
1751   V(saddv_r_p_z)                    \
1752   V(saddw_asimddiff_w)              \
1753   V(saddwb_z_zz)                    \
1754   V(saddwt_z_zz)                    \
1755   V(sb_only_barriers)               \
1756   V(sbc_32_addsub_carry)            \
1757   V(sbc_64_addsub_carry)            \
1758   V(sbclb_z_zzz)                    \
1759   V(sbclt_z_zzz)                    \
1760   V(sbcs_32_addsub_carry)           \
1761   V(sbcs_64_addsub_carry)           \
1762   V(sbfm_32m_bitfield)              \
1763   V(sbfm_64m_bitfield)              \
1764   V(scvtf_asimdmisc_r)              \
1765   V(scvtf_asimdmiscfp16_r)          \
1766   V(scvtf_asimdshf_c)               \
1767   V(scvtf_asisdmisc_r)              \
1768   V(scvtf_asisdmiscfp16_r)          \
1769   V(scvtf_asisdshf_c)               \
1770   V(scvtf_d32_float2fix)            \
1771   V(scvtf_d32_float2int)            \
1772   V(scvtf_d64_float2fix)            \
1773   V(scvtf_d64_float2int)            \
1774   V(scvtf_h32_float2fix)            \
1775   V(scvtf_h32_float2int)            \
1776   V(scvtf_h64_float2fix)            \
1777   V(scvtf_h64_float2int)            \
1778   V(scvtf_s32_float2fix)            \
1779   V(scvtf_s32_float2int)            \
1780   V(scvtf_s64_float2fix)            \
1781   V(scvtf_s64_float2int)            \
1782   V(scvtf_z_p_z_h2fp16)             \
1783   V(scvtf_z_p_z_w2d)                \
1784   V(scvtf_z_p_z_w2fp16)             \
1785   V(scvtf_z_p_z_w2s)                \
1786   V(scvtf_z_p_z_x2d)                \
1787   V(scvtf_z_p_z_x2fp16)             \
1788   V(scvtf_z_p_z_x2s)                \
1789   V(sdiv_32_dp_2src)                \
1790   V(sdiv_64_dp_2src)                \
1791   V(sdiv_z_p_zz)                    \
1792   V(sdivr_z_p_zz)                   \
1793   V(sdot_asimdelem_d)               \
1794   V(sdot_asimdsame2_d)              \
1795   V(sdot_z_zzz)                     \
1796   V(sdot_z_zzzi_d)                  \
1797   V(sdot_z_zzzi_s)                  \
1798   V(sel_p_p_pp)                     \
1799   V(sel_z_p_zz)                     \
1800   V(setf16_only_setf)               \
1801   V(setf8_only_setf)                \
1802   V(setffr_f)                       \
1803   V(sev_hi_hints)                   \
1804   V(sevl_hi_hints)                  \
1805   V(sha1c_qsv_cryptosha3)           \
1806   V(sha1h_ss_cryptosha2)            \
1807   V(sha1m_qsv_cryptosha3)           \
1808   V(sha1p_qsv_cryptosha3)           \
1809   V(sha1su0_vvv_cryptosha3)         \
1810   V(sha1su1_vv_cryptosha2)          \
1811   V(sha256h2_qqv_cryptosha3)        \
1812   V(sha256h_qqv_cryptosha3)         \
1813   V(sha256su0_vv_cryptosha2)        \
1814   V(sha256su1_vvv_cryptosha3)       \
1815   V(sha512h2_qqv_cryptosha512_3)    \
1816   V(sha512h_qqv_cryptosha512_3)     \
1817   V(sha512su0_vv2_cryptosha512_2)   \
1818   V(sha512su1_vvv2_cryptosha512_3)  \
1819   V(shadd_asimdsame_only)           \
1820   V(shadd_z_p_zz)                   \
1821   V(shl_asimdshf_r)                 \
1822   V(shl_asisdshf_r)                 \
1823   V(shll_asimdmisc_s)               \
1824   V(shrn_asimdshf_n)                \
1825   V(shrnb_z_zi)                     \
1826   V(shrnt_z_zi)                     \
1827   V(shsub_asimdsame_only)           \
1828   V(shsub_z_p_zz)                   \
1829   V(shsubr_z_p_zz)                  \
1830   V(sli_asimdshf_r)                 \
1831   V(sli_asisdshf_r)                 \
1832   V(sli_z_zzi)                      \
1833   V(sm3partw1_vvv4_cryptosha512_3)  \
1834   V(sm3partw2_vvv4_cryptosha512_3)  \
1835   V(sm3ss1_vvv4_crypto4)            \
1836   V(sm3tt1a_vvv4_crypto3_imm2)      \
1837   V(sm3tt1b_vvv4_crypto3_imm2)      \
1838   V(sm3tt2a_vvv4_crypto3_imm2)      \
1839   V(sm3tt2b_vvv_crypto3_imm2)       \
1840   V(sm4e_vv4_cryptosha512_2)        \
1841   V(sm4e_z_zz)                      \
1842   V(sm4ekey_vvv4_cryptosha512_3)    \
1843   V(sm4ekey_z_zz)                   \
1844   V(smaddl_64wa_dp_3src)            \
1845   V(smax_asimdsame_only)            \
1846   V(smax_z_p_zz)                    \
1847   V(smax_z_zi)                      \
1848   V(smaxp_asimdsame_only)           \
1849   V(smaxp_z_p_zz)                   \
1850   V(smaxv_asimdall_only)            \
1851   V(smaxv_r_p_z)                    \
1852   V(smc_ex_exception)               \
1853   V(smin_asimdsame_only)            \
1854   V(smin_z_p_zz)                    \
1855   V(smin_z_zi)                      \
1856   V(sminp_asimdsame_only)           \
1857   V(sminp_z_p_zz)                   \
1858   V(sminv_asimdall_only)            \
1859   V(sminv_r_p_z)                    \
1860   V(smlal_asimddiff_l)              \
1861   V(smlal_asimdelem_l)              \
1862   V(smlalb_z_zzz)                   \
1863   V(smlalb_z_zzzi_d)                \
1864   V(smlalb_z_zzzi_s)                \
1865   V(smlalt_z_zzz)                   \
1866   V(smlalt_z_zzzi_d)                \
1867   V(smlalt_z_zzzi_s)                \
1868   V(smlsl_asimddiff_l)              \
1869   V(smlsl_asimdelem_l)              \
1870   V(smlslb_z_zzz)                   \
1871   V(smlslb_z_zzzi_d)                \
1872   V(smlslb_z_zzzi_s)                \
1873   V(smlslt_z_zzz)                   \
1874   V(smlslt_z_zzzi_d)                \
1875   V(smlslt_z_zzzi_s)                \
1876   V(smmla_asimdsame2_g)             \
1877   V(smmla_z_zzz)                    \
1878   V(smov_asimdins_w_w)              \
1879   V(smov_asimdins_x_x)              \
1880   V(smsubl_64wa_dp_3src)            \
1881   V(smulh_64_dp_3src)               \
1882   V(smulh_z_p_zz)                   \
1883   V(smulh_z_zz)                     \
1884   V(smull_asimddiff_l)              \
1885   V(smull_asimdelem_l)              \
1886   V(smullb_z_zz)                    \
1887   V(smullb_z_zzi_d)                 \
1888   V(smullb_z_zzi_s)                 \
1889   V(smullt_z_zz)                    \
1890   V(smullt_z_zzi_d)                 \
1891   V(smullt_z_zzi_s)                 \
1892   V(splice_z_p_zz_con)              \
1893   V(splice_z_p_zz_des)              \
1894   V(sqabs_asimdmisc_r)              \
1895   V(sqabs_asisdmisc_r)              \
1896   V(sqabs_z_p_z)                    \
1897   V(sqadd_asimdsame_only)           \
1898   V(sqadd_asisdsame_only)           \
1899   V(sqadd_z_p_zz)                   \
1900   V(sqadd_z_zi)                     \
1901   V(sqadd_z_zz)                     \
1902   V(sqcadd_z_zz)                    \
1903   V(sqdecb_r_rs_sx)                 \
1904   V(sqdecb_r_rs_x)                  \
1905   V(sqdecd_r_rs_sx)                 \
1906   V(sqdecd_r_rs_x)                  \
1907   V(sqdecd_z_zs)                    \
1908   V(sqdech_r_rs_sx)                 \
1909   V(sqdech_r_rs_x)                  \
1910   V(sqdech_z_zs)                    \
1911   V(sqdecp_r_p_r_sx)                \
1912   V(sqdecp_r_p_r_x)                 \
1913   V(sqdecp_z_p_z)                   \
1914   V(sqdecw_r_rs_sx)                 \
1915   V(sqdecw_r_rs_x)                  \
1916   V(sqdecw_z_zs)                    \
1917   V(sqdmlal_asimddiff_l)            \
1918   V(sqdmlal_asimdelem_l)            \
1919   V(sqdmlal_asisddiff_only)         \
1920   V(sqdmlal_asisdelem_l)            \
1921   V(sqdmlalb_z_zzz)                 \
1922   V(sqdmlalb_z_zzzi_d)              \
1923   V(sqdmlalb_z_zzzi_s)              \
1924   V(sqdmlalbt_z_zzz)                \
1925   V(sqdmlalt_z_zzz)                 \
1926   V(sqdmlalt_z_zzzi_d)              \
1927   V(sqdmlalt_z_zzzi_s)              \
1928   V(sqdmlsl_asimddiff_l)            \
1929   V(sqdmlsl_asimdelem_l)            \
1930   V(sqdmlsl_asisddiff_only)         \
1931   V(sqdmlsl_asisdelem_l)            \
1932   V(sqdmlslb_z_zzz)                 \
1933   V(sqdmlslb_z_zzzi_d)              \
1934   V(sqdmlslb_z_zzzi_s)              \
1935   V(sqdmlslbt_z_zzz)                \
1936   V(sqdmlslt_z_zzz)                 \
1937   V(sqdmlslt_z_zzzi_d)              \
1938   V(sqdmlslt_z_zzzi_s)              \
1939   V(sqdmulh_asimdelem_r)            \
1940   V(sqdmulh_asimdsame_only)         \
1941   V(sqdmulh_asisdelem_r)            \
1942   V(sqdmulh_asisdsame_only)         \
1943   V(sqdmulh_z_zz)                   \
1944   V(sqdmulh_z_zzi_d)                \
1945   V(sqdmulh_z_zzi_h)                \
1946   V(sqdmulh_z_zzi_s)                \
1947   V(sqdmull_asimddiff_l)            \
1948   V(sqdmull_asimdelem_l)            \
1949   V(sqdmull_asisddiff_only)         \
1950   V(sqdmull_asisdelem_l)            \
1951   V(sqdmullb_z_zz)                  \
1952   V(sqdmullb_z_zzi_d)               \
1953   V(sqdmullb_z_zzi_s)               \
1954   V(sqdmullt_z_zz)                  \
1955   V(sqdmullt_z_zzi_d)               \
1956   V(sqdmullt_z_zzi_s)               \
1957   V(sqincb_r_rs_sx)                 \
1958   V(sqincb_r_rs_x)                  \
1959   V(sqincd_r_rs_sx)                 \
1960   V(sqincd_r_rs_x)                  \
1961   V(sqincd_z_zs)                    \
1962   V(sqinch_r_rs_sx)                 \
1963   V(sqinch_r_rs_x)                  \
1964   V(sqinch_z_zs)                    \
1965   V(sqincp_r_p_r_sx)                \
1966   V(sqincp_r_p_r_x)                 \
1967   V(sqincp_z_p_z)                   \
1968   V(sqincw_r_rs_sx)                 \
1969   V(sqincw_r_rs_x)                  \
1970   V(sqincw_z_zs)                    \
1971   V(sqneg_asimdmisc_r)              \
1972   V(sqneg_asisdmisc_r)              \
1973   V(sqneg_z_p_z)                    \
1974   V(sqrdcmlah_z_zzz)                \
1975   V(sqrdcmlah_z_zzzi_h)             \
1976   V(sqrdcmlah_z_zzzi_s)             \
1977   V(sqrdmlah_asimdelem_r)           \
1978   V(sqrdmlah_asimdsame2_only)       \
1979   V(sqrdmlah_asisdelem_r)           \
1980   V(sqrdmlah_asisdsame2_only)       \
1981   V(sqrdmlah_z_zzz)                 \
1982   V(sqrdmlah_z_zzzi_d)              \
1983   V(sqrdmlah_z_zzzi_h)              \
1984   V(sqrdmlah_z_zzzi_s)              \
1985   V(sqrdmlsh_asimdelem_r)           \
1986   V(sqrdmlsh_asimdsame2_only)       \
1987   V(sqrdmlsh_asisdelem_r)           \
1988   V(sqrdmlsh_asisdsame2_only)       \
1989   V(sqrdmlsh_z_zzz)                 \
1990   V(sqrdmlsh_z_zzzi_d)              \
1991   V(sqrdmlsh_z_zzzi_h)              \
1992   V(sqrdmlsh_z_zzzi_s)              \
1993   V(sqrdmulh_asimdelem_r)           \
1994   V(sqrdmulh_asimdsame_only)        \
1995   V(sqrdmulh_asisdelem_r)           \
1996   V(sqrdmulh_asisdsame_only)        \
1997   V(sqrdmulh_z_zz)                  \
1998   V(sqrdmulh_z_zzi_d)               \
1999   V(sqrdmulh_z_zzi_h)               \
2000   V(sqrdmulh_z_zzi_s)               \
2001   V(sqrshl_asimdsame_only)          \
2002   V(sqrshl_asisdsame_only)          \
2003   V(sqrshl_z_p_zz)                  \
2004   V(sqrshlr_z_p_zz)                 \
2005   V(sqrshrn_asimdshf_n)             \
2006   V(sqrshrn_asisdshf_n)             \
2007   V(sqrshrnb_z_zi)                  \
2008   V(sqrshrnt_z_zi)                  \
2009   V(sqrshrun_asimdshf_n)            \
2010   V(sqrshrun_asisdshf_n)            \
2011   V(sqrshrunb_z_zi)                 \
2012   V(sqrshrunt_z_zi)                 \
2013   V(sqshl_asimdsame_only)           \
2014   V(sqshl_asimdshf_r)               \
2015   V(sqshl_asisdsame_only)           \
2016   V(sqshl_asisdshf_r)               \
2017   V(sqshl_z_p_zi)                   \
2018   V(sqshl_z_p_zz)                   \
2019   V(sqshlr_z_p_zz)                  \
2020   V(sqshlu_asimdshf_r)              \
2021   V(sqshlu_asisdshf_r)              \
2022   V(sqshlu_z_p_zi)                  \
2023   V(sqshrn_asimdshf_n)              \
2024   V(sqshrn_asisdshf_n)              \
2025   V(sqshrnb_z_zi)                   \
2026   V(sqshrnt_z_zi)                   \
2027   V(sqshrun_asimdshf_n)             \
2028   V(sqshrun_asisdshf_n)             \
2029   V(sqshrunb_z_zi)                  \
2030   V(sqshrunt_z_zi)                  \
2031   V(sqsub_asimdsame_only)           \
2032   V(sqsub_asisdsame_only)           \
2033   V(sqsub_z_p_zz)                   \
2034   V(sqsub_z_zi)                     \
2035   V(sqsub_z_zz)                     \
2036   V(sqsubr_z_p_zz)                  \
2037   V(sqxtn_asimdmisc_n)              \
2038   V(sqxtn_asisdmisc_n)              \
2039   V(sqxtnb_z_zz)                    \
2040   V(sqxtnt_z_zz)                    \
2041   V(sqxtun_asimdmisc_n)             \
2042   V(sqxtun_asisdmisc_n)             \
2043   V(sqxtunb_z_zz)                   \
2044   V(sqxtunt_z_zz)                   \
2045   V(srhadd_asimdsame_only)          \
2046   V(srhadd_z_p_zz)                  \
2047   V(sri_asimdshf_r)                 \
2048   V(sri_asisdshf_r)                 \
2049   V(sri_z_zzi)                      \
2050   V(srshl_asimdsame_only)           \
2051   V(srshl_asisdsame_only)           \
2052   V(srshl_z_p_zz)                   \
2053   V(srshlr_z_p_zz)                  \
2054   V(srshr_asimdshf_r)               \
2055   V(srshr_asisdshf_r)               \
2056   V(srshr_z_p_zi)                   \
2057   V(srsra_asimdshf_r)               \
2058   V(srsra_asisdshf_r)               \
2059   V(srsra_z_zi)                     \
2060   V(ssbb_only_barriers)             \
2061   V(sshl_asimdsame_only)            \
2062   V(sshl_asisdsame_only)            \
2063   V(sshll_asimdshf_l)               \
2064   V(sshllb_z_zi)                    \
2065   V(sshllt_z_zi)                    \
2066   V(sshr_asimdshf_r)                \
2067   V(sshr_asisdshf_r)                \
2068   V(ssra_asimdshf_r)                \
2069   V(ssra_asisdshf_r)                \
2070   V(ssra_z_zi)                      \
2071   V(ssubl_asimddiff_l)              \
2072   V(ssublb_z_zz)                    \
2073   V(ssublbt_z_zz)                   \
2074   V(ssublt_z_zz)                    \
2075   V(ssubltb_z_zz)                   \
2076   V(ssubw_asimddiff_w)              \
2077   V(ssubwb_z_zz)                    \
2078   V(ssubwt_z_zz)                    \
2079   V(st1_asisdlse_r1_1v)             \
2080   V(st1_asisdlse_r2_2v)             \
2081   V(st1_asisdlse_r3_3v)             \
2082   V(st1_asisdlse_r4_4v)             \
2083   V(st1_asisdlsep_i1_i1)            \
2084   V(st1_asisdlsep_i2_i2)            \
2085   V(st1_asisdlsep_i3_i3)            \
2086   V(st1_asisdlsep_i4_i4)            \
2087   V(st1_asisdlsep_r1_r1)            \
2088   V(st1_asisdlsep_r2_r2)            \
2089   V(st1_asisdlsep_r3_r3)            \
2090   V(st1_asisdlsep_r4_r4)            \
2091   V(st1_asisdlso_b1_1b)             \
2092   V(st1_asisdlso_d1_1d)             \
2093   V(st1_asisdlso_h1_1h)             \
2094   V(st1_asisdlso_s1_1s)             \
2095   V(st1_asisdlsop_b1_i1b)           \
2096   V(st1_asisdlsop_bx1_r1b)          \
2097   V(st1_asisdlsop_d1_i1d)           \
2098   V(st1_asisdlsop_dx1_r1d)          \
2099   V(st1_asisdlsop_h1_i1h)           \
2100   V(st1_asisdlsop_hx1_r1h)          \
2101   V(st1_asisdlsop_s1_i1s)           \
2102   V(st1_asisdlsop_sx1_r1s)          \
2103   V(st1b_z_p_ai_d)                  \
2104   V(st1b_z_p_ai_s)                  \
2105   V(st1b_z_p_bi)                    \
2106   V(st1b_z_p_br)                    \
2107   V(st1b_z_p_bz_d_64_unscaled)      \
2108   V(st1b_z_p_bz_d_x32_unscaled)     \
2109   V(st1b_z_p_bz_s_x32_unscaled)     \
2110   V(st1d_z_p_ai_d)                  \
2111   V(st1d_z_p_bi)                    \
2112   V(st1d_z_p_br)                    \
2113   V(st1d_z_p_bz_d_64_scaled)        \
2114   V(st1d_z_p_bz_d_64_unscaled)      \
2115   V(st1d_z_p_bz_d_x32_scaled)       \
2116   V(st1d_z_p_bz_d_x32_unscaled)     \
2117   V(st1h_z_p_ai_d)                  \
2118   V(st1h_z_p_ai_s)                  \
2119   V(st1h_z_p_bi)                    \
2120   V(st1h_z_p_br)                    \
2121   V(st1h_z_p_bz_d_64_scaled)        \
2122   V(st1h_z_p_bz_d_64_unscaled)      \
2123   V(st1h_z_p_bz_d_x32_scaled)       \
2124   V(st1h_z_p_bz_d_x32_unscaled)     \
2125   V(st1h_z_p_bz_s_x32_scaled)       \
2126   V(st1h_z_p_bz_s_x32_unscaled)     \
2127   V(st1w_z_p_ai_d)                  \
2128   V(st1w_z_p_ai_s)                  \
2129   V(st1w_z_p_bi)                    \
2130   V(st1w_z_p_br)                    \
2131   V(st1w_z_p_bz_d_64_scaled)        \
2132   V(st1w_z_p_bz_d_64_unscaled)      \
2133   V(st1w_z_p_bz_d_x32_scaled)       \
2134   V(st1w_z_p_bz_d_x32_unscaled)     \
2135   V(st1w_z_p_bz_s_x32_scaled)       \
2136   V(st1w_z_p_bz_s_x32_unscaled)     \
2137   V(st2_asisdlse_r2)                \
2138   V(st2_asisdlsep_i2_i)             \
2139   V(st2_asisdlsep_r2_r)             \
2140   V(st2_asisdlso_b2_2b)             \
2141   V(st2_asisdlso_d2_2d)             \
2142   V(st2_asisdlso_h2_2h)             \
2143   V(st2_asisdlso_s2_2s)             \
2144   V(st2_asisdlsop_b2_i2b)           \
2145   V(st2_asisdlsop_bx2_r2b)          \
2146   V(st2_asisdlsop_d2_i2d)           \
2147   V(st2_asisdlsop_dx2_r2d)          \
2148   V(st2_asisdlsop_h2_i2h)           \
2149   V(st2_asisdlsop_hx2_r2h)          \
2150   V(st2_asisdlsop_s2_i2s)           \
2151   V(st2_asisdlsop_sx2_r2s)          \
2152   V(st2b_z_p_bi_contiguous)         \
2153   V(st2b_z_p_br_contiguous)         \
2154   V(st2d_z_p_bi_contiguous)         \
2155   V(st2d_z_p_br_contiguous)         \
2156   V(st2g_64soffset_ldsttags)        \
2157   V(st2g_64spost_ldsttags)          \
2158   V(st2g_64spre_ldsttags)           \
2159   V(st2h_z_p_bi_contiguous)         \
2160   V(st2h_z_p_br_contiguous)         \
2161   V(st2w_z_p_bi_contiguous)         \
2162   V(st2w_z_p_br_contiguous)         \
2163   V(st3_asisdlse_r3)                \
2164   V(st3_asisdlsep_i3_i)             \
2165   V(st3_asisdlsep_r3_r)             \
2166   V(st3_asisdlso_b3_3b)             \
2167   V(st3_asisdlso_d3_3d)             \
2168   V(st3_asisdlso_h3_3h)             \
2169   V(st3_asisdlso_s3_3s)             \
2170   V(st3_asisdlsop_b3_i3b)           \
2171   V(st3_asisdlsop_bx3_r3b)          \
2172   V(st3_asisdlsop_d3_i3d)           \
2173   V(st3_asisdlsop_dx3_r3d)          \
2174   V(st3_asisdlsop_h3_i3h)           \
2175   V(st3_asisdlsop_hx3_r3h)          \
2176   V(st3_asisdlsop_s3_i3s)           \
2177   V(st3_asisdlsop_sx3_r3s)          \
2178   V(st3b_z_p_bi_contiguous)         \
2179   V(st3b_z_p_br_contiguous)         \
2180   V(st3d_z_p_bi_contiguous)         \
2181   V(st3d_z_p_br_contiguous)         \
2182   V(st3h_z_p_bi_contiguous)         \
2183   V(st3h_z_p_br_contiguous)         \
2184   V(st3w_z_p_bi_contiguous)         \
2185   V(st3w_z_p_br_contiguous)         \
2186   V(st4_asisdlse_r4)                \
2187   V(st4_asisdlsep_i4_i)             \
2188   V(st4_asisdlsep_r4_r)             \
2189   V(st4_asisdlso_b4_4b)             \
2190   V(st4_asisdlso_d4_4d)             \
2191   V(st4_asisdlso_h4_4h)             \
2192   V(st4_asisdlso_s4_4s)             \
2193   V(st4_asisdlsop_b4_i4b)           \
2194   V(st4_asisdlsop_bx4_r4b)          \
2195   V(st4_asisdlsop_d4_i4d)           \
2196   V(st4_asisdlsop_dx4_r4d)          \
2197   V(st4_asisdlsop_h4_i4h)           \
2198   V(st4_asisdlsop_hx4_r4h)          \
2199   V(st4_asisdlsop_s4_i4s)           \
2200   V(st4_asisdlsop_sx4_r4s)          \
2201   V(st4b_z_p_bi_contiguous)         \
2202   V(st4b_z_p_br_contiguous)         \
2203   V(st4d_z_p_bi_contiguous)         \
2204   V(st4d_z_p_br_contiguous)         \
2205   V(st4h_z_p_bi_contiguous)         \
2206   V(st4h_z_p_br_contiguous)         \
2207   V(st4w_z_p_bi_contiguous)         \
2208   V(st4w_z_p_br_contiguous)         \
2209   V(st64b_64l_memop)                \
2210   V(st64bv0_64_memop)               \
2211   V(st64bv_64_memop)                \
2212   V(stg_64soffset_ldsttags)         \
2213   V(stg_64spost_ldsttags)           \
2214   V(stg_64spre_ldsttags)            \
2215   V(stgm_64bulk_ldsttags)           \
2216   V(stgp_64_ldstpair_off)           \
2217   V(stgp_64_ldstpair_post)          \
2218   V(stgp_64_ldstpair_pre)           \
2219   V(stllr_sl32_ldstexcl)            \
2220   V(stllr_sl64_ldstexcl)            \
2221   V(stllrb_sl32_ldstexcl)           \
2222   V(stllrh_sl32_ldstexcl)           \
2223   V(stlr_sl32_ldstexcl)             \
2224   V(stlr_sl64_ldstexcl)             \
2225   V(stlrb_sl32_ldstexcl)            \
2226   V(stlrh_sl32_ldstexcl)            \
2227   V(stlur_32_ldapstl_unscaled)      \
2228   V(stlur_64_ldapstl_unscaled)      \
2229   V(stlurb_32_ldapstl_unscaled)     \
2230   V(stlurh_32_ldapstl_unscaled)     \
2231   V(stlxp_sp32_ldstexcl)            \
2232   V(stlxp_sp64_ldstexcl)            \
2233   V(stlxr_sr32_ldstexcl)            \
2234   V(stlxr_sr64_ldstexcl)            \
2235   V(stlxrb_sr32_ldstexcl)           \
2236   V(stlxrh_sr32_ldstexcl)           \
2237   V(stnp_32_ldstnapair_offs)        \
2238   V(stnp_64_ldstnapair_offs)        \
2239   V(stnp_d_ldstnapair_offs)         \
2240   V(stnp_q_ldstnapair_offs)         \
2241   V(stnp_s_ldstnapair_offs)         \
2242   V(stnt1b_z_p_ar_d_64_unscaled)    \
2243   V(stnt1b_z_p_ar_s_x32_unscaled)   \
2244   V(stnt1b_z_p_bi_contiguous)       \
2245   V(stnt1b_z_p_br_contiguous)       \
2246   V(stnt1d_z_p_ar_d_64_unscaled)    \
2247   V(stnt1d_z_p_bi_contiguous)       \
2248   V(stnt1d_z_p_br_contiguous)       \
2249   V(stnt1h_z_p_ar_d_64_unscaled)    \
2250   V(stnt1h_z_p_ar_s_x32_unscaled)   \
2251   V(stnt1h_z_p_bi_contiguous)       \
2252   V(stnt1h_z_p_br_contiguous)       \
2253   V(stnt1w_z_p_ar_d_64_unscaled)    \
2254   V(stnt1w_z_p_ar_s_x32_unscaled)   \
2255   V(stnt1w_z_p_bi_contiguous)       \
2256   V(stnt1w_z_p_br_contiguous)       \
2257   V(stp_32_ldstpair_off)            \
2258   V(stp_32_ldstpair_post)           \
2259   V(stp_32_ldstpair_pre)            \
2260   V(stp_64_ldstpair_off)            \
2261   V(stp_64_ldstpair_post)           \
2262   V(stp_64_ldstpair_pre)            \
2263   V(stp_d_ldstpair_off)             \
2264   V(stp_d_ldstpair_post)            \
2265   V(stp_d_ldstpair_pre)             \
2266   V(stp_q_ldstpair_off)             \
2267   V(stp_q_ldstpair_post)            \
2268   V(stp_q_ldstpair_pre)             \
2269   V(stp_s_ldstpair_off)             \
2270   V(stp_s_ldstpair_post)            \
2271   V(stp_s_ldstpair_pre)             \
2272   V(str_32_ldst_immpost)            \
2273   V(str_32_ldst_immpre)             \
2274   V(str_32_ldst_pos)                \
2275   V(str_32_ldst_regoff)             \
2276   V(str_64_ldst_immpost)            \
2277   V(str_64_ldst_immpre)             \
2278   V(str_64_ldst_pos)                \
2279   V(str_64_ldst_regoff)             \
2280   V(str_b_ldst_immpost)             \
2281   V(str_b_ldst_immpre)              \
2282   V(str_b_ldst_pos)                 \
2283   V(str_b_ldst_regoff)              \
2284   V(str_bl_ldst_regoff)             \
2285   V(str_d_ldst_immpost)             \
2286   V(str_d_ldst_immpre)              \
2287   V(str_d_ldst_pos)                 \
2288   V(str_d_ldst_regoff)              \
2289   V(str_h_ldst_immpost)             \
2290   V(str_h_ldst_immpre)              \
2291   V(str_h_ldst_pos)                 \
2292   V(str_h_ldst_regoff)              \
2293   V(str_p_bi)                       \
2294   V(str_q_ldst_immpost)             \
2295   V(str_q_ldst_immpre)              \
2296   V(str_q_ldst_pos)                 \
2297   V(str_q_ldst_regoff)              \
2298   V(str_s_ldst_immpost)             \
2299   V(str_s_ldst_immpre)              \
2300   V(str_s_ldst_pos)                 \
2301   V(str_s_ldst_regoff)              \
2302   V(str_z_bi)                       \
2303   V(strb_32_ldst_immpost)           \
2304   V(strb_32_ldst_immpre)            \
2305   V(strb_32_ldst_pos)               \
2306   V(strb_32b_ldst_regoff)           \
2307   V(strb_32bl_ldst_regoff)          \
2308   V(strh_32_ldst_immpost)           \
2309   V(strh_32_ldst_immpre)            \
2310   V(strh_32_ldst_pos)               \
2311   V(strh_32_ldst_regoff)            \
2312   V(sttr_32_ldst_unpriv)            \
2313   V(sttr_64_ldst_unpriv)            \
2314   V(sttrb_32_ldst_unpriv)           \
2315   V(sttrh_32_ldst_unpriv)           \
2316   V(stur_32_ldst_unscaled)          \
2317   V(stur_64_ldst_unscaled)          \
2318   V(stur_b_ldst_unscaled)           \
2319   V(stur_d_ldst_unscaled)           \
2320   V(stur_h_ldst_unscaled)           \
2321   V(stur_q_ldst_unscaled)           \
2322   V(stur_s_ldst_unscaled)           \
2323   V(sturb_32_ldst_unscaled)         \
2324   V(sturh_32_ldst_unscaled)         \
2325   V(stxp_sp32_ldstexcl)             \
2326   V(stxp_sp64_ldstexcl)             \
2327   V(stxr_sr32_ldstexcl)             \
2328   V(stxr_sr64_ldstexcl)             \
2329   V(stxrb_sr32_ldstexcl)            \
2330   V(stxrh_sr32_ldstexcl)            \
2331   V(stz2g_64soffset_ldsttags)       \
2332   V(stz2g_64spost_ldsttags)         \
2333   V(stz2g_64spre_ldsttags)          \
2334   V(stzg_64soffset_ldsttags)        \
2335   V(stzg_64spost_ldsttags)          \
2336   V(stzg_64spre_ldsttags)           \
2337   V(stzgm_64bulk_ldsttags)          \
2338   V(sub_32_addsub_ext)              \
2339   V(sub_32_addsub_imm)              \
2340   V(sub_32_addsub_shift)            \
2341   V(sub_64_addsub_ext)              \
2342   V(sub_64_addsub_imm)              \
2343   V(sub_64_addsub_shift)            \
2344   V(sub_asimdsame_only)             \
2345   V(sub_asisdsame_only)             \
2346   V(sub_z_p_zz)                     \
2347   V(sub_z_zi)                       \
2348   V(sub_z_zz)                       \
2349   V(subg_64_addsub_immtags)         \
2350   V(subhn_asimddiff_n)              \
2351   V(subhnb_z_zz)                    \
2352   V(subhnt_z_zz)                    \
2353   V(subp_64s_dp_2src)               \
2354   V(subps_64s_dp_2src)              \
2355   V(subr_z_p_zz)                    \
2356   V(subr_z_zi)                      \
2357   V(subs_32_addsub_shift)           \
2358   V(subs_32s_addsub_ext)            \
2359   V(subs_32s_addsub_imm)            \
2360   V(subs_64_addsub_shift)           \
2361   V(subs_64s_addsub_ext)            \
2362   V(subs_64s_addsub_imm)            \
2363   V(sudot_asimdelem_d)              \
2364   V(sudot_z_zzzi_s)                 \
2365   V(sunpkhi_z_z)                    \
2366   V(sunpklo_z_z)                    \
2367   V(suqadd_asimdmisc_r)             \
2368   V(suqadd_asisdmisc_r)             \
2369   V(suqadd_z_p_zz)                  \
2370   V(svc_ex_exception)               \
2371   V(swp_32_memop)                   \
2372   V(swp_64_memop)                   \
2373   V(swpa_32_memop)                  \
2374   V(swpa_64_memop)                  \
2375   V(swpab_32_memop)                 \
2376   V(swpah_32_memop)                 \
2377   V(swpal_32_memop)                 \
2378   V(swpal_64_memop)                 \
2379   V(swpalb_32_memop)                \
2380   V(swpalh_32_memop)                \
2381   V(swpb_32_memop)                  \
2382   V(swph_32_memop)                  \
2383   V(swpl_32_memop)                  \
2384   V(swpl_64_memop)                  \
2385   V(swplb_32_memop)                 \
2386   V(swplh_32_memop)                 \
2387   V(sxtb_z_p_z)                     \
2388   V(sxth_z_p_z)                     \
2389   V(sxtw_z_p_z)                     \
2390   V(sys_cr_systeminstrs)            \
2391   V(sysl_rc_systeminstrs)           \
2392   V(tbl_asimdtbl_l1_1)              \
2393   V(tbl_asimdtbl_l2_2)              \
2394   V(tbl_asimdtbl_l3_3)              \
2395   V(tbl_asimdtbl_l4_4)              \
2396   V(tbl_z_zz_1)                     \
2397   V(tbl_z_zz_2)                     \
2398   V(tbnz_only_testbranch)           \
2399   V(tbx_asimdtbl_l1_1)              \
2400   V(tbx_asimdtbl_l2_2)              \
2401   V(tbx_asimdtbl_l3_3)              \
2402   V(tbx_asimdtbl_l4_4)              \
2403   V(tbx_z_zz)                       \
2404   V(tbz_only_testbranch)            \
2405   V(tcancel_ex_exception)           \
2406   V(tcommit_only_barriers)          \
2407   V(trn1_asimdperm_only)            \
2408   V(trn1_p_pp)                      \
2409   V(trn1_z_zz)                      \
2410   V(trn1_z_zz_q)                    \
2411   V(trn2_asimdperm_only)            \
2412   V(trn2_p_pp)                      \
2413   V(trn2_z_zz)                      \
2414   V(trn2_z_zz_q)                    \
2415   V(tsb_hc_hints)                   \
2416   V(tstart_br_systemresult)         \
2417   V(ttest_br_systemresult)          \
2418   V(uaba_asimdsame_only)            \
2419   V(uaba_z_zzz)                     \
2420   V(uabal_asimddiff_l)              \
2421   V(uabalb_z_zzz)                   \
2422   V(uabalt_z_zzz)                   \
2423   V(uabd_asimdsame_only)            \
2424   V(uabd_z_p_zz)                    \
2425   V(uabdl_asimddiff_l)              \
2426   V(uabdlb_z_zz)                    \
2427   V(uabdlt_z_zz)                    \
2428   V(uadalp_asimdmisc_p)             \
2429   V(uadalp_z_p_z)                   \
2430   V(uaddl_asimddiff_l)              \
2431   V(uaddlb_z_zz)                    \
2432   V(uaddlp_asimdmisc_p)             \
2433   V(uaddlt_z_zz)                    \
2434   V(uaddlv_asimdall_only)           \
2435   V(uaddv_r_p_z)                    \
2436   V(uaddw_asimddiff_w)              \
2437   V(uaddwb_z_zz)                    \
2438   V(uaddwt_z_zz)                    \
2439   V(ubfm_32m_bitfield)              \
2440   V(ubfm_64m_bitfield)              \
2441   V(ucvtf_asimdmisc_r)              \
2442   V(ucvtf_asimdmiscfp16_r)          \
2443   V(ucvtf_asimdshf_c)               \
2444   V(ucvtf_asisdmisc_r)              \
2445   V(ucvtf_asisdmiscfp16_r)          \
2446   V(ucvtf_asisdshf_c)               \
2447   V(ucvtf_d32_float2fix)            \
2448   V(ucvtf_d32_float2int)            \
2449   V(ucvtf_d64_float2fix)            \
2450   V(ucvtf_d64_float2int)            \
2451   V(ucvtf_h32_float2fix)            \
2452   V(ucvtf_h32_float2int)            \
2453   V(ucvtf_h64_float2fix)            \
2454   V(ucvtf_h64_float2int)            \
2455   V(ucvtf_s32_float2fix)            \
2456   V(ucvtf_s32_float2int)            \
2457   V(ucvtf_s64_float2fix)            \
2458   V(ucvtf_s64_float2int)            \
2459   V(ucvtf_z_p_z_h2fp16)             \
2460   V(ucvtf_z_p_z_w2d)                \
2461   V(ucvtf_z_p_z_w2fp16)             \
2462   V(ucvtf_z_p_z_w2s)                \
2463   V(ucvtf_z_p_z_x2d)                \
2464   V(ucvtf_z_p_z_x2fp16)             \
2465   V(ucvtf_z_p_z_x2s)                \
2466   V(udf_only_perm_undef)            \
2467   V(udiv_32_dp_2src)                \
2468   V(udiv_64_dp_2src)                \
2469   V(udiv_z_p_zz)                    \
2470   V(udivr_z_p_zz)                   \
2471   V(udot_asimdelem_d)               \
2472   V(udot_asimdsame2_d)              \
2473   V(udot_z_zzz)                     \
2474   V(udot_z_zzzi_d)                  \
2475   V(udot_z_zzzi_s)                  \
2476   V(uhadd_asimdsame_only)           \
2477   V(uhadd_z_p_zz)                   \
2478   V(uhsub_asimdsame_only)           \
2479   V(uhsub_z_p_zz)                   \
2480   V(uhsubr_z_p_zz)                  \
2481   V(umaddl_64wa_dp_3src)            \
2482   V(umax_asimdsame_only)            \
2483   V(umax_z_p_zz)                    \
2484   V(umax_z_zi)                      \
2485   V(umaxp_asimdsame_only)           \
2486   V(umaxp_z_p_zz)                   \
2487   V(umaxv_asimdall_only)            \
2488   V(umaxv_r_p_z)                    \
2489   V(umin_asimdsame_only)            \
2490   V(umin_z_p_zz)                    \
2491   V(umin_z_zi)                      \
2492   V(uminp_asimdsame_only)           \
2493   V(uminp_z_p_zz)                   \
2494   V(uminv_asimdall_only)            \
2495   V(uminv_r_p_z)                    \
2496   V(umlal_asimddiff_l)              \
2497   V(umlal_asimdelem_l)              \
2498   V(umlalb_z_zzz)                   \
2499   V(umlalb_z_zzzi_d)                \
2500   V(umlalb_z_zzzi_s)                \
2501   V(umlalt_z_zzz)                   \
2502   V(umlalt_z_zzzi_d)                \
2503   V(umlalt_z_zzzi_s)                \
2504   V(umlsl_asimddiff_l)              \
2505   V(umlsl_asimdelem_l)              \
2506   V(umlslb_z_zzz)                   \
2507   V(umlslb_z_zzzi_d)                \
2508   V(umlslb_z_zzzi_s)                \
2509   V(umlslt_z_zzz)                   \
2510   V(umlslt_z_zzzi_d)                \
2511   V(umlslt_z_zzzi_s)                \
2512   V(ummla_asimdsame2_g)             \
2513   V(ummla_z_zzz)                    \
2514   V(umov_asimdins_w_w)              \
2515   V(umov_asimdins_x_x)              \
2516   V(umsubl_64wa_dp_3src)            \
2517   V(umulh_64_dp_3src)               \
2518   V(umulh_z_p_zz)                   \
2519   V(umulh_z_zz)                     \
2520   V(umull_asimddiff_l)              \
2521   V(umull_asimdelem_l)              \
2522   V(umullb_z_zz)                    \
2523   V(umullb_z_zzi_d)                 \
2524   V(umullb_z_zzi_s)                 \
2525   V(umullt_z_zz)                    \
2526   V(umullt_z_zzi_d)                 \
2527   V(umullt_z_zzi_s)                 \
2528   V(uqadd_asimdsame_only)           \
2529   V(uqadd_asisdsame_only)           \
2530   V(uqadd_z_p_zz)                   \
2531   V(uqadd_z_zi)                     \
2532   V(uqadd_z_zz)                     \
2533   V(uqdecb_r_rs_uw)                 \
2534   V(uqdecb_r_rs_x)                  \
2535   V(uqdecd_r_rs_uw)                 \
2536   V(uqdecd_r_rs_x)                  \
2537   V(uqdecd_z_zs)                    \
2538   V(uqdech_r_rs_uw)                 \
2539   V(uqdech_r_rs_x)                  \
2540   V(uqdech_z_zs)                    \
2541   V(uqdecp_r_p_r_uw)                \
2542   V(uqdecp_r_p_r_x)                 \
2543   V(uqdecp_z_p_z)                   \
2544   V(uqdecw_r_rs_uw)                 \
2545   V(uqdecw_r_rs_x)                  \
2546   V(uqdecw_z_zs)                    \
2547   V(uqincb_r_rs_uw)                 \
2548   V(uqincb_r_rs_x)                  \
2549   V(uqincd_r_rs_uw)                 \
2550   V(uqincd_r_rs_x)                  \
2551   V(uqincd_z_zs)                    \
2552   V(uqinch_r_rs_uw)                 \
2553   V(uqinch_r_rs_x)                  \
2554   V(uqinch_z_zs)                    \
2555   V(uqincp_r_p_r_uw)                \
2556   V(uqincp_r_p_r_x)                 \
2557   V(uqincp_z_p_z)                   \
2558   V(uqincw_r_rs_uw)                 \
2559   V(uqincw_r_rs_x)                  \
2560   V(uqincw_z_zs)                    \
2561   V(uqrshl_asimdsame_only)          \
2562   V(uqrshl_asisdsame_only)          \
2563   V(uqrshl_z_p_zz)                  \
2564   V(uqrshlr_z_p_zz)                 \
2565   V(uqrshrn_asimdshf_n)             \
2566   V(uqrshrn_asisdshf_n)             \
2567   V(uqrshrnb_z_zi)                  \
2568   V(uqrshrnt_z_zi)                  \
2569   V(uqshl_asimdsame_only)           \
2570   V(uqshl_asimdshf_r)               \
2571   V(uqshl_asisdsame_only)           \
2572   V(uqshl_asisdshf_r)               \
2573   V(uqshl_z_p_zi)                   \
2574   V(uqshl_z_p_zz)                   \
2575   V(uqshlr_z_p_zz)                  \
2576   V(uqshrn_asimdshf_n)              \
2577   V(uqshrn_asisdshf_n)              \
2578   V(uqshrnb_z_zi)                   \
2579   V(uqshrnt_z_zi)                   \
2580   V(uqsub_asimdsame_only)           \
2581   V(uqsub_asisdsame_only)           \
2582   V(uqsub_z_p_zz)                   \
2583   V(uqsub_z_zi)                     \
2584   V(uqsub_z_zz)                     \
2585   V(uqsubr_z_p_zz)                  \
2586   V(uqxtn_asimdmisc_n)              \
2587   V(uqxtn_asisdmisc_n)              \
2588   V(uqxtnb_z_zz)                    \
2589   V(uqxtnt_z_zz)                    \
2590   V(urecpe_asimdmisc_r)             \
2591   V(urecpe_z_p_z)                   \
2592   V(urhadd_asimdsame_only)          \
2593   V(urhadd_z_p_zz)                  \
2594   V(urshl_asimdsame_only)           \
2595   V(urshl_asisdsame_only)           \
2596   V(urshl_z_p_zz)                   \
2597   V(urshlr_z_p_zz)                  \
2598   V(urshr_asimdshf_r)               \
2599   V(urshr_asisdshf_r)               \
2600   V(urshr_z_p_zi)                   \
2601   V(ursqrte_asimdmisc_r)            \
2602   V(ursqrte_z_p_z)                  \
2603   V(ursra_asimdshf_r)               \
2604   V(ursra_asisdshf_r)               \
2605   V(ursra_z_zi)                     \
2606   V(usdot_asimdelem_d)              \
2607   V(usdot_asimdsame2_d)             \
2608   V(usdot_z_zzz_s)                  \
2609   V(usdot_z_zzzi_s)                 \
2610   V(ushl_asimdsame_only)            \
2611   V(ushl_asisdsame_only)            \
2612   V(ushll_asimdshf_l)               \
2613   V(ushllb_z_zi)                    \
2614   V(ushllt_z_zi)                    \
2615   V(ushr_asimdshf_r)                \
2616   V(ushr_asisdshf_r)                \
2617   V(usmmla_asimdsame2_g)            \
2618   V(usmmla_z_zzz)                   \
2619   V(usqadd_asimdmisc_r)             \
2620   V(usqadd_asisdmisc_r)             \
2621   V(usqadd_z_p_zz)                  \
2622   V(usra_asimdshf_r)                \
2623   V(usra_asisdshf_r)                \
2624   V(usra_z_zi)                      \
2625   V(usubl_asimddiff_l)              \
2626   V(usublb_z_zz)                    \
2627   V(usublt_z_zz)                    \
2628   V(usubw_asimddiff_w)              \
2629   V(usubwb_z_zz)                    \
2630   V(usubwt_z_zz)                    \
2631   V(uunpkhi_z_z)                    \
2632   V(uunpklo_z_z)                    \
2633   V(uxtb_z_p_z)                     \
2634   V(uxth_z_p_z)                     \
2635   V(uxtw_z_p_z)                     \
2636   V(uzp1_asimdperm_only)            \
2637   V(uzp1_p_pp)                      \
2638   V(uzp1_z_zz)                      \
2639   V(uzp1_z_zz_q)                    \
2640   V(uzp2_asimdperm_only)            \
2641   V(uzp2_p_pp)                      \
2642   V(uzp2_z_zz)                      \
2643   V(uzp2_z_zz_q)                    \
2644   V(wfe_hi_hints)                   \
2645   V(wfet_only_systeminstrswithreg)  \
2646   V(wfi_hi_hints)                   \
2647   V(wfit_only_systeminstrswithreg)  \
2648   V(whilege_p_p_rr)                 \
2649   V(whilegt_p_p_rr)                 \
2650   V(whilehi_p_p_rr)                 \
2651   V(whilehs_p_p_rr)                 \
2652   V(whilele_p_p_rr)                 \
2653   V(whilelo_p_p_rr)                 \
2654   V(whilels_p_p_rr)                 \
2655   V(whilelt_p_p_rr)                 \
2656   V(whilerw_p_rr)                   \
2657   V(whilewr_p_rr)                   \
2658   V(wrffr_f_p)                      \
2659   V(xaflag_m_pstate)                \
2660   V(xar_vvv2_crypto3_imm6)          \
2661   V(xar_z_zzi)                      \
2662   V(xpacd_64z_dp_1src)              \
2663   V(xpaci_64z_dp_1src)              \
2664   V(xpaclri_hi_hints)               \
2665   V(xtn_asimdmisc_n)                \
2666   V(yield_hi_hints)                 \
2667   V(zip1_asimdperm_only)            \
2668   V(zip1_p_pp)                      \
2669   V(zip1_z_zz)                      \
2670   V(zip1_z_zz_q)                    \
2671   V(zip2_asimdperm_only)            \
2672   V(zip2_p_pp)                      \
2673   V(zip2_z_zz)                      \
2674   V(zip2_z_zz_q)                    \
2675   V(Unallocated)
2676 
2677 #define VISITOR_LIST_THAT_RETURN(V)                              \
2678   V(AddSubExtended)                                              \
2679   V(AddSubImmediate)                                             \
2680   V(AddSubShifted)                                               \
2681   V(AddSubWithCarry)                                             \
2682   V(AtomicMemory)                                                \
2683   V(Bitfield)                                                    \
2684   V(CompareBranch)                                               \
2685   V(ConditionalBranch)                                           \
2686   V(ConditionalCompareImmediate)                                 \
2687   V(ConditionalCompareRegister)                                  \
2688   V(ConditionalSelect)                                           \
2689   V(Crypto2RegSHA)                                               \
2690   V(Crypto3RegSHA)                                               \
2691   V(CryptoAES)                                                   \
2692   V(DataProcessing1Source)                                       \
2693   V(DataProcessing2Source)                                       \
2694   V(DataProcessing3Source)                                       \
2695   V(EvaluateIntoFlags)                                           \
2696   V(Exception)                                                   \
2697   V(Extract)                                                     \
2698   V(FPCompare)                                                   \
2699   V(FPConditionalCompare)                                        \
2700   V(FPConditionalSelect)                                         \
2701   V(FPDataProcessing1Source)                                     \
2702   V(FPDataProcessing2Source)                                     \
2703   V(FPDataProcessing3Source)                                     \
2704   V(FPFixedPointConvert)                                         \
2705   V(FPImmediate)                                                 \
2706   V(FPIntegerConvert)                                            \
2707   V(LoadLiteral)                                                 \
2708   V(LoadStoreExclusive)                                          \
2709   V(LoadStorePAC)                                                \
2710   V(LoadStorePairNonTemporal)                                    \
2711   V(LoadStorePairOffset)                                         \
2712   V(LoadStorePairPostIndex)                                      \
2713   V(LoadStorePairPreIndex)                                       \
2714   V(LoadStorePostIndex)                                          \
2715   V(LoadStorePreIndex)                                           \
2716   V(LoadStoreRCpcUnscaledOffset)                                 \
2717   V(LoadStoreRegisterOffset)                                     \
2718   V(LoadStoreUnscaledOffset)                                     \
2719   V(LoadStoreUnsignedOffset)                                     \
2720   V(LogicalImmediate)                                            \
2721   V(LogicalShifted)                                              \
2722   V(MoveWideImmediate)                                           \
2723   V(NEON2RegMisc)                                                \
2724   V(NEON2RegMiscFP16)                                            \
2725   V(NEON3Different)                                              \
2726   V(NEON3Same)                                                   \
2727   V(NEON3SameExtra)                                              \
2728   V(NEON3SameFP16)                                               \
2729   V(NEONAcrossLanes)                                             \
2730   V(NEONByIndexedElement)                                        \
2731   V(NEONCopy)                                                    \
2732   V(NEONExtract)                                                 \
2733   V(NEONLoadStoreMultiStruct)                                    \
2734   V(NEONLoadStoreMultiStructPostIndex)                           \
2735   V(NEONLoadStoreSingleStruct)                                   \
2736   V(NEONLoadStoreSingleStructPostIndex)                          \
2737   V(NEONModifiedImmediate)                                       \
2738   V(NEONPerm)                                                    \
2739   V(NEONScalar2RegMisc)                                          \
2740   V(NEONScalar2RegMiscFP16)                                      \
2741   V(NEONScalar3Diff)                                             \
2742   V(NEONScalar3Same)                                             \
2743   V(NEONScalar3SameExtra)                                        \
2744   V(NEONScalar3SameFP16)                                         \
2745   V(NEONScalarByIndexedElement)                                  \
2746   V(NEONScalarCopy)                                              \
2747   V(NEONScalarPairwise)                                          \
2748   V(NEONScalarShiftImmediate)                                    \
2749   V(NEONShiftImmediate)                                          \
2750   V(NEONTable)                                                   \
2751   V(PCRelAddressing)                                             \
2752   V(RotateRightIntoFlags)                                        \
2753   V(SVE32BitGatherLoad_ScalarPlus32BitUnscaledOffsets)           \
2754   V(SVE32BitGatherLoad_VectorPlusImm)                            \
2755   V(SVE32BitGatherLoadHalfwords_ScalarPlus32BitScaledOffsets)    \
2756   V(SVE32BitGatherLoadWords_ScalarPlus32BitScaledOffsets)        \
2757   V(SVE32BitGatherPrefetch_ScalarPlus32BitScaledOffsets)         \
2758   V(SVE32BitGatherPrefetch_VectorPlusImm)                        \
2759   V(SVE32BitScatterStore_ScalarPlus32BitScaledOffsets)           \
2760   V(SVE32BitScatterStore_ScalarPlus32BitUnscaledOffsets)         \
2761   V(SVE32BitScatterStore_VectorPlusImm)                          \
2762   V(SVE64BitGatherLoad_ScalarPlus32BitUnpackedScaledOffsets)     \
2763   V(SVE64BitGatherLoad_ScalarPlus64BitScaledOffsets)             \
2764   V(SVE64BitGatherLoad_ScalarPlus64BitUnscaledOffsets)           \
2765   V(SVE64BitGatherLoad_ScalarPlusUnpacked32BitUnscaledOffsets)   \
2766   V(SVE64BitGatherLoad_VectorPlusImm)                            \
2767   V(SVE64BitGatherPrefetch_ScalarPlus64BitScaledOffsets)         \
2768   V(SVE64BitGatherPrefetch_ScalarPlusUnpacked32BitScaledOffsets) \
2769   V(SVE64BitGatherPrefetch_VectorPlusImm)                        \
2770   V(SVE64BitScatterStore_ScalarPlus64BitScaledOffsets)           \
2771   V(SVE64BitScatterStore_ScalarPlus64BitUnscaledOffsets)         \
2772   V(SVE64BitScatterStore_ScalarPlusUnpacked32BitScaledOffsets)   \
2773   V(SVE64BitScatterStore_ScalarPlusUnpacked32BitUnscaledOffsets) \
2774   V(SVE64BitScatterStore_VectorPlusImm)                          \
2775   V(SVEAddressGeneration)                                        \
2776   V(SVEBitwiseLogicalUnpredicated)                               \
2777   V(SVEBitwiseShiftUnpredicated)                                 \
2778   V(SVEFFRInitialise)                                            \
2779   V(SVEFFRWriteFromPredicate)                                    \
2780   V(SVEFPAccumulatingReduction)                                  \
2781   V(SVEFPArithmeticUnpredicated)                                 \
2782   V(SVEFPCompareVectors)                                         \
2783   V(SVEFPCompareWithZero)                                        \
2784   V(SVEFPComplexAddition)                                        \
2785   V(SVEFPComplexMulAdd)                                          \
2786   V(SVEFPComplexMulAddIndex)                                     \
2787   V(SVEFPFastReduction)                                          \
2788   V(SVEFPMulIndex)                                               \
2789   V(SVEFPMulAdd)                                                 \
2790   V(SVEFPMulAddIndex)                                            \
2791   V(SVEFPUnaryOpUnpredicated)                                    \
2792   V(SVEIncDecByPredicateCount)                                   \
2793   V(SVEIndexGeneration)                                          \
2794   V(SVEIntArithmeticUnpredicated)                                \
2795   V(SVEIntCompareSignedImm)                                      \
2796   V(SVEIntCompareUnsignedImm)                                    \
2797   V(SVEIntCompareVectors)                                        \
2798   V(SVEIntMulAddPredicated)                                      \
2799   V(SVEIntMulAddUnpredicated)                                    \
2800   V(SVEIntReduction)                                             \
2801   V(SVEIntUnaryArithmeticPredicated)                             \
2802   V(SVEMovprfx)                                                  \
2803   V(SVEMulIndex)                                                 \
2804   V(SVEPermuteVectorExtract)                                     \
2805   V(SVEPermuteVectorInterleaving)                                \
2806   V(SVEPredicateCount)                                           \
2807   V(SVEPredicateLogical)                                         \
2808   V(SVEPropagateBreak)                                           \
2809   V(SVEStackFrameAdjustment)                                     \
2810   V(SVEStackFrameSize)                                           \
2811   V(SVEVectorSelect)                                             \
2812   V(SVEBitwiseLogical_Predicated)                                \
2813   V(SVEBitwiseLogicalWithImm_Unpredicated)                       \
2814   V(SVEBitwiseShiftByImm_Predicated)                             \
2815   V(SVEBitwiseShiftByVector_Predicated)                          \
2816   V(SVEBitwiseShiftByWideElements_Predicated)                    \
2817   V(SVEBroadcastBitmaskImm)                                      \
2818   V(SVEBroadcastFPImm_Unpredicated)                              \
2819   V(SVEBroadcastGeneralRegister)                                 \
2820   V(SVEBroadcastIndexElement)                                    \
2821   V(SVEBroadcastIntImm_Unpredicated)                             \
2822   V(SVECompressActiveElements)                                   \
2823   V(SVEConditionallyBroadcastElementToVector)                    \
2824   V(SVEConditionallyExtractElementToSIMDFPScalar)                \
2825   V(SVEConditionallyExtractElementToGeneralRegister)             \
2826   V(SVEConditionallyTerminateScalars)                            \
2827   V(SVEConstructivePrefix_Unpredicated)                          \
2828   V(SVEContiguousFirstFaultLoad_ScalarPlusScalar)                \
2829   V(SVEContiguousLoad_ScalarPlusImm)                             \
2830   V(SVEContiguousLoad_ScalarPlusScalar)                          \
2831   V(SVEContiguousNonFaultLoad_ScalarPlusImm)                     \
2832   V(SVEContiguousNonTemporalLoad_ScalarPlusImm)                  \
2833   V(SVEContiguousNonTemporalLoad_ScalarPlusScalar)               \
2834   V(SVEContiguousNonTemporalStore_ScalarPlusImm)                 \
2835   V(SVEContiguousNonTemporalStore_ScalarPlusScalar)              \
2836   V(SVEContiguousPrefetch_ScalarPlusImm)                         \
2837   V(SVEContiguousPrefetch_ScalarPlusScalar)                      \
2838   V(SVEContiguousStore_ScalarPlusImm)                            \
2839   V(SVEContiguousStore_ScalarPlusScalar)                         \
2840   V(SVECopySIMDFPScalarRegisterToVector_Predicated)              \
2841   V(SVECopyFPImm_Predicated)                                     \
2842   V(SVECopyGeneralRegisterToVector_Predicated)                   \
2843   V(SVECopyIntImm_Predicated)                                    \
2844   V(SVEElementCount)                                             \
2845   V(SVEExtractElementToSIMDFPScalarRegister)                     \
2846   V(SVEExtractElementToGeneralRegister)                          \
2847   V(SVEFPArithmetic_Predicated)                                  \
2848   V(SVEFPArithmeticWithImm_Predicated)                           \
2849   V(SVEFPConvertPrecision)                                       \
2850   V(SVEFPConvertToInt)                                           \
2851   V(SVEFPExponentialAccelerator)                                 \
2852   V(SVEFPRoundToIntegralValue)                                   \
2853   V(SVEFPTrigMulAddCoefficient)                                  \
2854   V(SVEFPTrigSelectCoefficient)                                  \
2855   V(SVEFPUnaryOp)                                                \
2856   V(SVEIncDecRegisterByElementCount)                             \
2857   V(SVEIncDecVectorByElementCount)                               \
2858   V(SVEInsertSIMDFPScalarRegister)                               \
2859   V(SVEInsertGeneralRegister)                                    \
2860   V(SVEIntAddSubtractImm_Unpredicated)                           \
2861   V(SVEIntAddSubtractVectors_Predicated)                         \
2862   V(SVEIntCompareScalarCountAndLimit)                            \
2863   V(SVEIntConvertToFP)                                           \
2864   V(SVEIntDivideVectors_Predicated)                              \
2865   V(SVEIntMinMaxImm_Unpredicated)                                \
2866   V(SVEIntMinMaxDifference_Predicated)                           \
2867   V(SVEIntMulImm_Unpredicated)                                   \
2868   V(SVEIntMulVectors_Predicated)                                 \
2869   V(SVELoadAndBroadcastElement)                                  \
2870   V(SVELoadAndBroadcastQOWord_ScalarPlusImm)                     \
2871   V(SVELoadAndBroadcastQOWord_ScalarPlusScalar)                  \
2872   V(SVELoadMultipleStructures_ScalarPlusImm)                     \
2873   V(SVELoadMultipleStructures_ScalarPlusScalar)                  \
2874   V(SVELoadPredicateRegister)                                    \
2875   V(SVELoadVectorRegister)                                       \
2876   V(SVEPartitionBreakCondition)                                  \
2877   V(SVEPermutePredicateElements)                                 \
2878   V(SVEPredicateFirstActive)                                     \
2879   V(SVEPredicateInitialize)                                      \
2880   V(SVEPredicateNextActive)                                      \
2881   V(SVEPredicateReadFromFFR_Predicated)                          \
2882   V(SVEPredicateReadFromFFR_Unpredicated)                        \
2883   V(SVEPredicateTest)                                            \
2884   V(SVEPredicateZero)                                            \
2885   V(SVEPropagateBreakToNextPartition)                            \
2886   V(SVEReversePredicateElements)                                 \
2887   V(SVEReverseVectorElements)                                    \
2888   V(SVEReverseWithinElements)                                    \
2889   V(SVESaturatingIncDecRegisterByElementCount)                   \
2890   V(SVESaturatingIncDecVectorByElementCount)                     \
2891   V(SVEStoreMultipleStructures_ScalarPlusImm)                    \
2892   V(SVEStoreMultipleStructures_ScalarPlusScalar)                 \
2893   V(SVEStorePredicateRegister)                                   \
2894   V(SVEStoreVectorRegister)                                      \
2895   V(SVETableLookup)                                              \
2896   V(SVEUnpackPredicateElements)                                  \
2897   V(SVEUnpackVectorElements)                                     \
2898   V(SVEVectorSplice)                                             \
2899   V(System)                                                      \
2900   V(TestBranch)                                                  \
2901   V(Unallocated)                                                 \
2902   V(UnconditionalBranch)                                         \
2903   V(UnconditionalBranchToRegister)                               \
2904   V(Unimplemented)
2905 
2906 #define VISITOR_LIST_THAT_DONT_RETURN(V) V(Reserved)
2907 
2908 #define VISITOR_LIST(V)       \
2909   VISITOR_LIST_THAT_RETURN(V) \
2910   VISITOR_LIST_THAT_DONT_RETURN(V)
2911 
2912 namespace vixl {
2913 namespace aarch64 {
2914 
2915 using Metadata = std::map<std::string, std::string>;
2916 
2917 // The Visitor interface consists only of the Visit() method. User classes
2918 // that inherit from this one must provide an implementation of the method.
2919 // Information about the instruction encountered by the Decoder is available
2920 // via the metadata pointer.
2921 class DecoderVisitor {
2922  public:
2923   enum VisitorConstness { kConstVisitor, kNonConstVisitor };
2924   explicit DecoderVisitor(VisitorConstness constness = kConstVisitor)
constness_(constness)2925       : constness_(constness) {}
2926 
~DecoderVisitor()2927   virtual ~DecoderVisitor() {}
2928 
2929   virtual void Visit(Metadata* metadata, const Instruction* instr) = 0;
2930 
IsConstVisitor()2931   bool IsConstVisitor() const { return constness_ == kConstVisitor; }
MutableInstruction(const Instruction * instr)2932   Instruction* MutableInstruction(const Instruction* instr) {
2933     VIXL_ASSERT(!IsConstVisitor());
2934     return const_cast<Instruction*>(instr);
2935   }
2936 
2937  protected:
2938   template <typename T>
2939   using FormToVisitorFnMapT = std::unordered_map<
2940       std::string,
2941       std::function<void(T*, const Instruction*)>>;
2942 
2943  private:
2944   const VisitorConstness constness_;
2945 };
2946 
2947 class DecodeNode;
2948 class CompiledDecodeNode;
2949 
2950 // The instruction decoder is constructed from a graph of decode nodes. At each
2951 // node, a number of bits are sampled from the instruction being decoded. The
2952 // resulting value is used to look up the next node in the graph, which then
2953 // samples other bits, and moves to other decode nodes. Eventually, a visitor
2954 // node is reached, and the corresponding visitor function is called, which
2955 // handles the instruction.
2956 class Decoder {
2957  public:
2958 #ifndef PANDA_BUILD
Decoder()2959   Decoder() { ConstructDecodeGraph(); }
2960 #else
2961   Decoder(AllocatorWrapper allocator) :
2962       allocator_(allocator),
2963       visitors_(allocator_.Adapter()),
2964       decode_nodes_(allocator_.Adapter()) {
2965     ConstructDecodeGraph();
2966   }
2967 #endif
2968 
2969   Decoder(const Decoder&) = delete;
2970   Decoder(Decoder&&) = delete;
2971   Decoder& operator=(const Decoder&) = delete;
2972   Decoder& operator=(Decoder&&) = delete;
2973 
2974   ~Decoder() = default;
2975 
GetAllocator()2976   auto GetAllocator() {
2977     return allocator_;
2978   }
2979 
2980   // Top-level wrappers around the actual decoding function.
2981   void Decode(const Instruction* instr);
2982   void Decode(Instruction* instr);
2983 
2984   // Decode all instructions from start (inclusive) to end (exclusive).
2985   template <typename T>
Decode(T start,T end)2986   void Decode(T start, T end) {
2987     for (T instr = start; instr < end; instr = instr->GetNextInstruction()) {
2988       Decode(instr);
2989     }
2990   }
2991 
2992   // Register a new visitor class with the decoder.
2993   // Decode() will call the corresponding visitor method from all registered
2994   // visitor classes when decoding reaches the leaf node of the instruction
2995   // decode tree.
2996   // Visitors are called in order.
2997   // A visitor can be registered multiple times.
2998   //
2999   //   d.AppendVisitor(V1);
3000   //   d.AppendVisitor(V2);
3001   //   d.PrependVisitor(V2);
3002   //   d.AppendVisitor(V3);
3003   //
3004   //   d.Decode(i);
3005   //
3006   // will call in order visitor methods in V2, V1, V2, V3.
3007   void AppendVisitor(DecoderVisitor* visitor);
3008   void PrependVisitor(DecoderVisitor* visitor);
3009   // These helpers register `new_visitor` before or after the first instance of
3010   // `registered_visiter` in the list.
3011   // So if
3012   //   V1, V2, V1, V2
3013   // are registered in this order in the decoder, calls to
3014   //   d.InsertVisitorAfter(V3, V1);
3015   //   d.InsertVisitorBefore(V4, V2);
3016   // will yield the order
3017   //   V1, V3, V4, V2, V1, V2
3018   //
3019   // For more complex modifications of the order of registered visitors, one can
3020   // directly access and modify the list of visitors via the `visitors()'
3021   // accessor.
3022   void InsertVisitorBefore(DecoderVisitor* new_visitor,
3023                            DecoderVisitor* registered_visitor);
3024   void InsertVisitorAfter(DecoderVisitor* new_visitor,
3025                           DecoderVisitor* registered_visitor);
3026 
3027   // Remove all instances of a previously registered visitor class from the list
3028   // of visitors stored by the decoder.
3029   void RemoveVisitor(DecoderVisitor* visitor);
3030 
GetAllocator()3031   auto GetAllocator() const {
3032     return allocator_;
3033   }
3034 
3035   class ScopedAddVisitors {
3036    public:
ScopedAddVisitors(Decoder & decoder,std::initializer_list<DecoderVisitor * > visitors)3037     ScopedAddVisitors(Decoder& decoder, std::initializer_list<DecoderVisitor*> visitors)
3038       : visitors_(decoder.visitors_)
3039       , old_end_(visitors_.insert(visitors_.end(), visitors)) {
3040     }
3041 
~ScopedAddVisitors()3042     ~ScopedAddVisitors() {
3043       visitors_.erase(old_end_, visitors_.end());
3044     }
3045 
3046    private:
3047     List<DecoderVisitor*>& visitors_;
3048     List<DecoderVisitor*>::iterator old_end_;
3049   };
3050 
3051 #define DECLARE(A) void Visit_##A(const Instruction* instr);
INSTRUCTION_VISITOR_LIST(DECLARE)3052   INSTRUCTION_VISITOR_LIST(DECLARE)
3053 #undef DECLARE
3054 
3055 #ifndef PANDA_BUILD
3056   std::list<DecoderVisitor*>* visitors() { return &visitors_; }
3057 #else
3058   List<DecoderVisitor*>* visitors() { return &visitors_; }
3059 #endif
3060 
3061   // Get a DecodeNode by name from the Decoder's map.
3062   DecodeNode* GetDecodeNode(const String& name);
3063 
3064  private:
3065   // Decodes an instruction and calls the visitor functions registered with the
3066   // Decoder class.
3067   void DecodeInstruction(const Instruction* instr);
3068 
3069   // Add an initialised DecodeNode to the decode_node_ map.
3070   void AddDecodeNode(const DecodeNode& node);
3071 
3072   AllocatorWrapper allocator_;
3073 
3074   // Visitors are registered in a list.
3075   List<DecoderVisitor*> visitors_;
3076   // Map of node names to DecodeNodes.
3077   Map<String, DecodeNode> decode_nodes_;
3078 
3079   // Compile the dynamically generated decode graph based on the static
3080   // information in kDecodeMapping and kVisitorNodes.
3081   void ConstructDecodeGraph();
3082 
3083   // Root node for the compiled decoder graph, stored here to avoid a map lookup
3084   // for every instruction decoded.
3085   CompiledDecodeNode* compiled_decoder_root_;
3086 };
3087 
3088 const int kMaxDecodeSampledBits = 24;
3089 const int kMaxDecodeMappings = 280;
3090 typedef void (Decoder::*DecodeFnPtr)(const Instruction*);
3091 typedef uint32_t (Instruction::*BitExtractFn)(void) const;
3092 
3093 // A Visitor node maps the name of a visitor to the function that handles it.
3094 struct VisitorNode {
3095   const char* name;
3096   const DecodeFnPtr visitor_fn;
3097 };
3098 
3099 // DecodePattern and DecodeMapping represent the input data to the decoder
3100 // compilation stage. After compilation, the decoder is embodied in the graph
3101 // of CompiledDecodeNodes pointer to by compiled_decoder_root_.
3102 
3103 // A DecodePattern maps a pattern of set/unset/don't care (1, 0, x) bits as a
3104 // string to the name of its handler.
3105 struct DecodePattern {
3106   const char* pattern;
3107   const char* handler;
3108 };
3109 
3110 // A DecodeMapping consists of the name of a handler, the bits sampled in the
3111 // instruction by that handler, and a mapping from the pattern that those
3112 // sampled bits match to the corresponding name of a node.
3113 struct DecodeMapping {
3114   const char* name;
3115   const uint8_t sampled_bits[kMaxDecodeSampledBits];
3116   const DecodePattern mapping[kMaxDecodeMappings];
3117 };
3118 
3119 // For speed, before nodes can be used for decoding instructions, they must
3120 // be compiled. This converts the mapping "bit pattern strings to decoder name
3121 // string" stored in DecodeNodes to an array look up for the pointer to the next
3122 // node, stored in CompiledDecodeNodes. Compilation may also apply other
3123 // optimisations for simple decode patterns.
3124 class CompiledDecodeNode {
3125  public:
3126   // Constructor for decode node, containing a decode table and pointer to a
3127   // function that extracts the bits to be sampled.
3128 #ifndef PANDA_BUILD
CompiledDecodeNode(BitExtractFn bit_extract_fn,size_t decode_table_size)3129   CompiledDecodeNode(BitExtractFn bit_extract_fn, size_t decode_table_size)
3130 #else
3131   CompiledDecodeNode(BitExtractFn bit_extract_fn, size_t decode_table_size, AllocatorWrapper allocator)
3132 #endif
3133       : bit_extract_fn_(bit_extract_fn),
3134         visitor_fn_(NULL),
3135         decode_table_size_(decode_table_size),
3136         decoder_(NULL) {
3137 #ifndef PANDA_BUILD
3138     decode_table_ = new CompiledDecodeNode*[decode_table_size_];
3139 #else
3140     decode_table_ = allocator.New<CompiledDecodeNode*[]>(decode_table_size_);
3141 #endif
3142     memset(decode_table_, 0, decode_table_size_ * sizeof(decode_table_[0]));
3143   }
3144 
3145   // Constructor for wrappers around visitor functions. These require no
3146   // decoding, so no bit extraction function or decode table is assigned.
CompiledDecodeNode(DecodeFnPtr visitor_fn,Decoder * decoder)3147   explicit CompiledDecodeNode(DecodeFnPtr visitor_fn, Decoder* decoder)
3148       : bit_extract_fn_(NULL),
3149         visitor_fn_(visitor_fn),
3150         decode_table_(NULL),
3151         decode_table_size_(0),
3152         decoder_(decoder) {}
3153 
~CompiledDecodeNode()3154   ~CompiledDecodeNode() VIXL_NEGATIVE_TESTING_ALLOW_EXCEPTION {
3155     // Free the decode table, if this is a compiled, non-leaf node.
3156     if (decode_table_ != NULL) {
3157       VIXL_ASSERT(!IsLeafNode());
3158 #ifndef VIXL_USE_PANDA_ALLOC
3159       delete[] decode_table_;
3160 #endif
3161     }
3162   }
3163 
3164   // Decode the instruction by either sampling the bits using the bit extract
3165   // function to find the next node, or, if we're at a leaf, calling the visitor
3166   // function.
3167   void Decode(const Instruction* instr) const;
3168 
3169   // A leaf node is a wrapper for a visitor function.
IsLeafNode()3170   bool IsLeafNode() const {
3171     VIXL_ASSERT(((visitor_fn_ == NULL) && (bit_extract_fn_ != NULL)) ||
3172                 ((visitor_fn_ != NULL) && (bit_extract_fn_ == NULL)));
3173     return visitor_fn_ != NULL;
3174   }
3175 
3176   // Get a pointer to the next node required in the decode process, based on the
3177   // bits sampled by the current node.
GetNodeForBits(uint32_t bits)3178   CompiledDecodeNode* GetNodeForBits(uint32_t bits) const {
3179     VIXL_ASSERT(bits < decode_table_size_);
3180     return decode_table_[bits];
3181   }
3182 
3183   // Set the next node in the decode process for the pattern of sampled bits in
3184   // the current node.
SetNodeForBits(uint32_t bits,CompiledDecodeNode * n)3185   void SetNodeForBits(uint32_t bits, CompiledDecodeNode* n) {
3186     VIXL_ASSERT(bits < decode_table_size_);
3187     VIXL_ASSERT(n != NULL);
3188     decode_table_[bits] = n;
3189   }
3190 
3191  private:
3192   // Pointer to an instantiated template function for extracting the bits
3193   // sampled by this node. Set to NULL for leaf nodes.
3194   const BitExtractFn bit_extract_fn_;
3195 
3196   // Visitor function that handles the instruction identified. Set only for
3197   // leaf nodes, where no extra decoding is required, otherwise NULL.
3198   const DecodeFnPtr visitor_fn_;
3199 
3200   // Mapping table from instruction bits to next decode stage.
3201   CompiledDecodeNode** decode_table_;
3202   const size_t decode_table_size_;
3203 
3204   // Pointer to the decoder containing this node, used to call its visitor
3205   // function for leaf nodes. Set to NULL for non-leaf nodes.
3206   Decoder* decoder_;
3207 };
3208 
3209 class DecodeNode {
3210  public:
3211   // Constructor for DecodeNode wrappers around visitor functions. These are
3212   // marked as "compiled", as there is no decoding left to do.
DecodeNode(const VisitorNode & visitor,Decoder * decoder)3213   explicit DecodeNode(const VisitorNode& visitor, Decoder* decoder)
3214       :
3215 #ifdef PANDA_BUILD
3216         allocator_(decoder->GetAllocator()),
3217 #endif
3218         name_(visitor.name, allocator_.Adapter()),
3219         sampled_bits_(allocator_.Adapter()),
3220         visitor_fn_(visitor.visitor_fn),
3221         pattern_table_(allocator_.Adapter()),
3222         decoder_(decoder),
3223         compiled_node_(NULL) {}
3224 
3225   // Constructor for DecodeNodes that map bit patterns to other DecodeNodes.
DecodeNode(const DecodeMapping & map,Decoder * decoder)3226   explicit DecodeNode(const DecodeMapping& map, Decoder* decoder)
3227       :
3228 #ifdef PANDA_BUILD
3229         allocator_(decoder->GetAllocator()),
3230 #endif
3231         name_(map.name, allocator_.Adapter()),
3232         sampled_bits_(allocator_.Adapter()),
3233         visitor_fn_(NULL),
3234         pattern_table_(allocator_.Adapter()),
3235         decoder_(decoder),
3236         compiled_node_(NULL) {
3237     // The length of the bit string in the first mapping determines the number
3238     // of sampled bits. When adding patterns later, we assert that all mappings
3239     // sample the same number of bits.
3240     VIXL_CHECK(strcmp(map.mapping[0].pattern, "otherwise") != 0);
3241     int bit_count = static_cast<int>(strlen(map.mapping[0].pattern));
3242     VIXL_CHECK((bit_count > 0) && (bit_count <= 32));
3243     SetSampledBits(map.sampled_bits, bit_count);
3244     AddPatterns(map.mapping);
3245   }
3246 
~DecodeNode()3247   ~DecodeNode() {
3248 #ifndef VIXL_USE_PANDA_ALLOC
3249     // Delete the compiled version of this node, if one was created.
3250     if (compiled_node_ != NULL) {
3251       delete compiled_node_;
3252     }
3253 #endif
3254   }
3255 
GetAllocator()3256   auto GetAllocator() const {
3257     return allocator_;
3258   }
3259 
3260   // Set the bits sampled from the instruction by this node.
3261   void SetSampledBits(const uint8_t* bits, int bit_count);
3262 
3263   // Get the bits sampled from the instruction by this node.
3264   const Vector<uint8_t>& GetSampledBits() const;
3265 
3266   // Get the number of bits sampled from the instruction by this node.
3267   size_t GetSampledBitsCount() const;
3268 
3269   // Add patterns to this node's internal pattern table.
3270   void AddPatterns(const DecodePattern* patterns);
3271 
3272   // A leaf node is a DecodeNode that wraps the visitor function for the
3273   // identified instruction class.
IsLeafNode()3274   bool IsLeafNode() const { return visitor_fn_ != NULL; }
3275 
GetName()3276   const String& GetName() const { return name_; }
3277 
3278   // Create a CompiledDecodeNode of specified table size that uses
3279   // bit_extract_fn to sample bits from the instruction.
CreateCompiledNode(BitExtractFn bit_extract_fn,size_t table_size)3280   void CreateCompiledNode(BitExtractFn bit_extract_fn, size_t table_size) {
3281     VIXL_ASSERT(bit_extract_fn != NULL);
3282     VIXL_ASSERT(table_size > 0);
3283 #ifndef PANDA_BUILD
3284     compiled_node_ = new CompiledDecodeNode(bit_extract_fn, table_size);
3285 #else
3286     auto allocator{decoder_->GetAllocator()};
3287     compiled_node_ = allocator.New<CompiledDecodeNode>(bit_extract_fn, table_size, allocator);
3288 #endif
3289   }
3290 
3291   // Create a CompiledDecodeNode wrapping a visitor function. No decoding is
3292   // required for this node; the visitor function is called instead.
CreateVisitorNode()3293   void CreateVisitorNode() {
3294 #ifndef PANDA_BUILD
3295     compiled_node_ = new CompiledDecodeNode(visitor_fn_, decoder_);
3296 #else
3297     auto allocator{decoder_->GetAllocator()};
3298     compiled_node_ = allocator.New<CompiledDecodeNode>(visitor_fn_, decoder_);
3299 #endif
3300   }
3301 
3302   // Find and compile the DecodeNode named "name", and set it as the node for
3303   // the pattern "bits".
3304   void CompileNodeForBits(Decoder* decoder, const String& name, uint32_t bits);
3305 
3306   // Get a pointer to an instruction method that extracts the instruction bits
3307   // specified by the mask argument, and returns those sampled bits as a
3308   // contiguous sequence, suitable for indexing an array.
3309   // For example, a mask of 0b1010 returns a function that, given an instruction
3310   // 0bXYZW, will return 0bXZ.
GetBitExtractFunction(uint32_t mask)3311   BitExtractFn GetBitExtractFunction(uint32_t mask) {
3312     return GetBitExtractFunctionHelper(mask, 0);
3313   }
3314 
3315   // Get a pointer to an Instruction method that applies a mask to the
3316   // instruction bits, and tests if the result is equal to value. The returned
3317   // function gives a 1 result if (inst & mask == value), 0 otherwise.
GetBitExtractFunction(uint32_t mask,uint32_t value)3318   BitExtractFn GetBitExtractFunction(uint32_t mask, uint32_t value) {
3319     return GetBitExtractFunctionHelper(value, mask);
3320   }
3321 
3322   // Compile this DecodeNode into a new CompiledDecodeNode and returns a pointer
3323   // to it. This pointer is also stored inside the DecodeNode itself. Destroying
3324   // a DecodeNode frees its associated CompiledDecodeNode.
3325   CompiledDecodeNode* Compile(Decoder* decoder);
3326 
3327   // Get a pointer to the CompiledDecodeNode associated with this DecodeNode.
3328   // Returns NULL if the node has not been compiled yet.
GetCompiledNode()3329   CompiledDecodeNode* GetCompiledNode() const { return compiled_node_; }
IsCompiled()3330   bool IsCompiled() const { return GetCompiledNode() != NULL; }
3331 
3332  private:
3333   // Generate a mask and value pair from a string constructed from 0, 1 and x
3334   // (don't care) characters.
3335   // For example "10x1" should return mask = 0b1101, value = 0b1001.
3336   typedef std::pair<Instr, Instr> MaskValuePair;
3337   MaskValuePair GenerateMaskValuePair(const String& pattern) const;
3338 
3339   // Generate a pattern string ordered by the bit positions sampled by this
3340   // node. The first character in the string corresponds to the lowest sampled
3341   // bit.
3342   // For example, a pattern of "1x0" expected when sampling bits 31, 1 and 30
3343   // returns the pattern "x01"; bit 1 should be 'x', bit 30 '0' and bit 31 '1'.
3344   // This output makes comparisons easier between the pattern and bits sampled
3345   // from an instruction using the fast "compress" algorithm. See
3346   // Instruction::Compress().
3347   String GenerateOrderedPattern(const char* pattern) const;
3348 
3349   // Generate a mask with a bit set at each sample position.
3350   uint32_t GenerateSampledBitsMask() const;
3351 
3352   // Try to compile a more optimised decode operation for this node, returning
3353   // true if successful.
3354   bool TryCompileOptimisedDecodeTable(Decoder* decoder);
3355 
3356   // Helper function that returns a bit extracting function. If y is zero,
3357   // x is a bit extraction mask. Otherwise, y is the mask, and x is the value
3358   // to match after masking.
3359   BitExtractFn GetBitExtractFunctionHelper(uint32_t x, uint32_t y);
3360 
3361   AllocatorWrapper allocator_;
3362 
3363   // Name of this decoder node, used to construct edges in the decode graph.
3364   String name_;
3365 
3366   // Vector of bits sampled from an instruction to determine which node to look
3367   // up next in the decode process.
3368   Vector<uint8_t> sampled_bits_;
3369 
3370   // Visitor function that handles the instruction identified. Set only for leaf
3371   // nodes, where no extra decoding is required. For non-leaf decoding nodes,
3372   // this pointer is NULL.
3373   DecodeFnPtr visitor_fn_;
3374 
3375   // Source mapping from bit pattern to name of next decode stage.
3376   Vector<DecodePattern> pattern_table_;
3377 
3378   // Pointer to the decoder containing this node, used to call its visitor
3379   // function for leaf nodes.
3380   Decoder* decoder_;
3381 
3382   // Pointer to the compiled version of this node. Is this node hasn't been
3383   // compiled yet, this pointer is NULL.
3384   CompiledDecodeNode* compiled_node_;
3385 };
3386 
3387 }  // namespace aarch64
3388 }  // namespace vixl
3389 
3390 #endif  // VIXL_AARCH64_DECODER_AARCH64_H_
3391