14f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project/* libs/pixelflinger/codeflinger/ARMAssemblerProxy.cpp
24f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project**
34f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project** Copyright 2006, The Android Open Source Project
44f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project**
54f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project** Licensed under the Apache License, Version 2.0 (the "License");
64f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project** you may not use this file except in compliance with the License.
74f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project** You may obtain a copy of the License at
84f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project**
94f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project**     http://www.apache.org/licenses/LICENSE-2.0
104f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project**
114f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project** Unless required by applicable law or agreed to in writing, software
124f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project** distributed under the License is distributed on an "AS IS" BASIS,
134f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
144f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project** See the License for the specific language governing permissions and
154f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project** limitations under the License.
164f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project*/
174f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
184f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
194f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project#include <stdint.h>
204f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project#include <sys/types.h>
214f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
224f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project#include "codeflinger/ARMAssemblerProxy.h"
234f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
244f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectnamespace android {
254f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
264f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project// ----------------------------------------------------------------------------
274f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
284f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source ProjectARMAssemblerProxy::ARMAssemblerProxy()
294f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    : mTarget(0)
304f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project{
314f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
324f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
334f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source ProjectARMAssemblerProxy::ARMAssemblerProxy(ARMAssemblerInterface* target)
344f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    : mTarget(target)
354f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project{
364f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
374f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
384f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source ProjectARMAssemblerProxy::~ARMAssemblerProxy()
394f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project{
404f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    delete mTarget;
414f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
424f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
434f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::setTarget(ARMAssemblerInterface* target)
444f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project{
454f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    delete mTarget;
464f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget = target;
474f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
484f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
494f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::reset() {
504f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->reset();
514f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
524f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectint ARMAssemblerProxy::generate(const char* name) {
534f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    return mTarget->generate(name);
544f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
554f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::disassemble(const char* name) {
564f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    return mTarget->disassemble(name);
574f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
582bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lindint ARMAssemblerProxy::getCodegenArch()
592bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind{
602bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    return mTarget->getCodegenArch();
612bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind}
624f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::prolog() {
634f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->prolog();
644f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
654f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::epilog(uint32_t touched) {
664f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->epilog(touched);
674f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
684f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::comment(const char* string) {
694f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->comment(string);
704f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
714f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
724f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
732bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
742bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind// addressing modes
752bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
762bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lindbool ARMAssemblerProxy::isValidImmediate(uint32_t immed)
772bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind{
782bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    return mTarget->isValidImmediate(immed);
792bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind}
802bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
812bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lindint ARMAssemblerProxy::buildImmediate(uint32_t i, uint32_t& rot, uint32_t& imm)
822bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind{
832bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    return mTarget->buildImmediate(i, rot, imm);
842bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind}
852bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
862bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
872bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
882bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Linduint32_t ARMAssemblerProxy::imm(uint32_t immediate)
892bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind{
902bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    return mTarget->imm(immediate);
912bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind}
922bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
932bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Linduint32_t ARMAssemblerProxy::reg_imm(int Rm, int type, uint32_t shift)
942bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind{
952bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    return mTarget->reg_imm(Rm, type, shift);
962bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind}
972bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
982bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Linduint32_t ARMAssemblerProxy::reg_rrx(int Rm)
992bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind{
1002bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    return mTarget->reg_rrx(Rm);
1012bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind}
1022bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1032bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Linduint32_t ARMAssemblerProxy::reg_reg(int Rm, int type, int Rs)
1042bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind{
1052bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    return mTarget->reg_reg(Rm, type, Rs);
1062bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind}
1072bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1082bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1092bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind// addressing modes...
1102bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind// LDR(B)/STR(B)/PLD
1112bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind// (immediate and Rm can be negative, which indicates U=0)
1122bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Linduint32_t ARMAssemblerProxy::immed12_pre(int32_t immed12, int W)
1132bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind{
1142bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    return mTarget->immed12_pre(immed12, W);
1152bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind}
1162bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1172bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Linduint32_t ARMAssemblerProxy::immed12_post(int32_t immed12)
1182bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind{
1192bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    return mTarget->immed12_post(immed12);
1202bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind}
1212bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1222bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Linduint32_t ARMAssemblerProxy::reg_scale_pre(int Rm, int type, uint32_t shift, int W)
1232bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind{
1242bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    return mTarget->reg_scale_pre(Rm, type, shift, W);
1252bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind}
1262bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1272bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Linduint32_t ARMAssemblerProxy::reg_scale_post(int Rm, int type, uint32_t shift)
1282bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind{
1292bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    return mTarget->reg_scale_post(Rm, type, shift);
1302bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind}
1312bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1322bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1332bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind// LDRH/LDRSB/LDRSH/STRH
1342bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind// (immediate and Rm can be negative, which indicates U=0)
1352bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Linduint32_t ARMAssemblerProxy::immed8_pre(int32_t immed8, int W)
1362bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind{
1372bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    return mTarget->immed8_pre(immed8, W);
1382bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind}
1392bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1402bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Linduint32_t ARMAssemblerProxy::immed8_post(int32_t immed8)
1412bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind{
1422bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    return mTarget->immed8_post(immed8);
1432bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind}
1442bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1452bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Linduint32_t ARMAssemblerProxy::reg_pre(int Rm, int W)
1462bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind{
1472bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    return mTarget->reg_pre(Rm, W);
1482bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind}
1492bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1502bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Linduint32_t ARMAssemblerProxy::reg_post(int Rm)
1512bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind{
1522bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind    return mTarget->reg_post(Rm);
1532bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind}
1542bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1552bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1562bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind//------------------------------------------------------------------------
1572bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1582bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1592bc2b792782b304b15d8c48b54916a9b3fa3a7acPaul Lind
1604f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::dataProcessing( int opcode, int cc, int s,
1614f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project                                        int Rd, int Rn, uint32_t Op2)
1624f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project{
1634f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->dataProcessing(opcode, cc, s, Rd, Rn, Op2);
1644f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
1654f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
1664f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::MLA(int cc, int s, int Rd, int Rm, int Rs, int Rn) {
1674f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->MLA(cc, s, Rd, Rm, Rs, Rn);
1684f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
1694f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::MUL(int cc, int s, int Rd, int Rm, int Rs) {
1704f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->MUL(cc, s, Rd, Rm, Rs);
1714f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
1724f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::UMULL(int cc, int s,
1734f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project            int RdLo, int RdHi, int Rm, int Rs) {
1744f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->UMULL(cc, s, RdLo, RdHi, Rm, Rs);
1754f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
1764f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::UMUAL(int cc, int s,
1774f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project            int RdLo, int RdHi, int Rm, int Rs) {
1784f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->UMUAL(cc, s, RdLo, RdHi, Rm, Rs);
1794f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
1804f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::SMULL(int cc, int s,
1814f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project            int RdLo, int RdHi, int Rm, int Rs) {
1824f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->SMULL(cc, s, RdLo, RdHi, Rm, Rs);
1834f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
1844f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::SMUAL(int cc, int s,
1854f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project            int RdLo, int RdHi, int Rm, int Rs) {
1864f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->SMUAL(cc, s, RdLo, RdHi, Rm, Rs);
1874f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
1884f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
1894f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::B(int cc, uint32_t* pc) {
1904f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->B(cc, pc);
1914f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
1924f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::BL(int cc, uint32_t* pc) {
1934f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->BL(cc, pc);
1944f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
1954f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::BX(int cc, int Rn) {
1964f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->BX(cc, Rn);
1974f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
1984f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::label(const char* theLabel) {
1994f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->label(theLabel);
2004f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2014f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::B(int cc, const char* label) {
2024f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->B(cc, label);
2034f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2044f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::BL(int cc, const char* label) {
2054f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->BL(cc, label);
2064f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2074f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
2084f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectuint32_t* ARMAssemblerProxy::pcForLabel(const char* label) {
2094f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    return mTarget->pcForLabel(label);
2104f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2114f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
2124f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::LDR(int cc, int Rd, int Rn, uint32_t offset) {
2134f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->LDR(cc, Rd, Rn, offset);
2144f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2154f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::LDRB(int cc, int Rd, int Rn, uint32_t offset) {
2164f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->LDRB(cc, Rd, Rn, offset);
2174f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2184f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::STR(int cc, int Rd, int Rn, uint32_t offset) {
2194f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->STR(cc, Rd, Rn, offset);
2204f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2214f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::STRB(int cc, int Rd, int Rn, uint32_t offset) {
2224f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->STRB(cc, Rd, Rn, offset);
2234f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2244f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::LDRH(int cc, int Rd, int Rn, uint32_t offset) {
2254f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->LDRH(cc, Rd, Rn, offset);
2264f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2274f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::LDRSB(int cc, int Rd, int Rn, uint32_t offset) {
2284f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->LDRSB(cc, Rd, Rn, offset);
2294f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2304f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::LDRSH(int cc, int Rd, int Rn, uint32_t offset) {
2314f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->LDRSH(cc, Rd, Rn, offset);
2324f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2334f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::STRH(int cc, int Rd, int Rn, uint32_t offset) {
2344f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->STRH(cc, Rd, Rn, offset);
2354f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2364f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::LDM(int cc, int dir, int Rn, int W, uint32_t reg_list) {
2374f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->LDM(cc, dir, Rn, W, reg_list);
2384f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2394f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::STM(int cc, int dir, int Rn, int W, uint32_t reg_list) {
2404f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->STM(cc, dir, Rn, W, reg_list);
2414f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2424f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
2434f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::SWP(int cc, int Rn, int Rd, int Rm) {
2444f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->SWP(cc, Rn, Rd, Rm);
2454f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2464f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::SWPB(int cc, int Rn, int Rd, int Rm) {
2474f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->SWPB(cc, Rn, Rd, Rm);
2484f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2494f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::SWI(int cc, uint32_t comment) {
2504f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->SWI(cc, comment);
2514f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2524f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
2534f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
2544f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::PLD(int Rn, uint32_t offset) {
2554f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->PLD(Rn, offset);
2564f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2574f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::CLZ(int cc, int Rd, int Rm) {
2584f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->CLZ(cc, Rd, Rm);
2594f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2604f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::QADD(int cc, int Rd, int Rm, int Rn) {
2614f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->QADD(cc, Rd, Rm, Rn);
2624f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2634f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::QDADD(int cc, int Rd, int Rm, int Rn) {
2644f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->QDADD(cc, Rd, Rm, Rn);
2654f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2664f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::QSUB(int cc, int Rd, int Rm, int Rn) {
2674f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->QSUB(cc, Rd, Rm, Rn);
2684f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2694f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::QDSUB(int cc, int Rd, int Rm, int Rn) {
2704f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->QDSUB(cc, Rd, Rm, Rn);
2714f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2724f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::SMUL(int cc, int xy, int Rd, int Rm, int Rs) {
2734f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->SMUL(cc, xy, Rd, Rm, Rs);
2744f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2754f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::SMULW(int cc, int y, int Rd, int Rm, int Rs) {
2764f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->SMULW(cc, y, Rd, Rm, Rs);
2774f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2784f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::SMLA(int cc, int xy, int Rd, int Rm, int Rs, int Rn) {
2794f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->SMLA(cc, xy, Rd, Rm, Rs, Rn);
2804f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2814f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::SMLAL(  int cc, int xy,
2824f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project                                int RdHi, int RdLo, int Rs, int Rm) {
2834f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->SMLAL(cc, xy, RdHi, RdLo, Rs, Rm);
2844f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2854f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Projectvoid ARMAssemblerProxy::SMLAW(int cc, int y, int Rd, int Rm, int Rs, int Rn) {
2864f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project    mTarget->SMLAW(cc, y, Rd, Rm, Rs, Rn);
2874f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}
2884f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
28996dbb4fc58fe2dcf4390e073dbb42cc77ef2f0b5Martyn Capewellvoid ARMAssemblerProxy::UXTB16(int cc, int Rd, int Rm, int rotate) {
29096dbb4fc58fe2dcf4390e073dbb42cc77ef2f0b5Martyn Capewell    mTarget->UXTB16(cc, Rd, Rm, rotate);
29196dbb4fc58fe2dcf4390e073dbb42cc77ef2f0b5Martyn Capewell}
2924f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
2934dc1fa8e8d1f14868ab8bba93a8cbb87f847c4e3Martyn Capewellvoid ARMAssemblerProxy::UBFX(int cc, int Rd, int Rn, int lsb, int width) {
2944dc1fa8e8d1f14868ab8bba93a8cbb87f847c4e3Martyn Capewell    mTarget->UBFX(cc, Rd, Rn, lsb, width);
2954dc1fa8e8d1f14868ab8bba93a8cbb87f847c4e3Martyn Capewell}
2964dc1fa8e8d1f14868ab8bba93a8cbb87f847c4e3Martyn Capewell
2974f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project}; // namespace android
2984f6e8d7a00cbeda1e70cc15be9c4af1018bdad5The Android Open Source Project
299