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