• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2016, 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
10 //     notice, this list of conditions and the following disclaimer in the
11 //     documentation and/or other materials provided with the distribution.
12 //   * Neither the name of ARM Limited nor the names of its contributors may
13 //     be used to endorse or promote products derived from this software
14 //     without 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
18 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 // POSSIBILITY OF SUCH DAMAGE.
27 
28 #include "aarch32/constants-aarch32.h"
29 #include "utils-vixl.h"
30 
31 namespace vixl {
32 namespace aarch32 {
33 
34 // Start of generated code.
ToCString(InstructionType type)35 const char* ToCString(InstructionType type) {
36   switch (type) {
37     case kAdc:
38       return "adc";
39     case kAdcs:
40       return "adcs";
41     case kAdd:
42       return "add";
43     case kAdds:
44       return "adds";
45     case kAddw:
46       return "addw";
47     case kAdr:
48       return "adr";
49     case kAnd:
50       return "and";
51     case kAnds:
52       return "ands";
53     case kAsr:
54       return "asr";
55     case kAsrs:
56       return "asrs";
57     case kB:
58       return "b";
59     case kBfc:
60       return "bfc";
61     case kBfi:
62       return "bfi";
63     case kBic:
64       return "bic";
65     case kBics:
66       return "bics";
67     case kBkpt:
68       return "bkpt";
69     case kBl:
70       return "bl";
71     case kBlx:
72       return "blx";
73     case kBx:
74       return "bx";
75     case kBxj:
76       return "bxj";
77     case kCbnz:
78       return "cbnz";
79     case kCbz:
80       return "cbz";
81     case kClrex:
82       return "clrex";
83     case kClz:
84       return "clz";
85     case kCmn:
86       return "cmn";
87     case kCmp:
88       return "cmp";
89     case kCrc32b:
90       return "crc32b";
91     case kCrc32cb:
92       return "crc32cb";
93     case kCrc32ch:
94       return "crc32ch";
95     case kCrc32cw:
96       return "crc32cw";
97     case kCrc32h:
98       return "crc32h";
99     case kCrc32w:
100       return "crc32w";
101     case kDmb:
102       return "dmb";
103     case kDsb:
104       return "dsb";
105     case kEor:
106       return "eor";
107     case kEors:
108       return "eors";
109     case kFldmdbx:
110       return "fldmdbx";
111     case kFldmiax:
112       return "fldmiax";
113     case kFstmdbx:
114       return "fstmdbx";
115     case kFstmiax:
116       return "fstmiax";
117     case kHlt:
118       return "hlt";
119     case kHvc:
120       return "hvc";
121     case kIsb:
122       return "isb";
123     case kIt:
124       return "it";
125     case kLda:
126       return "lda";
127     case kLdab:
128       return "ldab";
129     case kLdaex:
130       return "ldaex";
131     case kLdaexb:
132       return "ldaexb";
133     case kLdaexd:
134       return "ldaexd";
135     case kLdaexh:
136       return "ldaexh";
137     case kLdah:
138       return "ldah";
139     case kLdm:
140       return "ldm";
141     case kLdmda:
142       return "ldmda";
143     case kLdmdb:
144       return "ldmdb";
145     case kLdmea:
146       return "ldmea";
147     case kLdmed:
148       return "ldmed";
149     case kLdmfa:
150       return "ldmfa";
151     case kLdmfd:
152       return "ldmfd";
153     case kLdmib:
154       return "ldmib";
155     case kLdr:
156       return "ldr";
157     case kLdrb:
158       return "ldrb";
159     case kLdrd:
160       return "ldrd";
161     case kLdrex:
162       return "ldrex";
163     case kLdrexb:
164       return "ldrexb";
165     case kLdrexd:
166       return "ldrexd";
167     case kLdrexh:
168       return "ldrexh";
169     case kLdrh:
170       return "ldrh";
171     case kLdrsb:
172       return "ldrsb";
173     case kLdrsh:
174       return "ldrsh";
175     case kLsl:
176       return "lsl";
177     case kLsls:
178       return "lsls";
179     case kLsr:
180       return "lsr";
181     case kLsrs:
182       return "lsrs";
183     case kMla:
184       return "mla";
185     case kMlas:
186       return "mlas";
187     case kMls:
188       return "mls";
189     case kMov:
190       return "mov";
191     case kMovs:
192       return "movs";
193     case kMovt:
194       return "movt";
195     case kMovw:
196       return "movw";
197     case kMrs:
198       return "mrs";
199     case kMsr:
200       return "msr";
201     case kMul:
202       return "mul";
203     case kMuls:
204       return "muls";
205     case kMvn:
206       return "mvn";
207     case kMvns:
208       return "mvns";
209     case kNop:
210       return "nop";
211     case kOrn:
212       return "orn";
213     case kOrns:
214       return "orns";
215     case kOrr:
216       return "orr";
217     case kOrrs:
218       return "orrs";
219     case kPkhbt:
220       return "pkhbt";
221     case kPkhtb:
222       return "pkhtb";
223     case kPld:
224       return "pld";
225     case kPldw:
226       return "pldw";
227     case kPli:
228       return "pli";
229     case kPop:
230       return "pop";
231     case kPush:
232       return "push";
233     case kQadd:
234       return "qadd";
235     case kQadd16:
236       return "qadd16";
237     case kQadd8:
238       return "qadd8";
239     case kQasx:
240       return "qasx";
241     case kQdadd:
242       return "qdadd";
243     case kQdsub:
244       return "qdsub";
245     case kQsax:
246       return "qsax";
247     case kQsub:
248       return "qsub";
249     case kQsub16:
250       return "qsub16";
251     case kQsub8:
252       return "qsub8";
253     case kRbit:
254       return "rbit";
255     case kRev:
256       return "rev";
257     case kRev16:
258       return "rev16";
259     case kRevsh:
260       return "revsh";
261     case kRor:
262       return "ror";
263     case kRors:
264       return "rors";
265     case kRrx:
266       return "rrx";
267     case kRrxs:
268       return "rrxs";
269     case kRsb:
270       return "rsb";
271     case kRsbs:
272       return "rsbs";
273     case kRsc:
274       return "rsc";
275     case kRscs:
276       return "rscs";
277     case kSadd16:
278       return "sadd16";
279     case kSadd8:
280       return "sadd8";
281     case kSasx:
282       return "sasx";
283     case kSbc:
284       return "sbc";
285     case kSbcs:
286       return "sbcs";
287     case kSbfx:
288       return "sbfx";
289     case kSdiv:
290       return "sdiv";
291     case kSel:
292       return "sel";
293     case kShadd16:
294       return "shadd16";
295     case kShadd8:
296       return "shadd8";
297     case kShasx:
298       return "shasx";
299     case kShsax:
300       return "shsax";
301     case kShsub16:
302       return "shsub16";
303     case kShsub8:
304       return "shsub8";
305     case kSmlabb:
306       return "smlabb";
307     case kSmlabt:
308       return "smlabt";
309     case kSmlad:
310       return "smlad";
311     case kSmladx:
312       return "smladx";
313     case kSmlal:
314       return "smlal";
315     case kSmlalbb:
316       return "smlalbb";
317     case kSmlalbt:
318       return "smlalbt";
319     case kSmlald:
320       return "smlald";
321     case kSmlaldx:
322       return "smlaldx";
323     case kSmlals:
324       return "smlals";
325     case kSmlaltb:
326       return "smlaltb";
327     case kSmlaltt:
328       return "smlaltt";
329     case kSmlatb:
330       return "smlatb";
331     case kSmlatt:
332       return "smlatt";
333     case kSmlawb:
334       return "smlawb";
335     case kSmlawt:
336       return "smlawt";
337     case kSmlsd:
338       return "smlsd";
339     case kSmlsdx:
340       return "smlsdx";
341     case kSmlsld:
342       return "smlsld";
343     case kSmlsldx:
344       return "smlsldx";
345     case kSmmla:
346       return "smmla";
347     case kSmmlar:
348       return "smmlar";
349     case kSmmls:
350       return "smmls";
351     case kSmmlsr:
352       return "smmlsr";
353     case kSmmul:
354       return "smmul";
355     case kSmmulr:
356       return "smmulr";
357     case kSmuad:
358       return "smuad";
359     case kSmuadx:
360       return "smuadx";
361     case kSmulbb:
362       return "smulbb";
363     case kSmulbt:
364       return "smulbt";
365     case kSmull:
366       return "smull";
367     case kSmulls:
368       return "smulls";
369     case kSmultb:
370       return "smultb";
371     case kSmultt:
372       return "smultt";
373     case kSmulwb:
374       return "smulwb";
375     case kSmulwt:
376       return "smulwt";
377     case kSmusd:
378       return "smusd";
379     case kSmusdx:
380       return "smusdx";
381     case kSsat:
382       return "ssat";
383     case kSsat16:
384       return "ssat16";
385     case kSsax:
386       return "ssax";
387     case kSsub16:
388       return "ssub16";
389     case kSsub8:
390       return "ssub8";
391     case kStl:
392       return "stl";
393     case kStlb:
394       return "stlb";
395     case kStlex:
396       return "stlex";
397     case kStlexb:
398       return "stlexb";
399     case kStlexd:
400       return "stlexd";
401     case kStlexh:
402       return "stlexh";
403     case kStlh:
404       return "stlh";
405     case kStm:
406       return "stm";
407     case kStmda:
408       return "stmda";
409     case kStmdb:
410       return "stmdb";
411     case kStmea:
412       return "stmea";
413     case kStmed:
414       return "stmed";
415     case kStmfa:
416       return "stmfa";
417     case kStmfd:
418       return "stmfd";
419     case kStmib:
420       return "stmib";
421     case kStr:
422       return "str";
423     case kStrb:
424       return "strb";
425     case kStrd:
426       return "strd";
427     case kStrex:
428       return "strex";
429     case kStrexb:
430       return "strexb";
431     case kStrexd:
432       return "strexd";
433     case kStrexh:
434       return "strexh";
435     case kStrh:
436       return "strh";
437     case kSub:
438       return "sub";
439     case kSubs:
440       return "subs";
441     case kSubw:
442       return "subw";
443     case kSvc:
444       return "svc";
445     case kSxtab:
446       return "sxtab";
447     case kSxtab16:
448       return "sxtab16";
449     case kSxtah:
450       return "sxtah";
451     case kSxtb:
452       return "sxtb";
453     case kSxtb16:
454       return "sxtb16";
455     case kSxth:
456       return "sxth";
457     case kTbb:
458       return "tbb";
459     case kTbh:
460       return "tbh";
461     case kTeq:
462       return "teq";
463     case kTst:
464       return "tst";
465     case kUadd16:
466       return "uadd16";
467     case kUadd8:
468       return "uadd8";
469     case kUasx:
470       return "uasx";
471     case kUbfx:
472       return "ubfx";
473     case kUdf:
474       return "udf";
475     case kUdiv:
476       return "udiv";
477     case kUhadd16:
478       return "uhadd16";
479     case kUhadd8:
480       return "uhadd8";
481     case kUhasx:
482       return "uhasx";
483     case kUhsax:
484       return "uhsax";
485     case kUhsub16:
486       return "uhsub16";
487     case kUhsub8:
488       return "uhsub8";
489     case kUmaal:
490       return "umaal";
491     case kUmlal:
492       return "umlal";
493     case kUmlals:
494       return "umlals";
495     case kUmull:
496       return "umull";
497     case kUmulls:
498       return "umulls";
499     case kUqadd16:
500       return "uqadd16";
501     case kUqadd8:
502       return "uqadd8";
503     case kUqasx:
504       return "uqasx";
505     case kUqsax:
506       return "uqsax";
507     case kUqsub16:
508       return "uqsub16";
509     case kUqsub8:
510       return "uqsub8";
511     case kUsad8:
512       return "usad8";
513     case kUsada8:
514       return "usada8";
515     case kUsat:
516       return "usat";
517     case kUsat16:
518       return "usat16";
519     case kUsax:
520       return "usax";
521     case kUsub16:
522       return "usub16";
523     case kUsub8:
524       return "usub8";
525     case kUxtab:
526       return "uxtab";
527     case kUxtab16:
528       return "uxtab16";
529     case kUxtah:
530       return "uxtah";
531     case kUxtb:
532       return "uxtb";
533     case kUxtb16:
534       return "uxtb16";
535     case kUxth:
536       return "uxth";
537     case kVaba:
538       return "vaba";
539     case kVabal:
540       return "vabal";
541     case kVabd:
542       return "vabd";
543     case kVabdl:
544       return "vabdl";
545     case kVabs:
546       return "vabs";
547     case kVacge:
548       return "vacge";
549     case kVacgt:
550       return "vacgt";
551     case kVacle:
552       return "vacle";
553     case kVaclt:
554       return "vaclt";
555     case kVadd:
556       return "vadd";
557     case kVaddhn:
558       return "vaddhn";
559     case kVaddl:
560       return "vaddl";
561     case kVaddw:
562       return "vaddw";
563     case kVand:
564       return "vand";
565     case kVbic:
566       return "vbic";
567     case kVbif:
568       return "vbif";
569     case kVbit:
570       return "vbit";
571     case kVbsl:
572       return "vbsl";
573     case kVceq:
574       return "vceq";
575     case kVcge:
576       return "vcge";
577     case kVcgt:
578       return "vcgt";
579     case kVcle:
580       return "vcle";
581     case kVcls:
582       return "vcls";
583     case kVclt:
584       return "vclt";
585     case kVclz:
586       return "vclz";
587     case kVcmp:
588       return "vcmp";
589     case kVcmpe:
590       return "vcmpe";
591     case kVcnt:
592       return "vcnt";
593     case kVcvt:
594       return "vcvt";
595     case kVcvta:
596       return "vcvta";
597     case kVcvtb:
598       return "vcvtb";
599     case kVcvtm:
600       return "vcvtm";
601     case kVcvtn:
602       return "vcvtn";
603     case kVcvtp:
604       return "vcvtp";
605     case kVcvtr:
606       return "vcvtr";
607     case kVcvtt:
608       return "vcvtt";
609     case kVdiv:
610       return "vdiv";
611     case kVdup:
612       return "vdup";
613     case kVeor:
614       return "veor";
615     case kVext:
616       return "vext";
617     case kVfma:
618       return "vfma";
619     case kVfms:
620       return "vfms";
621     case kVfnma:
622       return "vfnma";
623     case kVfnms:
624       return "vfnms";
625     case kVhadd:
626       return "vhadd";
627     case kVhsub:
628       return "vhsub";
629     case kVld1:
630       return "vld1";
631     case kVld2:
632       return "vld2";
633     case kVld3:
634       return "vld3";
635     case kVld4:
636       return "vld4";
637     case kVldm:
638       return "vldm";
639     case kVldmdb:
640       return "vldmdb";
641     case kVldmia:
642       return "vldmia";
643     case kVldr:
644       return "vldr";
645     case kVmax:
646       return "vmax";
647     case kVmaxnm:
648       return "vmaxnm";
649     case kVmin:
650       return "vmin";
651     case kVminnm:
652       return "vminnm";
653     case kVmla:
654       return "vmla";
655     case kVmlal:
656       return "vmlal";
657     case kVmls:
658       return "vmls";
659     case kVmlsl:
660       return "vmlsl";
661     case kVmov:
662       return "vmov";
663     case kVmovl:
664       return "vmovl";
665     case kVmovn:
666       return "vmovn";
667     case kVmrs:
668       return "vmrs";
669     case kVmsr:
670       return "vmsr";
671     case kVmul:
672       return "vmul";
673     case kVmull:
674       return "vmull";
675     case kVmvn:
676       return "vmvn";
677     case kVneg:
678       return "vneg";
679     case kVnmla:
680       return "vnmla";
681     case kVnmls:
682       return "vnmls";
683     case kVnmul:
684       return "vnmul";
685     case kVorn:
686       return "vorn";
687     case kVorr:
688       return "vorr";
689     case kVpadal:
690       return "vpadal";
691     case kVpadd:
692       return "vpadd";
693     case kVpaddl:
694       return "vpaddl";
695     case kVpmax:
696       return "vpmax";
697     case kVpmin:
698       return "vpmin";
699     case kVpop:
700       return "vpop";
701     case kVpush:
702       return "vpush";
703     case kVqabs:
704       return "vqabs";
705     case kVqadd:
706       return "vqadd";
707     case kVqdmlal:
708       return "vqdmlal";
709     case kVqdmlsl:
710       return "vqdmlsl";
711     case kVqdmulh:
712       return "vqdmulh";
713     case kVqdmull:
714       return "vqdmull";
715     case kVqmovn:
716       return "vqmovn";
717     case kVqmovun:
718       return "vqmovun";
719     case kVqneg:
720       return "vqneg";
721     case kVqrdmulh:
722       return "vqrdmulh";
723     case kVqrshl:
724       return "vqrshl";
725     case kVqrshrn:
726       return "vqrshrn";
727     case kVqrshrun:
728       return "vqrshrun";
729     case kVqshl:
730       return "vqshl";
731     case kVqshlu:
732       return "vqshlu";
733     case kVqshrn:
734       return "vqshrn";
735     case kVqshrun:
736       return "vqshrun";
737     case kVqsub:
738       return "vqsub";
739     case kVraddhn:
740       return "vraddhn";
741     case kVrecpe:
742       return "vrecpe";
743     case kVrecps:
744       return "vrecps";
745     case kVrev16:
746       return "vrev16";
747     case kVrev32:
748       return "vrev32";
749     case kVrev64:
750       return "vrev64";
751     case kVrhadd:
752       return "vrhadd";
753     case kVrinta:
754       return "vrinta";
755     case kVrintm:
756       return "vrintm";
757     case kVrintn:
758       return "vrintn";
759     case kVrintp:
760       return "vrintp";
761     case kVrintr:
762       return "vrintr";
763     case kVrintx:
764       return "vrintx";
765     case kVrintz:
766       return "vrintz";
767     case kVrshl:
768       return "vrshl";
769     case kVrshr:
770       return "vrshr";
771     case kVrshrn:
772       return "vrshrn";
773     case kVrsqrte:
774       return "vrsqrte";
775     case kVrsqrts:
776       return "vrsqrts";
777     case kVrsra:
778       return "vrsra";
779     case kVrsubhn:
780       return "vrsubhn";
781     case kVseleq:
782       return "vseleq";
783     case kVselge:
784       return "vselge";
785     case kVselgt:
786       return "vselgt";
787     case kVselvs:
788       return "vselvs";
789     case kVshl:
790       return "vshl";
791     case kVshll:
792       return "vshll";
793     case kVshr:
794       return "vshr";
795     case kVshrn:
796       return "vshrn";
797     case kVsli:
798       return "vsli";
799     case kVsqrt:
800       return "vsqrt";
801     case kVsra:
802       return "vsra";
803     case kVsri:
804       return "vsri";
805     case kVst1:
806       return "vst1";
807     case kVst2:
808       return "vst2";
809     case kVst3:
810       return "vst3";
811     case kVst4:
812       return "vst4";
813     case kVstm:
814       return "vstm";
815     case kVstmdb:
816       return "vstmdb";
817     case kVstmia:
818       return "vstmia";
819     case kVstr:
820       return "vstr";
821     case kVsub:
822       return "vsub";
823     case kVsubhn:
824       return "vsubhn";
825     case kVsubl:
826       return "vsubl";
827     case kVsubw:
828       return "vsubw";
829     case kVswp:
830       return "vswp";
831     case kVtbl:
832       return "vtbl";
833     case kVtbx:
834       return "vtbx";
835     case kVtrn:
836       return "vtrn";
837     case kVtst:
838       return "vtst";
839     case kVuzp:
840       return "vuzp";
841     case kVzip:
842       return "vzip";
843     case kYield:
844       return "yield";
845     case kUndefInstructionType:
846       VIXL_UNREACHABLE();
847       return "";
848   }
849   VIXL_UNREACHABLE();
850   return "";
851 }  // NOLINT(readability/fn_size)
852 // End of generated code.
853 
854 }  // namespace aarch32
855 }  // namespace vixl
856