178e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// 278e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// Copyright (C) 2007-2008 ARM Limited 378e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// 478e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// Licensed under the Apache License, Version 2.0 (the "License"); 578e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// you may not use this file except in compliance with the License. 678e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// You may obtain a copy of the License at 778e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// 878e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// http://www.apache.org/licenses/LICENSE-2.0 978e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// 1078e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// Unless required by applicable law or agreed to in writing, software 1178e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// distributed under the License is distributed on an "AS IS" BASIS, 1278e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1378e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// See the License for the specific language governing permissions and 1478e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// limitations under the License. 1578e52bfac041d71ce53b5b13c2abf78af742b09dLajos Molnar;// 160c1bc742181ded4930842b46e9507372f0b1b963James Dong; /** 170c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 180c1bc742181ded4930842b46e9507372f0b1b963James Dong; * File Name: armVCM4P2_Clip8_s.s 190c1bc742181ded4930842b46e9507372f0b1b963James Dong; * OpenMAX DL: v1.0.2 200c1bc742181ded4930842b46e9507372f0b1b963James Dong; * Revision: 9641 210c1bc742181ded4930842b46e9507372f0b1b963James Dong; * Date: Thursday, February 7, 2008 220c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 230c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 240c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 250c1bc742181ded4930842b46e9507372f0b1b963James Dong; * 260c1bc742181ded4930842b46e9507372f0b1b963James Dong; * Description: 270c1bc742181ded4930842b46e9507372f0b1b963James Dong; * Contains module for Clipping 16 bit value to [0,255] Range 280c1bc742181ded4930842b46e9507372f0b1b963James Dong; */ 290c1bc742181ded4930842b46e9507372f0b1b963James Dong 300c1bc742181ded4930842b46e9507372f0b1b963James Dong INCLUDE omxtypes_s.h 310c1bc742181ded4930842b46e9507372f0b1b963James Dong INCLUDE armCOMM_s.h 320c1bc742181ded4930842b46e9507372f0b1b963James Dong 330c1bc742181ded4930842b46e9507372f0b1b963James Dong 340c1bc742181ded4930842b46e9507372f0b1b963James Dong M_VARIANTS ARM1136JS 350c1bc742181ded4930842b46e9507372f0b1b963James Dong 360c1bc742181ded4930842b46e9507372f0b1b963James Dong 370c1bc742181ded4930842b46e9507372f0b1b963James Dong 380c1bc742181ded4930842b46e9507372f0b1b963James Dong IF ARM1136JS 390c1bc742181ded4930842b46e9507372f0b1b963James Dong 400c1bc742181ded4930842b46e9507372f0b1b963James Dong;//Input Arguments 410c1bc742181ded4930842b46e9507372f0b1b963James Dong 420c1bc742181ded4930842b46e9507372f0b1b963James DongpSrc RN 0 430c1bc742181ded4930842b46e9507372f0b1b963James DongpDst RN 1 440c1bc742181ded4930842b46e9507372f0b1b963James Dongstep RN 2 450c1bc742181ded4930842b46e9507372f0b1b963James Dong 460c1bc742181ded4930842b46e9507372f0b1b963James Dong;// Local variables 470c1bc742181ded4930842b46e9507372f0b1b963James Dong 480c1bc742181ded4930842b46e9507372f0b1b963James Dongx0 RN 3 490c1bc742181ded4930842b46e9507372f0b1b963James Dongx1 RN 4 500c1bc742181ded4930842b46e9507372f0b1b963James Dongx2 RN 5 510c1bc742181ded4930842b46e9507372f0b1b963James Dongx3 RN 6 520c1bc742181ded4930842b46e9507372f0b1b963James Dong 530c1bc742181ded4930842b46e9507372f0b1b963James DongCount RN 14 540c1bc742181ded4930842b46e9507372f0b1b963James Dong 550c1bc742181ded4930842b46e9507372f0b1b963James Dong 560c1bc742181ded4930842b46e9507372f0b1b963James Dong M_START armVCM4P2_Clip8,r6 570c1bc742181ded4930842b46e9507372f0b1b963James Dong 580c1bc742181ded4930842b46e9507372f0b1b963James Dong 590c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV Count,#8 600c1bc742181ded4930842b46e9507372f0b1b963James Dongloop 610c1bc742181ded4930842b46e9507372f0b1b963James Dong 620c1bc742181ded4930842b46e9507372f0b1b963James Dong LDMIA pSrc!,{x0, x1} 630c1bc742181ded4930842b46e9507372f0b1b963James Dong SUBS Count,Count, #1 ;// count down 640c1bc742181ded4930842b46e9507372f0b1b963James Dong LDMIA pSrc!,{x2, x3} 650c1bc742181ded4930842b46e9507372f0b1b963James Dong USAT16 x0, #8, x0 ;// clip two samples to [0,255] 660c1bc742181ded4930842b46e9507372f0b1b963James Dong USAT16 x1, #8, x1 ;// clip two samples to [0,255] 670c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x0, [pDst] 680c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV x0, x0, LSR #16 690c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x0, [pDst,#1] 700c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x1, [pDst,#2] 710c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV x1, x1, LSR #16 720c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x1, [pDst,#3] 730c1bc742181ded4930842b46e9507372f0b1b963James Dong 740c1bc742181ded4930842b46e9507372f0b1b963James Dong USAT16 x2, #8, x2 ;// clip two samples to [0,255] 750c1bc742181ded4930842b46e9507372f0b1b963James Dong USAT16 x3, #8, x3 ;// clip two samples to [0,255] 760c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x2, [pDst,#4] 770c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV x2, x2, LSR #16 780c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x2, [pDst,#5] 790c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x3, [pDst,#6] 800c1bc742181ded4930842b46e9507372f0b1b963James Dong MOV x3, x3, LSR #16 810c1bc742181ded4930842b46e9507372f0b1b963James Dong STRB x3, [pDst,#7] 820c1bc742181ded4930842b46e9507372f0b1b963James Dong ADD pDst,pDst,step ;// Increment pDst by step value 830c1bc742181ded4930842b46e9507372f0b1b963James Dong 840c1bc742181ded4930842b46e9507372f0b1b963James Dong BGT loop ;// Continue loop until Count reaches 64 850c1bc742181ded4930842b46e9507372f0b1b963James Dong 860c1bc742181ded4930842b46e9507372f0b1b963James Dong M_END 870c1bc742181ded4930842b46e9507372f0b1b963James Dong ENDIF 880c1bc742181ded4930842b46e9507372f0b1b963James Dong 890c1bc742181ded4930842b46e9507372f0b1b963James Dong END 90