| // Copyright 2016, VIXL authors |
| // All rights reserved. |
| // |
| // Redistribution and use in source and binary forms, with or without |
| // modification, are permitted provided that the following conditions are met: |
| // |
| // * Redistributions of source code must retain the above copyright notice, |
| // this list of conditions and the following disclaimer. |
| // * Redistributions in binary form must reproduce the above copyright |
| // notice, this list of conditions and the following disclaimer in the |
| // documentation and/or other materials provided with the distribution. |
| // * Neither the name of ARM Limited nor the names of its contributors may |
| // be used to endorse or promote products derived from this software |
| // without specific prior written permission. |
| // |
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS CONTRIBUTORS "AS IS" AND |
| // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
| // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| // POSSIBILITY OF SUCH DAMAGE. |
| |
| #include "utils-vixl.h" |
| #include "aarch32/constants-aarch32.h" |
| |
| namespace vixl { |
| namespace aarch32 { |
| |
| // Start of generated code. |
| const char* ToCString(InstructionType type) { |
| switch (type) { |
| case kAdc: |
| return "adc"; |
| case kAdcs: |
| return "adcs"; |
| case kAdd: |
| return "add"; |
| case kAdds: |
| return "adds"; |
| case kAddw: |
| return "addw"; |
| case kAdr: |
| return "adr"; |
| case kAnd: |
| return "and"; |
| case kAnds: |
| return "ands"; |
| case kAsr: |
| return "asr"; |
| case kAsrs: |
| return "asrs"; |
| case kB: |
| return "b"; |
| case kBfc: |
| return "bfc"; |
| case kBfi: |
| return "bfi"; |
| case kBic: |
| return "bic"; |
| case kBics: |
| return "bics"; |
| case kBkpt: |
| return "bkpt"; |
| case kBl: |
| return "bl"; |
| case kBlx: |
| return "blx"; |
| case kBx: |
| return "bx"; |
| case kBxj: |
| return "bxj"; |
| case kCbnz: |
| return "cbnz"; |
| case kCbz: |
| return "cbz"; |
| case kClrex: |
| return "clrex"; |
| case kClz: |
| return "clz"; |
| case kCmn: |
| return "cmn"; |
| case kCmp: |
| return "cmp"; |
| case kCrc32b: |
| return "crc32b"; |
| case kCrc32cb: |
| return "crc32cb"; |
| case kCrc32ch: |
| return "crc32ch"; |
| case kCrc32cw: |
| return "crc32cw"; |
| case kCrc32h: |
| return "crc32h"; |
| case kCrc32w: |
| return "crc32w"; |
| case kDmb: |
| return "dmb"; |
| case kDsb: |
| return "dsb"; |
| case kEor: |
| return "eor"; |
| case kEors: |
| return "eors"; |
| case kFldmdbx: |
| return "fldmdbx"; |
| case kFldmiax: |
| return "fldmiax"; |
| case kFstmdbx: |
| return "fstmdbx"; |
| case kFstmiax: |
| return "fstmiax"; |
| case kHlt: |
| return "hlt"; |
| case kHvc: |
| return "hvc"; |
| case kIsb: |
| return "isb"; |
| case kIt: |
| return "it"; |
| case kLda: |
| return "lda"; |
| case kLdab: |
| return "ldab"; |
| case kLdaex: |
| return "ldaex"; |
| case kLdaexb: |
| return "ldaexb"; |
| case kLdaexd: |
| return "ldaexd"; |
| case kLdaexh: |
| return "ldaexh"; |
| case kLdah: |
| return "ldah"; |
| case kLdm: |
| return "ldm"; |
| case kLdmda: |
| return "ldmda"; |
| case kLdmdb: |
| return "ldmdb"; |
| case kLdmea: |
| return "ldmea"; |
| case kLdmed: |
| return "ldmed"; |
| case kLdmfa: |
| return "ldmfa"; |
| case kLdmfd: |
| return "ldmfd"; |
| case kLdmib: |
| return "ldmib"; |
| case kLdr: |
| return "ldr"; |
| case kLdrb: |
| return "ldrb"; |
| case kLdrd: |
| return "ldrd"; |
| case kLdrex: |
| return "ldrex"; |
| case kLdrexb: |
| return "ldrexb"; |
| case kLdrexd: |
| return "ldrexd"; |
| case kLdrexh: |
| return "ldrexh"; |
| case kLdrh: |
| return "ldrh"; |
| case kLdrsb: |
| return "ldrsb"; |
| case kLdrsh: |
| return "ldrsh"; |
| case kLsl: |
| return "lsl"; |
| case kLsls: |
| return "lsls"; |
| case kLsr: |
| return "lsr"; |
| case kLsrs: |
| return "lsrs"; |
| case kMla: |
| return "mla"; |
| case kMlas: |
| return "mlas"; |
| case kMls: |
| return "mls"; |
| case kMov: |
| return "mov"; |
| case kMovs: |
| return "movs"; |
| case kMovt: |
| return "movt"; |
| case kMovw: |
| return "movw"; |
| case kMrs: |
| return "mrs"; |
| case kMsr: |
| return "msr"; |
| case kMul: |
| return "mul"; |
| case kMuls: |
| return "muls"; |
| case kMvn: |
| return "mvn"; |
| case kMvns: |
| return "mvns"; |
| case kNop: |
| return "nop"; |
| case kOrn: |
| return "orn"; |
| case kOrns: |
| return "orns"; |
| case kOrr: |
| return "orr"; |
| case kOrrs: |
| return "orrs"; |
| case kPkhbt: |
| return "pkhbt"; |
| case kPkhtb: |
| return "pkhtb"; |
| case kPld: |
| return "pld"; |
| case kPldw: |
| return "pldw"; |
| case kPli: |
| return "pli"; |
| case kPop: |
| return "pop"; |
| case kPush: |
| return "push"; |
| case kQadd: |
| return "qadd"; |
| case kQadd16: |
| return "qadd16"; |
| case kQadd8: |
| return "qadd8"; |
| case kQasx: |
| return "qasx"; |
| case kQdadd: |
| return "qdadd"; |
| case kQdsub: |
| return "qdsub"; |
| case kQsax: |
| return "qsax"; |
| case kQsub: |
| return "qsub"; |
| case kQsub16: |
| return "qsub16"; |
| case kQsub8: |
| return "qsub8"; |
| case kRbit: |
| return "rbit"; |
| case kRev: |
| return "rev"; |
| case kRev16: |
| return "rev16"; |
| case kRevsh: |
| return "revsh"; |
| case kRor: |
| return "ror"; |
| case kRors: |
| return "rors"; |
| case kRrx: |
| return "rrx"; |
| case kRrxs: |
| return "rrxs"; |
| case kRsb: |
| return "rsb"; |
| case kRsbs: |
| return "rsbs"; |
| case kRsc: |
| return "rsc"; |
| case kRscs: |
| return "rscs"; |
| case kSadd16: |
| return "sadd16"; |
| case kSadd8: |
| return "sadd8"; |
| case kSasx: |
| return "sasx"; |
| case kSbc: |
| return "sbc"; |
| case kSbcs: |
| return "sbcs"; |
| case kSbfx: |
| return "sbfx"; |
| case kSdiv: |
| return "sdiv"; |
| case kSel: |
| return "sel"; |
| case kShadd16: |
| return "shadd16"; |
| case kShadd8: |
| return "shadd8"; |
| case kShasx: |
| return "shasx"; |
| case kShsax: |
| return "shsax"; |
| case kShsub16: |
| return "shsub16"; |
| case kShsub8: |
| return "shsub8"; |
| case kSmlabb: |
| return "smlabb"; |
| case kSmlabt: |
| return "smlabt"; |
| case kSmlad: |
| return "smlad"; |
| case kSmladx: |
| return "smladx"; |
| case kSmlal: |
| return "smlal"; |
| case kSmlalbb: |
| return "smlalbb"; |
| case kSmlalbt: |
| return "smlalbt"; |
| case kSmlald: |
| return "smlald"; |
| case kSmlaldx: |
| return "smlaldx"; |
| case kSmlals: |
| return "smlals"; |
| case kSmlaltb: |
| return "smlaltb"; |
| case kSmlaltt: |
| return "smlaltt"; |
| case kSmlatb: |
| return "smlatb"; |
| case kSmlatt: |
| return "smlatt"; |
| case kSmlawb: |
| return "smlawb"; |
| case kSmlawt: |
| return "smlawt"; |
| case kSmlsd: |
| return "smlsd"; |
| case kSmlsdx: |
| return "smlsdx"; |
| case kSmlsld: |
| return "smlsld"; |
| case kSmlsldx: |
| return "smlsldx"; |
| case kSmmla: |
| return "smmla"; |
| case kSmmlar: |
| return "smmlar"; |
| case kSmmls: |
| return "smmls"; |
| case kSmmlsr: |
| return "smmlsr"; |
| case kSmmul: |
| return "smmul"; |
| case kSmmulr: |
| return "smmulr"; |
| case kSmuad: |
| return "smuad"; |
| case kSmuadx: |
| return "smuadx"; |
| case kSmulbb: |
| return "smulbb"; |
| case kSmulbt: |
| return "smulbt"; |
| case kSmull: |
| return "smull"; |
| case kSmulls: |
| return "smulls"; |
| case kSmultb: |
| return "smultb"; |
| case kSmultt: |
| return "smultt"; |
| case kSmulwb: |
| return "smulwb"; |
| case kSmulwt: |
| return "smulwt"; |
| case kSmusd: |
| return "smusd"; |
| case kSmusdx: |
| return "smusdx"; |
| case kSsat: |
| return "ssat"; |
| case kSsat16: |
| return "ssat16"; |
| case kSsax: |
| return "ssax"; |
| case kSsub16: |
| return "ssub16"; |
| case kSsub8: |
| return "ssub8"; |
| case kStl: |
| return "stl"; |
| case kStlb: |
| return "stlb"; |
| case kStlex: |
| return "stlex"; |
| case kStlexb: |
| return "stlexb"; |
| case kStlexd: |
| return "stlexd"; |
| case kStlexh: |
| return "stlexh"; |
| case kStlh: |
| return "stlh"; |
| case kStm: |
| return "stm"; |
| case kStmda: |
| return "stmda"; |
| case kStmdb: |
| return "stmdb"; |
| case kStmea: |
| return "stmea"; |
| case kStmed: |
| return "stmed"; |
| case kStmfa: |
| return "stmfa"; |
| case kStmfd: |
| return "stmfd"; |
| case kStmib: |
| return "stmib"; |
| case kStr: |
| return "str"; |
| case kStrb: |
| return "strb"; |
| case kStrd: |
| return "strd"; |
| case kStrex: |
| return "strex"; |
| case kStrexb: |
| return "strexb"; |
| case kStrexd: |
| return "strexd"; |
| case kStrexh: |
| return "strexh"; |
| case kStrh: |
| return "strh"; |
| case kSub: |
| return "sub"; |
| case kSubs: |
| return "subs"; |
| case kSubw: |
| return "subw"; |
| case kSvc: |
| return "svc"; |
| case kSxtab: |
| return "sxtab"; |
| case kSxtab16: |
| return "sxtab16"; |
| case kSxtah: |
| return "sxtah"; |
| case kSxtb: |
| return "sxtb"; |
| case kSxtb16: |
| return "sxtb16"; |
| case kSxth: |
| return "sxth"; |
| case kTbb: |
| return "tbb"; |
| case kTbh: |
| return "tbh"; |
| case kTeq: |
| return "teq"; |
| case kTst: |
| return "tst"; |
| case kUadd16: |
| return "uadd16"; |
| case kUadd8: |
| return "uadd8"; |
| case kUasx: |
| return "uasx"; |
| case kUbfx: |
| return "ubfx"; |
| case kUdf: |
| return "udf"; |
| case kUdiv: |
| return "udiv"; |
| case kUhadd16: |
| return "uhadd16"; |
| case kUhadd8: |
| return "uhadd8"; |
| case kUhasx: |
| return "uhasx"; |
| case kUhsax: |
| return "uhsax"; |
| case kUhsub16: |
| return "uhsub16"; |
| case kUhsub8: |
| return "uhsub8"; |
| case kUmaal: |
| return "umaal"; |
| case kUmlal: |
| return "umlal"; |
| case kUmlals: |
| return "umlals"; |
| case kUmull: |
| return "umull"; |
| case kUmulls: |
| return "umulls"; |
| case kUqadd16: |
| return "uqadd16"; |
| case kUqadd8: |
| return "uqadd8"; |
| case kUqasx: |
| return "uqasx"; |
| case kUqsax: |
| return "uqsax"; |
| case kUqsub16: |
| return "uqsub16"; |
| case kUqsub8: |
| return "uqsub8"; |
| case kUsad8: |
| return "usad8"; |
| case kUsada8: |
| return "usada8"; |
| case kUsat: |
| return "usat"; |
| case kUsat16: |
| return "usat16"; |
| case kUsax: |
| return "usax"; |
| case kUsub16: |
| return "usub16"; |
| case kUsub8: |
| return "usub8"; |
| case kUxtab: |
| return "uxtab"; |
| case kUxtab16: |
| return "uxtab16"; |
| case kUxtah: |
| return "uxtah"; |
| case kUxtb: |
| return "uxtb"; |
| case kUxtb16: |
| return "uxtb16"; |
| case kUxth: |
| return "uxth"; |
| case kVaba: |
| return "vaba"; |
| case kVabal: |
| return "vabal"; |
| case kVabd: |
| return "vabd"; |
| case kVabdl: |
| return "vabdl"; |
| case kVabs: |
| return "vabs"; |
| case kVacge: |
| return "vacge"; |
| case kVacgt: |
| return "vacgt"; |
| case kVacle: |
| return "vacle"; |
| case kVaclt: |
| return "vaclt"; |
| case kVadd: |
| return "vadd"; |
| case kVaddhn: |
| return "vaddhn"; |
| case kVaddl: |
| return "vaddl"; |
| case kVaddw: |
| return "vaddw"; |
| case kVand: |
| return "vand"; |
| case kVbic: |
| return "vbic"; |
| case kVbif: |
| return "vbif"; |
| case kVbit: |
| return "vbit"; |
| case kVbsl: |
| return "vbsl"; |
| case kVceq: |
| return "vceq"; |
| case kVcge: |
| return "vcge"; |
| case kVcgt: |
| return "vcgt"; |
| case kVcle: |
| return "vcle"; |
| case kVcls: |
| return "vcls"; |
| case kVclt: |
| return "vclt"; |
| case kVclz: |
| return "vclz"; |
| case kVcmp: |
| return "vcmp"; |
| case kVcmpe: |
| return "vcmpe"; |
| case kVcnt: |
| return "vcnt"; |
| case kVcvt: |
| return "vcvt"; |
| case kVcvta: |
| return "vcvta"; |
| case kVcvtb: |
| return "vcvtb"; |
| case kVcvtm: |
| return "vcvtm"; |
| case kVcvtn: |
| return "vcvtn"; |
| case kVcvtp: |
| return "vcvtp"; |
| case kVcvtr: |
| return "vcvtr"; |
| case kVcvtt: |
| return "vcvtt"; |
| case kVdiv: |
| return "vdiv"; |
| case kVdup: |
| return "vdup"; |
| case kVeor: |
| return "veor"; |
| case kVext: |
| return "vext"; |
| case kVfma: |
| return "vfma"; |
| case kVfms: |
| return "vfms"; |
| case kVfnma: |
| return "vfnma"; |
| case kVfnms: |
| return "vfnms"; |
| case kVhadd: |
| return "vhadd"; |
| case kVhsub: |
| return "vhsub"; |
| case kVld1: |
| return "vld1"; |
| case kVld2: |
| return "vld2"; |
| case kVld3: |
| return "vld3"; |
| case kVld4: |
| return "vld4"; |
| case kVldm: |
| return "vldm"; |
| case kVldmdb: |
| return "vldmdb"; |
| case kVldmia: |
| return "vldmia"; |
| case kVldr: |
| return "vldr"; |
| case kVmax: |
| return "vmax"; |
| case kVmaxnm: |
| return "vmaxnm"; |
| case kVmin: |
| return "vmin"; |
| case kVminnm: |
| return "vminnm"; |
| case kVmla: |
| return "vmla"; |
| case kVmlal: |
| return "vmlal"; |
| case kVmls: |
| return "vmls"; |
| case kVmlsl: |
| return "vmlsl"; |
| case kVmov: |
| return "vmov"; |
| case kVmovl: |
| return "vmovl"; |
| case kVmovn: |
| return "vmovn"; |
| case kVmrs: |
| return "vmrs"; |
| case kVmsr: |
| return "vmsr"; |
| case kVmul: |
| return "vmul"; |
| case kVmull: |
| return "vmull"; |
| case kVmvn: |
| return "vmvn"; |
| case kVneg: |
| return "vneg"; |
| case kVnmla: |
| return "vnmla"; |
| case kVnmls: |
| return "vnmls"; |
| case kVnmul: |
| return "vnmul"; |
| case kVorn: |
| return "vorn"; |
| case kVorr: |
| return "vorr"; |
| case kVpadal: |
| return "vpadal"; |
| case kVpadd: |
| return "vpadd"; |
| case kVpaddl: |
| return "vpaddl"; |
| case kVpmax: |
| return "vpmax"; |
| case kVpmin: |
| return "vpmin"; |
| case kVpop: |
| return "vpop"; |
| case kVpush: |
| return "vpush"; |
| case kVqabs: |
| return "vqabs"; |
| case kVqadd: |
| return "vqadd"; |
| case kVqdmlal: |
| return "vqdmlal"; |
| case kVqdmlsl: |
| return "vqdmlsl"; |
| case kVqdmulh: |
| return "vqdmulh"; |
| case kVqdmull: |
| return "vqdmull"; |
| case kVqmovn: |
| return "vqmovn"; |
| case kVqmovun: |
| return "vqmovun"; |
| case kVqneg: |
| return "vqneg"; |
| case kVqrdmulh: |
| return "vqrdmulh"; |
| case kVqrshl: |
| return "vqrshl"; |
| case kVqrshrn: |
| return "vqrshrn"; |
| case kVqrshrun: |
| return "vqrshrun"; |
| case kVqshl: |
| return "vqshl"; |
| case kVqshlu: |
| return "vqshlu"; |
| case kVqshrn: |
| return "vqshrn"; |
| case kVqshrun: |
| return "vqshrun"; |
| case kVqsub: |
| return "vqsub"; |
| case kVraddhn: |
| return "vraddhn"; |
| case kVrecpe: |
| return "vrecpe"; |
| case kVrecps: |
| return "vrecps"; |
| case kVrev16: |
| return "vrev16"; |
| case kVrev32: |
| return "vrev32"; |
| case kVrev64: |
| return "vrev64"; |
| case kVrhadd: |
| return "vrhadd"; |
| case kVrinta: |
| return "vrinta"; |
| case kVrintm: |
| return "vrintm"; |
| case kVrintn: |
| return "vrintn"; |
| case kVrintp: |
| return "vrintp"; |
| case kVrintr: |
| return "vrintr"; |
| case kVrintx: |
| return "vrintx"; |
| case kVrintz: |
| return "vrintz"; |
| case kVrshl: |
| return "vrshl"; |
| case kVrshr: |
| return "vrshr"; |
| case kVrshrn: |
| return "vrshrn"; |
| case kVrsqrte: |
| return "vrsqrte"; |
| case kVrsqrts: |
| return "vrsqrts"; |
| case kVrsra: |
| return "vrsra"; |
| case kVrsubhn: |
| return "vrsubhn"; |
| case kVseleq: |
| return "vseleq"; |
| case kVselge: |
| return "vselge"; |
| case kVselgt: |
| return "vselgt"; |
| case kVselvs: |
| return "vselvs"; |
| case kVshl: |
| return "vshl"; |
| case kVshll: |
| return "vshll"; |
| case kVshr: |
| return "vshr"; |
| case kVshrn: |
| return "vshrn"; |
| case kVsli: |
| return "vsli"; |
| case kVsqrt: |
| return "vsqrt"; |
| case kVsra: |
| return "vsra"; |
| case kVsri: |
| return "vsri"; |
| case kVst1: |
| return "vst1"; |
| case kVst2: |
| return "vst2"; |
| case kVst3: |
| return "vst3"; |
| case kVst4: |
| return "vst4"; |
| case kVstm: |
| return "vstm"; |
| case kVstmdb: |
| return "vstmdb"; |
| case kVstmia: |
| return "vstmia"; |
| case kVstr: |
| return "vstr"; |
| case kVsub: |
| return "vsub"; |
| case kVsubhn: |
| return "vsubhn"; |
| case kVsubl: |
| return "vsubl"; |
| case kVsubw: |
| return "vsubw"; |
| case kVswp: |
| return "vswp"; |
| case kVtbl: |
| return "vtbl"; |
| case kVtbx: |
| return "vtbx"; |
| case kVtrn: |
| return "vtrn"; |
| case kVtst: |
| return "vtst"; |
| case kVuzp: |
| return "vuzp"; |
| case kVzip: |
| return "vzip"; |
| case kYield: |
| return "yield"; |
| case kUndefInstructionType: |
| VIXL_UNREACHABLE(); |
| return ""; |
| } |
| VIXL_UNREACHABLE(); |
| return ""; |
| } // NOLINT(readability/fn_size) |
| // End of generated code. |
| |
| } // namespace aarch32 |
| } // namespace vixl |