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