10c1bc742181ded4930842b46e9507372f0b1b963James Dong; /** 20c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 30c1bc742181ded4930842b46e9507372f0b1b963James Dong; * File Name: armVCM4P2_Clip8_s.s 40c1bc742181ded4930842b46e9507372f0b1b963James Dong; * OpenMAX DL: v1.0.2 50c1bc742181ded4930842b46e9507372f0b1b963James Dong; * Revision: 9641 60c1bc742181ded4930842b46e9507372f0b1b963James Dong; * Date: Thursday, February 7, 2008 70c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 80c1bc742181ded4930842b46e9507372f0b1b963James Dong; * (c) Copyright 2007-2008 ARM Limited. All Rights Reserved. 90c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 100c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 110c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 120c1bc742181ded4930842b46e9507372f0b1b963James Dong; * Description: 130c1bc742181ded4930842b46e9507372f0b1b963James Dong; * Contains module for Clipping 16 bit value to [0,255] Range 140c1bc742181ded4930842b46e9507372f0b1b963James Dong; */ 150c1bc742181ded4930842b46e9507372f0b1b963James Dong 160c1bc742181ded4930842b46e9507372f0b1b963James Dong INCLUDE omxtypes_s.h 170c1bc742181ded4930842b46e9507372f0b1b963James Dong INCLUDE armCOMM_s.h 180c1bc742181ded4930842b46e9507372f0b1b963James Dong 190c1bc742181ded4930842b46e9507372f0b1b963James Dong 200c1bc742181ded4930842b46e9507372f0b1b963James Dong M_VARIANTS ARM1136JS 210c1bc742181ded4930842b46e9507372f0b1b963James Dong 220c1bc742181ded4930842b46e9507372f0b1b963James Dong 230c1bc742181ded4930842b46e9507372f0b1b963James Dong 240c1bc742181ded4930842b46e9507372f0b1b963James Dong IF ARM1136JS 250c1bc742181ded4930842b46e9507372f0b1b963James Dong 260c1bc742181ded4930842b46e9507372f0b1b963James Dong;//Input Arguments 270c1bc742181ded4930842b46e9507372f0b1b963James Dong 280c1bc742181ded4930842b46e9507372f0b1b963James DongpSrc RN 0 290c1bc742181ded4930842b46e9507372f0b1b963James DongpDst RN 1 300c1bc742181ded4930842b46e9507372f0b1b963James Dongstep RN 2 310c1bc742181ded4930842b46e9507372f0b1b963James Dong 320c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Local variables 330c1bc742181ded4930842b46e9507372f0b1b963James Dong 340c1bc742181ded4930842b46e9507372f0b1b963James Dongx0 RN 3 350c1bc742181ded4930842b46e9507372f0b1b963James Dongx1 RN 4 360c1bc742181ded4930842b46e9507372f0b1b963James Dongx2 RN 5 370c1bc742181ded4930842b46e9507372f0b1b963James Dongx3 RN 6 380c1bc742181ded4930842b46e9507372f0b1b963James Dong 390c1bc742181ded4930842b46e9507372f0b1b963James DongCount RN 14 400c1bc742181ded4930842b46e9507372f0b1b963James Dong 410c1bc742181ded4930842b46e9507372f0b1b963James Dong 420c1bc742181ded4930842b46e9507372f0b1b963James Dong M_START armVCM4P2_Clip8,r6 430c1bc742181ded4930842b46e9507372f0b1b963James Dong 440c1bc742181ded4930842b46e9507372f0b1b963James Dong 450c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV Count,#8 460c1bc742181ded4930842b46e9507372f0b1b963James Dongloop 470c1bc742181ded4930842b46e9507372f0b1b963James Dong 480c1bc742181ded4930842b46e9507372f0b1b963James Dong LDMIA pSrc!,{x0, x1} 490c1bc742181ded4930842b46e9507372f0b1b963James Dong SUBS Count,Count, #1 ;// count down 500c1bc742181ded4930842b46e9507372f0b1b963James Dong LDMIA pSrc!,{x2, x3} 510c1bc742181ded4930842b46e9507372f0b1b963James Dong USAT16 x0, #8, x0 ;// clip two samples to [0,255] 520c1bc742181ded4930842b46e9507372f0b1b963James Dong USAT16 x1, #8, x1 ;// clip two samples to [0,255] 530c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x0, [pDst] 540c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV x0, x0, LSR #16 550c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x0, [pDst,#1] 560c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x1, [pDst,#2] 570c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV x1, x1, LSR #16 580c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x1, [pDst,#3] 590c1bc742181ded4930842b46e9507372f0b1b963James Dong 600c1bc742181ded4930842b46e9507372f0b1b963James Dong USAT16 x2, #8, x2 ;// clip two samples to [0,255] 610c1bc742181ded4930842b46e9507372f0b1b963James Dong USAT16 x3, #8, x3 ;// clip two samples to [0,255] 620c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x2, [pDst,#4] 630c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV x2, x2, LSR #16 640c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x2, [pDst,#5] 650c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x3, [pDst,#6] 660c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV x3, x3, LSR #16 670c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x3, [pDst,#7] 680c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD pDst,pDst,step ;// Increment pDst by step value 690c1bc742181ded4930842b46e9507372f0b1b963James Dong 700c1bc742181ded4930842b46e9507372f0b1b963James Dong BGT loop ;// Continue loop until Count reaches 64 710c1bc742181ded4930842b46e9507372f0b1b963James Dong 720c1bc742181ded4930842b46e9507372f0b1b963James Dong M_END 730c1bc742181ded4930842b46e9507372f0b1b963James Dong ENDIF 740c1bc742181ded4930842b46e9507372f0b1b963James Dong 750c1bc742181ded4930842b46e9507372f0b1b963James Dong END 76