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//* @file 200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* ihevc_deblk_luma_horz.s 210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* 220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @brief 230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* contains function definitions for inter prediction interpolation. 240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* functions are coded using neon intrinsics and can be compiled using 250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* rvct 270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* 280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @author 290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* anand s 300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* 310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @par list of functions: 320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* 330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* 340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* @remarks 350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* none 360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//* 370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar//void ihevc_deblk_chroma_horz(UWORD8 *pu1_src, 380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// WORD32 src_strd, 390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// WORD32 quant_param_p, 400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// WORD32 quant_param_q, 410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// WORD32 qp_offset_u, 420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// WORD32 qp_offset_v, 430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// WORD32 tc_offset_div2, 440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// WORD32 filter_flag_p, 450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// WORD32 filter_flag_q) 460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar// 470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.text 490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.align 4 500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.include "ihevc_neon_macros.s" 510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.extern gai4_ihevc_qp_table 550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.extern gai4_ihevc_tc_table 560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.globl ihevc_deblk_chroma_horz_av8 570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar.type ihevc_deblk_chroma_horz_av8, %function 590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarihevc_deblk_chroma_horz_av8: 610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sxtw x4,w4 620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sxtw x5,w5 630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sxtw x6,w6 640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ldr w9, [sp] 650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sxtw x9,w9 660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar push_v_regs 670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar stp x19, x20,[sp,#-16]! 680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar mov x10, x4 690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar mov x8, x7 700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar mov x7, x5 710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar mov x4, x6 720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sub x12,x0,x1 740d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ld1 {v0.8b},[x0] 750d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sub x5,x12,x1 760d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar add x6,x0,x1 770d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar add x1,x2,x3 780d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar uxtl v0.8h, v0.8b 790d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ld1 {v2.8b},[x12] 800d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar add x2,x1,#1 810d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ld1 {v4.8b},[x5] 820d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ld1 {v16.8b},[x6] 830d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar adds x1,x10,x2,asr #1 840d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar uxtl v2.8h, v2.8b 850d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar adrp x3, :got:gai4_ihevc_qp_table 860d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ldr x3, [x3, #:got_lo12:gai4_ihevc_qp_table] 870d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar bmi l1.3312 880d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cmp x1,#0x39 890d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar bgt lbl78 900d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ldr w1, [x3,x1,lsl #2] 910d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarlbl78: 920d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sub x20,x1,#6 930d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar csel x1, x20, x1,gt 940d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.3312: 950d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar adds x2,x7,x2,asr #1 960d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar uxtl v4.8h, v4.8b 970d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar bmi l1.3332 980d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cmp x2,#0x39 990d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar bgt lbl85 1000d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ldr w2, [x3,x2,lsl #2] 1010d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarlbl85: 1020d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sub x20,x2,#6 1030d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar csel x2, x20, x2,gt 1040d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.3332: 1050d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar add x1,x1,x4,lsl #1 1060d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sub v6.8h, v0.8h , v2.8h 1070d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar add x3,x1,#2 1080d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cmp x3,#0x35 1090d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar mov x20,#0x35 1100d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar csel x1, x20, x1,gt 1110d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar shl v6.8h, v6.8h,#2 1120d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar uxtl v16.8h, v16.8b 1130d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar bgt l1.3368 1140d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar adds x3,x1,#2 1150d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar add x20,x1,#2 1160d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar csel x1, x20, x1,pl 1170d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar mov x20,#0 1180d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar csel x1, x20, x1,mi 1190d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.3368: 1200d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar adrp x3, :got:gai4_ihevc_tc_table 1210d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ldr x3, [x3, #:got_lo12:gai4_ihevc_tc_table] 1220d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar add v4.8h, v6.8h , v4.8h 1230d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar add x2,x2,x4,lsl #1 1240d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sub v6.8h, v4.8h , v16.8h 1250d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar add x4,x2,#2 1260d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ldr w1, [x3,x1,lsl #2] 1270d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cmp x4,#0x35 1280d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar mov x20,#0x35 1290d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar csel x2, x20, x2,gt 1300d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar bgt l1.3412 1310d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar adds x4,x2,#2 1320d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar add x20,x2,#2 1330d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar csel x2, x20, x2,pl 1340d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar mov x20,#0 1350d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar csel x2, x20, x2,mi 1360d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.3412: 1370d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1380d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1390d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ldr w2, [x3,x2,lsl #2] 1400d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cmp x8,#0 1410d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dup v31.8h,w2 1420d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dup v30.8h,w1 1430d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sub x20,x1,#0 1440d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar neg x1, x20 1450d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar srshr v6.8h, v6.8h,#3 1460d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dup v28.8h,w1 1470d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sub x20,x2,#0 1480d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar neg x1, x20 1490d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar zip1 v4.8h, v30.8h, v31.8h 1500d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar dup v29.8h,w1 1510d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1520d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar zip1 v18.8h, v28.8h, v29.8h 1530d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1540d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar smin v16.8h, v6.8h , v4.8h 1550d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar smax v4.8h, v18.8h , v16.8h 1560d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar add v2.8h, v2.8h , v4.8h 1570d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sub v0.8h, v0.8h , v4.8h 1580d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sqxtun v2.8b, v2.8h 1590d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar sqxtun v0.8b, v0.8h 1600d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar beq l1.3528 1610d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar st1 {v2.8b},[x12] 1620d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.3528: 1630d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar cmp x9,#0 1640d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar beq l1.3540 1650d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar st1 {v0.8b},[x0] 1660d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakarl1.3540: 1670d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ldp x19, x20,[sp],#16 1680d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar pop_v_regs 1690d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar ret 1700d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1710d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1720d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 1730d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098Harish Mahendrakar 174