180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@/****************************************************************************** 280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * 380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * Copyright (C) 2015 The Android Open Source Project 480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * 580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * Licensed under the Apache License, Version 2.0 (the "License"); 680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * you may not use this file except in compliance with the License. 780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * You may obtain a copy of the License at: 880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * 980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * http://www.apache.org/licenses/LICENSE-2.0 1080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * 1180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * Unless required by applicable law or agreed to in writing, software 1280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * distributed under the License is distributed on an "AS IS" BASIS, 1380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * See the License for the specific language governing permissions and 1580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * limitations under the License. 1680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * 1780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ ***************************************************************************** 1880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 1980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@*/ 2080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 2180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 2280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@****************************************************************************** 2380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 2480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 2580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* @brief 2680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* This file contains definitions of routines for SAD caclulation 2780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 2880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* @author 2980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* Ittiam 3080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 3180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* @par List of Functions: 3280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* - icv_sad_8x4_a9() 3380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 3480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* @remarks 3580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* None 3680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 3780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@******************************************************************************* 3880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 3980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 4080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@****************************************************************************** 4180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 4280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* @brief computes distortion (SAD) between 2 8x4 blocks 4380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 4480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 4580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* @par Description 4680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* This functions computes SAD between 2 8x4 blocks. 4780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 4880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* @param[in] pu1_src 4980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* UWORD8 pointer to the source 5080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 5180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* @param[out] pu1_ref 5280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* UWORD8 pointer to the reference buffer 5380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 5480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* @param[in] src_strd 5580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* integer source stride 5680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 5780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* @param[in] ref_strd 5880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* integer reference stride 5980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 6080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* @param[in] wd 6180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* Width (assumed to be 8) 6280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 6380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* @param[in] ht 6480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* Height (assumed to be 4) 6580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 6680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* @returns 6780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* SAD value in r0 6880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 6980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* @remarks 7080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@* 7180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar@****************************************************************************** 7280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 7380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar .global icv_sad_8x4_a9 7480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 7580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakaricv_sad_8x4_a9: 7680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 7780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar push {lr} 7880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 7980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vld1.8 d4, [r0], r2 8080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vld1.8 d5, [r1], r3 8180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 8280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vld1.8 d6, [r0], r2 8380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vabdl.u8 q0, d5, d4 8480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 8580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vld1.8 d7, [r1], r3 8680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vabal.u8 q0, d7, d6 8780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 8880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vld1.8 d4, [r0], r2 8980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vld1.8 d5, [r1], r3 9080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 9180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vld1.8 d6, [r0], r2 9280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vabal.u8 q0, d5, d4 9380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 9480a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vld1.8 d7, [r1], r3 9580a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vabal.u8 q0, d7, d6 9680a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 9780a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vadd.i16 d0, d1, d0 9880a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vpaddl.u16 d0, d0 9980a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vpaddl.u32 d0, d0 10080a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 10180a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar vmov.32 r0, d0[0] 10280a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar 10380a14110036632549a272c812f92b791fb08e87aHarish Mahendrakar pop {pc} 104