1 /* This file is automatically generated by aarch64-gen.  Do not edit!  */
2 /* Copyright (C) 2012-2024 Free Software Foundation, Inc.
3    Contributed by ARM Ltd.
4 
5    This file is part of the GNU opcodes library.
6 
7    This library is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3, or (at your option)
10    any later version.
11 
12    It is distributed in the hope that it will be useful, but WITHOUT
13    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
15    License for more details.
16 
17    You should have received a copy of the GNU General Public License
18    along with this program; see the file COPYING3. If not,
19    see <http://www.gnu.org/licenses/>.  */
20 
21 #include "sysdep.h"
22 #include "aarch64-asm.h"
23 
24 
25 const aarch64_opcode *
aarch64_find_real_opcode(const aarch64_opcode * opcode)26 aarch64_find_real_opcode (const aarch64_opcode *opcode)
27 {
28   /* Use the index as the key to locate the real opcode.  */
29   int key = opcode - aarch64_opcode_table;
30   int value;
31   switch (key)
32     {
33     case 3:         /* ngc */
34     case 2:         /* sbc */
35       value = 2;    /* --> sbc.  */
36       break;
37     case 5:         /* ngcs */
38     case 4:         /* sbcs */
39       value = 4;    /* --> sbcs.  */
40       break;
41     case 8:         /* cmn */
42     case 7:         /* adds */
43       value = 7;    /* --> adds.  */
44       break;
45     case 11:        /* cmp */
46     case 10:        /* subs */
47       value = 10;   /* --> subs.  */
48       break;
49     case 13:        /* mov */
50     case 12:        /* add */
51       value = 12;   /* --> add.  */
52       break;
53     case 15:        /* cmn */
54     case 14:        /* adds */
55       value = 14;   /* --> adds.  */
56       break;
57     case 18:        /* cmp */
58     case 17:        /* subs */
59       value = 17;   /* --> subs.  */
60       break;
61     case 23:        /* cmn */
62     case 22:        /* adds */
63       value = 22;   /* --> adds.  */
64       break;
65     case 25:        /* neg */
66     case 24:        /* sub */
67       value = 24;   /* --> sub.  */
68       break;
69     case 27:        /* cmp */
70     case 28:        /* negs */
71     case 26:        /* subs */
72       value = 26;   /* --> subs.  */
73       break;
74     case 153:       /* mov */
75     case 152:       /* umov */
76       value = 152;  /* --> umov.  */
77       break;
78     case 155:       /* mov */
79     case 154:       /* ins */
80       value = 154;  /* --> ins.  */
81       break;
82     case 157:       /* mov */
83     case 156:       /* ins */
84       value = 156;  /* --> ins.  */
85       break;
86     case 243:       /* mvn */
87     case 242:       /* not */
88       value = 242;  /* --> not.  */
89       break;
90     case 318:       /* mov */
91     case 317:       /* orr */
92       value = 317;  /* --> orr.  */
93       break;
94     case 389:       /* sxtl */
95     case 388:       /* sshll */
96       value = 388;  /* --> sshll.  */
97       break;
98     case 391:       /* sxtl2 */
99     case 390:       /* sshll2 */
100       value = 390;  /* --> sshll2.  */
101       break;
102     case 413:       /* uxtl */
103     case 412:       /* ushll */
104       value = 412;  /* --> ushll.  */
105       break;
106     case 415:       /* uxtl2 */
107     case 414:       /* ushll2 */
108       value = 414;  /* --> ushll2.  */
109       break;
110     case 536:       /* mov */
111     case 535:       /* dup */
112       value = 535;  /* --> dup.  */
113       break;
114     case 623:       /* sxtw */
115     case 622:       /* sxth */
116     case 621:       /* sxtb */
117     case 624:       /* asr */
118     case 620:       /* sbfx */
119     case 619:       /* sbfiz */
120     case 618:       /* sbfm */
121       value = 618;  /* --> sbfm.  */
122       break;
123     case 627:       /* bfc */
124     case 628:       /* bfxil */
125     case 626:       /* bfi */
126     case 625:       /* bfm */
127       value = 625;  /* --> bfm.  */
128       break;
129     case 633:       /* uxth */
130     case 632:       /* uxtb */
131     case 635:       /* lsr */
132     case 634:       /* lsl */
133     case 631:       /* ubfx */
134     case 630:       /* ubfiz */
135     case 629:       /* ubfm */
136       value = 629;  /* --> ubfm.  */
137       break;
138     case 665:       /* cset */
139     case 664:       /* cinc */
140     case 663:       /* csinc */
141       value = 663;  /* --> csinc.  */
142       break;
143     case 668:       /* csetm */
144     case 667:       /* cinv */
145     case 666:       /* csinv */
146       value = 666;  /* --> csinv.  */
147       break;
148     case 670:       /* cneg */
149     case 669:       /* csneg */
150       value = 669;  /* --> csneg.  */
151       break;
152     case 688:       /* rev */
153     case 689:       /* rev64 */
154       value = 688;  /* --> rev.  */
155       break;
156     case 714:       /* lsl */
157     case 713:       /* lslv */
158       value = 713;  /* --> lslv.  */
159       break;
160     case 716:       /* lsr */
161     case 715:       /* lsrv */
162       value = 715;  /* --> lsrv.  */
163       break;
164     case 718:       /* asr */
165     case 717:       /* asrv */
166       value = 717;  /* --> asrv.  */
167       break;
168     case 720:       /* ror */
169     case 719:       /* rorv */
170       value = 719;  /* --> rorv.  */
171       break;
172     case 723:       /* cmpp */
173     case 722:       /* subps */
174       value = 722;  /* --> subps.  */
175       break;
176     case 736:       /* mul */
177     case 735:       /* madd */
178       value = 735;  /* --> madd.  */
179       break;
180     case 738:       /* mneg */
181     case 737:       /* msub */
182       value = 737;  /* --> msub.  */
183       break;
184     case 740:       /* smull */
185     case 739:       /* smaddl */
186       value = 739;  /* --> smaddl.  */
187       break;
188     case 742:       /* smnegl */
189     case 741:       /* smsubl */
190       value = 741;  /* --> smsubl.  */
191       break;
192     case 745:       /* umull */
193     case 744:       /* umaddl */
194       value = 744;  /* --> umaddl.  */
195       break;
196     case 747:       /* umnegl */
197     case 746:       /* umsubl */
198       value = 746;  /* --> umsubl.  */
199       break;
200     case 759:       /* ror */
201     case 758:       /* extr */
202       value = 758;  /* --> extr.  */
203       break;
204     case 996:       /* bic */
205     case 995:       /* and */
206       value = 995;  /* --> and.  */
207       break;
208     case 998:       /* mov */
209     case 997:       /* orr */
210       value = 997;  /* --> orr.  */
211       break;
212     case 1001:      /* tst */
213     case 1000:      /* ands */
214       value = 1000; /* --> ands.  */
215       break;
216     case 1006:      /* uxtw */
217     case 1005:      /* mov */
218     case 1004:      /* orr */
219       value = 1004; /* --> orr.  */
220       break;
221     case 1008:      /* mvn */
222     case 1007:      /* orn */
223       value = 1007; /* --> orn.  */
224       break;
225     case 1012:      /* tst */
226     case 1011:      /* ands */
227       value = 1011; /* --> ands.  */
228       break;
229     case 1138:      /* staddb */
230     case 1042:      /* ldaddb */
231       value = 1042; /* --> ldaddb.  */
232       break;
233     case 1139:      /* staddh */
234     case 1043:      /* ldaddh */
235       value = 1043; /* --> ldaddh.  */
236       break;
237     case 1140:      /* stadd */
238     case 1044:      /* ldadd */
239       value = 1044; /* --> ldadd.  */
240       break;
241     case 1141:      /* staddlb */
242     case 1046:      /* ldaddlb */
243       value = 1046; /* --> ldaddlb.  */
244       break;
245     case 1142:      /* staddlh */
246     case 1049:      /* ldaddlh */
247       value = 1049; /* --> ldaddlh.  */
248       break;
249     case 1143:      /* staddl */
250     case 1052:      /* ldaddl */
251       value = 1052; /* --> ldaddl.  */
252       break;
253     case 1144:      /* stclrb */
254     case 1054:      /* ldclrb */
255       value = 1054; /* --> ldclrb.  */
256       break;
257     case 1145:      /* stclrh */
258     case 1055:      /* ldclrh */
259       value = 1055; /* --> ldclrh.  */
260       break;
261     case 1146:      /* stclr */
262     case 1056:      /* ldclr */
263       value = 1056; /* --> ldclr.  */
264       break;
265     case 1147:      /* stclrlb */
266     case 1058:      /* ldclrlb */
267       value = 1058; /* --> ldclrlb.  */
268       break;
269     case 1148:      /* stclrlh */
270     case 1061:      /* ldclrlh */
271       value = 1061; /* --> ldclrlh.  */
272       break;
273     case 1149:      /* stclrl */
274     case 1064:      /* ldclrl */
275       value = 1064; /* --> ldclrl.  */
276       break;
277     case 1150:      /* steorb */
278     case 1066:      /* ldeorb */
279       value = 1066; /* --> ldeorb.  */
280       break;
281     case 1151:      /* steorh */
282     case 1067:      /* ldeorh */
283       value = 1067; /* --> ldeorh.  */
284       break;
285     case 1152:      /* steor */
286     case 1068:      /* ldeor */
287       value = 1068; /* --> ldeor.  */
288       break;
289     case 1153:      /* steorlb */
290     case 1070:      /* ldeorlb */
291       value = 1070; /* --> ldeorlb.  */
292       break;
293     case 1154:      /* steorlh */
294     case 1073:      /* ldeorlh */
295       value = 1073; /* --> ldeorlh.  */
296       break;
297     case 1155:      /* steorl */
298     case 1076:      /* ldeorl */
299       value = 1076; /* --> ldeorl.  */
300       break;
301     case 1156:      /* stsetb */
302     case 1078:      /* ldsetb */
303       value = 1078; /* --> ldsetb.  */
304       break;
305     case 1157:      /* stseth */
306     case 1079:      /* ldseth */
307       value = 1079; /* --> ldseth.  */
308       break;
309     case 1158:      /* stset */
310     case 1080:      /* ldset */
311       value = 1080; /* --> ldset.  */
312       break;
313     case 1159:      /* stsetlb */
314     case 1082:      /* ldsetlb */
315       value = 1082; /* --> ldsetlb.  */
316       break;
317     case 1160:      /* stsetlh */
318     case 1085:      /* ldsetlh */
319       value = 1085; /* --> ldsetlh.  */
320       break;
321     case 1161:      /* stsetl */
322     case 1088:      /* ldsetl */
323       value = 1088; /* --> ldsetl.  */
324       break;
325     case 1162:      /* stsmaxb */
326     case 1090:      /* ldsmaxb */
327       value = 1090; /* --> ldsmaxb.  */
328       break;
329     case 1163:      /* stsmaxh */
330     case 1091:      /* ldsmaxh */
331       value = 1091; /* --> ldsmaxh.  */
332       break;
333     case 1164:      /* stsmax */
334     case 1092:      /* ldsmax */
335       value = 1092; /* --> ldsmax.  */
336       break;
337     case 1165:      /* stsmaxlb */
338     case 1094:      /* ldsmaxlb */
339       value = 1094; /* --> ldsmaxlb.  */
340       break;
341     case 1166:      /* stsmaxlh */
342     case 1097:      /* ldsmaxlh */
343       value = 1097; /* --> ldsmaxlh.  */
344       break;
345     case 1167:      /* stsmaxl */
346     case 1100:      /* ldsmaxl */
347       value = 1100; /* --> ldsmaxl.  */
348       break;
349     case 1168:      /* stsminb */
350     case 1102:      /* ldsminb */
351       value = 1102; /* --> ldsminb.  */
352       break;
353     case 1169:      /* stsminh */
354     case 1103:      /* ldsminh */
355       value = 1103; /* --> ldsminh.  */
356       break;
357     case 1170:      /* stsmin */
358     case 1104:      /* ldsmin */
359       value = 1104; /* --> ldsmin.  */
360       break;
361     case 1171:      /* stsminlb */
362     case 1106:      /* ldsminlb */
363       value = 1106; /* --> ldsminlb.  */
364       break;
365     case 1172:      /* stsminlh */
366     case 1109:      /* ldsminlh */
367       value = 1109; /* --> ldsminlh.  */
368       break;
369     case 1173:      /* stsminl */
370     case 1112:      /* ldsminl */
371       value = 1112; /* --> ldsminl.  */
372       break;
373     case 1174:      /* stumaxb */
374     case 1114:      /* ldumaxb */
375       value = 1114; /* --> ldumaxb.  */
376       break;
377     case 1175:      /* stumaxh */
378     case 1115:      /* ldumaxh */
379       value = 1115; /* --> ldumaxh.  */
380       break;
381     case 1176:      /* stumax */
382     case 1116:      /* ldumax */
383       value = 1116; /* --> ldumax.  */
384       break;
385     case 1177:      /* stumaxlb */
386     case 1118:      /* ldumaxlb */
387       value = 1118; /* --> ldumaxlb.  */
388       break;
389     case 1178:      /* stumaxlh */
390     case 1121:      /* ldumaxlh */
391       value = 1121; /* --> ldumaxlh.  */
392       break;
393     case 1179:      /* stumaxl */
394     case 1124:      /* ldumaxl */
395       value = 1124; /* --> ldumaxl.  */
396       break;
397     case 1180:      /* stuminb */
398     case 1126:      /* lduminb */
399       value = 1126; /* --> lduminb.  */
400       break;
401     case 1181:      /* stuminh */
402     case 1127:      /* lduminh */
403       value = 1127; /* --> lduminh.  */
404       break;
405     case 1182:      /* stumin */
406     case 1128:      /* ldumin */
407       value = 1128; /* --> ldumin.  */
408       break;
409     case 1183:      /* stuminlb */
410     case 1130:      /* lduminlb */
411       value = 1130; /* --> lduminlb.  */
412       break;
413     case 1184:      /* stuminlh */
414     case 1133:      /* lduminlh */
415       value = 1133; /* --> lduminlh.  */
416       break;
417     case 1185:      /* stuminl */
418     case 1136:      /* lduminl */
419       value = 1136; /* --> lduminl.  */
420       break;
421     case 1207:      /* mov */
422     case 1206:      /* movn */
423       value = 1206; /* --> movn.  */
424       break;
425     case 1209:      /* mov */
426     case 1208:      /* movz */
427       value = 1208; /* --> movz.  */
428       break;
429     case 3205:      /* clrbhb */
430     case 1288:      /* autibsp */
431     case 1287:      /* autibz */
432     case 1286:      /* autiasp */
433     case 1285:      /* autiaz */
434     case 1284:      /* pacibsp */
435     case 1283:      /* pacibz */
436     case 1282:      /* paciasp */
437     case 1281:      /* paciaz */
438     case 1261:      /* gcsb */
439     case 1241:      /* clearbhb */
440     case 1240:      /* tsb */
441     case 1239:      /* psb */
442     case 1238:      /* esb */
443     case 1237:      /* autib1716 */
444     case 1236:      /* autia1716 */
445     case 1235:      /* pacib1716 */
446     case 1234:      /* pacia1716 */
447     case 1233:      /* xpaclri */
448     case 1231:      /* sevl */
449     case 1230:      /* sev */
450     case 1229:      /* wfi */
451     case 1228:      /* wfe */
452     case 1227:      /* yield */
453     case 1226:      /* bti */
454     case 1225:      /* csdb */
455     case 1224:      /* nop */
456     case 1223:      /* hint */
457       value = 1223; /* --> hint.  */
458       break;
459     case 1247:      /* pssbb */
460     case 1246:      /* ssbb */
461     case 1245:      /* dfb */
462     case 1243:      /* dsb */
463       value = 1243; /* --> dsb.  */
464       break;
465     case 1244:      /* dsb */
466       value = 1244; /* --> dsb.  */
467       break;
468     case 3206:      /* trcit */
469     case 1274:      /* cosp */
470     case 1273:      /* cpp */
471     case 1272:      /* dvp */
472     case 1271:      /* cfp */
473     case 1267:      /* tlbi */
474     case 1266:      /* ic */
475     case 1265:      /* dc */
476     case 1264:      /* at */
477     case 1262:      /* sys */
478       value = 1262; /* --> sys.  */
479       break;
480     case 1268:      /* tlbip */
481     case 1263:      /* sysp */
482       value = 1263; /* --> sysp.  */
483       break;
484     case 1269:      /* wfet */
485       value = 1269; /* --> wfet.  */
486       break;
487     case 1270:      /* wfit */
488       value = 1270; /* --> wfit.  */
489       break;
490     case 2090:      /* bic */
491     case 1337:      /* and */
492       value = 1337; /* --> and.  */
493       break;
494     case 1320:      /* mov */
495     case 1339:      /* and */
496       value = 1339; /* --> and.  */
497       break;
498     case 1324:      /* movs */
499     case 1340:      /* ands */
500       value = 1340; /* --> ands.  */
501       break;
502     case 2091:      /* cmple */
503     case 1375:      /* cmpge */
504       value = 1375; /* --> cmpge.  */
505       break;
506     case 2094:      /* cmplt */
507     case 1378:      /* cmpgt */
508       value = 1378; /* --> cmpgt.  */
509       break;
510     case 2092:      /* cmplo */
511     case 1380:      /* cmphi */
512       value = 1380; /* --> cmphi.  */
513       break;
514     case 2093:      /* cmpls */
515     case 1383:      /* cmphs */
516       value = 1383; /* --> cmphs.  */
517       break;
518     case 1317:      /* mov */
519     case 1405:      /* cpy */
520       value = 1405; /* --> cpy.  */
521       break;
522     case 1319:      /* mov */
523     case 1406:      /* cpy */
524       value = 1406; /* --> cpy.  */
525       break;
526     case 2101:      /* fmov */
527     case 1322:      /* mov */
528     case 1407:      /* cpy */
529       value = 1407; /* --> cpy.  */
530       break;
531     case 1311:      /* mov */
532     case 1419:      /* dup */
533       value = 1419; /* --> dup.  */
534       break;
535     case 1314:      /* mov */
536     case 1310:      /* mov */
537     case 1420:      /* dup */
538       value = 1420; /* --> dup.  */
539       break;
540     case 2100:      /* fmov */
541     case 1316:      /* mov */
542     case 1421:      /* dup */
543       value = 1421; /* --> dup.  */
544       break;
545     case 1315:      /* mov */
546     case 1422:      /* dupm */
547       value = 1422; /* --> dupm.  */
548       break;
549     case 2095:      /* eon */
550     case 1424:      /* eor */
551       value = 1424; /* --> eor.  */
552       break;
553     case 1325:      /* not */
554     case 1426:      /* eor */
555       value = 1426; /* --> eor.  */
556       break;
557     case 1326:      /* nots */
558     case 1427:      /* eors */
559       value = 1427; /* --> eors.  */
560       break;
561     case 2096:      /* facle */
562     case 1432:      /* facge */
563       value = 1432; /* --> facge.  */
564       break;
565     case 2097:      /* faclt */
566     case 1433:      /* facgt */
567       value = 1433; /* --> facgt.  */
568       break;
569     case 2098:      /* fcmle */
570     case 1446:      /* fcmge */
571       value = 1446; /* --> fcmge.  */
572       break;
573     case 2099:      /* fcmlt */
574     case 1448:      /* fcmgt */
575       value = 1448; /* --> fcmgt.  */
576       break;
577     case 1308:      /* fmov */
578     case 1454:      /* fcpy */
579       value = 1454; /* --> fcpy.  */
580       break;
581     case 1307:      /* fmov */
582     case 1477:      /* fdup */
583       value = 1477; /* --> fdup.  */
584       break;
585     case 1309:      /* mov */
586     case 1809:      /* orr */
587       value = 1809; /* --> orr.  */
588       break;
589     case 2102:      /* orn */
590     case 1810:      /* orr */
591       value = 1810; /* --> orr.  */
592       break;
593     case 1313:      /* mov */
594     case 1312:      /* mov */
595     case 1812:      /* orr */
596       value = 1812; /* --> orr.  */
597       break;
598     case 1323:      /* movs */
599     case 1813:      /* orrs */
600       value = 1813; /* --> orrs.  */
601       break;
602     case 1318:      /* mov */
603     case 1876:      /* sel */
604       value = 1876; /* --> sel.  */
605       break;
606     case 1321:      /* mov */
607     case 1877:      /* sel */
608       value = 1877; /* --> sel.  */
609       break;
610     default: return NULL;
611     }
612 
613   return aarch64_opcode_table + value;
614 }
615 
616 bool
aarch64_insert_operand(const aarch64_operand * self,const aarch64_opnd_info * info,aarch64_insn * code,const aarch64_inst * inst,aarch64_operand_error * errors)617 aarch64_insert_operand (const aarch64_operand *self,
618                                  const aarch64_opnd_info *info,
619                                  aarch64_insn *code, const aarch64_inst *inst,
620                                  aarch64_operand_error *errors)
621 {
622   /* Use the index as the key.  */
623   int key = self - aarch64_operands;
624   switch (key)
625     {
626     case 1:
627     case 2:
628     case 3:
629     case 4:
630     case 5:
631     case 7:
632     case 8:
633     case 9:
634     case 10:
635     case 11:
636     case 12:
637     case 13:
638     case 14:
639     case 19:
640     case 20:
641     case 21:
642     case 22:
643     case 24:
644     case 25:
645     case 26:
646     case 27:
647     case 28:
648     case 29:
649     case 30:
650     case 31:
651     case 32:
652     case 33:
653     case 116:
654     case 117:
655     case 175:
656     case 176:
657     case 177:
658     case 178:
659     case 179:
660     case 180:
661     case 181:
662     case 182:
663     case 183:
664     case 184:
665     case 185:
666     case 186:
667     case 187:
668     case 188:
669     case 203:
670     case 204:
671     case 205:
672     case 206:
673     case 215:
674     case 216:
675     case 217:
676     case 218:
677     case 219:
678     case 227:
679     case 231:
680     case 235:
681     case 242:
682     case 243:
683     case 250:
684     case 251:
685     case 252:
686     case 253:
687       return aarch64_ins_regno (self, info, code, inst, errors);
688     case 6:
689     case 113:
690     case 114:
691     case 285:
692     case 287:
693       return aarch64_ins_none (self, info, code, inst, errors);
694     case 17:
695       return aarch64_ins_reg_extended (self, info, code, inst, errors);
696     case 18:
697       return aarch64_ins_reg_shifted (self, info, code, inst, errors);
698     case 23:
699       return aarch64_ins_ft (self, info, code, inst, errors);
700     case 34:
701     case 35:
702     case 36:
703     case 37:
704     case 289:
705       return aarch64_ins_reglane (self, info, code, inst, errors);
706     case 38:
707       return aarch64_ins_reglist (self, info, code, inst, errors);
708     case 39:
709       return aarch64_ins_ldst_reglist (self, info, code, inst, errors);
710     case 40:
711       return aarch64_ins_ldst_reglist_r (self, info, code, inst, errors);
712     case 41:
713       return aarch64_ins_ldst_elemlist (self, info, code, inst, errors);
714     case 42:
715     case 43:
716     case 44:
717     case 45:
718     case 55:
719     case 56:
720     case 57:
721     case 58:
722     case 59:
723     case 60:
724     case 61:
725     case 62:
726     case 63:
727     case 64:
728     case 65:
729     case 66:
730     case 67:
731     case 68:
732     case 69:
733     case 70:
734     case 71:
735     case 83:
736     case 84:
737     case 85:
738     case 86:
739     case 112:
740     case 172:
741     case 174:
742     case 195:
743     case 196:
744     case 197:
745     case 198:
746     case 199:
747     case 200:
748     case 201:
749     case 202:
750     case 256:
751     case 283:
752     case 284:
753     case 286:
754     case 288:
755     case 293:
756     case 294:
757       return aarch64_ins_imm (self, info, code, inst, errors);
758     case 46:
759     case 47:
760       return aarch64_ins_advsimd_imm_shift (self, info, code, inst, errors);
761     case 48:
762     case 49:
763     case 50:
764       return aarch64_ins_advsimd_imm_modified (self, info, code, inst, errors);
765     case 54:
766     case 162:
767       return aarch64_ins_fpimm (self, info, code, inst, errors);
768     case 72:
769     case 170:
770       return aarch64_ins_limm (self, info, code, inst, errors);
771     case 73:
772       return aarch64_ins_aimm (self, info, code, inst, errors);
773     case 74:
774       return aarch64_ins_imm_half (self, info, code, inst, errors);
775     case 75:
776       return aarch64_ins_fbits (self, info, code, inst, errors);
777     case 77:
778     case 78:
779     case 167:
780       return aarch64_ins_imm_rotate2 (self, info, code, inst, errors);
781     case 79:
782     case 166:
783     case 168:
784       return aarch64_ins_imm_rotate1 (self, info, code, inst, errors);
785     case 80:
786     case 81:
787       return aarch64_ins_cond (self, info, code, inst, errors);
788     case 87:
789     case 96:
790       return aarch64_ins_addr_simple (self, info, code, inst, errors);
791     case 88:
792       return aarch64_ins_addr_regoff (self, info, code, inst, errors);
793     case 89:
794     case 90:
795     case 91:
796     case 93:
797     case 95:
798       return aarch64_ins_addr_simm (self, info, code, inst, errors);
799     case 92:
800       return aarch64_ins_addr_simm10 (self, info, code, inst, errors);
801     case 94:
802       return aarch64_ins_addr_uimm12 (self, info, code, inst, errors);
803     case 97:
804       return aarch64_ins_addr_offset (self, info, code, inst, errors);
805     case 98:
806       return aarch64_ins_simd_addr_post (self, info, code, inst, errors);
807     case 99:
808     case 100:
809       return aarch64_ins_sysreg (self, info, code, inst, errors);
810     case 101:
811       return aarch64_ins_pstatefield (self, info, code, inst, errors);
812     case 102:
813     case 103:
814     case 104:
815     case 105:
816     case 106:
817     case 107:
818       return aarch64_ins_sysins_op (self, info, code, inst, errors);
819     case 108:
820     case 110:
821       return aarch64_ins_barrier (self, info, code, inst, errors);
822     case 109:
823       return aarch64_ins_barrier_dsb_nxs (self, info, code, inst, errors);
824     case 111:
825       return aarch64_ins_prfop (self, info, code, inst, errors);
826     case 115:
827       return aarch64_ins_hint (self, info, code, inst, errors);
828     case 118:
829     case 119:
830       return aarch64_ins_sve_addr_ri_s4 (self, info, code, inst, errors);
831     case 120:
832     case 121:
833     case 122:
834     case 123:
835       return aarch64_ins_sve_addr_ri_s4xvl (self, info, code, inst, errors);
836     case 124:
837       return aarch64_ins_sve_addr_ri_s6xvl (self, info, code, inst, errors);
838     case 125:
839       return aarch64_ins_sve_addr_ri_s9xvl (self, info, code, inst, errors);
840     case 126:
841     case 127:
842     case 128:
843     case 129:
844       return aarch64_ins_sve_addr_ri_u6 (self, info, code, inst, errors);
845     case 130:
846     case 131:
847     case 132:
848     case 133:
849     case 134:
850     case 135:
851     case 136:
852     case 137:
853     case 138:
854     case 139:
855     case 140:
856     case 141:
857     case 142:
858     case 143:
859     case 144:
860       return aarch64_ins_sve_addr_rr_lsl (self, info, code, inst, errors);
861     case 145:
862     case 146:
863     case 147:
864     case 148:
865     case 149:
866     case 150:
867     case 151:
868     case 152:
869       return aarch64_ins_sve_addr_rz_xtw (self, info, code, inst, errors);
870     case 153:
871     case 154:
872     case 155:
873     case 156:
874       return aarch64_ins_sve_addr_zi_u5 (self, info, code, inst, errors);
875     case 157:
876       return aarch64_ins_sve_addr_zz_lsl (self, info, code, inst, errors);
877     case 158:
878       return aarch64_ins_sve_addr_zz_sxtw (self, info, code, inst, errors);
879     case 159:
880       return aarch64_ins_sve_addr_zz_uxtw (self, info, code, inst, errors);
881     case 160:
882       return aarch64_ins_sve_aimm (self, info, code, inst, errors);
883     case 161:
884       return aarch64_ins_sve_asimm (self, info, code, inst, errors);
885     case 163:
886       return aarch64_ins_sve_float_half_one (self, info, code, inst, errors);
887     case 164:
888       return aarch64_ins_sve_float_half_two (self, info, code, inst, errors);
889     case 165:
890       return aarch64_ins_sve_float_zero_one (self, info, code, inst, errors);
891     case 169:
892       return aarch64_ins_inv_limm (self, info, code, inst, errors);
893     case 171:
894       return aarch64_ins_sve_limm_mov (self, info, code, inst, errors);
895     case 173:
896       return aarch64_ins_sve_scale (self, info, code, inst, errors);
897     case 189:
898     case 190:
899     case 191:
900       return aarch64_ins_sve_shlimm (self, info, code, inst, errors);
901     case 192:
902     case 193:
903     case 194:
904     case 269:
905       return aarch64_ins_sve_shrimm (self, info, code, inst, errors);
906     case 207:
907     case 208:
908     case 209:
909     case 210:
910       return aarch64_ins_sme_za_vrs1 (self, info, code, inst, errors);
911     case 211:
912     case 212:
913     case 213:
914     case 214:
915       return aarch64_ins_sme_za_vrs2 (self, info, code, inst, errors);
916     case 220:
917     case 221:
918     case 222:
919     case 223:
920     case 224:
921     case 225:
922     case 226:
923       return aarch64_ins_sve_quad_index (self, info, code, inst, errors);
924     case 228:
925       return aarch64_ins_sve_index_imm (self, info, code, inst, errors);
926     case 229:
927       return aarch64_ins_sve_index (self, info, code, inst, errors);
928     case 230:
929     case 232:
930     case 249:
931     case 295:
932     case 296:
933     case 297:
934       return aarch64_ins_sve_reglist (self, info, code, inst, errors);
935     case 233:
936     case 234:
937     case 236:
938     case 237:
939     case 238:
940     case 239:
941     case 248:
942       return aarch64_ins_sve_aligned_reglist (self, info, code, inst, errors);
943     case 240:
944     case 241:
945       return aarch64_ins_sve_strided_reglist (self, info, code, inst, errors);
946     case 244:
947     case 246:
948     case 257:
949       return aarch64_ins_sme_za_hv_tiles (self, info, code, inst, errors);
950     case 245:
951     case 247:
952       return aarch64_ins_sme_za_hv_tiles_range (self, info, code, inst, errors);
953     case 254:
954     case 255:
955     case 270:
956     case 271:
957     case 272:
958     case 273:
959     case 274:
960     case 275:
961     case 276:
962     case 277:
963     case 278:
964     case 279:
965     case 280:
966     case 281:
967     case 282:
968       return aarch64_ins_simple_index (self, info, code, inst, errors);
969     case 258:
970     case 259:
971     case 260:
972     case 261:
973     case 262:
974     case 263:
975     case 264:
976       return aarch64_ins_sme_za_array (self, info, code, inst, errors);
977     case 265:
978       return aarch64_ins_sme_addr_ri_u4xvl (self, info, code, inst, errors);
979     case 266:
980       return aarch64_ins_sme_sm_za (self, info, code, inst, errors);
981     case 267:
982       return aarch64_ins_sme_pred_reg_with_index (self, info, code, inst, errors);
983     case 268:
984       return aarch64_ins_plain_shrimm (self, info, code, inst, errors);
985     case 290:
986     case 291:
987     case 292:
988       return aarch64_ins_x0_to_x30 (self, info, code, inst, errors);
989     case 298:
990     case 299:
991     case 300:
992     case 301:
993       return aarch64_ins_rcpc3_addr_opt_offset (self, info, code, inst, errors);
994     case 302:
995       return aarch64_ins_rcpc3_addr_offset (self, info, code, inst, errors);
996     default: assert (0); abort ();
997     }
998 }
999