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