duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

constants-aarch32.cc (17564B)


      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.
     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