1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project/* libs/pixelflinger/codeflinger/ARMAssembler.h 2dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project** 3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project** Copyright 2006, The Android Open Source Project 4dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project** 5dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License"); 6dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project** you may not use this file except in compliance with the License. 7dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project** You may obtain a copy of the License at 8dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project** 9dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project** http://www.apache.org/licenses/LICENSE-2.0 10dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project** 11dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project** Unless required by applicable law or agreed to in writing, software 12dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS, 13dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project** See the License for the specific language governing permissions and 15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project** limitations under the License. 16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project*/ 17dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 18dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#ifndef ANDROID_ARMASSEMBLER_H 19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#define ANDROID_ARMASSEMBLER_H 20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <stdint.h> 22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <sys/types.h> 23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 24006ba85e981d66ecf262a0ba0b2a6160b1923f24Mathias Agopian#include "tinyutils/Vector.h" 25006ba85e981d66ecf262a0ba0b2a6160b1923f24Mathias Agopian#include "tinyutils/KeyedVector.h" 26006ba85e981d66ecf262a0ba0b2a6160b1923f24Mathias Agopian#include "tinyutils/smartpointer.h" 27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include "tinyutils/smartpointer.h" 29dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include "codeflinger/ARMAssemblerInterface.h" 30dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include "codeflinger/CodeCache.h" 31dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectnamespace android { 33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------- 35dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 36dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectclass ARMAssembler : public ARMAssemblerInterface 37dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{ 38dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectpublic: 39dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ARMAssembler(const sp<Assembly>& assembly); 40dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual ~ARMAssembler(); 41dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 42dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project uint32_t* base() const; 43dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project uint32_t* pc() const; 44dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 45dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 46dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project void disassemble(const char* name); 47dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 48dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // ------------------------------------------------------------------------ 49dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // ARMAssemblerInterface... 50dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project // ------------------------------------------------------------------------ 51dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 52dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void reset(); 53dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 54dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual int generate(const char* name); 552bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind virtual int getCodegenArch(); 56dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 57dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void prolog(); 58dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void epilog(uint32_t touched); 59dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void comment(const char* string); 60dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 612bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind 622bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind // ----------------------------------------------------------------------- 632bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind // shifters and addressing modes 642bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind // ----------------------------------------------------------------------- 652bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind 662bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind // shifters... 672bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind virtual bool isValidImmediate(uint32_t immed); 682bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind virtual int buildImmediate(uint32_t i, uint32_t& rot, uint32_t& imm); 692bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind 702bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind virtual uint32_t imm(uint32_t immediate); 712bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind virtual uint32_t reg_imm(int Rm, int type, uint32_t shift); 722bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind virtual uint32_t reg_rrx(int Rm); 732bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind virtual uint32_t reg_reg(int Rm, int type, int Rs); 742bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind 752bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind // addressing modes... 762bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind // LDR(B)/STR(B)/PLD 772bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind // (immediate and Rm can be negative, which indicates U=0) 782bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind virtual uint32_t immed12_pre(int32_t immed12, int W=0); 792bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind virtual uint32_t immed12_post(int32_t immed12); 802bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind virtual uint32_t reg_scale_pre(int Rm, int type=0, uint32_t shift=0, int W=0); 812bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind virtual uint32_t reg_scale_post(int Rm, int type=0, uint32_t shift=0); 822bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind 832bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind // LDRH/LDRSB/LDRSH/STRH 842bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind // (immediate and Rm can be negative, which indicates U=0) 852bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind virtual uint32_t immed8_pre(int32_t immed8, int W=0); 862bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind virtual uint32_t immed8_post(int32_t immed8); 872bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind virtual uint32_t reg_pre(int Rm, int W=0); 882bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind virtual uint32_t reg_post(int Rm); 892bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind 902bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind 91dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void dataProcessing(int opcode, int cc, int s, 92dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int Rd, int Rn, 93dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project uint32_t Op2); 94dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void MLA(int cc, int s, 95dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int Rd, int Rm, int Rs, int Rn); 96dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void MUL(int cc, int s, 97dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int Rd, int Rm, int Rs); 98dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void UMULL(int cc, int s, 99dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int RdLo, int RdHi, int Rm, int Rs); 100dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void UMUAL(int cc, int s, 101dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int RdLo, int RdHi, int Rm, int Rs); 102dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void SMULL(int cc, int s, 103dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int RdLo, int RdHi, int Rm, int Rs); 104dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void SMUAL(int cc, int s, 105dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int RdLo, int RdHi, int Rm, int Rs); 106dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 107dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void B(int cc, uint32_t* pc); 108dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void BL(int cc, uint32_t* pc); 109dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void BX(int cc, int Rn); 110dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void label(const char* theLabel); 111dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void B(int cc, const char* label); 112dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void BL(int cc, const char* label); 113dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 114dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual uint32_t* pcForLabel(const char* label); 115dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 116dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void LDR (int cc, int Rd, 1172bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind int Rn, uint32_t offset = __immed12_pre(0)); 118dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void LDRB(int cc, int Rd, 1192bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind int Rn, uint32_t offset = __immed12_pre(0)); 120dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void STR (int cc, int Rd, 1212bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind int Rn, uint32_t offset = __immed12_pre(0)); 122dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void STRB(int cc, int Rd, 1232bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind int Rn, uint32_t offset = __immed12_pre(0)); 124dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void LDRH (int cc, int Rd, 1252bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind int Rn, uint32_t offset = __immed8_pre(0)); 126dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void LDRSB(int cc, int Rd, 1272bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind int Rn, uint32_t offset = __immed8_pre(0)); 128dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void LDRSH(int cc, int Rd, 1292bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind int Rn, uint32_t offset = __immed8_pre(0)); 130dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void STRH (int cc, int Rd, 1312bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind int Rn, uint32_t offset = __immed8_pre(0)); 1322bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind 1332bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind 134dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void LDM(int cc, int dir, 135dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int Rn, int W, uint32_t reg_list); 136dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void STM(int cc, int dir, 137dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int Rn, int W, uint32_t reg_list); 138dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 139dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void SWP(int cc, int Rn, int Rd, int Rm); 140dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void SWPB(int cc, int Rn, int Rd, int Rm); 141dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void SWI(int cc, uint32_t comment); 142dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 143dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void PLD(int Rn, uint32_t offset); 144dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void CLZ(int cc, int Rd, int Rm); 145dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void QADD(int cc, int Rd, int Rm, int Rn); 146dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void QDADD(int cc, int Rd, int Rm, int Rn); 147dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void QSUB(int cc, int Rd, int Rm, int Rn); 148dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void QDSUB(int cc, int Rd, int Rm, int Rn); 149dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void SMUL(int cc, int xy, 150dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int Rd, int Rm, int Rs); 151dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void SMULW(int cc, int y, 152dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int Rd, int Rm, int Rs); 153dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void SMLA(int cc, int xy, 154dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int Rd, int Rm, int Rs, int Rn); 155dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void SMLAL(int cc, int xy, 156dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int RdHi, int RdLo, int Rs, int Rm); 157dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project virtual void SMLAW(int cc, int y, 158dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int Rd, int Rm, int Rs, int Rn); 15996dbb4fc58fe2dcf4390e073dbb42cc77ef2f0b5Martyn Capewell virtual void UXTB16(int cc, int Rd, int Rm, int rotate); 1604dc1fa8e8d1f14868ab8bba93a8cbb87f847c4e3Martyn Capewell virtual void UBFX(int cc, int Rd, int Rn, int lsb, int width); 161dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 162dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectprivate: 163dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ARMAssembler(const ARMAssembler& rhs); 164dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project ARMAssembler& operator = (const ARMAssembler& rhs); 165dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 166dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project sp<Assembly> mAssembly; 167dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project uint32_t* mBase; 168dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project uint32_t* mPC; 169dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project uint32_t* mPrologPC; 170dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int64_t mDuration; 171dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#if defined(WITH_LIB_HARDWARE) 172dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project bool mQemuTracing; 173dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#endif 174dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 175dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project struct branch_target_t { 176dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project inline branch_target_t() : label(0), pc(0) { } 177dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project inline branch_target_t(const char* l, uint32_t* p) 178dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project : label(l), pc(p) { } 179dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project const char* label; 180dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project uint32_t* pc; 181dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project }; 182dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 183dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project Vector<branch_target_t> mBranchTargets; 184dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project KeyedVector< const char*, uint32_t* > mLabels; 185dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project KeyedVector< uint32_t*, const char* > mLabelsInverseMapping; 186dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project KeyedVector< uint32_t*, const char* > mComments; 187dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}; 188dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 189dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}; // namespace android 190dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 191dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#endif //ANDROID_ARMASSEMBLER_H 192