Loading libpixelflinger/codeflinger/ARMAssembler.cpp +10 −0 Original line number Original line Diff line number Diff line Loading @@ -424,5 +424,15 @@ void ARMAssembler::SMLAW(int cc, int y, *mPC++ = (cc<<28) | 0x1200080 | (Rd<<16) | (Rn<<12) | (Rs<<8) | (y<<4) | Rm; *mPC++ = (cc<<28) | 0x1200080 | (Rd<<16) | (Rn<<12) | (Rs<<8) | (y<<4) | Rm; } } #if 0 #pragma mark - #pragma mark Byte/half word extract and extend (ARMv6+ only)... #endif void ARMAssembler::UXTB16(int cc, int Rd, int Rm, int rotate) { *mPC++ = (cc<<28) | 0x6CF0070 | (Rd<<12) | ((rotate >> 3) << 10) | Rm; } }; // namespace android }; // namespace android libpixelflinger/codeflinger/ARMAssembler.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -123,6 +123,7 @@ public: int RdHi, int RdLo, int Rs, int Rm); int RdHi, int RdLo, int Rs, int Rm); virtual void SMLAW(int cc, int y, virtual void SMLAW(int cc, int y, int Rd, int Rm, int Rs, int Rn); int Rd, int Rm, int Rs, int Rn); virtual void UXTB16(int cc, int Rd, int Rm, int rotate); private: private: ARMAssembler(const ARMAssembler& rhs); ARMAssembler(const ARMAssembler& rhs); Loading libpixelflinger/codeflinger/ARMAssemblerInterface.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -203,6 +203,9 @@ public: virtual void SMLAW(int cc, int y, virtual void SMLAW(int cc, int y, int Rd, int Rm, int Rs, int Rn) = 0; int Rd, int Rm, int Rs, int Rn) = 0; // byte/half word extract... virtual void UXTB16(int cc, int Rd, int Rm, int rotate) = 0; // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // convenience... // convenience... // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- Loading libpixelflinger/codeflinger/ARMAssemblerProxy.cpp +3 −0 Original line number Original line Diff line number Diff line Loading @@ -195,6 +195,9 @@ void ARMAssemblerProxy::SMLAW(int cc, int y, int Rd, int Rm, int Rs, int Rn) { mTarget->SMLAW(cc, y, Rd, Rm, Rs, Rn); mTarget->SMLAW(cc, y, Rd, Rm, Rs, Rn); } } void ARMAssemblerProxy::UXTB16(int cc, int Rd, int Rm, int rotate) { mTarget->UXTB16(cc, Rd, Rm, rotate); } }; // namespace android }; // namespace android libpixelflinger/codeflinger/ARMAssemblerProxy.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -114,6 +114,8 @@ public: virtual void SMLAW(int cc, int y, virtual void SMLAW(int cc, int y, int Rd, int Rm, int Rs, int Rn); int Rd, int Rm, int Rs, int Rn); virtual void UXTB16(int cc, int Rd, int Rm, int rotate); private: private: ARMAssemblerInterface* mTarget; ARMAssemblerInterface* mTarget; }; }; Loading Loading
libpixelflinger/codeflinger/ARMAssembler.cpp +10 −0 Original line number Original line Diff line number Diff line Loading @@ -424,5 +424,15 @@ void ARMAssembler::SMLAW(int cc, int y, *mPC++ = (cc<<28) | 0x1200080 | (Rd<<16) | (Rn<<12) | (Rs<<8) | (y<<4) | Rm; *mPC++ = (cc<<28) | 0x1200080 | (Rd<<16) | (Rn<<12) | (Rs<<8) | (y<<4) | Rm; } } #if 0 #pragma mark - #pragma mark Byte/half word extract and extend (ARMv6+ only)... #endif void ARMAssembler::UXTB16(int cc, int Rd, int Rm, int rotate) { *mPC++ = (cc<<28) | 0x6CF0070 | (Rd<<12) | ((rotate >> 3) << 10) | Rm; } }; // namespace android }; // namespace android
libpixelflinger/codeflinger/ARMAssembler.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -123,6 +123,7 @@ public: int RdHi, int RdLo, int Rs, int Rm); int RdHi, int RdLo, int Rs, int Rm); virtual void SMLAW(int cc, int y, virtual void SMLAW(int cc, int y, int Rd, int Rm, int Rs, int Rn); int Rd, int Rm, int Rs, int Rn); virtual void UXTB16(int cc, int Rd, int Rm, int rotate); private: private: ARMAssembler(const ARMAssembler& rhs); ARMAssembler(const ARMAssembler& rhs); Loading
libpixelflinger/codeflinger/ARMAssemblerInterface.h +3 −0 Original line number Original line Diff line number Diff line Loading @@ -203,6 +203,9 @@ public: virtual void SMLAW(int cc, int y, virtual void SMLAW(int cc, int y, int Rd, int Rm, int Rs, int Rn) = 0; int Rd, int Rm, int Rs, int Rn) = 0; // byte/half word extract... virtual void UXTB16(int cc, int Rd, int Rm, int rotate) = 0; // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // convenience... // convenience... // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- Loading
libpixelflinger/codeflinger/ARMAssemblerProxy.cpp +3 −0 Original line number Original line Diff line number Diff line Loading @@ -195,6 +195,9 @@ void ARMAssemblerProxy::SMLAW(int cc, int y, int Rd, int Rm, int Rs, int Rn) { mTarget->SMLAW(cc, y, Rd, Rm, Rs, Rn); mTarget->SMLAW(cc, y, Rd, Rm, Rs, Rn); } } void ARMAssemblerProxy::UXTB16(int cc, int Rd, int Rm, int rotate) { mTarget->UXTB16(cc, Rd, Rm, rotate); } }; // namespace android }; // namespace android
libpixelflinger/codeflinger/ARMAssemblerProxy.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -114,6 +114,8 @@ public: virtual void SMLAW(int cc, int y, virtual void SMLAW(int cc, int y, int Rd, int Rm, int Rs, int Rn); int Rd, int Rm, int Rs, int Rn); virtual void UXTB16(int cc, int Rd, int Rm, int rotate); private: private: ARMAssemblerInterface* mTarget; ARMAssemblerInterface* mTarget; }; }; Loading