shithub: openh264

Download patch

ref: 83abff213906b123865e16685496400d430708a7
parent: f148a8a7aecef79d47db725aafad5b3b2250ac2d
parent: 23f57adaea0503d2edb2ac2caaef7428bf9fc0ca
author: volvet <qizh@cisco.com>
date: Mon Apr 28 14:33:32 EDT 2014

Merge pull request #759 from mstorsjo/deblock-neon-transpose

Do full register loads instead of single-lane loads in DeblockLumaEq4H_neon

--- a/codec/common/arm/deblocking_neon.S
+++ b/codec/common/arm/deblocking_neon.S
@@ -140,11 +140,6 @@
     vst4.u8	{$0[$5],$1[$5],$2[$5],$3[$5]}, [r2], r1
 .endm
 
-.macro	LOAD_LUMA_DATA_4
-    vld4.u8	{$0[$8],$1[$8],$2[$8],$3[$8]}, [r3], r1
-    vld4.u8	{$4[$8],$5[$8],$6[$8],$7[$8]}, [r0], r1
-.endm
-
 .macro	STORE_LUMA_DATA_3
     vst3.u8	{$0[$6],$1[$6],$2[$6]}, [r3], r1
     vst3.u8	{$3[$6],$4[$6],$5[$6]}, [r0], r1
@@ -259,11 +254,6 @@
     vst4.u8	{\arg0[\arg5],\arg1[\arg5],\arg2[\arg5],\arg3[\arg5]}, [r2], r1
 .endm
 
-.macro	LOAD_LUMA_DATA_4 arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8
-    vld4.u8	{\arg0[\arg8],\arg1[\arg8],\arg2[\arg8],\arg3[\arg8]}, [r3], r1
-    vld4.u8	{\arg4[\arg8],\arg5[\arg8],\arg6[\arg8],\arg7[\arg8]}, [r0], r1
-.endm
-
 .macro	STORE_LUMA_DATA_3 arg0, arg1, arg2, arg3, arg4, arg5, arg6
     vst3.u8	{\arg0[\arg6],\arg1[\arg6],\arg2[\arg6]}, [r3], r1
     vst3.u8	{\arg3[\arg6],\arg4[\arg6],\arg5[\arg6]}, [r0], r1
@@ -503,31 +493,61 @@
     vdup.u8	q4, r3
 
     sub			r3, r0, #4				//	pix -= 4
-    LOAD_LUMA_DATA_4		d16,d17,d18,d19,d24,d25,d26,d27,0
-    LOAD_LUMA_DATA_4		d16,d17,d18,d19,d24,d25,d26,d27,1
-    LOAD_LUMA_DATA_4		d16,d17,d18,d19,d24,d25,d26,d27,2
-    LOAD_LUMA_DATA_4		d16,d17,d18,d19,d24,d25,d26,d27,3
-    LOAD_LUMA_DATA_4		d16,d17,d18,d19,d24,d25,d26,d27,4
-    LOAD_LUMA_DATA_4		d16,d17,d18,d19,d24,d25,d26,d27,5
-    LOAD_LUMA_DATA_4		d16,d17,d18,d19,d24,d25,d26,d27,6
-    LOAD_LUMA_DATA_4		d16,d17,d18,d19,d24,d25,d26,d27,7
 
-    LOAD_LUMA_DATA_4		d20,d21,d22,d23,d28,d29,d30,d31,0
-    LOAD_LUMA_DATA_4		d20,d21,d22,d23,d28,d29,d30,d31,1
-    LOAD_LUMA_DATA_4		d20,d21,d22,d23,d28,d29,d30,d31,2
-    LOAD_LUMA_DATA_4		d20,d21,d22,d23,d28,d29,d30,d31,3
-    LOAD_LUMA_DATA_4		d20,d21,d22,d23,d28,d29,d30,d31,4
-    LOAD_LUMA_DATA_4		d20,d21,d22,d23,d28,d29,d30,d31,5
-    LOAD_LUMA_DATA_4		d20,d21,d22,d23,d28,d29,d30,d31,6
-    LOAD_LUMA_DATA_4		d20,d21,d22,d23,d28,d29,d30,d31,7
+    vld1.u8	{d16}, [r3], r1
+    vld1.u8	{d17}, [r3], r1
+    vld1.u8	{d18}, [r3], r1
+    vld1.u8	{d19}, [r3], r1
+    vld1.u8	{d20}, [r3], r1
+    vld1.u8	{d21}, [r3], r1
+    vld1.u8	{d22}, [r3], r1
+    vld1.u8	{d23}, [r3], r1
+    vld1.u8	{d24}, [r3], r1
+    vld1.u8	{d25}, [r3], r1
+    vld1.u8	{d26}, [r3], r1
+    vld1.u8	{d27}, [r3], r1
+    vld1.u8	{d28}, [r3], r1
+    vld1.u8	{d29}, [r3], r1
+    vld1.u8	{d30}, [r3], r1
+    vld1.u8	{d31}, [r3], r1
 
-    vswp		q9, q10
-    vswp		d17,d18
-    vswp		d21,d22
-    vswp		q13,q14
-    vswp		d25,d26
-    vswp		d29,d30
-    sub			r0, r0, r1	, lsl #4
+    vtrn.u32	d16, d20
+    vtrn.u32	d17, d21
+    vtrn.u32	d18, d22
+    vtrn.u32	d19, d23
+    vtrn.u32	d24, d28
+    vtrn.u32	d25, d29
+    vtrn.u32	d26, d30
+    vtrn.u32	d27, d31
+
+    vtrn.u16	d16, d18
+    vtrn.u16	d17, d19
+    vtrn.u16	d20, d22
+    vtrn.u16	d21, d23
+    vtrn.u16	d24, d26
+    vtrn.u16	d25, d27
+    vtrn.u16	d28, d30
+    vtrn.u16	d29, d31
+
+    vtrn.u8	d16, d17
+    vtrn.u8	d18, d19
+    vtrn.u8	d20, d21
+    vtrn.u8	d22, d23
+    vtrn.u8	d24, d25
+    vtrn.u8	d26, d27
+    vtrn.u8	d28, d29
+    vtrn.u8	d30, d31
+
+    vswp	d17, d24
+    vswp	d19, d26
+    vswp	d21, d28
+    vswp	d23, d30
+
+    vswp	q12, q9
+    vswp	q14, q11
+
+    vswp	q12, q10
+    vswp	q13, q11
 
     MASK_MATRIX	q10, q11, q12, q13, q5, q4, q6