armVCM4P2_Clip8_s.s revision 0c1bc742181ded4930842b46e9507372f0b1b963
1; /** 2; * 3; * File Name: armVCM4P2_Clip8_s.s 4; * OpenMAX DL: v1.0.2 5; * Revision: 12290 6; * Date: Wednesday, April 9, 2008 7; * 8; * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. 9; * 10; * 11; * 12; * Description: 13; * Contains module for Clipping 16 bit value to [0,255] Range 14; */ 15 16 INCLUDE omxtypes_s.h 17 INCLUDE armCOMM_s.h 18 19 20 M_VARIANTS CortexA8 21 22 IF CortexA8 23;//Input Arguments 24 25pSrc RN 0 26pDst RN 1 27step RN 2 28 29;// Neon Registers 30 31qx0 QN Q0.S16 32dx00 DN D0.S16 33dx01 DN D1.S16 34qx1 QN Q1.S16 35dx10 DN D2.S16 36dx11 DN D3.S16 37 38qx2 QN Q2.S16 39dx20 DN D4.S16 40dx21 DN D5.S16 41qx3 QN Q3.S16 42dx30 DN D6.S16 43dx31 DN D7.S16 44 45 46dclip0 DN D0.U8 47dclip1 DN D2.U8 48dclip2 DN D4.U8 49dclip3 DN D6.U8 50 51 M_START armVCM4P2_Clip8 52 53 VLD1 {dx00,dx01,dx10,dx11},[pSrc]! ;// Load 16 entries from pSrc 54 VLD1 {dx20,dx21,dx30,dx31},[pSrc]! ;// Load next 16 entries from pSrc 55 VQSHRUN dclip0,qx0,#0 ;// dclip0[i]=clip qx0[i] to [0,255] 56 VQSHRUN dclip1,qx1,#0 ;// dclip1[i]=clip qx1[i] to [0,255] 57 VST1 {dclip0},[pDst],step ;// store 8 bytes and pDst=pDst+step 58 VST1 {dclip1},[pDst],step ;// store 8 bytes and pDst=pDst+step 59 VQSHRUN dclip2,qx2,#0 60 VQSHRUN dclip3,qx3,#0 61 VST1 {dclip2},[pDst],step 62 VST1 {dclip3},[pDst],step 63 64 VLD1 {dx00,dx01,dx10,dx11},[pSrc]! ;// Load 16 entries from pSrc 65 VLD1 {dx20,dx21,dx30,dx31},[pSrc]! ;// Load next 16 entries from pSrc 66 VQSHRUN dclip0,qx0,#0 ;// dclip0[i]=clip qx0[i] to [0,255] 67 VQSHRUN dclip1,qx1,#0 ;// dclip1[i]=clip qx1[i] to [0,255] 68 VST1 {dclip0},[pDst],step ;// store 8 bytes and pDst=pDst+step 69 VST1 {dclip1},[pDst],step ;// store 8 bytes and pDst=pDst+step 70 VQSHRUN dclip2,qx2,#0 71 VQSHRUN dclip3,qx3,#0 72 VST1 {dclip2},[pDst],step 73 VST1 {dclip3},[pDst],step 74 75 76 77 M_END 78 ENDIF 79 80 81 82 END 83