"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "libavcodec/arm/h264idct_neon.S" between
libav-12.1.tar.gz and libav-12.2.tar.gz

About: libav provides cross-platform tools ("avconv") and libraries to convert, manipulate and stream a wide range of multimedia (audio and video) formats and protocols.

h264idct_neon.S  (libav-12.1):h264idct_neon.S  (libav-12.2)
skipping to change at line 24 skipping to change at line 24
* Lesser General Public License for more details. * Lesser General Public License for more details.
* *
* You should have received a copy of the GNU Lesser General Public * You should have received a copy of the GNU Lesser General Public
* License along with Libav; if not, write to the Free Software * License along with Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
#include "libavutil/arm/asm.S" #include "libavutil/arm/asm.S"
function ff_h264_idct_add_neon, export=1 function ff_h264_idct_add_neon, export=1
h264_idct_add_neon_nothumb:
vld1.64 {d0-d3}, [r1,:128] vld1.64 {d0-d3}, [r1,:128]
vmov.i16 q15, #0 vmov.i16 q15, #0
vswp d1, d2 vswp d1, d2
vst1.16 {q15}, [r1,:128]! vst1.16 {q15}, [r1,:128]!
vadd.i16 d4, d0, d1 vadd.i16 d4, d0, d1
vst1.16 {q15}, [r1,:128]! vst1.16 {q15}, [r1,:128]!
vshr.s16 q8, q1, #1 vshr.s16 q8, q1, #1
vsub.i16 d5, d0, d1 vsub.i16 d5, d0, d1
vadd.i16 d6, d2, d17 vadd.i16 d6, d2, d17
skipping to change at line 76 skipping to change at line 77
vst1.32 {d0[0]}, [r0,:32], r2 vst1.32 {d0[0]}, [r0,:32], r2
vst1.32 {d1[1]}, [r0,:32], r2 vst1.32 {d1[1]}, [r0,:32], r2
vst1.32 {d0[1]}, [r0,:32], r2 vst1.32 {d0[1]}, [r0,:32], r2
vst1.32 {d1[0]}, [r0,:32], r2 vst1.32 {d1[0]}, [r0,:32], r2
sub r1, r1, #32 sub r1, r1, #32
bx lr bx lr
endfunc endfunc
function ff_h264_idct_dc_add_neon, export=1 function ff_h264_idct_dc_add_neon, export=1
h264_idct_dc_add_neon_nothumb:
mov r3, #0 mov r3, #0
vld1.16 {d2[],d3[]}, [r1,:16] vld1.16 {d2[],d3[]}, [r1,:16]
strh r3, [r1] strh r3, [r1]
vrshr.s16 q1, q1, #6 vrshr.s16 q1, q1, #6
vld1.32 {d0[0]}, [r0,:32], r2 vld1.32 {d0[0]}, [r0,:32], r2
vld1.32 {d0[1]}, [r0,:32], r2 vld1.32 {d0[1]}, [r0,:32], r2
vaddw.u8 q2, q1, d0 vaddw.u8 q2, q1, d0
vld1.32 {d1[0]}, [r0,:32], r2 vld1.32 {d1[0]}, [r0,:32], r2
vld1.32 {d1[1]}, [r0,:32], r2 vld1.32 {d1[1]}, [r0,:32], r2
vaddw.u8 q1, q1, d1 vaddw.u8 q1, q1, d1
skipping to change at line 116 skipping to change at line 118
ldr r0, [r5], #4 ldr r0, [r5], #4
ldrb r8, [r6, r8] ldrb r8, [r6, r8]
subs r8, r8, #1 subs r8, r8, #1
blt 2f blt 2f
ldrsh lr, [r1] ldrsh lr, [r1]
add r0, r0, r4 add r0, r0, r4
it ne it ne
movne lr, #0 movne lr, #0
cmp lr, #0 cmp lr, #0
ite ne ite ne
adrne lr, X(ff_h264_idct_dc_add_neon) + CONFIG_THUMB adrne lr, h264_idct_dc_add_neon_nothumb + CONFIG_THUMB
adreq lr, X(ff_h264_idct_add_neon) + CONFIG_THUMB adreq lr, h264_idct_add_neon_nothumb + CONFIG_THUMB
blx lr blx lr
2: subs ip, ip, #1 2: subs ip, ip, #1
add r1, r1, #32 add r1, r1, #32
bne 1b bne 1b
pop {r4-r8,pc} pop {r4-r8,pc}
endfunc endfunc
function ff_h264_idct_add16intra_neon, export=1 function ff_h264_idct_add16intra_neon, export=1
push {r4-r8,lr} push {r4-r8,lr}
mov r4, r0 mov r4, r0
skipping to change at line 141 skipping to change at line 143
ldr r6, [sp, #24] ldr r6, [sp, #24]
movrel r7, scan8 movrel r7, scan8
mov ip, #16 mov ip, #16
1: ldrb r8, [r7], #1 1: ldrb r8, [r7], #1
ldr r0, [r5], #4 ldr r0, [r5], #4
ldrb r8, [r6, r8] ldrb r8, [r6, r8]
add r0, r0, r4 add r0, r0, r4
cmp r8, #0 cmp r8, #0
ldrsh r8, [r1] ldrsh r8, [r1]
iteet ne iteet ne
adrne lr, X(ff_h264_idct_add_neon) + CONFIG_THUMB adrne lr, h264_idct_add_neon_nothumb + CONFIG_THUMB
adreq lr, X(ff_h264_idct_dc_add_neon) + CONFIG_THUMB adreq lr, h264_idct_dc_add_neon_nothumb + CONFIG_THUMB
cmpeq r8, #0 cmpeq r8, #0
blxne lr blxne lr
subs ip, ip, #1 subs ip, ip, #1
add r1, r1, #32 add r1, r1, #32
bne 1b bne 1b
pop {r4-r8,pc} pop {r4-r8,pc}
endfunc endfunc
function ff_h264_idct_add8_neon, export=1 function ff_h264_idct_add8_neon, export=1
push {r4-r10,lr} push {r4-r10,lr}
skipping to change at line 169 skipping to change at line 171
movrel r7, scan8+16 movrel r7, scan8+16
mov r12, #0 mov r12, #0
1: ldrb r8, [r7, r12] 1: ldrb r8, [r7, r12]
ldr r0, [r5, r12, lsl #2] ldr r0, [r5, r12, lsl #2]
ldrb r8, [r6, r8] ldrb r8, [r6, r8]
add r0, r0, r4 add r0, r0, r4
add r1, r10, r12, lsl #5 add r1, r10, r12, lsl #5
cmp r8, #0 cmp r8, #0
ldrsh r8, [r1] ldrsh r8, [r1]
iteet ne iteet ne
adrne lr, X(ff_h264_idct_add_neon) + CONFIG_THUMB adrne lr, h264_idct_add_neon_nothumb + CONFIG_THUMB
adreq lr, X(ff_h264_idct_dc_add_neon) + CONFIG_THUMB adreq lr, h264_idct_dc_add_neon_nothumb + CONFIG_THUMB
cmpeq r8, #0 cmpeq r8, #0
blxne lr blxne lr
add r12, r12, #1 add r12, r12, #1
cmp r12, #4 cmp r12, #4
itt eq itt eq
moveq r12, #16 moveq r12, #16
moveq r4, r9 moveq r4, r9
cmp r12, #20 cmp r12, #20
blt 1b blt 1b
pop {r4-r10,pc} pop {r4-r10,pc}
skipping to change at line 270 skipping to change at line 272
vadd.i16 q10, q12, q1 vadd.i16 q10, q12, q1
vsub.i16 q13, q12, q1 vsub.i16 q13, q12, q1
vadd.i16 q11, q2, q0 vadd.i16 q11, q2, q0
vsub.i16 q12, q2, q0 vsub.i16 q12, q2, q0
.endif .endif
.unreq qa .unreq qa
.unreq qb .unreq qb
.endm .endm
function ff_h264_idct8_add_neon, export=1 function ff_h264_idct8_add_neon, export=1
h264_idct8_add_neon_nothumb:
vmov.i16 q3, #0 vmov.i16 q3, #0
vld1.16 {q8-q9}, [r1,:128] vld1.16 {q8-q9}, [r1,:128]
vst1.16 {q3}, [r1,:128]! vst1.16 {q3}, [r1,:128]!
vst1.16 {q3}, [r1,:128]! vst1.16 {q3}, [r1,:128]!
vld1.16 {q10-q11},[r1,:128] vld1.16 {q10-q11},[r1,:128]
vst1.16 {q3}, [r1,:128]! vst1.16 {q3}, [r1,:128]!
vst1.16 {q3}, [r1,:128]! vst1.16 {q3}, [r1,:128]!
vld1.16 {q12-q13},[r1,:128] vld1.16 {q12-q13},[r1,:128]
vst1.16 {q3}, [r1,:128]! vst1.16 {q3}, [r1,:128]!
vst1.16 {q3}, [r1,:128]! vst1.16 {q3}, [r1,:128]!
skipping to change at line 331 skipping to change at line 334
vst1.8 {d4}, [r3,:64], r2 vst1.8 {d4}, [r3,:64], r2
vst1.8 {d5}, [r3,:64], r2 vst1.8 {d5}, [r3,:64], r2
vst1.8 {d6}, [r3,:64], r2 vst1.8 {d6}, [r3,:64], r2
vst1.8 {d7}, [r3,:64], r2 vst1.8 {d7}, [r3,:64], r2
sub r1, r1, #128 sub r1, r1, #128
bx lr bx lr
endfunc endfunc
function ff_h264_idct8_dc_add_neon, export=1 function ff_h264_idct8_dc_add_neon, export=1
h264_idct8_dc_add_neon_nothumb:
mov r3, #0 mov r3, #0
vld1.16 {d30[],d31[]},[r1,:16] vld1.16 {d30[],d31[]},[r1,:16]
strh r3, [r1] strh r3, [r1]
vld1.32 {d0}, [r0,:64], r2 vld1.32 {d0}, [r0,:64], r2
vrshr.s16 q15, q15, #6 vrshr.s16 q15, q15, #6
vld1.32 {d1}, [r0,:64], r2 vld1.32 {d1}, [r0,:64], r2
vld1.32 {d2}, [r0,:64], r2 vld1.32 {d2}, [r0,:64], r2
vaddw.u8 q8, q15, d0 vaddw.u8 q8, q15, d0
vld1.32 {d3}, [r0,:64], r2 vld1.32 {d3}, [r0,:64], r2
vaddw.u8 q9, q15, d1 vaddw.u8 q9, q15, d1
skipping to change at line 391 skipping to change at line 395
ldr r0, [r5], #16 ldr r0, [r5], #16
ldrb r8, [r6, r8] ldrb r8, [r6, r8]
subs r8, r8, #1 subs r8, r8, #1
blt 2f blt 2f
ldrsh lr, [r1] ldrsh lr, [r1]
add r0, r0, r4 add r0, r0, r4
it ne it ne
movne lr, #0 movne lr, #0
cmp lr, #0 cmp lr, #0
ite ne ite ne
adrne lr, X(ff_h264_idct8_dc_add_neon) + CONFIG_THUMB adrne lr, h264_idct8_dc_add_neon_nothumb + CONFIG_THUMB
adreq lr, X(ff_h264_idct8_add_neon) + CONFIG_THUMB adreq lr, h264_idct8_add_neon_nothumb + CONFIG_THUMB
blx lr blx lr
2: subs r12, r12, #4 2: subs r12, r12, #4
add r1, r1, #128 add r1, r1, #128
bne 1b bne 1b
pop {r4-r8,pc} pop {r4-r8,pc}
endfunc endfunc
const scan8 const scan8
.byte 4+ 1*8, 5+ 1*8, 4+ 2*8, 5+ 2*8 .byte 4+ 1*8, 5+ 1*8, 4+ 2*8, 5+ 2*8
.byte 6+ 1*8, 7+ 1*8, 6+ 2*8, 7+ 2*8 .byte 6+ 1*8, 7+ 1*8, 6+ 2*8, 7+ 2*8
 End of changes. 8 change blocks. 
8 lines changed or deleted 12 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)