10d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@/*****************************************************************************
20d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
30d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
40d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
50d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* Licensed under the Apache License, Version 2.0 (the "License");
60d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* you may not use this file except in compliance with the License.
70d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* You may obtain a copy of the License at:
80d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
90d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* http://www.apache.org/licenses/LICENSE-2.0
100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* Unless required by applicable law or agreed to in writing, software
120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* distributed under the License is distributed on an "AS IS" BASIS,
130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* See the License for the specific language governing permissions and
150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* limitations under the License.
160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*****************************************************************************/
180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@/**
190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@/*******************************************************************************
200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* @file
210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  ihevc_deblk_luma_vert.s
220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* @brief
240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  contains function definitions for inter prediction  interpolation.
250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* functions are coded using neon  intrinsics and can be compiled using
260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* rvct
280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* @author
300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  anand s
310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* @par list of functions:
330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@* @remarks
360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*  none
370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*
380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@*******************************************************************************/
390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
40a47cb8865a33a87f163d87781f417884d30d46edRakesh Kumar.equ    qp_q_offset,                44
41a47cb8865a33a87f163d87781f417884d30d46edRakesh Kumar.equ    beta_offset_div2_offset,    48
42a47cb8865a33a87f163d87781f417884d30d46edRakesh Kumar.equ    tc_offset_div2_offset,      52
43a47cb8865a33a87f163d87781f417884d30d46edRakesh Kumar.equ    filter_p_offset,            56
44a47cb8865a33a87f163d87781f417884d30d46edRakesh Kumar.equ    filter_q_offset,            60
45a47cb8865a33a87f163d87781f417884d30d46edRakesh Kumar
460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.text
470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.align 4
480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.extern gai4_ihevc_tc_table
540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.extern gai4_ihevc_beta_table
550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.globl ihevc_deblk_luma_vert_a9q
570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakargai4_ihevc_tc_table_addr:
590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.long gai4_ihevc_tc_table   - ulbl1 - 8
600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakargai4_ihevc_beta_table_addr:
620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.long gai4_ihevc_beta_table   - ulbl2 - 8
630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.type ihevc_deblk_luma_vert_a9q, %function
650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarihevc_deblk_luma_vert_a9q:
670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    push        {r3-r12,lr}
69a47cb8865a33a87f163d87781f417884d30d46edRakesh Kumar    ldr         r4,[sp,#qp_q_offset]
70a47cb8865a33a87f163d87781f417884d30d46edRakesh Kumar    ldr         r5,[sp,#beta_offset_div2_offset]
710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r3,r3,r4
730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r3,r3,#1
74a47cb8865a33a87f163d87781f417884d30d46edRakesh Kumar    ldr         r6, [sp,#tc_offset_div2_offset]
750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    asr         r3,r3,#1
760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r7,r3,r5,lsl #1
770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r3,r3,r6,lsl #1
780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r7,#0x33
790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    movgt       r7,#0x33
800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    bgt         l1.56
810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r7,#0x0
820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    movlt       r7,#0x0                     @ r7 has the beta_index value
830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.56:
840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@     bic      r2,r2,#1
860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    asr         r2,r2,#1
870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r3,r3,r2,lsl #1
890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r3,#0x35
900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    movgt       r3,#0x35
910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    bgt         l1.88
920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r3,#0x0
930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    movlt       r3,#0x0                     @ r3 has the tc_index value
940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@    qp_luma = (quant_param_p + quant_param_q + 1) >> 1@
960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@    beta_indx = clip3(qp_luma + (beta_offset_div2 << 1), 0, 51)@
970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@    tc_indx = clip3(qp_luma + (2 * (bs >> 1)) + (tc_offset_div2 << 1), 0, 53)@
980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.88:
1000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         r2,gai4_ihevc_beta_table_addr
1010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarulbl2:
1020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r2,r2,pc
1030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmov.i8     d18,#0x2
1040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         r4,gai4_ihevc_tc_table_addr
1050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarulbl1:
1060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r4,r4,pc
1070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         r5,[r2,r7,lsl #2]           @ beta
1090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmov.i16    q8,#0x2
1100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldr         r6,[r4,r3,lsl #2]           @ tc
1110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    lsl         r8,r6,#1
1120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r6,#0
1130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.8      d19,r8
1140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         r7,r0,#4
1150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmov.i8     d23,#0x3
1160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    beq         l1.964
1170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vld1.8      {d24},[r7],r1
1200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r8,[r0,#-3]                 @ -3 value
1210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vld1.8      {d1},[r7],r1
1220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r10,[r0,#-2]                @-2 value
1230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vld1.8      {d2},[r7],r1
1240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r11,[r0,#-1]                @-1 value
1250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vld1.8      {d0},[r7]
1260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r12,[r0,#0]                 @ 0 value
1270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r9,[r0,#1]                  @ 1 value
1280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vtrn.8      d24,d1
1290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r2,[r0,#2]                  @ 2 value
1300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vtrn.8      d2,d0
1310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r12,r12,r2
1320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        r9,r12,r9,lsl #1            @ dq0 value is stored in r9
1330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rsbmi       r9,r9,#0
1340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@dq0 = abs( pu1_src[2] - 2 * pu1_src[1] + pu1_src[0] )@
1350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vtrn.16     d24,d2
1360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r8,r8,r11
1370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vtrn.16     d1,d0
1380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        r8,r8,r10,lsl #1
1390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rsbmi       r8,r8,#0                    @ dp0 value is stored in r8
1400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@  dp0 = abs( pu1_src[-3] - 2 * pu1_src[-2] + pu1_src[-1] )@
1410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r14,r1,r1,lsl #1
1450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r14,r0,r14
1460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.32     d4,d24[1]
1480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r2,[r14,#-3]                @ -2 value
1490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.32     d7,d2[1]
1500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r10,[r14,#-2]               @ -2 value
1510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.32     d3,d2[0]
1520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r11,[r14,#-1]               @ -1 value
1530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.32     d5,d1[1]
1540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r12,[r14,#0]                @ 0 value
1550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.32     d6,d1[0]
1560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r3,[r14,#1]                 @ 1 value
1570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.32     d2,d0[0]
1580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r4,[r14,#2]                 @ 2 value
1590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r12,r12,r4
1620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        r12,r12,r3,lsl #1           @ dq3value is stored in r12
1630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rsbmi       r12,r12,#0
1640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@    dq3 = abs( pu1_src[3 * src_strd + 2] - 2 * pu1_src[3 * src_strd + 1]+ pu1_src[3 * src_strd + 0] )@
1650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r2,r2,r11
1680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        r11,r2,r10,lsl #1
1690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rsbmi       r11,r11,#0                  @ dp3 value is stored in r8
1700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@    dp3 = abs( pu1_src[3 * src_strd - 3] - 2 * pu1_src[3 * src_strd - 2]   + pu1_src[3 * src_strd - 1] )@
1710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r3,r8,r9                    @ r3 has the d0 value
1750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r4,r11,r12                  @ r4 has the d3 value
1760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@    d0 = dp0 + dq0@
1790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@    d3 = dp3 + dq3@
1800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r14,r8,r11                  @ r13 has the value dp
1820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r12,r12,r9                  @ r12 has the value  dq
1830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@    dp = dp0 + dp3@
1840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@   dq = dq0 + dq3@
1850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r11, r3, r4                 @ r3 has the value d
1870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@   d = d0 + d3@
1890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r11,r5
1920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.32     d22,d0[1]
1930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    bge         l1.964
1940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@    if(d < beta)
1960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
1980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @ registers which cannont be altered : r3,r4 r5,r6,r12,r13,r0,r1,r11
1990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @ registers for use: r2,r7,r8,r9,r10,
2010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqsub.u8    d30,d7,d19
2020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    asr         r10,r5,#2
2030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqadd.u8    d31,d7,d19
2040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r10,r3,lsl #1
2050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vaddl.u8    q0,d5,d4
2060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ble         l1.336
2070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r2,[r0,#-4]
2090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vaddw.u8    q0,q0,d2
2100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r7,[r0,#-1]
2110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmull.u8    q10,d7,d23
2120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r3,[r0,#0]
2130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmlal.u8    q10,d22,d18
2140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r8,[r0,#3]
2150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@   ubfx   r7,r2,#24,#8           @ has the -1 value
2160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@  and    r2,#0xff               @ has the -4 value
2170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@  ubfx   r8,r3,#24,#8           @ has the 3 value
2180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@  and    r3,#0xff               @ r4 has the 0 value
2190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vadd.i16    q10,q10,q0
2210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        r8,r8,r3
2220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vrshrn.i16  d22,q10,#3
2230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rsbmi       r8,r8,#0
2240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        r2,r2,r7
2250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmin.u8     d21,d22,d31
2260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rsbmi       r2,r2,#0
2270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmax.u8     d22,d21,d30
2280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r8,r8,r2
2290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vaddl.u8    q10,d7,d3
2300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r8,r5,asr #3
2310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmla.i16    q10,q0,q8
2320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    bge         l1.336
2330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vaddw.u8    q0,q0,d7
2340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        r7,r3,r7
2350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vrshrn.i16  d20,q10,#3
2360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rsbmi       r7,r7,#0
2370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vrshrn.i16  d0,q0,#2
2380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         r10,#5
2390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqadd.u8    d30,d5,d19
2400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mul         r10,r10,r6
2410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqsub.u8    d31,d5,d19
2420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r10,#1
2430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r7,r10,asr #1
2440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    bge         l1.336
2450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@        if( (2 * d3 < (beta >> 2)&& ( abs(pu1_src[3] - pu1_src[0]) + abs(pu1_src[-1] - pu1_src[-4])  < (beta >> 3) )
2480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@            && abs(pu1_src[0] - pu1_src[-1]) < ( (5 * tc + 1) >> 1 ) )
2490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    asr         r10,r5,#2
2520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqsub.u8    d25,d4,d19
2530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r10,r4,lsl #1
2540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqadd.u8    d21,d4,d19
2550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ble         l1.336
2560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmin.u8     d26,d20,d21
2570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r4,r1,r1,lsl #1
2580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r4,r4,r0
2590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmax.u8     d20,d26,d25
2600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r2,[r4,#-4]
2610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmin.u8     d19,d0,d30
2620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r7,[r4,#-1]
2630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmax.u8     d21,d19,d31
2640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r3,[r4,#0]
2650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    lsl         r10,r6,#1
2660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    ldrb        r8,[r4,#3]
2670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@   ubfx   r7,r2,#24,#8           @ has the -1 value
2680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@  and    r2,#0xff               @ has the -4 value
2690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@  ubfx   r8,r3,#24,#8           @ has the 3 value
2700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@  and    r3,#0xff               @ r4 has the 0 value
2710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vaddl.u8    q0,d2,d3
2720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.8      d19,r10
2730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        r8,r8,r3
2740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vaddw.u8    q0,q0,d4
2750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rsbmi       r8,r8,#0
2760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqadd.u8    d30,d2,d19
2770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        r2,r2,r7
2780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqsub.u8    d31,d2,d19
2790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rsbmi       r2,r2,#0
2800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vaddl.u8    q13,d5,d6
2810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r8,r8,r2
2820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmla.i16    q13,q0,q8
2830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r8,r5,asr #3
2840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    bge         l1.336
2850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vrshrn.i16  d26,q13,#3
2860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    subs        r7,r3,r7
2870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqadd.u8    d27,d3,d19
2880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rsbmi       r7,r7,#0
2890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqsub.u8    d28,d3,d19
2900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         r10,#5
2910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmin.u8     d16,d26,d30
2920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mul         r10,r10,r6
2930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r10,#1
2940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r7,r10,asr #1
2950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmax.u8     d26,d16,d31
2960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    bge         l1.336
2970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqadd.u8    d30,d6,d19
2980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
2990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         r2,#2
300a47cb8865a33a87f163d87781f417884d30d46edRakesh Kumar    ldr         r4,[sp,#filter_p_offset]        @ loading the filter_flag_p
3010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqsub.u8    d31,d6,d19
302a47cb8865a33a87f163d87781f417884d30d46edRakesh Kumar    ldr         r5,[sp,#filter_q_offset]        @ loading the filter_flag_q
3030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    b           end_dep_deq_decision
3040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ r2 has the value of de
3050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ r6 has teh value of tc
3060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ r5 has the value of beta
3070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ r14 has the value of dp
3080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ r12 has the value of dq
3090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ r0 has the value of source address
3100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ r1 has the src stride
3110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.336:
3130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         r2,#1
3140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.424:
3150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         r11,r5
316a47cb8865a33a87f163d87781f417884d30d46edRakesh Kumar    ldr         r4,[sp,#filter_p_offset]        @ loading the filter_flag_p
317a47cb8865a33a87f163d87781f417884d30d46edRakesh Kumar    ldr         r5,[sp,#filter_q_offset]        @ loading the filter_flag_q
3180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r6,#1
3200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    moveq       r9,#0
3210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    moveq       r10,#0
3220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    beq         end_dep_deq_decision
3230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    and         r7,r4,r5
3250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r7,#1
3270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    beq         both_flags_set
3280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r4,#0
3290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    beq         set_flag_dep_zero
3300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r8,r11,r11,asr #1
3330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         r10,#0
3340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    asr         r8,#3
3350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r8,r14
3360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    movgt       r9,#1
3370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    movle       r9,#0
3380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    b           end_dep_deq_decision
3390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarset_flag_dep_zero:
3400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r8,r11,r11,asr #1
3420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    mov         r9,#0
3430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    asr         r8,#3
3440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r8,r12
3450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    movgt       r10,#1
3460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    movle       r10,#0
3470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    b           end_dep_deq_decision
3480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarboth_flags_set:
3500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r8,r11,r11,asr #1
3510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    asr         r8,#3
3520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r8,r14
3530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    movgt       r9,#1
3540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    movle       r9,#0
3550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r8,r12
3560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    movgt       r10,#1
3570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    movle       r10,#0
3580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarend_dep_deq_decision:
3590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@r0=source address
3610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@r1=stride
3620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ r2 =de
3630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ r4=flag p
3640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@r5= flag q
3650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@r6 =tc
3660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ r9 =dep
3670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ r10=deq
3680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@   b   l1.964
3690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r2,#2
3720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ r4 has the value of de
3730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    bne         l1.968
3740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r5,#0
3760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    beq         l1.780
3770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ r5 has the flag of q
3780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r3,r0,#2
3800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d22[0]},[r3],r1
3810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d22[1]},[r3],r1
3830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d22[2]},[r3],r1
3850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d22[3]},[r3]
3870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r3,r0,r1
3880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vtrn.8      d20,d21
3890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d20[0]},[r0]
3910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d21[0]},[r3],r1
3920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d20[1]},[r3],r1
3930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d21[1]},[r3]
3940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
3960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.780:
3970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r4,#0
3980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    beq         l1.964
3990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @ r5 has the flag p
4000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.32     d7,d24[0]
4030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         r3,r0,#1
4040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vaddw.u8    q8,q0,d6
4050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r7,r3,r1
4060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vrshrn.i16  d2,q8,#2
4070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d26[0]},[r3]
4080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         r0,r0,#3
4090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmin.u8     d16,d2,d27
4100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d26[1]},[r7],r1
4110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmull.u8    q1,d6,d23
4120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmlal.u8    q1,d7,d18
4130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d26[2]},[r7],r1
4140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmax.u8     d5,d16,d28
4150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d26[3]},[r7]
4160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vadd.i16    q0,q1,q0
4170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vrshrn.i16  d0,q0,#3
4180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmin.u8     d1,d0,d30
4210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmax.u8     d0,d1,d31
4220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vtrn.8      d0,d5
4240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d0[0]},[r0],r1
4250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d5[0]},[r0],r1
4260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d0[1]},[r0],r1
4270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d5[1]},[r0]
4280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.964:
4290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    pop         {r3-r12,pc}
4300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.968:
4310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmov.i16    q0,#0x9
4340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rsb         r11,r6,#0
4350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r4,#0
4360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @ checks for the flag p
4370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmov.i16    q8,#0x3
4380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmov.i8     d24,#0x1
4390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.8      d30,r11
4420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    and         r11,r6,#0xff
4430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.8      d31,r11
4440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vsubl.u8    q9,d4,d2
4460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmul.i16    q9,q9,q0
4470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vsubl.u8    q0,d5,d3
4480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmul.i16    q8,q0,q8
4520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vsub.i16    q8,q9,q8
4530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vrshr.s16   q8,q8,#4
4540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@   delta = ( 9 * (pu1_src[0] - pu1_src[-1]) - 3 * (pu1_src[1] - pu1_src[-2]) + 8 ) >> 4@
4550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vabs.s16    q0,q8
4570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmovn.i16   d0,q0
4580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @ storing the absolute values of delta in d0
4590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqmovn.s16  d16,q8
4610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @ storing the clipped values of delta in d16
4620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmov.i8     d1,#0xa
4640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.8      d21,r11
4650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmul.i8     d1,d1,d21
4660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @ d1 stores the value (10 * tc)
4670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@if(abs(delta) < 10 * tc)
4690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmin.s8     d18,d16,d31
4710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmax.s8     d20,d18,d30
4720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ delta = clip3(delta, -tc, tc)@
4740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmovl.s8    q8,d20
4750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmovl.u8    q9,d2
4760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vadd.i16    q9,q9,q8
4770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqmovun.s16 d22,q9
4790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmovl.u8    q9,d4
4800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vsub.i16    q8,q9,q8
4810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqmovun.s16 d23,q8
4820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ tmp_p0 = clip_u8(pu1_src[-1] + delta)@
4830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@  tmp_q0 = clip_u8(pu1_src[0] - delta)@
4840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    beq         l1.1272
4850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r9,#1
4890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    bne         l1.1212
4900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@ checks for the flag dep
4910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    asr         r3,r6,#1
4930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
4950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vaddl.u8    q8,d6,d2
4960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vaddw.u8    q8,q8,d24
4970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.8      d18,r3
4980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rsb         r3,r3,#0
4990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.8      d19,r3
5000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vshr.u16    q8,q8,#1
5010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmovn.i16   d16,q8
5020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vsubl.u8    q8,d16,d3
5040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vaddw.s8    q8,q8,d20
5050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vshr.s16    q8,q8,#1
5060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqmovn.s16  d16,q8
5070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmin.s8     d17,d16,d18
5090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmax.s8     d16,d19,d17
5100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmovl.u8    q9,d3
5150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmovl.s8    q8,d16
5160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vadd.i16    q8,q9,q8
5170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqmovun.s16 d16,q8
5190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmov        d30,d3
5200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vcge.u8     d3,d0,d1
5210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vbsl        d3,d30,d16
5240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.1212:
5250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.8      d16,r11
5260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         r12,r0,#3
5270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    sub         r3,r0,#1
5280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar@     vmul.i8  d16,d16,d1
5290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vtrn.8      d6,d3
5300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d6[0]},[r12],r1
5310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vcge.u8     d16,d0,d1
5320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d3[0]},[r12],r1
5330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vbsl        d16,d2,d22
5340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d16[0]},[r3],r1
5350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d16[1]},[r3],r1
5360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d6[1]},[r12],r1
5370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d16[2]},[r3],r1
5380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d3[1]},[r12]
5390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d16[3]},[r3]
5400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.1272:
5410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r5,#0
5420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    beq         l1.964
5430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @ checks for the flag q
5440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    cmp         r10,#1
5450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    bne         l1.1412
5460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @ checks for the flag deq
5470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmov        d2,d7
5480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    asr         r3,r6,#1
5490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.8      d6,r3
5510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    rsb         r3,r3,#0
5520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vdup.8      d16,r3
5530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vaddl.u8    q1,d2,d4
5540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vaddw.u8    q1,q1,d24
5550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vshr.u16    q1,q1,#1
5560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmovn.i16   d2,q1
5570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vsubl.u8    q1,d2,d5
5590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vsubw.s8    q1,q1,d20
5600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vshr.s16    q1,q1,#1
5610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqmovn.s16  d3,q1
5620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmin.s8     d2,d3,d6
5640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmax.s8     d3,d16,d2
5650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @  vdup.8   d6,r2
5660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @   vmul.i8  d6,d6,d1
5670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmovl.u8    q8,d5
5710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmovl.s8    q1,d3
5720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vadd.i16    q1,q8,q1
5730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vqmovun.s16 d3,q1
5740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vmov        d30,d5
5750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vcge.u8     d5,d0,d1
5760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vbsl        d5,d30,d3
5790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.1412:
5800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @  vdup.8   d2,r2
5810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r3,r0,#2
5820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    add         r11,r3,r1
5830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    @   vmul.i8  d1,d2,d1
5840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d7[0]},[r3]
5850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d7[1]},[r11],r1
5860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d7[2]},[r11],r1
5870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vcge.u8     d0,d0,d1
5880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.8      {d7[3]},[r11]
5890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vbsl        d0,d4,d23
5900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vtrn.8      d0,d5
5910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d0[0]},[r0],r1
5920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d5[0]},[r0],r1
5930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d0[1]},[r0],r1
5940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    vst1.16     {d5[1]},[r0]
5950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar    pop         {r3-r12,pc}
5960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
5980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar
599