@/*****************************************************************************
@*
@* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
@*
@* 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.
@*
@*****************************************************************************/
@/**
@/*******************************************************************************
@* @file
@*  ihevc_deblk_luma_vert.s
@*
@* @brief
@*  contains function definitions for inter prediction  interpolation.
@* functions are coded using neon  intrinsics and can be compiled using

@* rvct
@*
@* @author
@*  anand s
@*
@* @par list of functions:
@*
@*
@* @remarks
@*  none
@*
@*******************************************************************************/

.text
.align 4





.extern gai4_ihevc_qp_table
.extern gai4_ihevc_tc_table
.globl ihevc_deblk_chroma_vert_a9q

gai4_ihevc_qp_table_addr:
.long gai4_ihevc_qp_table - ulbl1 - 8

gai4_ihevc_tc_table_addr:
.long gai4_ihevc_tc_table  - ulbl2 - 8

.type ihevc_deblk_chroma_vert_a9q, %function

ihevc_deblk_chroma_vert_a9q:
    push        {r4-r12,lr}
    sub         r8,r0,#4
    add         r2,r2,r3
    vld1.8      {d5},[r8],r1
    add         r2,r2,#1
    vld1.8      {d17},[r8],r1
    ldr         r7,[sp,#0x28]
    vld1.8      {d16},[r8],r1
    ldr         r4,[sp,#0x38]
    vld1.8      {d4},[r8]
    ldr         r5,[sp,#0x30]
    vtrn.8      d5,d17
    adds        r3,r7,r2,asr #1
    vtrn.8      d16,d4
    ldr         r7,gai4_ihevc_qp_table_addr
ulbl1:
    add         r7,r7,pc
    ldr         r12,[sp,#0x34]
    ldr         r6,[sp,#0x2c]
    bmi         l1.2944
    cmp         r3,#0x39
    ldrle       r3,[r7,r3,lsl #2]
    subgt       r3,r3,#6
l1.2944:
    vtrn.16     d5,d16
    adds        r2,r6,r2,asr #1
    vtrn.16     d17,d4
    bmi         l1.2964
    cmp         r2,#0x39
    ldrle       r2,[r7,r2,lsl #2]
    subgt       r2,r2,#6
l1.2964:
    vtrn.32     d5,d17
    add         r3,r3,r5,lsl #1
    vtrn.32     d16,d4
    add         r6,r3,#2
    vmovl.u8    q9,d17
    cmp         r6,#0x35
    movgt       r3,#0x35
    bgt         l1.2996
    adds        r6,r3,#2
    addpl       r3,r3,#2
    movmi       r3,#0
l1.2996:
    vsubl.u8    q0,d17,d16
    ldr         r6,gai4_ihevc_tc_table_addr
ulbl2:
    add         r6,r6,pc
    vshl.i16    q0,q0,#2
    add         r2,r2,r5,lsl #1
    add         r5,r2,#2
    vaddw.u8    q0,q0,d5
    cmp         r5,#0x35
    ldr         r3,[r6,r3,lsl #2]
    vsubw.u8    q2,q0,d4
    movgt       r2,#0x35
    bgt         l1.3036
    adds        r5,r2,#2
    addpl       r2,r2,#2
    movmi       r2,#0
l1.3036:


    vrshr.s16   q3,q2,#3
    vdup.16     d2,r3
    ldr         r2,[r6,r2,lsl #2]
    rsb         r3,r3,#0
    cmp         r12,#0
    vdup.16     d3,r2
    rsb         r2,r2,#0
    vdup.16     d30,r3
    vdup.16     d31,r2


    vmin.s16    q2,q3,q1
    vmax.s16    q1,q15,q2

    vmovl.u8    q3,d16

    vadd.i16    q0,q3,q1
    vsub.i16    q1,q9,q1
    vqmovun.s16 d0,q0
    sub         r2,r0,#2
    vqmovun.s16 d1,q1
    vtrn.32     d0,d1
    vtrn.8      d0,d1
    beq         l1.3204

    vst1.16     {d0[0]},[r2],r1
    vst1.16     {d1[0]},[r2],r1
    vst1.16     {d0[1]},[r2],r1
    vst1.16     {d1[1]},[r2]
l1.3204:
    cmp         r4,#0
    beq         l1.3228
    vst1.16     {d0[2]},[r0],r1
    vst1.16     {d1[2]},[r0],r1
    vst1.16     {d0[3]},[r0],r1
    vst1.16     {d1[3]},[r0]
l1.3228:
    pop         {r4-r12,pc}



