| /* libs/pixelflinger/codeflinger/ARMAssemblerProxy.cpp | |
| ** | |
| ** Copyright 2006, The Android Open Source Project | |
| ** | |
| ** Licensed under the Apache License, Version 2.0 (the "License"); | |
| ** you may not use this file except in compliance with the License. | |
| ** You may obtain a copy of the License at | |
| ** | |
| ** http://www.apache.org/licenses/LICENSE-2.0 | |
| ** | |
| ** Unless required by applicable law or agreed to in writing, software | |
| ** distributed under the License is distributed on an "AS IS" BASIS, | |
| ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| ** See the License for the specific language governing permissions and | |
| ** limitations under the License. | |
| */ | |
| #include <stdint.h> | |
| #include <sys/types.h> | |
| #include "codeflinger/ARMAssemblerProxy.h" | |
| namespace android { | |
| // ---------------------------------------------------------------------------- | |
| ARMAssemblerProxy::ARMAssemblerProxy() | |
| : mTarget(0) | |
| { | |
| } | |
| ARMAssemblerProxy::ARMAssemblerProxy(ARMAssemblerInterface* target) | |
| : mTarget(target) | |
| { | |
| } | |
| ARMAssemblerProxy::~ARMAssemblerProxy() | |
| { | |
| delete mTarget; | |
| } | |
| void ARMAssemblerProxy::setTarget(ARMAssemblerInterface* target) | |
| { | |
| delete mTarget; | |
| mTarget = target; | |
| } | |
| void ARMAssemblerProxy::reset() { | |
| mTarget->reset(); | |
| } | |
| int ARMAssemblerProxy::generate(const char* name) { | |
| return mTarget->generate(name); | |
| } | |
| void ARMAssemblerProxy::disassemble(const char* name) { | |
| return mTarget->disassemble(name); | |
| } | |
| void ARMAssemblerProxy::prolog() { | |
| mTarget->prolog(); | |
| } | |
| void ARMAssemblerProxy::epilog(uint32_t touched) { | |
| mTarget->epilog(touched); | |
| } | |
| void ARMAssemblerProxy::comment(const char* string) { | |
| mTarget->comment(string); | |
| } | |
| void ARMAssemblerProxy::dataProcessing( int opcode, int cc, int s, | |
| int Rd, int Rn, uint32_t Op2) | |
| { | |
| mTarget->dataProcessing(opcode, cc, s, Rd, Rn, Op2); | |
| } | |
| void ARMAssemblerProxy::MLA(int cc, int s, int Rd, int Rm, int Rs, int Rn) { | |
| mTarget->MLA(cc, s, Rd, Rm, Rs, Rn); | |
| } | |
| void ARMAssemblerProxy::MUL(int cc, int s, int Rd, int Rm, int Rs) { | |
| mTarget->MUL(cc, s, Rd, Rm, Rs); | |
| } | |
| void ARMAssemblerProxy::UMULL(int cc, int s, | |
| int RdLo, int RdHi, int Rm, int Rs) { | |
| mTarget->UMULL(cc, s, RdLo, RdHi, Rm, Rs); | |
| } | |
| void ARMAssemblerProxy::UMUAL(int cc, int s, | |
| int RdLo, int RdHi, int Rm, int Rs) { | |
| mTarget->UMUAL(cc, s, RdLo, RdHi, Rm, Rs); | |
| } | |
| void ARMAssemblerProxy::SMULL(int cc, int s, | |
| int RdLo, int RdHi, int Rm, int Rs) { | |
| mTarget->SMULL(cc, s, RdLo, RdHi, Rm, Rs); | |
| } | |
| void ARMAssemblerProxy::SMUAL(int cc, int s, | |
| int RdLo, int RdHi, int Rm, int Rs) { | |
| mTarget->SMUAL(cc, s, RdLo, RdHi, Rm, Rs); | |
| } | |
| void ARMAssemblerProxy::B(int cc, uint32_t* pc) { | |
| mTarget->B(cc, pc); | |
| } | |
| void ARMAssemblerProxy::BL(int cc, uint32_t* pc) { | |
| mTarget->BL(cc, pc); | |
| } | |
| void ARMAssemblerProxy::BX(int cc, int Rn) { | |
| mTarget->BX(cc, Rn); | |
| } | |
| void ARMAssemblerProxy::label(const char* theLabel) { | |
| mTarget->label(theLabel); | |
| } | |
| void ARMAssemblerProxy::B(int cc, const char* label) { | |
| mTarget->B(cc, label); | |
| } | |
| void ARMAssemblerProxy::BL(int cc, const char* label) { | |
| mTarget->BL(cc, label); | |
| } | |
| uint32_t* ARMAssemblerProxy::pcForLabel(const char* label) { | |
| return mTarget->pcForLabel(label); | |
| } | |
| void ARMAssemblerProxy::LDR(int cc, int Rd, int Rn, uint32_t offset) { | |
| mTarget->LDR(cc, Rd, Rn, offset); | |
| } | |
| void ARMAssemblerProxy::LDRB(int cc, int Rd, int Rn, uint32_t offset) { | |
| mTarget->LDRB(cc, Rd, Rn, offset); | |
| } | |
| void ARMAssemblerProxy::STR(int cc, int Rd, int Rn, uint32_t offset) { | |
| mTarget->STR(cc, Rd, Rn, offset); | |
| } | |
| void ARMAssemblerProxy::STRB(int cc, int Rd, int Rn, uint32_t offset) { | |
| mTarget->STRB(cc, Rd, Rn, offset); | |
| } | |
| void ARMAssemblerProxy::LDRH(int cc, int Rd, int Rn, uint32_t offset) { | |
| mTarget->LDRH(cc, Rd, Rn, offset); | |
| } | |
| void ARMAssemblerProxy::LDRSB(int cc, int Rd, int Rn, uint32_t offset) { | |
| mTarget->LDRSB(cc, Rd, Rn, offset); | |
| } | |
| void ARMAssemblerProxy::LDRSH(int cc, int Rd, int Rn, uint32_t offset) { | |
| mTarget->LDRSH(cc, Rd, Rn, offset); | |
| } | |
| void ARMAssemblerProxy::STRH(int cc, int Rd, int Rn, uint32_t offset) { | |
| mTarget->STRH(cc, Rd, Rn, offset); | |
| } | |
| void ARMAssemblerProxy::LDM(int cc, int dir, int Rn, int W, uint32_t reg_list) { | |
| mTarget->LDM(cc, dir, Rn, W, reg_list); | |
| } | |
| void ARMAssemblerProxy::STM(int cc, int dir, int Rn, int W, uint32_t reg_list) { | |
| mTarget->STM(cc, dir, Rn, W, reg_list); | |
| } | |
| void ARMAssemblerProxy::SWP(int cc, int Rn, int Rd, int Rm) { | |
| mTarget->SWP(cc, Rn, Rd, Rm); | |
| } | |
| void ARMAssemblerProxy::SWPB(int cc, int Rn, int Rd, int Rm) { | |
| mTarget->SWPB(cc, Rn, Rd, Rm); | |
| } | |
| void ARMAssemblerProxy::SWI(int cc, uint32_t comment) { | |
| mTarget->SWI(cc, comment); | |
| } | |
| void ARMAssemblerProxy::PLD(int Rn, uint32_t offset) { | |
| mTarget->PLD(Rn, offset); | |
| } | |
| void ARMAssemblerProxy::CLZ(int cc, int Rd, int Rm) { | |
| mTarget->CLZ(cc, Rd, Rm); | |
| } | |
| void ARMAssemblerProxy::QADD(int cc, int Rd, int Rm, int Rn) { | |
| mTarget->QADD(cc, Rd, Rm, Rn); | |
| } | |
| void ARMAssemblerProxy::QDADD(int cc, int Rd, int Rm, int Rn) { | |
| mTarget->QDADD(cc, Rd, Rm, Rn); | |
| } | |
| void ARMAssemblerProxy::QSUB(int cc, int Rd, int Rm, int Rn) { | |
| mTarget->QSUB(cc, Rd, Rm, Rn); | |
| } | |
| void ARMAssemblerProxy::QDSUB(int cc, int Rd, int Rm, int Rn) { | |
| mTarget->QDSUB(cc, Rd, Rm, Rn); | |
| } | |
| void ARMAssemblerProxy::SMUL(int cc, int xy, int Rd, int Rm, int Rs) { | |
| mTarget->SMUL(cc, xy, Rd, Rm, Rs); | |
| } | |
| void ARMAssemblerProxy::SMULW(int cc, int y, int Rd, int Rm, int Rs) { | |
| mTarget->SMULW(cc, y, Rd, Rm, Rs); | |
| } | |
| void ARMAssemblerProxy::SMLA(int cc, int xy, int Rd, int Rm, int Rs, int Rn) { | |
| mTarget->SMLA(cc, xy, Rd, Rm, Rs, Rn); | |
| } | |
| void ARMAssemblerProxy::SMLAL( int cc, int xy, | |
| int RdHi, int RdLo, int Rs, int Rm) { | |
| mTarget->SMLAL(cc, xy, RdHi, RdLo, Rs, Rm); | |
| } | |
| void ARMAssemblerProxy::SMLAW(int cc, int y, int Rd, int Rm, int Rs, int Rn) { | |
| mTarget->SMLAW(cc, y, Rd, Rm, Rs, Rn); | |
| } | |
| }; // namespace android | |