ihevc_deblk_chroma_horz.s revision 0d8951cef4b1a1dbf4ff5ba3e8796cf1d4503098
1@/*****************************************************************************
2@*
3@* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
4@*
5@* Licensed under the Apache License, Version 2.0 (the "License");
6@* you may not use this file except in compliance with the License.
7@* You may obtain a copy of the License at:
8@*
9@* http://www.apache.org/licenses/LICENSE-2.0
10@*
11@* Unless required by applicable law or agreed to in writing, software
12@* distributed under the License is distributed on an "AS IS" BASIS,
13@* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14@* See the License for the specific language governing permissions and
15@* limitations under the License.
16@*
17@*****************************************************************************/
18@/*******************************************************************************
19@* @file
20@*  ihevc_deblk_luma_horz.s
21@*
22@* @brief
23@*  contains function definitions for inter prediction  interpolation.
24@* functions are coded using neon  intrinsics and can be compiled using
25
26@* rvct
27@*
28@* @author
29@*  anand s
30@*
31@* @par list of functions:
32@*
33@*
34@* @remarks
35@*  none
36@*
37@*******************************************************************************/
38
39.text
40.align 4
41
42
43
44
45.extern gai4_ihevc_qp_table
46.extern gai4_ihevc_tc_table
47.globl ihevc_deblk_chroma_horz_a9q
48
49gai4_ihevc_qp_table_addr:
50.long gai4_ihevc_qp_table - ulbl1 - 8
51
52gai4_ihevc_tc_table_addr:
53.long gai4_ihevc_tc_table - ulbl2 - 8
54
55.type ihevc_deblk_chroma_horz_a9q, %function
56
57ihevc_deblk_chroma_horz_a9q:
58    push        {r4-r12,lr}
59    sub         r12,r0,r1
60    vld1.8      {d0},[r0]
61    sub         r5,r12,r1
62    add         r6,r0,r1
63    add         r1,r2,r3
64    vmovl.u8    q0,d0
65    ldr         r10,[sp,#0x28]
66    vld1.8      {d2},[r12]
67    add         r2,r1,#1
68    ldr         r4,[sp,#0x30]
69    vld1.8      {d4},[r5]
70    ldr         r8,[sp,#0x34]
71    vld1.8      {d16},[r6]
72    ldr         r9,[sp,#0x38]
73    adds        r1,r10,r2,asr #1
74    vmovl.u8    q1,d2
75    ldr         r7,[sp,#0x2c]
76    ldr         r3,gai4_ihevc_qp_table_addr
77ulbl1:
78    add         r3, r3, pc
79    bmi         l1.3312
80    cmp         r1,#0x39
81    ldrle       r1,[r3,r1,lsl #2]
82    subgt       r1,r1,#6
83l1.3312:
84    adds        r2,r7,r2,asr #1
85    vmovl.u8    q2,d4
86    bmi         l1.3332
87    cmp         r2,#0x39
88    ldrle       r2,[r3,r2,lsl #2]
89    subgt       r2,r2,#6
90l1.3332:
91    add         r1,r1,r4,lsl #1
92    vsub.i16    q3,q0,q1
93    add         r3,r1,#2
94    cmp         r3,#0x35
95    movgt       r1,#0x35
96    vshl.i16    q3,q3,#2
97    vmovl.u8    q8,d16
98    bgt         l1.3368
99    adds        r3,r1,#2
100    addpl       r1,r1,#2
101    movmi       r1,#0
102l1.3368:
103    ldr         r3,gai4_ihevc_tc_table_addr
104ulbl2:
105    add         r3, r3, pc
106    vadd.i16    q2,q3,q2
107    add         r2,r2,r4,lsl #1
108    vsub.i16    q3,q2,q8
109    add         r4,r2,#2
110    ldr         r1,[r3,r1,lsl #2]
111    cmp         r4,#0x35
112    movgt       r2,#0x35
113    bgt         l1.3412
114    adds        r4,r2,#2
115    addpl       r2,r2,#2
116    movmi       r2,#0
117l1.3412:
118
119
120    ldr         r2,[r3,r2,lsl #2]
121    cmp         r8,#0
122    vdup.16     q8,r2
123    vdup.16     q2,r1
124    rsb         r1,r1,#0
125    vrshr.s16   q3,q3,#3
126    vdup.16     q9,r1
127    rsb         r1,r2,#0
128    vzip.16     q2,q8
129    vdup.16     q10,r1
130
131    vzip.16     q9,q10
132
133    vmin.s16    q8,q3,q2
134    vmax.s16    q2,q9,q8
135    vadd.i16    q1,q1,q2
136    vsub.i16    q0,q0,q2
137    vqmovun.s16 d2,q1
138    vqmovun.s16 d0,q0
139    beq         l1.3528
140    vst1.8      {d2},[r12]
141l1.3528:
142    cmp         r9,#0
143    beq         l1.3540
144    vst1.8      {d0},[r0]
145l1.3540:
146    pop         {r4-r12,pc}
147
148
149