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