@ -35,10 +35,10 @@ function ff_hevc_sao_band_filter_neon_8, export=1
vmov. u 1 6 q15 , #1
vmov. u 8 q14 , #32
0 : pld [ r1 ]
vld1 . 8 { d16 } , [ r1 ] , r3
cmp r5 , #4
beq 4 f
8 : subs r4 , #1
vld1 . 8 { d16 } , [ r1 ] , r3
vshr. u 8 d17 , d16 , #3 / / i n d e x = [ s r c > > 3 ]
vshll. u 8 q9 , d17 , #1 / / l o w I n d e x = 2 * i n d e x
vadd. u 1 6 q11 , q9 , q15 / / h i g h I n d e x = ( 2 * i n d e x + 1 ) < < 8
@ -54,7 +54,6 @@ function ff_hevc_sao_band_filter_neon_8, export=1
vaddw. u 8 q13 , q12 , d16
vqmovun. s16 d8 , q13
vst1 . 8 d8 , [ r0 ] , r2
vld1 . 8 { d16 } , [ r1 ] , r3
bne 8 b
subs r5 , #8
beq 9 9 f
@ -65,6 +64,7 @@ function ff_hevc_sao_band_filter_neon_8, export=1
mov r1 , r7
b 0 b
4 : subs r4 , #1
vld1 . 3 2 { d16 [ 0 ] } , [ r1 ] , r3
vshr. u 8 d17 , d16 , #3 / / s r c > > 3
vshll. u 8 q9 , d17 , #1 / / l o w I n d e x = 2 * i n d e x
vadd. u 1 6 q11 , q9 , q15 / / h i g h I n d e x = ( 2 * i n d e x + 1 ) < < 8
@ -80,7 +80,6 @@ function ff_hevc_sao_band_filter_neon_8, export=1
vaddw. u 8 q13 , q12 , d16
vqmovun. s16 d14 , q13
vst1 . 3 2 d14 [ 0 ] , [ r0 ] , r2
vld1 . 3 2 { d16 [ 0 ] } , [ r1 ] , r3
bne 4 b
b 9 9 f
99 :
@ -110,12 +109,12 @@ function ff_hevc_sao_edge_filter_neon_8, export=1
mov r11 , r1
add r11 , r9 / / s r c [ x + b _ s t r i d e ]
pld [ r1 ]
vld1 . 8 { d16 } , [ r1 ] , r3 / / s r c [ x ] 8 x8 b i t
vld1 . 8 { d17 } , [ r10 ] , r3 / / s r c [ x + a _ s t r i d e ]
vld1 . 8 { d18 } , [ r11 ] , r3 / / s r c [ x + b _ s t r i d e ]
cmp r5 , #4
beq 4 f
8 : subs r4 , #1
vld1 . 8 { d16 } , [ r1 ] , r3 / / s r c [ x ] 8 x8 b i t
vld1 . 8 { d17 } , [ r10 ] , r3 / / s r c [ x + a _ s t r i d e ]
vld1 . 8 { d18 } , [ r11 ] , r3 / / s r c [ x + b _ s t r i d e ]
vcgt. u 8 d8 , d16 , d17
vshr. u 8 d9 , d8 , #7
vclt. u 8 d8 , d16 , d17
@ -136,9 +135,6 @@ function ff_hevc_sao_edge_filter_neon_8, export=1
vaddw. u 8 q12 , q11 , d16
vqmovun. s16 d26 , q12
vst1 . 8 d26 , [ r0 ] , r2
vld1 . 8 { d16 } , [ r1 ] , r3 / / s r c [ x ] 8 x8 b i t
vld1 . 8 { d17 } , [ r10 ] , r3 / / s r c [ x + a _ s t r i d e ]
vld1 . 8 { d18 } , [ r11 ] , r3 / / s r c [ x + b _ s t r i d e ]
bne 8 b
subs r5 , #8
beq 9 9 f
@ -149,6 +145,9 @@ function ff_hevc_sao_edge_filter_neon_8, export=1
mov r1 , r7
b 0 b
4 : subs r4 , #1
vld1 . 3 2 { d16 [ 0 ] } , [ r1 ] , r3
vld1 . 3 2 { d17 [ 0 ] } , [ r10 ] , r3 / / s r c [ x + a _ s t r i d e ]
vld1 . 3 2 { d18 [ 0 ] } , [ r11 ] , r3 / / s r c [ x + b _ s t r i d e ]
vcgt. u 8 d8 , d16 , d17
vshr. u 8 d9 , d8 , #7
vclt. u 8 d8 , d16 , d17
@ -169,9 +168,6 @@ function ff_hevc_sao_edge_filter_neon_8, export=1
vaddw. u 8 q12 , q11 , d16
vqmovun. s16 d26 , q12
vst1 . 3 2 d26 [ 0 ] , [ r0 ] , r2
vld1 . 3 2 { d16 [ 0 ] } , [ r1 ] , r3
vld1 . 3 2 { d17 [ 0 ] } , [ r10 ] , r3 / / s r c [ x + a _ s t r i d e ]
vld1 . 3 2 { d18 [ 0 ] } , [ r11 ] , r3 / / s r c [ x + b _ s t r i d e ]
bne 4 b
b 9 9 f
99 :