| @/****************************************************************************** |
| @ * |
| @ * Copyright (C) 2015 The Android Open Source Project |
| @ * |
| @ * Licensed under the Apache License, Version 2.0 (the "License"); |
| @ * you may not use this file except in compliance with the License. |
| @ * You may obtain a copy of the License at: |
| @ * |
| @ * http://www.apache.org/licenses/LICENSE-2.0 |
| @ * |
| @ * Unless required by applicable law or agreed to in writing, software |
| @ * distributed under the License is distributed on an "AS IS" BASIS, |
| @ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| @ * See the License for the specific language governing permissions and |
| @ * limitations under the License. |
| @ * |
| @ ***************************************************************************** |
| @ * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore |
| @*/ |
| |
| |
| @****************************************************************************** |
| @* |
| @* |
| @* @brief |
| @* This file contains definitions of routines for SAD caclulation |
| @* |
| @* @author |
| @* Ittiam |
| @* |
| @* @par List of Functions: |
| @* - icv_sad_8x4_a9() |
| @* |
| @* @remarks |
| @* None |
| @* |
| @******************************************************************************* |
| |
| |
| @****************************************************************************** |
| @* |
| @* @brief computes distortion (SAD) between 2 8x4 blocks |
| @* |
| @* |
| @* @par Description |
| @* This functions computes SAD between 2 8x4 blocks. |
| @* |
| @* @param[in] pu1_src |
| @* UWORD8 pointer to the source |
| @* |
| @* @param[out] pu1_ref |
| @* UWORD8 pointer to the reference buffer |
| @* |
| @* @param[in] src_strd |
| @* integer source stride |
| @* |
| @* @param[in] ref_strd |
| @* integer reference stride |
| @* |
| @* @param[in] wd |
| @* Width (assumed to be 8) |
| @* |
| @* @param[in] ht |
| @* Height (assumed to be 4) |
| @* |
| @* @returns |
| @* SAD value in r0 |
| @* |
| @* @remarks |
| @* |
| @****************************************************************************** |
| |
| .global icv_sad_8x4_a9 |
| |
| icv_sad_8x4_a9: |
| |
| push {lr} |
| |
| vld1.8 d4, [r0], r2 |
| vld1.8 d5, [r1], r3 |
| |
| vld1.8 d6, [r0], r2 |
| vabdl.u8 q0, d5, d4 |
| |
| vld1.8 d7, [r1], r3 |
| vabal.u8 q0, d7, d6 |
| |
| vld1.8 d4, [r0], r2 |
| vld1.8 d5, [r1], r3 |
| |
| vld1.8 d6, [r0], r2 |
| vabal.u8 q0, d5, d4 |
| |
| vld1.8 d7, [r1], r3 |
| vabal.u8 q0, d7, d6 |
| |
| vadd.i16 d0, d1, d0 |
| vpaddl.u16 d0, d0 |
| vpaddl.u32 d0, d0 |
| |
| vmov.32 r0, d0[0] |
| |
| pop {pc} |